구름떼 검색기 수정 중!!
This commit is contained in:
@@ -17,5 +17,6 @@ namespace BitgetAPI.Data
|
|||||||
|
|
||||||
public double high24h { get; set; }
|
public double high24h { get; set; }
|
||||||
public double low24h { get; set; }
|
public double low24h { get; set; }
|
||||||
|
public double open24h { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
214
BitgetApi/MainForm.Designer.cs
generated
214
BitgetApi/MainForm.Designer.cs
generated
@@ -41,7 +41,7 @@
|
|||||||
this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
|
this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
|
||||||
this.treeList_MarketInfo = new DevExpress.XtraTreeList.TreeList();
|
this.treeList_MarketInfo = new DevExpress.XtraTreeList.TreeList();
|
||||||
this.treeListColumn_ExchangePlace = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
this.treeListColumn_ExchangePlace = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
||||||
this.treeListColumn_instId = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
this.treeListColumn_MarketName = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
||||||
this.treeListColumn_open24h = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
this.treeListColumn_open24h = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
||||||
this.treeListColumn_low24h = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
this.treeListColumn_low24h = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
||||||
this.treeListColumn_high24h = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
this.treeListColumn_high24h = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
||||||
@@ -75,6 +75,14 @@
|
|||||||
this.treeListColumn_SD_IndicatorRate = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
this.treeListColumn_SD_IndicatorRate = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
||||||
this.splitContainerControl_FavoritePurchase = new DevExpress.XtraEditors.SplitContainerControl();
|
this.splitContainerControl_FavoritePurchase = new DevExpress.XtraEditors.SplitContainerControl();
|
||||||
this.groupControl_FP_LongDown = new DevExpress.XtraEditors.GroupControl();
|
this.groupControl_FP_LongDown = new DevExpress.XtraEditors.GroupControl();
|
||||||
|
this.treeList1 = new DevExpress.XtraTreeList.TreeList();
|
||||||
|
this.treeListColumn2 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
||||||
|
this.treeListColumn3 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
||||||
|
this.treeListColumn4 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
||||||
|
this.treeListColumn5 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
||||||
|
this.treeListColumn6 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
||||||
|
this.treeListColumn7 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
||||||
|
this.treeListColumn8 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
||||||
this.groupControl_FP_ShortUp = new DevExpress.XtraEditors.GroupControl();
|
this.groupControl_FP_ShortUp = new DevExpress.XtraEditors.GroupControl();
|
||||||
this.groupControl_SearcherCondition = new DevExpress.XtraEditors.GroupControl();
|
this.groupControl_SearcherCondition = new DevExpress.XtraEditors.GroupControl();
|
||||||
this.simpleButton_MarketOrderRefresh = new DevExpress.XtraEditors.SimpleButton();
|
this.simpleButton_MarketOrderRefresh = new DevExpress.XtraEditors.SimpleButton();
|
||||||
@@ -92,14 +100,7 @@
|
|||||||
this.checkedComboBoxEdit_TimeInterval = new DevExpress.XtraEditors.CheckedComboBoxEdit();
|
this.checkedComboBoxEdit_TimeInterval = new DevExpress.XtraEditors.CheckedComboBoxEdit();
|
||||||
this.checkedComboBoxEdit_MarketInfoList = new DevExpress.XtraEditors.CheckedComboBoxEdit();
|
this.checkedComboBoxEdit_MarketInfoList = new DevExpress.XtraEditors.CheckedComboBoxEdit();
|
||||||
this.treeListColumn1 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
this.treeListColumn1 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
||||||
this.treeList1 = new DevExpress.XtraTreeList.TreeList();
|
this.simpleButton_SignalStart = new DevExpress.XtraEditors.SimpleButton();
|
||||||
this.treeListColumn2 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
|
||||||
this.treeListColumn3 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
|
||||||
this.treeListColumn4 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
|
||||||
this.treeListColumn5 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
|
||||||
this.treeListColumn6 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
|
||||||
this.treeListColumn7 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
|
||||||
this.treeListColumn8 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.groupControl_Setting)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.groupControl_Setting)).BeginInit();
|
||||||
this.groupControl_Setting.SuspendLayout();
|
this.groupControl_Setting.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.progressBarControl_data.Properties)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.progressBarControl_data.Properties)).BeginInit();
|
||||||
@@ -140,6 +141,7 @@
|
|||||||
this.splitContainerControl_FavoritePurchase.SuspendLayout();
|
this.splitContainerControl_FavoritePurchase.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.groupControl_FP_LongDown)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.groupControl_FP_LongDown)).BeginInit();
|
||||||
this.groupControl_FP_LongDown.SuspendLayout();
|
this.groupControl_FP_LongDown.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.treeList1)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.groupControl_FP_ShortUp)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.groupControl_FP_ShortUp)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.groupControl_SearcherCondition)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.groupControl_SearcherCondition)).BeginInit();
|
||||||
this.groupControl_SearcherCondition.SuspendLayout();
|
this.groupControl_SearcherCondition.SuspendLayout();
|
||||||
@@ -152,7 +154,6 @@
|
|||||||
((System.ComponentModel.ISupportInitialize)(this.timeSpanEdit_SesstionTime.Properties)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.timeSpanEdit_SesstionTime.Properties)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.checkedComboBoxEdit_TimeInterval.Properties)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.checkedComboBoxEdit_TimeInterval.Properties)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.checkedComboBoxEdit_MarketInfoList.Properties)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.checkedComboBoxEdit_MarketInfoList.Properties)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.treeList1)).BeginInit();
|
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// groupControl_Setting
|
// groupControl_Setting
|
||||||
@@ -264,7 +265,7 @@
|
|||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.treeList_MarketInfo.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] {
|
this.treeList_MarketInfo.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] {
|
||||||
this.treeListColumn_ExchangePlace,
|
this.treeListColumn_ExchangePlace,
|
||||||
this.treeListColumn_instId,
|
this.treeListColumn_MarketName,
|
||||||
this.treeListColumn_open24h,
|
this.treeListColumn_open24h,
|
||||||
this.treeListColumn_low24h,
|
this.treeListColumn_low24h,
|
||||||
this.treeListColumn_high24h,
|
this.treeListColumn_high24h,
|
||||||
@@ -283,13 +284,13 @@
|
|||||||
this.treeListColumn_ExchangePlace.FieldName = "ExchangePlace";
|
this.treeListColumn_ExchangePlace.FieldName = "ExchangePlace";
|
||||||
this.treeListColumn_ExchangePlace.Name = "treeListColumn_ExchangePlace";
|
this.treeListColumn_ExchangePlace.Name = "treeListColumn_ExchangePlace";
|
||||||
//
|
//
|
||||||
// treeListColumn_instId
|
// treeListColumn_MarketName
|
||||||
//
|
//
|
||||||
this.treeListColumn_instId.Caption = "종목";
|
this.treeListColumn_MarketName.Caption = "종목";
|
||||||
this.treeListColumn_instId.FieldName = "instId";
|
this.treeListColumn_MarketName.FieldName = "MarketName";
|
||||||
this.treeListColumn_instId.Name = "treeListColumn_instId";
|
this.treeListColumn_MarketName.Name = "treeListColumn_MarketName";
|
||||||
this.treeListColumn_instId.Visible = true;
|
this.treeListColumn_MarketName.Visible = true;
|
||||||
this.treeListColumn_instId.VisibleIndex = 0;
|
this.treeListColumn_MarketName.VisibleIndex = 0;
|
||||||
//
|
//
|
||||||
// treeListColumn_open24h
|
// treeListColumn_open24h
|
||||||
//
|
//
|
||||||
@@ -389,7 +390,6 @@
|
|||||||
this.xtraTabPage_Searcher.Controls.Add(this.groupControl_SignalSeacher);
|
this.xtraTabPage_Searcher.Controls.Add(this.groupControl_SignalSeacher);
|
||||||
this.xtraTabPage_Searcher.Controls.Add(this.groupControl_SearcherCondition);
|
this.xtraTabPage_Searcher.Controls.Add(this.groupControl_SearcherCondition);
|
||||||
this.xtraTabPage_Searcher.Name = "xtraTabPage_Searcher";
|
this.xtraTabPage_Searcher.Name = "xtraTabPage_Searcher";
|
||||||
this.xtraTabPage_Searcher.PageEnabled = false;
|
|
||||||
this.xtraTabPage_Searcher.Size = new System.Drawing.Size(920, 408);
|
this.xtraTabPage_Searcher.Size = new System.Drawing.Size(920, 408);
|
||||||
this.xtraTabPage_Searcher.Text = "검색기";
|
this.xtraTabPage_Searcher.Text = "검색기";
|
||||||
//
|
//
|
||||||
@@ -656,6 +656,88 @@
|
|||||||
this.groupControl_FP_LongDown.TabIndex = 0;
|
this.groupControl_FP_LongDown.TabIndex = 0;
|
||||||
this.groupControl_FP_LongDown.Text = "관심 종목 (Long 상승)";
|
this.groupControl_FP_LongDown.Text = "관심 종목 (Long 상승)";
|
||||||
//
|
//
|
||||||
|
// treeList1
|
||||||
|
//
|
||||||
|
this.treeList1.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] {
|
||||||
|
this.treeListColumn2,
|
||||||
|
this.treeListColumn3,
|
||||||
|
this.treeListColumn4,
|
||||||
|
this.treeListColumn5,
|
||||||
|
this.treeListColumn6,
|
||||||
|
this.treeListColumn7,
|
||||||
|
this.treeListColumn8});
|
||||||
|
this.treeList1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.treeList1.Location = new System.Drawing.Point(2, 23);
|
||||||
|
this.treeList1.Name = "treeList1";
|
||||||
|
this.treeList1.Size = new System.Drawing.Size(426, 105);
|
||||||
|
this.treeList1.TabIndex = 1;
|
||||||
|
//
|
||||||
|
// treeListColumn2
|
||||||
|
//
|
||||||
|
this.treeListColumn2.Caption = "시작 시간";
|
||||||
|
this.treeListColumn2.FieldName = "SignalStart";
|
||||||
|
this.treeListColumn2.Format.FormatString = "yy/MM/dd hh:mm";
|
||||||
|
this.treeListColumn2.Format.FormatType = DevExpress.Utils.FormatType.Custom;
|
||||||
|
this.treeListColumn2.Name = "treeListColumn2";
|
||||||
|
this.treeListColumn2.Visible = true;
|
||||||
|
this.treeListColumn2.VisibleIndex = 2;
|
||||||
|
//
|
||||||
|
// treeListColumn3
|
||||||
|
//
|
||||||
|
this.treeListColumn3.Caption = "종목";
|
||||||
|
this.treeListColumn3.FieldName = "MarketName";
|
||||||
|
this.treeListColumn3.Name = "treeListColumn3";
|
||||||
|
this.treeListColumn3.Visible = true;
|
||||||
|
this.treeListColumn3.VisibleIndex = 1;
|
||||||
|
//
|
||||||
|
// treeListColumn4
|
||||||
|
//
|
||||||
|
this.treeListColumn4.Caption = "설명";
|
||||||
|
this.treeListColumn4.FieldName = "Description";
|
||||||
|
this.treeListColumn4.Name = "treeListColumn4";
|
||||||
|
this.treeListColumn4.Visible = true;
|
||||||
|
this.treeListColumn4.VisibleIndex = 0;
|
||||||
|
//
|
||||||
|
// treeListColumn5
|
||||||
|
//
|
||||||
|
this.treeListColumn5.Caption = "현재가";
|
||||||
|
this.treeListColumn5.FieldName = "Price";
|
||||||
|
this.treeListColumn5.Format.FormatString = "0.00";
|
||||||
|
this.treeListColumn5.Format.FormatType = DevExpress.Utils.FormatType.Custom;
|
||||||
|
this.treeListColumn5.Name = "treeListColumn5";
|
||||||
|
this.treeListColumn5.Visible = true;
|
||||||
|
this.treeListColumn5.VisibleIndex = 3;
|
||||||
|
//
|
||||||
|
// treeListColumn6
|
||||||
|
//
|
||||||
|
this.treeListColumn6.Caption = "수익률";
|
||||||
|
this.treeListColumn6.FieldName = "Rate";
|
||||||
|
this.treeListColumn6.Format.FormatString = "0.00000";
|
||||||
|
this.treeListColumn6.Format.FormatType = DevExpress.Utils.FormatType.Custom;
|
||||||
|
this.treeListColumn6.Name = "treeListColumn6";
|
||||||
|
this.treeListColumn6.Visible = true;
|
||||||
|
this.treeListColumn6.VisibleIndex = 4;
|
||||||
|
//
|
||||||
|
// treeListColumn7
|
||||||
|
//
|
||||||
|
this.treeListColumn7.Caption = "지표(구름떼) 가격";
|
||||||
|
this.treeListColumn7.FieldName = "IndicatorPrice";
|
||||||
|
this.treeListColumn7.Format.FormatString = "0.00";
|
||||||
|
this.treeListColumn7.Format.FormatType = DevExpress.Utils.FormatType.Custom;
|
||||||
|
this.treeListColumn7.Name = "treeListColumn7";
|
||||||
|
this.treeListColumn7.Visible = true;
|
||||||
|
this.treeListColumn7.VisibleIndex = 5;
|
||||||
|
//
|
||||||
|
// treeListColumn8
|
||||||
|
//
|
||||||
|
this.treeListColumn8.Caption = "지표가(매수가) 비율";
|
||||||
|
this.treeListColumn8.FieldName = "IndicatorRate";
|
||||||
|
this.treeListColumn8.Format.FormatString = "0.00000";
|
||||||
|
this.treeListColumn8.Format.FormatType = DevExpress.Utils.FormatType.Custom;
|
||||||
|
this.treeListColumn8.Name = "treeListColumn8";
|
||||||
|
this.treeListColumn8.Visible = true;
|
||||||
|
this.treeListColumn8.VisibleIndex = 6;
|
||||||
|
//
|
||||||
// groupControl_FP_ShortUp
|
// groupControl_FP_ShortUp
|
||||||
//
|
//
|
||||||
this.groupControl_FP_ShortUp.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.groupControl_FP_ShortUp.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
@@ -667,6 +749,7 @@
|
|||||||
//
|
//
|
||||||
// groupControl_SearcherCondition
|
// groupControl_SearcherCondition
|
||||||
//
|
//
|
||||||
|
this.groupControl_SearcherCondition.Controls.Add(this.simpleButton_SignalStart);
|
||||||
this.groupControl_SearcherCondition.Controls.Add(this.simpleButton_MarketOrderRefresh);
|
this.groupControl_SearcherCondition.Controls.Add(this.simpleButton_MarketOrderRefresh);
|
||||||
this.groupControl_SearcherCondition.Controls.Add(this.groupBox2);
|
this.groupControl_SearcherCondition.Controls.Add(this.groupBox2);
|
||||||
this.groupControl_SearcherCondition.Controls.Add(this.groupBox1);
|
this.groupControl_SearcherCondition.Controls.Add(this.groupBox1);
|
||||||
@@ -693,6 +776,7 @@
|
|||||||
this.simpleButton_MarketOrderRefresh.Size = new System.Drawing.Size(35, 30);
|
this.simpleButton_MarketOrderRefresh.Size = new System.Drawing.Size(35, 30);
|
||||||
this.simpleButton_MarketOrderRefresh.TabIndex = 7;
|
this.simpleButton_MarketOrderRefresh.TabIndex = 7;
|
||||||
this.simpleButton_MarketOrderRefresh.Text = "R";
|
this.simpleButton_MarketOrderRefresh.Text = "R";
|
||||||
|
this.simpleButton_MarketOrderRefresh.Click += new System.EventHandler(this.simpleButton_MarketOrderRefresh_Click);
|
||||||
//
|
//
|
||||||
// groupBox2
|
// groupBox2
|
||||||
//
|
//
|
||||||
@@ -831,87 +915,16 @@
|
|||||||
this.treeListColumn1.Visible = true;
|
this.treeListColumn1.Visible = true;
|
||||||
this.treeListColumn1.VisibleIndex = 0;
|
this.treeListColumn1.VisibleIndex = 0;
|
||||||
//
|
//
|
||||||
// treeList1
|
// simpleButton_SignalStart
|
||||||
//
|
//
|
||||||
this.treeList1.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] {
|
this.simpleButton_SignalStart.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton1.ImageOptions.SvgImage")));
|
||||||
this.treeListColumn2,
|
this.simpleButton_SignalStart.ImageOptions.SvgImageColorizationMode = DevExpress.Utils.SvgImageColorizationMode.Full;
|
||||||
this.treeListColumn3,
|
this.simpleButton_SignalStart.Location = new System.Drawing.Point(575, 37);
|
||||||
this.treeListColumn4,
|
this.simpleButton_SignalStart.Name = "simpleButton_SignalStart";
|
||||||
this.treeListColumn5,
|
this.simpleButton_SignalStart.Size = new System.Drawing.Size(35, 30);
|
||||||
this.treeListColumn6,
|
this.simpleButton_SignalStart.TabIndex = 8;
|
||||||
this.treeListColumn7,
|
this.simpleButton_SignalStart.Text = "R";
|
||||||
this.treeListColumn8});
|
this.simpleButton_SignalStart.Click += new System.EventHandler(this.simpleButton_SignalStart_Click);
|
||||||
this.treeList1.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.treeList1.Location = new System.Drawing.Point(2, 23);
|
|
||||||
this.treeList1.Name = "treeList1";
|
|
||||||
this.treeList1.Size = new System.Drawing.Size(426, 105);
|
|
||||||
this.treeList1.TabIndex = 1;
|
|
||||||
//
|
|
||||||
// treeListColumn2
|
|
||||||
//
|
|
||||||
this.treeListColumn2.Caption = "시작 시간";
|
|
||||||
this.treeListColumn2.FieldName = "SignalStart";
|
|
||||||
this.treeListColumn2.Format.FormatString = "yy/MM/dd hh:mm";
|
|
||||||
this.treeListColumn2.Format.FormatType = DevExpress.Utils.FormatType.Custom;
|
|
||||||
this.treeListColumn2.Name = "treeListColumn2";
|
|
||||||
this.treeListColumn2.Visible = true;
|
|
||||||
this.treeListColumn2.VisibleIndex = 2;
|
|
||||||
//
|
|
||||||
// treeListColumn3
|
|
||||||
//
|
|
||||||
this.treeListColumn3.Caption = "종목";
|
|
||||||
this.treeListColumn3.FieldName = "MarketName";
|
|
||||||
this.treeListColumn3.Name = "treeListColumn3";
|
|
||||||
this.treeListColumn3.Visible = true;
|
|
||||||
this.treeListColumn3.VisibleIndex = 1;
|
|
||||||
//
|
|
||||||
// treeListColumn4
|
|
||||||
//
|
|
||||||
this.treeListColumn4.Caption = "설명";
|
|
||||||
this.treeListColumn4.FieldName = "Description";
|
|
||||||
this.treeListColumn4.Name = "treeListColumn4";
|
|
||||||
this.treeListColumn4.Visible = true;
|
|
||||||
this.treeListColumn4.VisibleIndex = 0;
|
|
||||||
//
|
|
||||||
// treeListColumn5
|
|
||||||
//
|
|
||||||
this.treeListColumn5.Caption = "현재가";
|
|
||||||
this.treeListColumn5.FieldName = "Price";
|
|
||||||
this.treeListColumn5.Format.FormatString = "0.00";
|
|
||||||
this.treeListColumn5.Format.FormatType = DevExpress.Utils.FormatType.Custom;
|
|
||||||
this.treeListColumn5.Name = "treeListColumn5";
|
|
||||||
this.treeListColumn5.Visible = true;
|
|
||||||
this.treeListColumn5.VisibleIndex = 3;
|
|
||||||
//
|
|
||||||
// treeListColumn6
|
|
||||||
//
|
|
||||||
this.treeListColumn6.Caption = "수익률";
|
|
||||||
this.treeListColumn6.FieldName = "Rate";
|
|
||||||
this.treeListColumn6.Format.FormatString = "0.00000";
|
|
||||||
this.treeListColumn6.Format.FormatType = DevExpress.Utils.FormatType.Custom;
|
|
||||||
this.treeListColumn6.Name = "treeListColumn6";
|
|
||||||
this.treeListColumn6.Visible = true;
|
|
||||||
this.treeListColumn6.VisibleIndex = 4;
|
|
||||||
//
|
|
||||||
// treeListColumn7
|
|
||||||
//
|
|
||||||
this.treeListColumn7.Caption = "지표(구름떼) 가격";
|
|
||||||
this.treeListColumn7.FieldName = "IndicatorPrice";
|
|
||||||
this.treeListColumn7.Format.FormatString = "0.00";
|
|
||||||
this.treeListColumn7.Format.FormatType = DevExpress.Utils.FormatType.Custom;
|
|
||||||
this.treeListColumn7.Name = "treeListColumn7";
|
|
||||||
this.treeListColumn7.Visible = true;
|
|
||||||
this.treeListColumn7.VisibleIndex = 5;
|
|
||||||
//
|
|
||||||
// treeListColumn8
|
|
||||||
//
|
|
||||||
this.treeListColumn8.Caption = "지표가(매수가) 비율";
|
|
||||||
this.treeListColumn8.FieldName = "IndicatorRate";
|
|
||||||
this.treeListColumn8.Format.FormatString = "0.00000";
|
|
||||||
this.treeListColumn8.Format.FormatType = DevExpress.Utils.FormatType.Custom;
|
|
||||||
this.treeListColumn8.Name = "treeListColumn8";
|
|
||||||
this.treeListColumn8.Visible = true;
|
|
||||||
this.treeListColumn8.VisibleIndex = 6;
|
|
||||||
//
|
//
|
||||||
// MainForm
|
// MainForm
|
||||||
//
|
//
|
||||||
@@ -966,6 +979,7 @@
|
|||||||
this.splitContainerControl_FavoritePurchase.ResumeLayout(false);
|
this.splitContainerControl_FavoritePurchase.ResumeLayout(false);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.groupControl_FP_LongDown)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.groupControl_FP_LongDown)).EndInit();
|
||||||
this.groupControl_FP_LongDown.ResumeLayout(false);
|
this.groupControl_FP_LongDown.ResumeLayout(false);
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.treeList1)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.groupControl_FP_ShortUp)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.groupControl_FP_ShortUp)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.groupControl_SearcherCondition)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.groupControl_SearcherCondition)).EndInit();
|
||||||
this.groupControl_SearcherCondition.ResumeLayout(false);
|
this.groupControl_SearcherCondition.ResumeLayout(false);
|
||||||
@@ -979,7 +993,6 @@
|
|||||||
((System.ComponentModel.ISupportInitialize)(this.timeSpanEdit_SesstionTime.Properties)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.timeSpanEdit_SesstionTime.Properties)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.checkedComboBoxEdit_TimeInterval.Properties)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.checkedComboBoxEdit_TimeInterval.Properties)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.checkedComboBoxEdit_MarketInfoList.Properties)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.checkedComboBoxEdit_MarketInfoList.Properties)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.treeList1)).EndInit();
|
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -994,7 +1007,7 @@
|
|||||||
private DevExpress.XtraEditors.LabelControl labelControl2;
|
private DevExpress.XtraEditors.LabelControl labelControl2;
|
||||||
private DevExpress.XtraEditors.LabelControl labelControl1;
|
private DevExpress.XtraEditors.LabelControl labelControl1;
|
||||||
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_ExchangePlace;
|
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_ExchangePlace;
|
||||||
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_instId;
|
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_MarketName;
|
||||||
private DevExpress.XtraEditors.LabelControl labelControl_MarketCount;
|
private DevExpress.XtraEditors.LabelControl labelControl_MarketCount;
|
||||||
private DevExpress.XtraEditors.LabelControl labelControl3;
|
private DevExpress.XtraEditors.LabelControl labelControl3;
|
||||||
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_open24h;
|
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_open24h;
|
||||||
@@ -1057,6 +1070,7 @@
|
|||||||
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn6;
|
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn6;
|
||||||
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn7;
|
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn7;
|
||||||
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn8;
|
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn8;
|
||||||
|
private DevExpress.XtraEditors.SimpleButton simpleButton_SignalStart;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ using System.Threading.Tasks;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using static BitgetAPI.CommonProperty;
|
using static BitgetAPI.CommonProperty;
|
||||||
using static DevExpress.Utils.Html.ViewInfo.DxHtmlOrderedListInfoCore;
|
using static DevExpress.Utils.Html.ViewInfo.DxHtmlOrderedListInfoCore;
|
||||||
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
||||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox;
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox;
|
||||||
|
|
||||||
namespace BitgetAPI
|
namespace BitgetAPI
|
||||||
@@ -30,16 +31,18 @@ namespace BitgetAPI
|
|||||||
CommonProperty commonProperty = CommonProperty.Instance;
|
CommonProperty commonProperty = CommonProperty.Instance;
|
||||||
|
|
||||||
#region 폼 내 사용되는 스레드
|
#region 폼 내 사용되는 스레드
|
||||||
// 트리 현황판 업데이트 스레드
|
// 트리 현황판 업데이트 스레드 (단순 폼 업데이트)
|
||||||
Thread treeListMarketInfoListUpdateTimer = null;
|
Thread treeListMarketInfoListUpdateTimer = null;
|
||||||
// 현황판 웹소켓 스레드
|
// 웹소켓 스레드 (선택된 종목 개수 만큼 가져오기)
|
||||||
List<Thread> th_MarketStatusList = null;
|
List<Thread> th_MarketStatusList = null;
|
||||||
// WebSocket 내 스레드 관리
|
// WebSocket 내 스레드 관리
|
||||||
List<Thread> webSocketThreadList = new List<Thread>();
|
List<Thread> webSocketThreadList = new List<Thread>();
|
||||||
// 종목별 캔들 데이터 스레드
|
// 종목별 캔들 데이터 스레드 (사용 안함)
|
||||||
Thread th_MarketCandeData = null;
|
Thread th_MarketCandeData = null;
|
||||||
// 신호검색 스레드 함수
|
// 신호검색 스레드 함수
|
||||||
Thread th_SignalInfo = null;
|
Thread th_SignalInfo = null;
|
||||||
|
// 현황판 웹서비스 Ticker 스레드 (한번에 전체 종목 종가 받음)
|
||||||
|
Thread th_MarketInfoList = null;
|
||||||
|
|
||||||
// 신호검색 리스트 작성
|
// 신호검색 리스트 작성
|
||||||
// 신호 Long 상승 (구매)
|
// 신호 Long 상승 (구매)
|
||||||
@@ -77,50 +80,7 @@ namespace BitgetAPI
|
|||||||
treeList_MarketInfo.Columns["quoteVolume"].SortOrder = SortOrder.Descending;
|
treeList_MarketInfo.Columns["quoteVolume"].SortOrder = SortOrder.Descending;
|
||||||
treeList_MarketInfo.EndSort();
|
treeList_MarketInfo.EndSort();
|
||||||
|
|
||||||
// Json String 만들기
|
|
||||||
// 종목별 Ticker 구독하기
|
|
||||||
th_MarketStatusList = new List<Thread>();
|
|
||||||
var dic = new Dictionary<string, object>();
|
|
||||||
dic.Add("op", "subscribe");
|
|
||||||
|
|
||||||
var argsList = new List<Dictionary<string, object>>();
|
|
||||||
|
|
||||||
var count = 0;
|
|
||||||
|
|
||||||
foreach (var marketInfo in commonProperty.marketInfoList)
|
|
||||||
{
|
|
||||||
var args = new Dictionary<string, object>();
|
|
||||||
args.Add("instType", "USDT-FUTURES");
|
|
||||||
args.Add("channel", "ticker");
|
|
||||||
args.Add("instId", marketInfo.MarketName);
|
|
||||||
argsList.Add(args);
|
|
||||||
|
|
||||||
count++;
|
|
||||||
|
|
||||||
if (count % 30 == 0 || count == commonProperty.marketInfoList.Count - 1)
|
|
||||||
{
|
|
||||||
dic.Add("args", argsList);
|
|
||||||
|
|
||||||
var th_MarketStatus = new Thread(() => ThreadEventAsync(BitgetWebSocketType.현황정보_전체종목, dic));
|
|
||||||
th_MarketStatus.Start();
|
|
||||||
|
|
||||||
th_MarketStatusList.Add(th_MarketStatus);
|
|
||||||
//break;
|
|
||||||
|
|
||||||
dic = new Dictionary<string, object>();
|
|
||||||
dic.Add("op", "subscribe");
|
|
||||||
argsList = new List<Dictionary<string, object>>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 현황판 웹소켓
|
|
||||||
commonProperty.webSocketCandles = new List<WebSocketTickerInfo>();
|
commonProperty.webSocketCandles = new List<WebSocketTickerInfo>();
|
||||||
treeList_MarketInfo.DataSource = commonProperty.webSocketCandles;
|
|
||||||
|
|
||||||
// 트리 현황판 업데이트
|
|
||||||
treeListMarketInfoListUpdateTimer = new Thread(new ThreadStart(TreeListMarketInfoListUpdate));
|
|
||||||
treeListMarketInfoListUpdateTimer.Start();
|
|
||||||
|
|
||||||
// 신호 Long 상승 (구매)
|
// 신호 Long 상승 (구매)
|
||||||
signals_LU = new List<SignalInfoData>();
|
signals_LU = new List<SignalInfoData>();
|
||||||
@@ -135,14 +95,30 @@ namespace BitgetAPI
|
|||||||
treeList_LongUp.DataSource = signals_LU;
|
treeList_LongUp.DataSource = signals_LU;
|
||||||
treeList_ShortDown.DataSource = signals_SD;
|
treeList_ShortDown.DataSource = signals_SD;
|
||||||
|
|
||||||
// 신호검색 스레드
|
|
||||||
//th_SignalInfo = new Thread(new ThreadStart(Signalnfo));
|
|
||||||
//th_SignalInfo.Start();
|
|
||||||
|
|
||||||
// API Key 가져오기 및 등록
|
// API Key 가져오기 및 등록
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 웹서비스를 통해 현황판 및 마켓 Ticker 업데이트
|
||||||
|
private void getMarketInfoList_WebService(ExchangeWebReqType exchangeWebReqType)
|
||||||
|
{
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
Thread.Sleep(500);
|
||||||
|
// 마켓 모든 종목 캔들 정보 Web Service로 가져오기
|
||||||
|
commonProperty.marketInfoList = (List<MarketInfo>)BitgetAPI.WebService.WebConnection.SendWebServer(exchangeWebReqType);
|
||||||
|
|
||||||
|
// 현황판에 최신 정보 업데이트 하기
|
||||||
|
Invoke(new MethodInvoker(delegate ()
|
||||||
|
{
|
||||||
|
var scrollPoint = treeList_MarketInfo.TopVisibleNodeIndex;
|
||||||
|
treeList_MarketInfo.DataSource = commonProperty.marketInfoList;
|
||||||
|
treeList_MarketInfo.RefreshDataSource();
|
||||||
|
treeList_MarketInfo.TopVisibleNodeIndex = scrollPoint;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 웹소켓 생성 관련 함수 스레드 => Thread
|
// 웹소켓 생성 관련 함수 스레드 => Thread
|
||||||
private async void ThreadEventAsync(BitgetWebSocketType bitgetWebSocketType, Dictionary<string, object> dic)
|
private async void ThreadEventAsync(BitgetWebSocketType bitgetWebSocketType, Dictionary<string, object> dic)
|
||||||
{
|
{
|
||||||
@@ -200,11 +176,14 @@ namespace BitgetAPI
|
|||||||
선행스팬2 : (과거 k일간의 최고가 + 과거 k일간의 최저가) /2한 값을 ℓ일 후에 기입
|
선행스팬2 : (과거 k일간의 최고가 + 과거 k일간의 최저가) /2한 값을 ℓ일 후에 기입
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
var checkedMarkets = checkedComboBoxEdit_MarketInfoList.Properties.Items.GetCheckedValues();
|
||||||
|
var intervalList = checkedComboBoxEdit_TimeInterval.Properties.Items.GetCheckedValues();
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
//if (!xtraTabPage_Searcher.PageEnabled) continue;
|
//if (!xtraTabPage_Searcher.PageEnabled) continue;
|
||||||
|
|
||||||
Thread.Sleep(200);
|
//Thread.Sleep(200);
|
||||||
var nowTime = DateTime.Now;
|
var nowTime = DateTime.Now;
|
||||||
|
|
||||||
// 특정 시간 이후 삭제
|
// 특정 시간 이후 삭제
|
||||||
@@ -229,17 +208,36 @@ namespace BitgetAPI
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
foreach (var item in signals_LD.ToList())
|
|
||||||
if (item.SignalStart + timeSpanEdit_SesstionTime.TimeSpan < nowTime) { signals_LD.Remove(item); }
|
|
||||||
foreach (var item in signals_SU.ToList())
|
|
||||||
if (item.SignalStart + timeSpanEdit_SesstionTime.TimeSpan < nowTime) signals_SU.Remove(item);
|
|
||||||
foreach (var item in signals_SD.ToList())
|
foreach (var item in signals_SD.ToList())
|
||||||
|
{
|
||||||
|
// 시간 지나면 삭제
|
||||||
|
if (item.SignalStart + timeSpanEdit_SesstionTime.TimeSpan < nowTime)
|
||||||
|
{
|
||||||
|
signals_SD.Remove(item);
|
||||||
|
continue;
|
||||||
|
|
||||||
|
}
|
||||||
|
var findedMarket = commonProperty.candleDataLists.Find(i => i.ConGoodsData.MarketName == item.MarketName);
|
||||||
|
var lastCandleData = findedMarket.candleDataList[item.MCandleTimeType].OrderBy(i => i.Argument).ToList().Last();
|
||||||
|
|
||||||
|
if (lastCandleData.IchimokData != null)
|
||||||
|
{
|
||||||
|
item.Price = lastCandleData.Close;
|
||||||
|
if (lastCandleData.Open == 0) { }
|
||||||
|
item.Rate = (lastCandleData.Close / lastCandleData.Open) * 100 - 100;
|
||||||
|
item.IndicatorPrice = lastCandleData.IchimokData.하한선;
|
||||||
|
item.IndicatorRate = (lastCandleData.Close / item.IndicatorPrice) * 100 - 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach (var item in signals_LD.ToList())
|
||||||
|
if (item.SignalStart + timeSpanEdit_SesstionTime.TimeSpan < nowTime) signals_SU.Remove(item);
|
||||||
|
foreach (var item in signals_SU.ToList())
|
||||||
if (item.SignalStart + timeSpanEdit_SesstionTime.TimeSpan < nowTime) signals_SD.Remove(item);
|
if (item.SignalStart + timeSpanEdit_SesstionTime.TimeSpan < nowTime) signals_SD.Remove(item);
|
||||||
|
|
||||||
var intervalList = checkedComboBoxEdit_TimeInterval.Properties.Items.GetCheckedValues();
|
|
||||||
|
|
||||||
// 체크된 마켓 정보
|
// 체크된 마켓 정보
|
||||||
foreach (string market in checkedComboBoxEdit_MarketInfoList.Properties.Items.GetCheckedValues())
|
foreach (string market in checkedMarkets)
|
||||||
{
|
{
|
||||||
var findedMarket = commonProperty.candleDataLists.Find(i => i.ConGoodsData.MarketName == market);
|
var findedMarket = commonProperty.candleDataLists.Find(i => i.ConGoodsData.MarketName == market);
|
||||||
|
|
||||||
@@ -314,6 +312,7 @@ namespace BitgetAPI
|
|||||||
signalInfoData.Price = price;
|
signalInfoData.Price = price;
|
||||||
signalInfoData.IndicatorPrice = indicatorPrice;
|
signalInfoData.IndicatorPrice = indicatorPrice;
|
||||||
signalInfoData.IndicatorRate = indicatorRate;
|
signalInfoData.IndicatorRate = indicatorRate;
|
||||||
|
signalInfoData.MCandleTimeType = interval;
|
||||||
|
|
||||||
signals_SD.Add(signalInfoData);
|
signals_SD.Add(signalInfoData);
|
||||||
}
|
}
|
||||||
@@ -327,18 +326,24 @@ namespace BitgetAPI
|
|||||||
|
|
||||||
|
|
||||||
// 종목별 캔들데이터 가져오기 (초기 설정) => Thread
|
// 종목별 캔들데이터 가져오기 (초기 설정) => Thread
|
||||||
private void getMarketCandleData_WebService(ExchangeWebReqType exchangeWebReqType)
|
private void getMarketCandleData_WebService(ExchangeWebReqType exchangeWebReqType, List<object> marketList)
|
||||||
{
|
{
|
||||||
// 프로그레스 바
|
// 프로그레스 바
|
||||||
progressBarControl_data.Properties.Minimum = 0;
|
Invoke(new MethodInvoker(delegate ()
|
||||||
progressBarControl_data.Properties.Maximum = commonProperty.candleDataLists.Count;
|
|
||||||
progressBarControl_data.Properties.Step = 1;
|
|
||||||
progressBarControl_data.EditValue = 0;
|
|
||||||
var progressCnt = 0;
|
|
||||||
// WebServicee 초기 캔들 데이터 가져오기 : 종목, 개수
|
|
||||||
foreach (var marketCandleDataList in commonProperty.candleDataLists)
|
|
||||||
{
|
{
|
||||||
var marketName = marketCandleDataList.ConGoodsData.MarketName;
|
progressBarControl_data.Properties.Minimum = 0;
|
||||||
|
progressBarControl_data.Properties.Maximum = marketList.Count;
|
||||||
|
progressBarControl_data.Properties.Step = 1;
|
||||||
|
progressBarControl_data.EditValue = 0;
|
||||||
|
}));
|
||||||
|
|
||||||
|
var progressCnt = 0;
|
||||||
|
|
||||||
|
// WebServicee 초기 캔들 데이터 가져오기 : 종목, 개수
|
||||||
|
foreach (var marketName in marketList)
|
||||||
|
{
|
||||||
|
var marketCandleDataList = commonProperty.candleDataLists.Find(i => i.ConGoodsData.MarketName.Equals(marketName));
|
||||||
|
if (marketCandleDataList == null) continue;
|
||||||
|
|
||||||
// 캔들 데이터 가져오기
|
// 캔들 데이터 가져오기
|
||||||
foreach (var interval in Enum.GetValues(typeof(CommonProperty.MCandleTimeType)))
|
foreach (var interval in Enum.GetValues(typeof(CommonProperty.MCandleTimeType)))
|
||||||
@@ -392,17 +397,13 @@ namespace BitgetAPI
|
|||||||
progressBarControl_data.EditValue = progressCnt;
|
progressBarControl_data.EditValue = progressCnt;
|
||||||
progressBarControl_data.PerformStep();
|
progressBarControl_data.PerformStep();
|
||||||
progressBarControl_data.Update();
|
progressBarControl_data.Update();
|
||||||
|
|
||||||
//xtraTabPage_Searcher.PageEnabled = true;
|
|
||||||
//xtraTabControl_Main.SelectedTabPage = xtraTabPage_Searcher;
|
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
Invoke(new MethodInvoker(delegate ()
|
// 웹서비스 호출 완료 되면 시작
|
||||||
{
|
// 신호검색 스레드
|
||||||
xtraTabPage_Searcher.PageEnabled = true;
|
th_SignalInfo = new Thread(new ThreadStart(Signalnfo));
|
||||||
xtraTabControl_Main.SelectedTabPage = xtraTabPage_Searcher;
|
th_SignalInfo.Start();
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 거래소 콤보박스 클릭 시 이벤트 처리
|
// 거래소 콤보박스 클릭 시 이벤트 처리
|
||||||
@@ -420,7 +421,6 @@ namespace BitgetAPI
|
|||||||
commonProperty.selectedBitgetProductType = CommonProperty.BitgetProductType.FUTURE;
|
commonProperty.selectedBitgetProductType = CommonProperty.BitgetProductType.FUTURE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 코인 타입 콤보박스 클릭 시 이벤트 처리
|
// 코인 타입 콤보박스 클릭 시 이벤트 처리
|
||||||
@@ -446,7 +446,8 @@ namespace BitgetAPI
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 마켓 정보 가져오기
|
// 마켓 정보 가져오기
|
||||||
var marketInfos = (List<MarketInfo>)BitgetAPI.WebService.WebConnection.SendWebServer(exchangeWebReqType);
|
var marketInfos = commonProperty.marketInfoList = (List<MarketInfo>)BitgetAPI.WebService.WebConnection.SendWebServer(exchangeWebReqType);
|
||||||
|
commonProperty.marketInfoList = marketInfos;
|
||||||
|
|
||||||
labelControl_MarketCount.Text = marketInfos.Count().ToString();
|
labelControl_MarketCount.Text = marketInfos.Count().ToString();
|
||||||
treeList_MarketInfo.DataSource = marketInfos;
|
treeList_MarketInfo.DataSource = marketInfos;
|
||||||
@@ -469,8 +470,8 @@ namespace BitgetAPI
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 조건 설정 : 체크콤보박스 마켓 정보 추가하기
|
// 조건 설정 : 체크콤보박스 마켓 정보 추가하기
|
||||||
foreach (var item in commonProperty.candleDataLists)
|
foreach (var item in marketInfos.OrderByDescending(i => i.quoteVolume))
|
||||||
checkedComboBoxEdit_MarketInfoList.Properties.Items.Add(item.ConGoodsData.MarketName);
|
checkedComboBoxEdit_MarketInfoList.Properties.Items.Add(item.MarketName);
|
||||||
// 조건 설정 : 체크콤보박스 시간별 정보 추가하기
|
// 조건 설정 : 체크콤보박스 시간별 정보 추가하기
|
||||||
// 캔들 데이터 가져오기
|
// 캔들 데이터 가져오기
|
||||||
foreach (var interval in Enum.GetValues(typeof(CommonProperty.MCandleTimeType)))
|
foreach (var interval in Enum.GetValues(typeof(CommonProperty.MCandleTimeType)))
|
||||||
@@ -479,6 +480,10 @@ namespace BitgetAPI
|
|||||||
checkedComboBoxEdit_TimeInterval.Properties.Items.Add(description);
|
checkedComboBoxEdit_TimeInterval.Properties.Items.Add(description);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 마켓정보(WebService Ticker) => 0.5초당 1번으로 업데이트 하기 (현황판)
|
||||||
|
th_MarketInfoList = new Thread(() => getMarketInfoList_WebService(exchangeWebReqType));
|
||||||
|
th_MarketInfoList.Start();
|
||||||
|
|
||||||
#region 캔들 웹소켓 : 종목 50, 캔들 1 개만 해도 뒤지려고 함 !! (일딴 패스)
|
#region 캔들 웹소켓 : 종목 50, 캔들 1 개만 해도 뒤지려고 함 !! (일딴 패스)
|
||||||
/*
|
/*
|
||||||
// 시간별 분봉 웹소켓
|
// 시간별 분봉 웹소켓
|
||||||
@@ -490,11 +495,6 @@ namespace BitgetAPI
|
|||||||
break;
|
break;
|
||||||
}*/
|
}*/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
// WebServicee 초기 캔들 데이터 가져오기 : 종목, 개수
|
|
||||||
// 종목별 캔들 데이터 가져오기 (WebService)
|
|
||||||
//th_MarketCandeData = new Thread(() => getMarketCandleData_WebService(exchangeWebReqType));
|
|
||||||
//th_MarketCandeData.Start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 폼 닫기 시 처리 이벤트
|
// 폼 닫기 시 처리 이벤트
|
||||||
@@ -512,6 +512,12 @@ namespace BitgetAPI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (th_MarketInfoList != null)
|
||||||
|
{
|
||||||
|
th_MarketInfoList.Abort();
|
||||||
|
th_MarketInfoList = null;
|
||||||
|
}
|
||||||
|
|
||||||
if (treeListMarketInfoListUpdateTimer != null)
|
if (treeListMarketInfoListUpdateTimer != null)
|
||||||
{
|
{
|
||||||
treeListMarketInfoListUpdateTimer.Abort();
|
treeListMarketInfoListUpdateTimer.Abort();
|
||||||
@@ -540,5 +546,73 @@ namespace BitgetAPI
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 검색기 > 종목 재 정렬
|
||||||
|
private void simpleButton_MarketOrderRefresh_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
checkedComboBoxEdit_MarketInfoList.Properties.Items.Clear();
|
||||||
|
|
||||||
|
// 조건 설정 : 체크콤보박스 마켓 정보 추가하기
|
||||||
|
foreach (var item in commonProperty.marketInfoList.OrderByDescending(i=>i.quoteVolume))
|
||||||
|
checkedComboBoxEdit_MarketInfoList.Properties.Items.Add(item.MarketName);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 신호 검색 시작
|
||||||
|
private void simpleButton_SignalStart_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var count = 0;
|
||||||
|
|
||||||
|
var marketList = checkedComboBoxEdit_MarketInfoList.Properties.Items.GetCheckedValues();
|
||||||
|
if (marketList.Count <=0 ) return;
|
||||||
|
|
||||||
|
if (marketList.Count > 50)
|
||||||
|
{
|
||||||
|
for(var i = 50; i < marketList.Count; i++)
|
||||||
|
{
|
||||||
|
checkedComboBoxEdit_MarketInfoList.Properties.Items[i].CheckState = CheckState.Unchecked;
|
||||||
|
}
|
||||||
|
|
||||||
|
marketList = checkedComboBoxEdit_MarketInfoList.Properties.Items.GetCheckedValues();
|
||||||
|
}
|
||||||
|
|
||||||
|
th_MarketStatusList = new List<Thread>();
|
||||||
|
var dic = new Dictionary<string, object>();
|
||||||
|
dic.Add("op", "subscribe");
|
||||||
|
|
||||||
|
var argsList = new List<Dictionary<string, object>>();
|
||||||
|
|
||||||
|
// Json String 만들기
|
||||||
|
// 종목별 Ticker 구독하기
|
||||||
|
// WebSocket으로 데이터 가져오기
|
||||||
|
foreach (var marketName in marketList)
|
||||||
|
{
|
||||||
|
var args = new Dictionary<string, object>();
|
||||||
|
args.Add("instType", "USDT-FUTURES");
|
||||||
|
args.Add("channel", "ticker");
|
||||||
|
args.Add("instId", marketName);
|
||||||
|
argsList.Add(args);
|
||||||
|
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
dic.Add("args", argsList);
|
||||||
|
|
||||||
|
// 웹소켓으로 캔들 쌓기
|
||||||
|
var th_MarketStatus = new Thread(() => ThreadEventAsync(BitgetWebSocketType.현황정보_전체종목, dic));
|
||||||
|
th_MarketStatus.Start();
|
||||||
|
th_MarketStatusList.Add(th_MarketStatus);
|
||||||
|
|
||||||
|
// WebServicee 초기 캔들 데이터 가져오기 : 종목, 개수
|
||||||
|
// 종목별 캔들 데이터 가져오기 (WebService)
|
||||||
|
// 선택된 타입에 따라서 종목 정보 가져오기
|
||||||
|
var exchangeWebReqType = ExchangeWebReqType.BitgetMarket_Future;
|
||||||
|
th_MarketCandeData = new Thread(() => getMarketCandleData_WebService(exchangeWebReqType, marketList));
|
||||||
|
th_MarketCandeData.Start();
|
||||||
|
|
||||||
|
// 트리 현황판 업데이트
|
||||||
|
treeListMarketInfoListUpdateTimer = new Thread(new ThreadStart(TreeListMarketInfoListUpdate));
|
||||||
|
treeListMarketInfoListUpdateTimer.Start();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -118,6 +118,21 @@
|
|||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
<assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||||
|
<data name="simpleButton1.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
|
||||||
|
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
|
||||||
|
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALoBAAAC77u/
|
||||||
|
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
|
||||||
|
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
|
||||||
|
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
|
||||||
|
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
|
||||||
|
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KPC9z
|
||||||
|
dHlsZT4NCiAgPHBhdGggZD0iTTguOSw0LjFDOC40LDMuOCw4LDQuMSw4LDQuN3YyMi42YzAsMC43LDAu
|
||||||
|
NCwwLjksMC45LDAuNWwxNi43LTExLjNjMC41LTAuMywwLjUtMC45LDAtMS4yTDguOSw0LjF6IiBjbGFz
|
||||||
|
cz0iQmx1ZSIgLz4NCjwvc3ZnPgs=
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
<data name="simpleButton_MarketOrderRefresh.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="simpleButton_MarketOrderRefresh.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
|
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
|
||||||
|
|||||||
@@ -123,6 +123,7 @@ namespace BitgetAPI.WebService
|
|||||||
marketInfo.quoteVolume = Convert.ToDouble(item["quoteVolume"]);
|
marketInfo.quoteVolume = Convert.ToDouble(item["quoteVolume"]);
|
||||||
marketInfo.high24h = Convert.ToDouble(item["high24h"]);
|
marketInfo.high24h = Convert.ToDouble(item["high24h"]);
|
||||||
marketInfo.low24h = Convert.ToDouble(item["low24h"]);
|
marketInfo.low24h = Convert.ToDouble(item["low24h"]);
|
||||||
|
marketInfo.open24h = Convert.ToDouble(item["open24h"]);
|
||||||
commonProperty.marketInfoList.Add(marketInfo);
|
commonProperty.marketInfoList.Add(marketInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,6 +147,7 @@ namespace BitgetAPI.WebService
|
|||||||
foreach(var item in datas)
|
foreach(var item in datas)
|
||||||
{
|
{
|
||||||
CandleData candleData = new CandleData();
|
CandleData candleData = new CandleData();
|
||||||
|
|
||||||
candleData.Argument = Convertor.GetUnixtimeStampToDateTime(long.Parse(item[0].ToString()));
|
candleData.Argument = Convertor.GetUnixtimeStampToDateTime(long.Parse(item[0].ToString()));
|
||||||
candleData.Open = Convert.ToDouble(item[1]);
|
candleData.Open = Convert.ToDouble(item[1]);
|
||||||
candleData.High = Convert.ToDouble(item[2]);
|
candleData.High = Convert.ToDouble(item[2]);
|
||||||
@@ -281,8 +283,6 @@ namespace BitgetAPI.WebService
|
|||||||
DateTime dt = new DateTime(1970, 01, 01);
|
DateTime dt = new DateTime(1970, 01, 01);
|
||||||
tickerList.reciveTime = dt.AddMilliseconds(Convert.ToDouble(tickerList.ts)).ToLocalTime();
|
tickerList.reciveTime = dt.AddMilliseconds(Convert.ToDouble(tickerList.ts)).ToLocalTime();
|
||||||
|
|
||||||
var test = 0;
|
|
||||||
/*
|
|
||||||
// 웹소켓 티커 리스트에 추가
|
// 웹소켓 티커 리스트에 추가
|
||||||
var searchIndex = commonProperty.webSocketCandles.IndexOf(i => i.instId == tickerList.instId);
|
var searchIndex = commonProperty.webSocketCandles.IndexOf(i => i.instId == tickerList.instId);
|
||||||
if (searchIndex < 0)
|
if (searchIndex < 0)
|
||||||
@@ -305,6 +305,8 @@ namespace BitgetAPI.WebService
|
|||||||
candleData.Argument = tickerList.reciveTime;
|
candleData.Argument = tickerList.reciveTime;
|
||||||
candleData.Close = tickerList.lastPr;
|
candleData.Close = tickerList.lastPr;
|
||||||
|
|
||||||
|
if (interval == MCandleTimeType.H1) { }
|
||||||
|
|
||||||
// 캔들 리스트가 없으면 추가
|
// 캔들 리스트가 없으면 추가
|
||||||
if (candleDataList.Count == 0)
|
if (candleDataList.Count == 0)
|
||||||
candleDataList.Add(candleData);
|
candleDataList.Add(candleData);
|
||||||
@@ -377,14 +379,15 @@ namespace BitgetAPI.WebService
|
|||||||
// 없는 경우 추가
|
// 없는 경우 추가
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// 새 데이터 등록
|
if (candleData.Open == 0) { }
|
||||||
candleDataList.Add(candleData);
|
|
||||||
|
|
||||||
// 1분 이상 Ticker가 없는 겨우는 Open 가만 가격이 등록됨
|
// 1분 이상 Ticker가 없는 겨우는 Open 가만 가격이 등록됨
|
||||||
candleData.Open = candleData.Close;
|
candleData.Open = candleData.Close;
|
||||||
|
|
||||||
candleData.WebSocketUpdate = true;
|
candleData.WebSocketUpdate = true;
|
||||||
|
|
||||||
|
// 새 데이터 등록
|
||||||
|
candleDataList.Add(candleData);
|
||||||
|
|
||||||
// 기존 데이터 삭제
|
// 기존 데이터 삭제
|
||||||
if (candleDataList.Count > 250)
|
if (candleDataList.Count > 250)
|
||||||
{
|
{
|
||||||
@@ -395,7 +398,7 @@ namespace BitgetAPI.WebService
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CommonProperty.BitgetWebSocketType.캔들정보:
|
case CommonProperty.BitgetWebSocketType.캔들정보:
|
||||||
|
|||||||
Reference in New Issue
Block a user