1. 조건 재시작 및 프로그램 종료 Thread 수정

This commit is contained in:
USER002
2024-06-14 14:47:51 +09:00
parent fcc92807e6
commit 6d788f795a
7 changed files with 294 additions and 360 deletions

File diff suppressed because one or more lines are too long

View File

@@ -5,6 +5,7 @@ using BitgetAPI.Utils;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using BitgetApi.Data; using BitgetApi.Data;
using System.Net.WebSockets;
namespace BitgetAPI namespace BitgetAPI
{ {

View File

@@ -44,6 +44,8 @@ namespace BitgetAPI.IndicatorConditionSetup
// 현재 종가 인덱스 // 현재 종가 인덱스
var endIndex = candleDatas.Count() - 1; var endIndex = candleDatas.Count() - 1;
if (candleData == null) return;
// Ichimok 없으면 생성 // Ichimok 없으면 생성
if (candleData.IchimokData == null) candleData.IchimokData = new IchimokData(); if (candleData.IchimokData == null) candleData.IchimokData = new IchimokData();
@@ -55,7 +57,7 @@ namespace BitgetAPI.IndicatorConditionSetup
candleDatas.IndexOf(i) > endIndex - ConversionPeriod && candleDatas.IndexOf(i) > endIndex - ConversionPeriod &&
candleDatas.IndexOf(i) <= endIndex); candleDatas.IndexOf(i) <= endIndex);
if (datas == null) return; if (datas == null || datas.Count == 0) return;
// 전환선 // 전환선
candleData.IchimokData.전환선 = (datas.Min(i => i.Low) + datas.Max(i => i.High)) / 2; candleData.IchimokData.전환선 = (datas.Min(i => i.Low) + datas.Max(i => i.High)) / 2;
@@ -87,7 +89,7 @@ namespace BitgetAPI.IndicatorConditionSetup
candleDatas.IndexOf(i) > endIndex - ConversionPeriod && candleDatas.IndexOf(i) > endIndex - ConversionPeriod &&
candleDatas.IndexOf(i) <= endIndex); candleDatas.IndexOf(i) <= endIndex);
if (datas == null) return; if (datas == null || datas.Count == 0) return;
// 전환선 : 26일 전봉 // 전환선 : 26일 전봉
var displacement_전환선 = (datas.Min(i => i.Low) + datas.Max(i => i.High)) / 2; var displacement_전환선 = (datas.Min(i => i.Low) + datas.Max(i => i.High)) / 2;
@@ -96,7 +98,7 @@ namespace BitgetAPI.IndicatorConditionSetup
candleDatas.IndexOf(i) > endIndex - BaselinePeriod && candleDatas.IndexOf(i) > endIndex - BaselinePeriod &&
candleDatas.IndexOf(i) <= endIndex); candleDatas.IndexOf(i) <= endIndex);
if (datas == null) return; if (datas == null || datas.Count == 0) return;
// 기준선 : 26일 전봉 // 기준선 : 26일 전봉
var displacement_기준선 = (datas.Min(i => i.Low) + datas.Max(i => i.High)) / 2; var displacement_기준선 = (datas.Min(i => i.Low) + datas.Max(i => i.High)) / 2;

View File

@@ -75,23 +75,13 @@
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_SignalStart = new DevExpress.XtraEditors.SimpleButton();
this.simpleButton_MarketOrderRefresh = new DevExpress.XtraEditors.SimpleButton(); this.simpleButton_MarketOrderRefresh = new DevExpress.XtraEditors.SimpleButton();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.checkEdit_ichmokuUp_DC = new DevExpress.XtraEditors.CheckEdit();
this.checkEdit_ichmokuDown_DC = new DevExpress.XtraEditors.CheckEdit();
this.groupBox1 = new System.Windows.Forms.GroupBox(); this.groupBox1 = new System.Windows.Forms.GroupBox();
this.checkEdit_ichmokuUp_UC = new DevExpress.XtraEditors.CheckEdit(); this.checkEdit_ichmoku_Long = new DevExpress.XtraEditors.CheckEdit();
this.checkEdit_IchmokuDown_UC = new DevExpress.XtraEditors.CheckEdit(); this.checkEdit_Ichmoku_Short = new DevExpress.XtraEditors.CheckEdit();
this.timeSpanEdit_SesstionTime = new DevExpress.XtraEditors.TimeSpanEdit(); this.timeSpanEdit_SesstionTime = new DevExpress.XtraEditors.TimeSpanEdit();
this.labelControl8 = new DevExpress.XtraEditors.LabelControl(); this.labelControl8 = new DevExpress.XtraEditors.LabelControl();
this.labelControl7 = new DevExpress.XtraEditors.LabelControl(); this.labelControl7 = new DevExpress.XtraEditors.LabelControl();
@@ -100,7 +90,9 @@
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.simpleButton_SignalStart = new DevExpress.XtraEditors.SimpleButton(); this.groupBox2 = new System.Windows.Forms.GroupBox();
this.checkEdit_yhk_Long = new DevExpress.XtraEditors.CheckEdit();
this.checkEdit_yhk_Short = new DevExpress.XtraEditors.CheckEdit();
((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,20 +132,18 @@
this.splitContainerControl_FavoritePurchase.Panel2.SuspendLayout(); this.splitContainerControl_FavoritePurchase.Panel2.SuspendLayout();
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();
((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();
this.groupBox2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.checkEdit_ichmokuUp_DC.Properties)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.checkEdit_ichmokuDown_DC.Properties)).BeginInit();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.checkEdit_ichmokuUp_UC.Properties)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.checkEdit_ichmoku_Long.Properties)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.checkEdit_IchmokuDown_UC.Properties)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.checkEdit_Ichmoku_Short.Properties)).BeginInit();
((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();
this.groupBox2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.checkEdit_yhk_Long.Properties)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.checkEdit_yhk_Short.Properties)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
// //
// groupControl_Setting // groupControl_Setting
@@ -168,14 +158,14 @@
this.groupControl_Setting.Controls.Add(this.labelControl1); this.groupControl_Setting.Controls.Add(this.labelControl1);
this.groupControl_Setting.Location = new System.Drawing.Point(3, 2); this.groupControl_Setting.Location = new System.Drawing.Point(3, 2);
this.groupControl_Setting.Name = "groupControl_Setting"; this.groupControl_Setting.Name = "groupControl_Setting";
this.groupControl_Setting.Size = new System.Drawing.Size(922, 75); this.groupControl_Setting.Size = new System.Drawing.Size(1012, 75);
this.groupControl_Setting.TabIndex = 0; this.groupControl_Setting.TabIndex = 0;
this.groupControl_Setting.Text = "초기 설정"; this.groupControl_Setting.Text = "초기 설정";
// //
// progressBarControl_data // progressBarControl_data
// //
this.progressBarControl_data.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.progressBarControl_data.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.progressBarControl_data.Location = new System.Drawing.Point(717, 43); this.progressBarControl_data.Location = new System.Drawing.Point(807, 43);
this.progressBarControl_data.Name = "progressBarControl_data"; this.progressBarControl_data.Name = "progressBarControl_data";
this.progressBarControl_data.Properties.ShowTitle = true; this.progressBarControl_data.Properties.ShowTitle = true;
this.progressBarControl_data.Size = new System.Drawing.Size(200, 18); this.progressBarControl_data.Size = new System.Drawing.Size(200, 18);
@@ -206,7 +196,7 @@
// labelControl4 // labelControl4
// //
this.labelControl4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.labelControl4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.labelControl4.Location = new System.Drawing.Point(623, 44); this.labelControl4.Location = new System.Drawing.Point(713, 44);
this.labelControl4.Name = "labelControl4"; this.labelControl4.Name = "labelControl4";
this.labelControl4.Size = new System.Drawing.Size(88, 14); this.labelControl4.Size = new System.Drawing.Size(88, 14);
this.labelControl4.TabIndex = 0; this.labelControl4.TabIndex = 0;
@@ -236,14 +226,14 @@
this.groupControl_MarketInfo.Dock = System.Windows.Forms.DockStyle.Fill; this.groupControl_MarketInfo.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupControl_MarketInfo.Location = new System.Drawing.Point(0, 0); this.groupControl_MarketInfo.Location = new System.Drawing.Point(0, 0);
this.groupControl_MarketInfo.Name = "groupControl_MarketInfo"; this.groupControl_MarketInfo.Name = "groupControl_MarketInfo";
this.groupControl_MarketInfo.Size = new System.Drawing.Size(920, 408); this.groupControl_MarketInfo.Size = new System.Drawing.Size(1010, 408);
this.groupControl_MarketInfo.TabIndex = 1; this.groupControl_MarketInfo.TabIndex = 1;
this.groupControl_MarketInfo.Text = "종목 현황"; this.groupControl_MarketInfo.Text = "종목 현황";
// //
// labelControl_MarketCount // labelControl_MarketCount
// //
this.labelControl_MarketCount.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.labelControl_MarketCount.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.labelControl_MarketCount.Location = new System.Drawing.Point(866, 36); this.labelControl_MarketCount.Location = new System.Drawing.Point(956, 36);
this.labelControl_MarketCount.Name = "labelControl_MarketCount"; this.labelControl_MarketCount.Name = "labelControl_MarketCount";
this.labelControl_MarketCount.Size = new System.Drawing.Size(21, 14); this.labelControl_MarketCount.Size = new System.Drawing.Size(21, 14);
this.labelControl_MarketCount.TabIndex = 2; this.labelControl_MarketCount.TabIndex = 2;
@@ -252,7 +242,7 @@
// labelControl3 // labelControl3
// //
this.labelControl3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.labelControl3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.labelControl3.Location = new System.Drawing.Point(814, 36); this.labelControl3.Location = new System.Drawing.Point(904, 36);
this.labelControl3.Name = "labelControl3"; this.labelControl3.Name = "labelControl3";
this.labelControl3.Size = new System.Drawing.Size(46, 14); this.labelControl3.Size = new System.Drawing.Size(46, 14);
this.labelControl3.TabIndex = 1; this.labelControl3.TabIndex = 1;
@@ -275,7 +265,7 @@
this.treeListColumn_quoteVolume}); this.treeListColumn_quoteVolume});
this.treeList_MarketInfo.Location = new System.Drawing.Point(2, 56); this.treeList_MarketInfo.Location = new System.Drawing.Point(2, 56);
this.treeList_MarketInfo.Name = "treeList_MarketInfo"; this.treeList_MarketInfo.Name = "treeList_MarketInfo";
this.treeList_MarketInfo.Size = new System.Drawing.Size(916, 350); this.treeList_MarketInfo.Size = new System.Drawing.Size(1006, 350);
this.treeList_MarketInfo.TabIndex = 0; this.treeList_MarketInfo.TabIndex = 0;
// //
// treeListColumn_ExchangePlace // treeListColumn_ExchangePlace
@@ -372,7 +362,7 @@
this.xtraTabControl_Main.Location = new System.Drawing.Point(3, 83); this.xtraTabControl_Main.Location = new System.Drawing.Point(3, 83);
this.xtraTabControl_Main.Name = "xtraTabControl_Main"; this.xtraTabControl_Main.Name = "xtraTabControl_Main";
this.xtraTabControl_Main.SelectedTabPage = this.xtraTabPage_Status; this.xtraTabControl_Main.SelectedTabPage = this.xtraTabPage_Status;
this.xtraTabControl_Main.Size = new System.Drawing.Size(922, 434); this.xtraTabControl_Main.Size = new System.Drawing.Size(1012, 434);
this.xtraTabControl_Main.TabIndex = 2; this.xtraTabControl_Main.TabIndex = 2;
this.xtraTabControl_Main.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[] { this.xtraTabControl_Main.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[] {
this.xtraTabPage_Status, this.xtraTabPage_Status,
@@ -382,7 +372,7 @@
// //
this.xtraTabPage_Status.Controls.Add(this.groupControl_MarketInfo); this.xtraTabPage_Status.Controls.Add(this.groupControl_MarketInfo);
this.xtraTabPage_Status.Name = "xtraTabPage_Status"; this.xtraTabPage_Status.Name = "xtraTabPage_Status";
this.xtraTabPage_Status.Size = new System.Drawing.Size(920, 408); this.xtraTabPage_Status.Size = new System.Drawing.Size(1010, 408);
this.xtraTabPage_Status.Text = "현황판"; this.xtraTabPage_Status.Text = "현황판";
// //
// xtraTabPage_Searcher // xtraTabPage_Searcher
@@ -390,7 +380,7 @@
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.Size = new System.Drawing.Size(920, 408); this.xtraTabPage_Searcher.Size = new System.Drawing.Size(1010, 408);
this.xtraTabPage_Searcher.Text = "검색기"; this.xtraTabPage_Searcher.Text = "검색기";
// //
// groupControl_SignalSeacher // groupControl_SignalSeacher
@@ -399,7 +389,7 @@
this.groupControl_SignalSeacher.Dock = System.Windows.Forms.DockStyle.Fill; this.groupControl_SignalSeacher.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupControl_SignalSeacher.Location = new System.Drawing.Point(0, 119); this.groupControl_SignalSeacher.Location = new System.Drawing.Point(0, 119);
this.groupControl_SignalSeacher.Name = "groupControl_SignalSeacher"; this.groupControl_SignalSeacher.Name = "groupControl_SignalSeacher";
this.groupControl_SignalSeacher.Size = new System.Drawing.Size(920, 289); this.groupControl_SignalSeacher.Size = new System.Drawing.Size(1010, 289);
this.groupControl_SignalSeacher.TabIndex = 1; this.groupControl_SignalSeacher.TabIndex = 1;
this.groupControl_SignalSeacher.Text = "신호 검색"; this.groupControl_SignalSeacher.Text = "신호 검색";
// //
@@ -418,8 +408,8 @@
// //
this.splitContainerControl_SearchSignal.Panel2.Controls.Add(this.splitContainerControl_FavoritePurchase); this.splitContainerControl_SearchSignal.Panel2.Controls.Add(this.splitContainerControl_FavoritePurchase);
this.splitContainerControl_SearchSignal.Panel2.Text = "Panel2"; this.splitContainerControl_SearchSignal.Panel2.Text = "Panel2";
this.splitContainerControl_SearchSignal.Size = new System.Drawing.Size(916, 264); this.splitContainerControl_SearchSignal.Size = new System.Drawing.Size(1006, 264);
this.splitContainerControl_SearchSignal.SplitterPosition = 476; this.splitContainerControl_SearchSignal.SplitterPosition = 586;
this.splitContainerControl_SearchSignal.TabIndex = 1; this.splitContainerControl_SearchSignal.TabIndex = 1;
// //
// splitContainerControl_UpdateSignal // splitContainerControl_UpdateSignal
@@ -438,7 +428,7 @@
// //
this.splitContainerControl_UpdateSignal.Panel2.Controls.Add(this.groupControl_LongDownSignal); this.splitContainerControl_UpdateSignal.Panel2.Controls.Add(this.groupControl_LongDownSignal);
this.splitContainerControl_UpdateSignal.Panel2.Text = "Panel2"; this.splitContainerControl_UpdateSignal.Panel2.Text = "Panel2";
this.splitContainerControl_UpdateSignal.Size = new System.Drawing.Size(476, 264); this.splitContainerControl_UpdateSignal.Size = new System.Drawing.Size(586, 264);
this.splitContainerControl_UpdateSignal.SplitterPosition = 129; this.splitContainerControl_UpdateSignal.SplitterPosition = 129;
this.splitContainerControl_UpdateSignal.TabIndex = 2; this.splitContainerControl_UpdateSignal.TabIndex = 2;
// //
@@ -448,7 +438,7 @@
this.groupControl_LongUpSignal.Dock = System.Windows.Forms.DockStyle.Fill; this.groupControl_LongUpSignal.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupControl_LongUpSignal.Location = new System.Drawing.Point(0, 0); this.groupControl_LongUpSignal.Location = new System.Drawing.Point(0, 0);
this.groupControl_LongUpSignal.Name = "groupControl_LongUpSignal"; this.groupControl_LongUpSignal.Name = "groupControl_LongUpSignal";
this.groupControl_LongUpSignal.Size = new System.Drawing.Size(476, 129); this.groupControl_LongUpSignal.Size = new System.Drawing.Size(586, 129);
this.groupControl_LongUpSignal.TabIndex = 0; this.groupControl_LongUpSignal.TabIndex = 0;
this.groupControl_LongUpSignal.Text = "검색 현황 (Long 상숭)"; this.groupControl_LongUpSignal.Text = "검색 현황 (Long 상숭)";
// //
@@ -465,7 +455,7 @@
this.treeList_LongUp.Dock = System.Windows.Forms.DockStyle.Fill; this.treeList_LongUp.Dock = System.Windows.Forms.DockStyle.Fill;
this.treeList_LongUp.Location = new System.Drawing.Point(2, 23); this.treeList_LongUp.Location = new System.Drawing.Point(2, 23);
this.treeList_LongUp.Name = "treeList_LongUp"; this.treeList_LongUp.Name = "treeList_LongUp";
this.treeList_LongUp.Size = new System.Drawing.Size(472, 104); this.treeList_LongUp.Size = new System.Drawing.Size(582, 104);
this.treeList_LongUp.TabIndex = 0; this.treeList_LongUp.TabIndex = 0;
// //
// treeListColumn_SignalStart // treeListColumn_SignalStart
@@ -477,6 +467,7 @@
this.treeListColumn_SignalStart.Name = "treeListColumn_SignalStart"; this.treeListColumn_SignalStart.Name = "treeListColumn_SignalStart";
this.treeListColumn_SignalStart.Visible = true; this.treeListColumn_SignalStart.Visible = true;
this.treeListColumn_SignalStart.VisibleIndex = 2; this.treeListColumn_SignalStart.VisibleIndex = 2;
this.treeListColumn_SignalStart.Width = 84;
// //
// treeListColumn_LU_MarketName // treeListColumn_LU_MarketName
// //
@@ -485,6 +476,7 @@
this.treeListColumn_LU_MarketName.Name = "treeListColumn_LU_MarketName"; this.treeListColumn_LU_MarketName.Name = "treeListColumn_LU_MarketName";
this.treeListColumn_LU_MarketName.Visible = true; this.treeListColumn_LU_MarketName.Visible = true;
this.treeListColumn_LU_MarketName.VisibleIndex = 1; this.treeListColumn_LU_MarketName.VisibleIndex = 1;
this.treeListColumn_LU_MarketName.Width = 84;
// //
// treeListColumn_LU_Description // treeListColumn_LU_Description
// //
@@ -493,6 +485,7 @@
this.treeListColumn_LU_Description.Name = "treeListColumn_LU_Description"; this.treeListColumn_LU_Description.Name = "treeListColumn_LU_Description";
this.treeListColumn_LU_Description.Visible = true; this.treeListColumn_LU_Description.Visible = true;
this.treeListColumn_LU_Description.VisibleIndex = 0; this.treeListColumn_LU_Description.VisibleIndex = 0;
this.treeListColumn_LU_Description.Width = 59;
// //
// treeListColumn_LU_Price // treeListColumn_LU_Price
// //
@@ -503,6 +496,7 @@
this.treeListColumn_LU_Price.Name = "treeListColumn_LU_Price"; this.treeListColumn_LU_Price.Name = "treeListColumn_LU_Price";
this.treeListColumn_LU_Price.Visible = true; this.treeListColumn_LU_Price.Visible = true;
this.treeListColumn_LU_Price.VisibleIndex = 3; this.treeListColumn_LU_Price.VisibleIndex = 3;
this.treeListColumn_LU_Price.Width = 84;
// //
// treeListColumn_Rate // treeListColumn_Rate
// //
@@ -513,26 +507,29 @@
this.treeListColumn_Rate.Name = "treeListColumn_Rate"; this.treeListColumn_Rate.Name = "treeListColumn_Rate";
this.treeListColumn_Rate.Visible = true; this.treeListColumn_Rate.Visible = true;
this.treeListColumn_Rate.VisibleIndex = 4; this.treeListColumn_Rate.VisibleIndex = 4;
this.treeListColumn_Rate.Width = 82;
// //
// treeListColumn_LU_IndicatorPrice // treeListColumn_LU_IndicatorPrice
// //
this.treeListColumn_LU_IndicatorPrice.Caption = "지표(구름떼) 가격"; this.treeListColumn_LU_IndicatorPrice.Caption = "매수가(예상)";
this.treeListColumn_LU_IndicatorPrice.FieldName = "IndicatorPrice"; this.treeListColumn_LU_IndicatorPrice.FieldName = "IndicatorPrice";
this.treeListColumn_LU_IndicatorPrice.Format.FormatString = "0.00000"; this.treeListColumn_LU_IndicatorPrice.Format.FormatString = "0.00000";
this.treeListColumn_LU_IndicatorPrice.Format.FormatType = DevExpress.Utils.FormatType.Custom; this.treeListColumn_LU_IndicatorPrice.Format.FormatType = DevExpress.Utils.FormatType.Custom;
this.treeListColumn_LU_IndicatorPrice.Name = "treeListColumn_LU_IndicatorPrice"; this.treeListColumn_LU_IndicatorPrice.Name = "treeListColumn_LU_IndicatorPrice";
this.treeListColumn_LU_IndicatorPrice.Visible = true; this.treeListColumn_LU_IndicatorPrice.Visible = true;
this.treeListColumn_LU_IndicatorPrice.VisibleIndex = 5; this.treeListColumn_LU_IndicatorPrice.VisibleIndex = 5;
this.treeListColumn_LU_IndicatorPrice.Width = 82;
// //
// treeListColumn_LU_IndicatorRate // treeListColumn_LU_IndicatorRate
// //
this.treeListColumn_LU_IndicatorRate.Caption = "지표가(매수가) 비율"; this.treeListColumn_LU_IndicatorRate.Caption = "수익률(예상)";
this.treeListColumn_LU_IndicatorRate.FieldName = "IndicatorRate"; this.treeListColumn_LU_IndicatorRate.FieldName = "IndicatorRate";
this.treeListColumn_LU_IndicatorRate.Format.FormatString = "0.00000"; this.treeListColumn_LU_IndicatorRate.Format.FormatString = "0.00000";
this.treeListColumn_LU_IndicatorRate.Format.FormatType = DevExpress.Utils.FormatType.Custom; this.treeListColumn_LU_IndicatorRate.Format.FormatType = DevExpress.Utils.FormatType.Custom;
this.treeListColumn_LU_IndicatorRate.Name = "treeListColumn_LU_IndicatorRate"; this.treeListColumn_LU_IndicatorRate.Name = "treeListColumn_LU_IndicatorRate";
this.treeListColumn_LU_IndicatorRate.Visible = true; this.treeListColumn_LU_IndicatorRate.Visible = true;
this.treeListColumn_LU_IndicatorRate.VisibleIndex = 6; this.treeListColumn_LU_IndicatorRate.VisibleIndex = 6;
this.treeListColumn_LU_IndicatorRate.Width = 82;
// //
// groupControl_LongDownSignal // groupControl_LongDownSignal
// //
@@ -540,7 +537,7 @@
this.groupControl_LongDownSignal.Dock = System.Windows.Forms.DockStyle.Fill; this.groupControl_LongDownSignal.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupControl_LongDownSignal.Location = new System.Drawing.Point(0, 0); this.groupControl_LongDownSignal.Location = new System.Drawing.Point(0, 0);
this.groupControl_LongDownSignal.Name = "groupControl_LongDownSignal"; this.groupControl_LongDownSignal.Name = "groupControl_LongDownSignal";
this.groupControl_LongDownSignal.Size = new System.Drawing.Size(476, 125); this.groupControl_LongDownSignal.Size = new System.Drawing.Size(586, 125);
this.groupControl_LongDownSignal.TabIndex = 0; this.groupControl_LongDownSignal.TabIndex = 0;
this.groupControl_LongDownSignal.Text = "검색 현황 (Short 하락)"; this.groupControl_LongDownSignal.Text = "검색 현황 (Short 하락)";
// //
@@ -557,7 +554,7 @@
this.treeList_ShortDown.Dock = System.Windows.Forms.DockStyle.Fill; this.treeList_ShortDown.Dock = System.Windows.Forms.DockStyle.Fill;
this.treeList_ShortDown.Location = new System.Drawing.Point(2, 23); this.treeList_ShortDown.Location = new System.Drawing.Point(2, 23);
this.treeList_ShortDown.Name = "treeList_ShortDown"; this.treeList_ShortDown.Name = "treeList_ShortDown";
this.treeList_ShortDown.Size = new System.Drawing.Size(472, 100); this.treeList_ShortDown.Size = new System.Drawing.Size(582, 100);
this.treeList_ShortDown.TabIndex = 1; this.treeList_ShortDown.TabIndex = 1;
// //
// treeListColumn_SD_SignalStart // treeListColumn_SD_SignalStart
@@ -569,6 +566,7 @@
this.treeListColumn_SD_SignalStart.Name = "treeListColumn_SD_SignalStart"; this.treeListColumn_SD_SignalStart.Name = "treeListColumn_SD_SignalStart";
this.treeListColumn_SD_SignalStart.Visible = true; this.treeListColumn_SD_SignalStart.Visible = true;
this.treeListColumn_SD_SignalStart.VisibleIndex = 2; this.treeListColumn_SD_SignalStart.VisibleIndex = 2;
this.treeListColumn_SD_SignalStart.Width = 84;
// //
// treeListColumn_SD_MarketName // treeListColumn_SD_MarketName
// //
@@ -577,6 +575,7 @@
this.treeListColumn_SD_MarketName.Name = "treeListColumn_SD_MarketName"; this.treeListColumn_SD_MarketName.Name = "treeListColumn_SD_MarketName";
this.treeListColumn_SD_MarketName.Visible = true; this.treeListColumn_SD_MarketName.Visible = true;
this.treeListColumn_SD_MarketName.VisibleIndex = 1; this.treeListColumn_SD_MarketName.VisibleIndex = 1;
this.treeListColumn_SD_MarketName.Width = 84;
// //
// treeListColumn_SD_Description // treeListColumn_SD_Description
// //
@@ -585,6 +584,7 @@
this.treeListColumn_SD_Description.Name = "treeListColumn_SD_Description"; this.treeListColumn_SD_Description.Name = "treeListColumn_SD_Description";
this.treeListColumn_SD_Description.Visible = true; this.treeListColumn_SD_Description.Visible = true;
this.treeListColumn_SD_Description.VisibleIndex = 0; this.treeListColumn_SD_Description.VisibleIndex = 0;
this.treeListColumn_SD_Description.Width = 58;
// //
// treeListColumn_SD_Price // treeListColumn_SD_Price
// //
@@ -595,6 +595,7 @@
this.treeListColumn_SD_Price.Name = "treeListColumn_SD_Price"; this.treeListColumn_SD_Price.Name = "treeListColumn_SD_Price";
this.treeListColumn_SD_Price.Visible = true; this.treeListColumn_SD_Price.Visible = true;
this.treeListColumn_SD_Price.VisibleIndex = 3; this.treeListColumn_SD_Price.VisibleIndex = 3;
this.treeListColumn_SD_Price.Width = 84;
// //
// treeListColumn_SD_Rate // treeListColumn_SD_Rate
// //
@@ -605,26 +606,29 @@
this.treeListColumn_SD_Rate.Name = "treeListColumn_SD_Rate"; this.treeListColumn_SD_Rate.Name = "treeListColumn_SD_Rate";
this.treeListColumn_SD_Rate.Visible = true; this.treeListColumn_SD_Rate.Visible = true;
this.treeListColumn_SD_Rate.VisibleIndex = 4; this.treeListColumn_SD_Rate.VisibleIndex = 4;
this.treeListColumn_SD_Rate.Width = 83;
// //
// treeListColumn_SD_IndicatorPrice // treeListColumn_SD_IndicatorPrice
// //
this.treeListColumn_SD_IndicatorPrice.Caption = "지표(구름떼) 가격"; this.treeListColumn_SD_IndicatorPrice.Caption = "매수가(예상)";
this.treeListColumn_SD_IndicatorPrice.FieldName = "IndicatorPrice"; this.treeListColumn_SD_IndicatorPrice.FieldName = "IndicatorPrice";
this.treeListColumn_SD_IndicatorPrice.Format.FormatString = "0.00000"; this.treeListColumn_SD_IndicatorPrice.Format.FormatString = "0.00000";
this.treeListColumn_SD_IndicatorPrice.Format.FormatType = DevExpress.Utils.FormatType.Custom; this.treeListColumn_SD_IndicatorPrice.Format.FormatType = DevExpress.Utils.FormatType.Custom;
this.treeListColumn_SD_IndicatorPrice.Name = "treeListColumn_SD_IndicatorPrice"; this.treeListColumn_SD_IndicatorPrice.Name = "treeListColumn_SD_IndicatorPrice";
this.treeListColumn_SD_IndicatorPrice.Visible = true; this.treeListColumn_SD_IndicatorPrice.Visible = true;
this.treeListColumn_SD_IndicatorPrice.VisibleIndex = 5; this.treeListColumn_SD_IndicatorPrice.VisibleIndex = 5;
this.treeListColumn_SD_IndicatorPrice.Width = 82;
// //
// treeListColumn_SD_IndicatorRate // treeListColumn_SD_IndicatorRate
// //
this.treeListColumn_SD_IndicatorRate.Caption = "지표가(매수가) 비율"; this.treeListColumn_SD_IndicatorRate.Caption = "수익률(예상)";
this.treeListColumn_SD_IndicatorRate.FieldName = "IndicatorRate"; this.treeListColumn_SD_IndicatorRate.FieldName = "IndicatorRate";
this.treeListColumn_SD_IndicatorRate.Format.FormatString = "0.00000"; this.treeListColumn_SD_IndicatorRate.Format.FormatString = "0.00000";
this.treeListColumn_SD_IndicatorRate.Format.FormatType = DevExpress.Utils.FormatType.Custom; this.treeListColumn_SD_IndicatorRate.Format.FormatType = DevExpress.Utils.FormatType.Custom;
this.treeListColumn_SD_IndicatorRate.Name = "treeListColumn_SD_IndicatorRate"; this.treeListColumn_SD_IndicatorRate.Name = "treeListColumn_SD_IndicatorRate";
this.treeListColumn_SD_IndicatorRate.Visible = true; this.treeListColumn_SD_IndicatorRate.Visible = true;
this.treeListColumn_SD_IndicatorRate.VisibleIndex = 6; this.treeListColumn_SD_IndicatorRate.VisibleIndex = 6;
this.treeListColumn_SD_IndicatorRate.Width = 82;
// //
// splitContainerControl_FavoritePurchase // splitContainerControl_FavoritePurchase
// //
@@ -642,116 +646,33 @@
// //
this.splitContainerControl_FavoritePurchase.Panel2.Controls.Add(this.groupControl_FP_ShortUp); this.splitContainerControl_FavoritePurchase.Panel2.Controls.Add(this.groupControl_FP_ShortUp);
this.splitContainerControl_FavoritePurchase.Panel2.Text = "Panel2"; this.splitContainerControl_FavoritePurchase.Panel2.Text = "Panel2";
this.splitContainerControl_FavoritePurchase.Size = new System.Drawing.Size(430, 264); this.splitContainerControl_FavoritePurchase.Size = new System.Drawing.Size(410, 264);
this.splitContainerControl_FavoritePurchase.SplitterPosition = 130; this.splitContainerControl_FavoritePurchase.SplitterPosition = 130;
this.splitContainerControl_FavoritePurchase.TabIndex = 3; this.splitContainerControl_FavoritePurchase.TabIndex = 3;
// //
// groupControl_FP_LongDown // groupControl_FP_LongDown
// //
this.groupControl_FP_LongDown.Controls.Add(this.treeList1);
this.groupControl_FP_LongDown.Dock = System.Windows.Forms.DockStyle.Fill; this.groupControl_FP_LongDown.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupControl_FP_LongDown.Location = new System.Drawing.Point(0, 0); this.groupControl_FP_LongDown.Location = new System.Drawing.Point(0, 0);
this.groupControl_FP_LongDown.Name = "groupControl_FP_LongDown"; this.groupControl_FP_LongDown.Name = "groupControl_FP_LongDown";
this.groupControl_FP_LongDown.Size = new System.Drawing.Size(430, 130); this.groupControl_FP_LongDown.Size = new System.Drawing.Size(410, 130);
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;
this.groupControl_FP_ShortUp.Location = new System.Drawing.Point(0, 0); this.groupControl_FP_ShortUp.Location = new System.Drawing.Point(0, 0);
this.groupControl_FP_ShortUp.Name = "groupControl_FP_ShortUp"; this.groupControl_FP_ShortUp.Name = "groupControl_FP_ShortUp";
this.groupControl_FP_ShortUp.Size = new System.Drawing.Size(430, 124); this.groupControl_FP_ShortUp.Size = new System.Drawing.Size(410, 124);
this.groupControl_FP_ShortUp.TabIndex = 0; this.groupControl_FP_ShortUp.TabIndex = 0;
this.groupControl_FP_ShortUp.Text = "관심 종목 (Long 하락)"; this.groupControl_FP_ShortUp.Text = "관심 종목 (Long 하락)";
// //
// groupControl_SearcherCondition // groupControl_SearcherCondition
// //
this.groupControl_SearcherCondition.Controls.Add(this.groupBox2);
this.groupControl_SearcherCondition.Controls.Add(this.simpleButton_SignalStart); 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.groupBox1); this.groupControl_SearcherCondition.Controls.Add(this.groupBox1);
this.groupControl_SearcherCondition.Controls.Add(this.timeSpanEdit_SesstionTime); this.groupControl_SearcherCondition.Controls.Add(this.timeSpanEdit_SesstionTime);
this.groupControl_SearcherCondition.Controls.Add(this.labelControl8); this.groupControl_SearcherCondition.Controls.Add(this.labelControl8);
@@ -763,10 +684,21 @@
this.groupControl_SearcherCondition.Dock = System.Windows.Forms.DockStyle.Top; this.groupControl_SearcherCondition.Dock = System.Windows.Forms.DockStyle.Top;
this.groupControl_SearcherCondition.Location = new System.Drawing.Point(0, 0); this.groupControl_SearcherCondition.Location = new System.Drawing.Point(0, 0);
this.groupControl_SearcherCondition.Name = "groupControl_SearcherCondition"; this.groupControl_SearcherCondition.Name = "groupControl_SearcherCondition";
this.groupControl_SearcherCondition.Size = new System.Drawing.Size(920, 119); this.groupControl_SearcherCondition.Size = new System.Drawing.Size(1010, 119);
this.groupControl_SearcherCondition.TabIndex = 0; this.groupControl_SearcherCondition.TabIndex = 0;
this.groupControl_SearcherCondition.Text = "조건 설정"; this.groupControl_SearcherCondition.Text = "조건 설정";
// //
// simpleButton_SignalStart
//
this.simpleButton_SignalStart.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton_SignalStart.ImageOptions.SvgImage")));
this.simpleButton_SignalStart.ImageOptions.SvgImageColorizationMode = DevExpress.Utils.SvgImageColorizationMode.Full;
this.simpleButton_SignalStart.Location = new System.Drawing.Point(575, 37);
this.simpleButton_SignalStart.Name = "simpleButton_SignalStart";
this.simpleButton_SignalStart.Size = new System.Drawing.Size(35, 30);
this.simpleButton_SignalStart.TabIndex = 8;
this.simpleButton_SignalStart.Text = "R";
this.simpleButton_SignalStart.Click += new System.EventHandler(this.simpleButton_SignalStart_Click);
//
// simpleButton_MarketOrderRefresh // simpleButton_MarketOrderRefresh
// //
this.simpleButton_MarketOrderRefresh.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton_MarketOrderRefresh.ImageOptions.SvgImage"))); this.simpleButton_MarketOrderRefresh.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton_MarketOrderRefresh.ImageOptions.SvgImage")));
@@ -778,69 +710,37 @@
this.simpleButton_MarketOrderRefresh.Text = "R"; this.simpleButton_MarketOrderRefresh.Text = "R";
this.simpleButton_MarketOrderRefresh.Click += new System.EventHandler(this.simpleButton_MarketOrderRefresh_Click); this.simpleButton_MarketOrderRefresh.Click += new System.EventHandler(this.simpleButton_MarketOrderRefresh_Click);
// //
// groupBox2
//
this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.groupBox2.Controls.Add(this.checkEdit_ichmokuUp_DC);
this.groupBox2.Controls.Add(this.checkEdit_ichmokuDown_DC);
this.groupBox2.Location = new System.Drawing.Point(802, 26);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(112, 68);
this.groupBox2.TabIndex = 5;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "아래 구름선 (하락)";
//
// checkEdit_ichmokuUp_DC
//
this.checkEdit_ichmokuUp_DC.EditValue = true;
this.checkEdit_ichmokuUp_DC.Enabled = false;
this.checkEdit_ichmokuUp_DC.Location = new System.Drawing.Point(6, 21);
this.checkEdit_ichmokuUp_DC.Name = "checkEdit_ichmokuUp_DC";
this.checkEdit_ichmokuUp_DC.Properties.Caption = "구름떼 돌파";
this.checkEdit_ichmokuUp_DC.Size = new System.Drawing.Size(87, 20);
this.checkEdit_ichmokuUp_DC.TabIndex = 2;
//
// checkEdit_ichmokuDown_DC
//
this.checkEdit_ichmokuDown_DC.EditValue = true;
this.checkEdit_ichmokuDown_DC.Enabled = false;
this.checkEdit_ichmokuDown_DC.Location = new System.Drawing.Point(6, 40);
this.checkEdit_ichmokuDown_DC.Name = "checkEdit_ichmokuDown_DC";
this.checkEdit_ichmokuDown_DC.Properties.Caption = "구름떼 하락";
this.checkEdit_ichmokuDown_DC.Size = new System.Drawing.Size(87, 20);
this.checkEdit_ichmokuDown_DC.TabIndex = 2;
//
// groupBox1 // groupBox1
// //
this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.groupBox1.Controls.Add(this.checkEdit_ichmokuUp_UC); this.groupBox1.Controls.Add(this.checkEdit_ichmoku_Long);
this.groupBox1.Controls.Add(this.checkEdit_IchmokuDown_UC); this.groupBox1.Controls.Add(this.checkEdit_Ichmoku_Short);
this.groupBox1.Location = new System.Drawing.Point(690, 26); this.groupBox1.Location = new System.Drawing.Point(806, 37);
this.groupBox1.Name = "groupBox1"; this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(106, 68); this.groupBox1.Size = new System.Drawing.Size(96, 68);
this.groupBox1.TabIndex = 6; this.groupBox1.TabIndex = 6;
this.groupBox1.TabStop = false; this.groupBox1.TabStop = false;
this.groupBox1.Text = "윗 구름선 (상승)"; this.groupBox1.Text = "구름떼";
// //
// checkEdit_ichmokuUp_UC // checkEdit_ichmoku_Long
// //
this.checkEdit_ichmokuUp_UC.EditValue = true; this.checkEdit_ichmoku_Long.EditValue = true;
this.checkEdit_ichmokuUp_UC.Enabled = false; this.checkEdit_ichmoku_Long.Enabled = false;
this.checkEdit_ichmokuUp_UC.Location = new System.Drawing.Point(6, 21); this.checkEdit_ichmoku_Long.Location = new System.Drawing.Point(6, 21);
this.checkEdit_ichmokuUp_UC.Name = "checkEdit_ichmokuUp_UC"; this.checkEdit_ichmoku_Long.Name = "checkEdit_ichmoku_Long";
this.checkEdit_ichmokuUp_UC.Properties.Caption = "구름떼 돌파"; this.checkEdit_ichmoku_Long.Properties.Caption = "Long";
this.checkEdit_ichmokuUp_UC.Size = new System.Drawing.Size(87, 20); this.checkEdit_ichmoku_Long.Size = new System.Drawing.Size(87, 20);
this.checkEdit_ichmokuUp_UC.TabIndex = 2; this.checkEdit_ichmoku_Long.TabIndex = 2;
// //
// checkEdit_IchmokuDown_UC // checkEdit_Ichmoku_Short
// //
this.checkEdit_IchmokuDown_UC.EditValue = true; this.checkEdit_Ichmoku_Short.EditValue = true;
this.checkEdit_IchmokuDown_UC.Enabled = false; this.checkEdit_Ichmoku_Short.Enabled = false;
this.checkEdit_IchmokuDown_UC.Location = new System.Drawing.Point(6, 40); this.checkEdit_Ichmoku_Short.Location = new System.Drawing.Point(6, 40);
this.checkEdit_IchmokuDown_UC.Name = "checkEdit_IchmokuDown_UC"; this.checkEdit_Ichmoku_Short.Name = "checkEdit_Ichmoku_Short";
this.checkEdit_IchmokuDown_UC.Properties.Caption = "구름떼 하락"; this.checkEdit_Ichmoku_Short.Properties.Caption = "Short";
this.checkEdit_IchmokuDown_UC.Size = new System.Drawing.Size(87, 20); this.checkEdit_Ichmoku_Short.Size = new System.Drawing.Size(87, 20);
this.checkEdit_IchmokuDown_UC.TabIndex = 2; this.checkEdit_Ichmoku_Short.TabIndex = 2;
// //
// timeSpanEdit_SesstionTime // timeSpanEdit_SesstionTime
// //
@@ -915,22 +815,41 @@
this.treeListColumn1.Visible = true; this.treeListColumn1.Visible = true;
this.treeListColumn1.VisibleIndex = 0; this.treeListColumn1.VisibleIndex = 0;
// //
// simpleButton_SignalStart // groupBox2
// //
this.simpleButton_SignalStart.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton1.ImageOptions.SvgImage"))); this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.simpleButton_SignalStart.ImageOptions.SvgImageColorizationMode = DevExpress.Utils.SvgImageColorizationMode.Full; this.groupBox2.Controls.Add(this.checkEdit_yhk_Long);
this.simpleButton_SignalStart.Location = new System.Drawing.Point(575, 37); this.groupBox2.Controls.Add(this.checkEdit_yhk_Short);
this.simpleButton_SignalStart.Name = "simpleButton_SignalStart"; this.groupBox2.Location = new System.Drawing.Point(908, 36);
this.simpleButton_SignalStart.Size = new System.Drawing.Size(35, 30); this.groupBox2.Name = "groupBox2";
this.simpleButton_SignalStart.TabIndex = 8; this.groupBox2.Size = new System.Drawing.Size(83, 68);
this.simpleButton_SignalStart.Text = "R"; this.groupBox2.TabIndex = 9;
this.simpleButton_SignalStart.Click += new System.EventHandler(this.simpleButton_SignalStart_Click); this.groupBox2.TabStop = false;
this.groupBox2.Text = "24,72,4";
//
// checkEdit_yhk_Long
//
this.checkEdit_yhk_Long.Location = new System.Drawing.Point(6, 21);
this.checkEdit_yhk_Long.Name = "checkEdit_yhk_Long";
this.checkEdit_yhk_Long.Properties.Caption = "Long";
this.checkEdit_yhk_Long.Size = new System.Drawing.Size(87, 20);
this.checkEdit_yhk_Long.TabIndex = 2;
//
// checkEdit_yhk_Short
//
this.checkEdit_yhk_Short.EditValue = true;
this.checkEdit_yhk_Short.Enabled = false;
this.checkEdit_yhk_Short.Location = new System.Drawing.Point(6, 40);
this.checkEdit_yhk_Short.Name = "checkEdit_yhk_Short";
this.checkEdit_yhk_Short.Properties.Caption = "Short";
this.checkEdit_yhk_Short.Size = new System.Drawing.Size(87, 20);
this.checkEdit_yhk_Short.TabIndex = 2;
// //
// MainForm // MainForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(926, 522); this.ClientSize = new System.Drawing.Size(1016, 522);
this.Controls.Add(this.xtraTabControl_Main); this.Controls.Add(this.xtraTabControl_Main);
this.Controls.Add(this.groupControl_Setting); this.Controls.Add(this.groupControl_Setting);
this.MinimumSize = new System.Drawing.Size(719, 303); this.MinimumSize = new System.Drawing.Size(719, 303);
@@ -978,21 +897,19 @@
((System.ComponentModel.ISupportInitialize)(this.splitContainerControl_FavoritePurchase)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.splitContainerControl_FavoritePurchase)).EndInit();
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);
((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);
this.groupControl_SearcherCondition.PerformLayout(); this.groupControl_SearcherCondition.PerformLayout();
this.groupBox2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.checkEdit_ichmokuUp_DC.Properties)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.checkEdit_ichmokuDown_DC.Properties)).EndInit();
this.groupBox1.ResumeLayout(false); this.groupBox1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.checkEdit_ichmokuUp_UC.Properties)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.checkEdit_ichmoku_Long.Properties)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.checkEdit_IchmokuDown_UC.Properties)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.checkEdit_Ichmoku_Short.Properties)).EndInit();
((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();
this.groupBox2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.checkEdit_yhk_Long.Properties)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.checkEdit_yhk_Short.Properties)).EndInit();
this.ResumeLayout(false); this.ResumeLayout(false);
} }
@@ -1047,12 +964,9 @@
private DevExpress.XtraEditors.LabelControl labelControl8; private DevExpress.XtraEditors.LabelControl labelControl8;
private DevExpress.XtraEditors.LabelControl labelControl7; private DevExpress.XtraEditors.LabelControl labelControl7;
private DevExpress.XtraEditors.SimpleButton simpleButton_MarketOrderRefresh; private DevExpress.XtraEditors.SimpleButton simpleButton_MarketOrderRefresh;
private System.Windows.Forms.GroupBox groupBox2;
private DevExpress.XtraEditors.CheckEdit checkEdit_ichmokuUp_DC;
private DevExpress.XtraEditors.CheckEdit checkEdit_ichmokuDown_DC;
private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.GroupBox groupBox1;
private DevExpress.XtraEditors.CheckEdit checkEdit_ichmokuUp_UC; private DevExpress.XtraEditors.CheckEdit checkEdit_ichmoku_Long;
private DevExpress.XtraEditors.CheckEdit checkEdit_IchmokuDown_UC; private DevExpress.XtraEditors.CheckEdit checkEdit_Ichmoku_Short;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_SignalStart; private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_SignalStart;
private DevExpress.XtraTreeList.TreeList treeList_ShortDown; private DevExpress.XtraTreeList.TreeList treeList_ShortDown;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_SD_SignalStart; private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_SD_SignalStart;
@@ -1062,15 +976,10 @@
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_SD_Rate; private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_SD_Rate;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_SD_IndicatorPrice; private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_SD_IndicatorPrice;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_SD_IndicatorRate; private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_SD_IndicatorRate;
private DevExpress.XtraTreeList.TreeList treeList1;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn2;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn3;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn4;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn5;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn6;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn7;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn8;
private DevExpress.XtraEditors.SimpleButton simpleButton_SignalStart; private DevExpress.XtraEditors.SimpleButton simpleButton_SignalStart;
private System.Windows.Forms.GroupBox groupBox2;
private DevExpress.XtraEditors.CheckEdit checkEdit_yhk_Long;
private DevExpress.XtraEditors.CheckEdit checkEdit_yhk_Short;
} }
} }

View File

@@ -32,17 +32,20 @@ namespace BitgetAPI
#region 폼 내 사용되는 스레드 #region 폼 내 사용되는 스레드
// 트리 현황판 업데이트 스레드 (단순 폼 업데이트) // 트리 현황판 업데이트 스레드 (단순 폼 업데이트)
Thread treeListMarketInfoListUpdateTimer = null; Thread th_treeListMarketInfoListUpdateTimer = null;
// 웹소켓 스레드 (선택된 종목 개수 만큼 가져오기) // 신호검색 스레드
List<Thread> th_MarketStatusList = null;
// WebSocket 내 스레드 관리
List<Thread> webSocketThreadList = new List<Thread>();
// 종목별 캔들 데이터 스레드 (사용 안함)
Thread th_MarketCandeData = null;
// 신호검색 스레드 함수
Thread th_SignalInfo = null; Thread th_SignalInfo = null;
// 현황판 웹서비스 Ticker 스레드 (한번에 전체 종목 종가 받음) // 현황판 웹서비스 Ticker 스레드 (한번에 전체 종목 종가 받음)
Thread th_MarketInfoList = null; Thread th_MarketInfoList_WebService = null;
// 웹소켓 스레드
Thread th_ticker_Websocket = null;
// 스레드 종료 플래그
bool Is_th_SignalInfo = false;
bool Is_th_webSocketThread = false;
bool Is_th_th_MarketInfoList_WebService = false;
bool Is_th_treeListUpdate = false;
// 신호검색 리스트 작성 // 신호검색 리스트 작성
// 신호 Long 상승 (구매) // 신호 Long 상승 (구매)
@@ -102,12 +105,18 @@ namespace BitgetAPI
// 웹서비스를 통해 현황판 및 마켓 Ticker 업데이트 // 웹서비스를 통해 현황판 및 마켓 Ticker 업데이트
private void getMarketInfoList_WebService(ExchangeWebReqType exchangeWebReqType) private void getMarketInfoList_WebService(ExchangeWebReqType exchangeWebReqType)
{ {
Is_th_th_MarketInfoList_WebService = true;
while (true) while (true)
{ {
Thread.Sleep(500); Thread.Sleep(500);
if (!Is_th_th_MarketInfoList_WebService) break;
// 마켓 모든 종목 캔들 정보 Web Service로 가져오기 // 마켓 모든 종목 캔들 정보 Web Service로 가져오기
commonProperty.marketInfoList = (List<MarketInfo>)BitgetAPI.WebService.WebConnection.SendWebServer(exchangeWebReqType); commonProperty.marketInfoList = (List<MarketInfo>)BitgetAPI.WebService.WebConnection.SendWebServer(exchangeWebReqType);
try
{
// 현황판에 최신 정보 업데이트 하기 // 현황판에 최신 정보 업데이트 하기
Invoke(new MethodInvoker(delegate () Invoke(new MethodInvoker(delegate ()
{ {
@@ -115,25 +124,13 @@ namespace BitgetAPI
treeList_MarketInfo.DataSource = commonProperty.marketInfoList; treeList_MarketInfo.DataSource = commonProperty.marketInfoList;
treeList_MarketInfo.RefreshDataSource(); treeList_MarketInfo.RefreshDataSource();
treeList_MarketInfo.TopVisibleNodeIndex = scrollPoint; treeList_MarketInfo.TopVisibleNodeIndex = scrollPoint;
})); }));
}catch (Exception ex) { }
} }
} }
// 웹소켓 생성 관련 함수 스레드 => Thread
private async void ThreadEventAsync(BitgetWebSocketType bitgetWebSocketType, Dictionary<string, object> dic)
{
// WebSocket 생성
WebConnection webConnection = new WebConnection();
webConnection.BitGetWebSocektStart(bitgetWebSocketType, dic);
Invoke(new MethodInvoker(delegate ()
{
// WebSocket 내 스레드 관리
webSocketThreadList.Add(webConnection.th_PingTimer);
}));
}
// 마켓 현황판 업데이트 (1) => Thread // 마켓 현황판 업데이트 (1) => Thread
// 지표 생성 및 신호 검색 (2) // 지표 생성 및 신호 검색 (2)
private void TreeListMarketInfoListUpdate( ) private void TreeListMarketInfoListUpdate( )
@@ -141,8 +138,12 @@ namespace BitgetAPI
// 마켓 현황판 업데이트 // 마켓 현황판 업데이트
while(true) while(true)
{ {
if (!Is_th_treeListUpdate) break;
Thread.Sleep(300); Thread.Sleep(300);
try
{
Invoke(new MethodInvoker(delegate () Invoke(new MethodInvoker(delegate ()
{ {
var scrollPoint = treeList_MarketInfo.TopVisibleNodeIndex; var scrollPoint = treeList_MarketInfo.TopVisibleNodeIndex;
@@ -156,7 +157,9 @@ namespace BitgetAPI
treeList_MarketInfo.TopVisibleNodeIndex = scrollPoint; treeList_MarketInfo.TopVisibleNodeIndex = scrollPoint;
treeList_LongUp.TopVisibleNodeIndex = scrollPoint_LU; treeList_LongUp.TopVisibleNodeIndex = scrollPoint_LU;
treeList_ShortDown.TopVisibleNodeIndex = scrollPoint_SD; treeList_ShortDown.TopVisibleNodeIndex = scrollPoint_SD;
})); }));
}catch(Exception ex) { }
} }
} }
@@ -179,10 +182,11 @@ namespace BitgetAPI
var checkedMarkets = checkedComboBoxEdit_MarketInfoList.Properties.Items.GetCheckedValues(); var checkedMarkets = checkedComboBoxEdit_MarketInfoList.Properties.Items.GetCheckedValues();
var intervalList = checkedComboBoxEdit_TimeInterval.Properties.Items.GetCheckedValues(); var intervalList = checkedComboBoxEdit_TimeInterval.Properties.Items.GetCheckedValues();
Is_th_SignalInfo = true;
while (true) while (true)
{ {
//if (!xtraTabPage_Searcher.PageEnabled) continue; if (!Is_th_SignalInfo) break;
//Thread.Sleep(200); //Thread.Sleep(200);
var nowTime = DateTime.Now; var nowTime = DateTime.Now;
@@ -203,7 +207,6 @@ namespace BitgetAPI
{ {
item.Price = lastCandleData.Close; item.Price = lastCandleData.Close;
item.Rate = (lastCandleData.Close / lastCandleData.Open) * 100 - 100; item.Rate = (lastCandleData.Close / lastCandleData.Open) * 100 - 100;
item.IndicatorPrice = lastCandleData.IchimokData.상한선;
item.IndicatorRate = (lastCandleData.Close / item.IndicatorPrice) * 100 - 100; item.IndicatorRate = (lastCandleData.Close / item.IndicatorPrice) * 100 - 100;
} }
@@ -223,9 +226,7 @@ namespace BitgetAPI
if (lastCandleData.IchimokData != null) if (lastCandleData.IchimokData != null)
{ {
item.Price = lastCandleData.Close; item.Price = lastCandleData.Close;
if (lastCandleData.Open == 0) { }
item.Rate = (lastCandleData.Close / lastCandleData.Open) * 100 - 100; item.Rate = (lastCandleData.Close / lastCandleData.Open) * 100 - 100;
item.IndicatorPrice = lastCandleData.IchimokData.하한선;
item.IndicatorRate = (lastCandleData.Close / item.IndicatorPrice) * 100 - 100; item.IndicatorRate = (lastCandleData.Close / item.IndicatorPrice) * 100 - 100;
} }
} }
@@ -260,11 +261,12 @@ namespace BitgetAPI
ichimokuConditionSetup.calIchimokuData(candleDatas_정렬, candleData_전봉); ichimokuConditionSetup.calIchimokuData(candleDatas_정렬, candleData_전봉);
if (candleData_전봉.Open < candleData_전봉.IchimokData.상한선 && candleData.Open > candleData.IchimokData.상한선 && candleData.Low > candleData.IchimokData.상한선) if (candleData_전봉.Open < candleData_전봉.IchimokData.상한선 && candleData.Open > candleData.IchimokData.상한선 && candleData.Low > candleData.IchimokData.상한선
&& candleData.Close > candleData.IchimokData.상한선)
{ {
var price = candleData.Close; var price = candleData.Close;
var rate = (candleData.Close / candleData.Open) * 100 - 100; var rate = (candleData.Close / candleData.Open) * 100 - 100;
var indicatorPrice = candleData.IchimokData.상한선; var indicatorPrice = candleData.Open;
var indicatorRate = (candleData.Close / indicatorPrice) * 100 - 100; var indicatorRate = (candleData.Close / indicatorPrice) * 100 - 100;
var signalData = signals_LU.Find(i => i.MarketName.Equals(market)); var signalData = signals_LU.Find(i => i.MarketName.Equals(market));
@@ -285,11 +287,12 @@ namespace BitgetAPI
signals_LU.Add(signalInfoData); signals_LU.Add(signalInfoData);
} }
} }
else if (candleData_전봉.Open > candleData_전봉.IchimokData.하한선 && candleData.Open < candleData.IchimokData.하한선 && candleData.High < candleData.IchimokData.하한선) else if (candleData_전봉.Open > candleData_전봉.IchimokData.하한선 && candleData.Open < candleData.IchimokData.하한선 && candleData.High < candleData.IchimokData.하한선
&& candleData.Close < candleData.IchimokData.하한선)
{ {
var price = candleData.Close; var price = candleData.Close;
var rate = (candleData.Close / candleData.Open) * 100 - 100; var rate = (candleData.Close / candleData.Open) * 100 - 100;
var indicatorPrice = candleData.IchimokData.하한선; var indicatorPrice = candleData.Open;
var indicatorRate = (candleData.Close / indicatorPrice) * 100 - 100; var indicatorRate = (candleData.Close / indicatorPrice) * 100 - 100;
var signalData = signals_SD.Find(i => i.MarketName.Equals(market)); var signalData = signals_SD.Find(i => i.MarketName.Equals(market));
@@ -481,8 +484,8 @@ namespace BitgetAPI
} }
// 마켓정보(WebService Ticker) => 0.5초당 1번으로 업데이트 하기 (현황판) // 마켓정보(WebService Ticker) => 0.5초당 1번으로 업데이트 하기 (현황판)
th_MarketInfoList = new Thread(() => getMarketInfoList_WebService(exchangeWebReqType)); th_MarketInfoList_WebService = new Thread(() => getMarketInfoList_WebService(exchangeWebReqType));
th_MarketInfoList.Start(); th_MarketInfoList_WebService.Start();
#region 캔들 웹소켓 : 종목 50, 캔들 1 개만 해도 뒤지려고 함 !! (일딴 패스) #region 캔들 웹소켓 : 종목 50, 캔들 1 개만 해도 뒤지려고 함 !! (일딴 패스)
/* /*
@@ -497,52 +500,49 @@ namespace BitgetAPI
#endregion #endregion
} }
private void ticker_WebSocket(List<object> marketList, int count)
{
}
// 폼 닫기 시 처리 이벤트 // 폼 닫기 시 처리 이벤트
private void MainForm_FormClosing(object sender, FormClosingEventArgs e) private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{ {
if (th_MarketStatusList != null)
{
for (var cnt = 0; cnt < th_MarketStatusList.Count; cnt++)
{
if (th_MarketStatusList[cnt] != null && th_MarketStatusList[cnt].ThreadState != ThreadState.Running)
{
th_MarketStatusList[cnt].Abort();
th_MarketStatusList[cnt] = null;
}
}
}
if (th_MarketInfoList != null)
{
th_MarketInfoList.Abort();
th_MarketInfoList = null;
}
if (treeListMarketInfoListUpdateTimer != null)
{
treeListMarketInfoListUpdateTimer.Abort();
treeListMarketInfoListUpdateTimer = null;
}
if (th_MarketCandeData != null)
{
th_MarketCandeData.Abort();
th_MarketCandeData = null;
}
if (th_SignalInfo != null) if (th_SignalInfo != null)
{ {
th_SignalInfo.Abort(); Is_th_SignalInfo = false;
th_SignalInfo.Join();
th_SignalInfo = null; th_SignalInfo = null;
} }
for(var cnt = 0; cnt < webSocketThreadList.Count; cnt++)
if (commonProperty.webConnection != null)
{ {
if(webSocketThreadList[cnt] != null && webSocketThreadList[cnt].ThreadState != ThreadState.Running) commonProperty.webConnection.Is_th_webSocketThread = false;
{ commonProperty.webConnection.closeWebSocket();
webSocketThreadList[cnt].Abort();
webSocketThreadList[cnt] = null;
} }
if (th_MarketInfoList_WebService != null)
{
Is_th_th_MarketInfoList_WebService = false;
if (th_MarketInfoList_WebService.ThreadState == ThreadState.Running)
{
th_MarketInfoList_WebService.Join();
th_MarketInfoList_WebService = null;
}
}
if (th_treeListMarketInfoListUpdateTimer != null)
{
Is_th_treeListUpdate = false;
if (th_treeListMarketInfoListUpdateTimer.ThreadState == ThreadState.Running)
{
th_treeListMarketInfoListUpdateTimer.Join();
th_treeListMarketInfoListUpdateTimer = null;
}
} }
} }
@@ -561,6 +561,31 @@ namespace BitgetAPI
// 신호 검색 시작 // 신호 검색 시작
private void simpleButton_SignalStart_Click(object sender, EventArgs e) private void simpleButton_SignalStart_Click(object sender, EventArgs e)
{ {
if(th_SignalInfo != null)
{
Is_th_SignalInfo = false;
if (th_SignalInfo.ThreadState == ThreadState.Running)
th_SignalInfo.Join();
th_SignalInfo = null;
}
if (commonProperty.webConnection != null)
{
commonProperty.webConnection.Is_th_webSocketThread = false;
commonProperty.webConnection.closeWebSocket();
}
if(th_treeListMarketInfoListUpdateTimer != null)
{
Is_th_treeListUpdate = false;
if (th_treeListMarketInfoListUpdateTimer.ThreadState == ThreadState.Running)
{
th_treeListMarketInfoListUpdateTimer.Join();
th_treeListMarketInfoListUpdateTimer = null;
}
}
foreach (var candleList in commonProperty.candleDataLists) foreach (var candleList in commonProperty.candleDataLists)
{ {
@@ -568,40 +593,6 @@ namespace BitgetAPI
interval.Value.Clear(); interval.Value.Clear();
} }
if(th_SignalInfo != null)
{
if (th_SignalInfo.ThreadState == ThreadState.Running)
th_SignalInfo.Abort();
th_SignalInfo = null;
}
if (th_MarketCandeData != null)
{
if (th_MarketCandeData.ThreadState == ThreadState.Running)
th_MarketCandeData.Abort();
th_MarketCandeData = null;
}
if(treeListMarketInfoListUpdateTimer != null)
{
if (treeListMarketInfoListUpdateTimer.ThreadState == ThreadState.Running)
treeListMarketInfoListUpdateTimer.Abort();
treeListMarketInfoListUpdateTimer = null;
}
if (th_MarketStatusList != null)
{
for (var cnt = 0; cnt < th_MarketStatusList.Count; cnt++)
{
if (th_MarketStatusList[cnt] != null && th_MarketStatusList[cnt].ThreadState != ThreadState.Running)
{
th_MarketStatusList[cnt].Abort();
th_MarketStatusList[cnt] = null;
}
}
}
Thread.Sleep(1000);
var count = 0; var count = 0;
var marketList = checkedComboBoxEdit_MarketInfoList.Properties.Items.GetCheckedValues(); var marketList = checkedComboBoxEdit_MarketInfoList.Properties.Items.GetCheckedValues();
@@ -617,7 +608,6 @@ namespace BitgetAPI
marketList = checkedComboBoxEdit_MarketInfoList.Properties.Items.GetCheckedValues(); marketList = checkedComboBoxEdit_MarketInfoList.Properties.Items.GetCheckedValues();
} }
th_MarketStatusList = new List<Thread>();
var dic = new Dictionary<string, object>(); var dic = new Dictionary<string, object>();
dic.Add("op", "subscribe"); dic.Add("op", "subscribe");
@@ -640,20 +630,26 @@ namespace BitgetAPI
dic.Add("args", argsList); dic.Add("args", argsList);
// 웹소켓으로 캔들 쌓기 // 웹소켓으로 캔들 쌓기
var th_MarketStatus = new Thread(() => ThreadEventAsync(BitgetWebSocketType.현황정보_전체종목, dic)); // WebSocket 생성
th_MarketStatus.Start(); WebConnection webConnection = new WebConnection();
th_MarketStatusList.Add(th_MarketStatus); commonProperty.webConnection = webConnection;
webConnection.Is_th_webSocketThread = true;
webConnection.BitGetWebSocektStart(BitgetWebSocketType.현황정보_전체종목, dic);
//th_webSocketThread = new Thread(() => TheadWebSocketRecieve(BitgetWebSocketType.현황정보_전체종목, dic));
//th_webSocketThread.Start();
// WebServicee 초기 캔들 데이터 가져오기 : 종목, 개수 // WebServicee 초기 캔들 데이터 가져오기 : 종목, 개수
// 종목별 캔들 데이터 가져오기 (WebService) // 종목별 캔들 데이터 가져오기 (WebService)
// 선택된 타입에 따라서 종목 정보 가져오기 // 선택된 타입에 따라서 종목 정보 가져오기
var exchangeWebReqType = ExchangeWebReqType.BitgetMarket_Future; var exchangeWebReqType = ExchangeWebReqType.BitgetMarket_Future;
th_MarketCandeData = new Thread(() => getMarketCandleData_WebService(exchangeWebReqType, marketList)); th_MarketInfoList_WebService = new Thread(() => getMarketCandleData_WebService(exchangeWebReqType, marketList));
th_MarketCandeData.Start(); th_MarketInfoList_WebService.Start();
// 트리 현황판 업데이트 // 트리 현황판 업데이트
treeListMarketInfoListUpdateTimer = new Thread(new ThreadStart(TreeListMarketInfoListUpdate)); th_treeListMarketInfoListUpdateTimer = new Thread(new ThreadStart(TreeListMarketInfoListUpdate));
treeListMarketInfoListUpdateTimer.Start(); th_treeListMarketInfoListUpdateTimer.Start();
} }
} }
} }

View File

@@ -118,7 +118,7 @@
<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"> <data name="simpleButton_SignalStart.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
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl

View File

@@ -23,6 +23,8 @@ namespace BitgetAPI.WebService
public class WebConnection public class WebConnection
{ {
public Thread th_PingTimer {get; set;} = null; public Thread th_PingTimer {get; set;} = null;
public bool Is_th_webSocketThread { get; set; } = false;
public ClientWebSocket webSocket { get; set; } = null;
public static object SendWebServer(CommonProperty.ExchangeWebReqType exchangeWebReqType, string url = "", public static object SendWebServer(CommonProperty.ExchangeWebReqType exchangeWebReqType, string url = "",
MarketCandleDataList marketCandleDataList = null, CommonProperty.MCandleTimeType interval = MCandleTimeType.M1, MarketCandleDataList marketCandleDataList = null, CommonProperty.MCandleTimeType interval = MCandleTimeType.M1,
@@ -279,7 +281,7 @@ namespace BitgetAPI.WebService
CommonProperty commonProperty = CommonProperty.Instance; CommonProperty commonProperty = CommonProperty.Instance;
ClientWebSocket webSocket = new ClientWebSocket(); webSocket = new ClientWebSocket();
string WebSocketUrl = "wss://ws.bitget.com/v2/ws/public"; string WebSocketUrl = "wss://ws.bitget.com/v2/ws/public";
string message = ""; string message = "";
@@ -304,6 +306,7 @@ namespace BitgetAPI.WebService
// 데이터 수신을 위한 반복문 시작 // 데이터 수신을 위한 반복문 시작
while (webSocket.State == WebSocketState.Open) while (webSocket.State == WebSocketState.Open)
{ {
//Thread.Sleep(100); //Thread.Sleep(100);
byte[] buffer = new byte[1024]; byte[] buffer = new byte[1024];
@@ -371,6 +374,7 @@ namespace BitgetAPI.WebService
// 마지막 시간 데이터 가져오기 // 마지막 시간 데이터 가져오기
var lastCandleData = lastCandleData_Edit.Find(j=>j.Argument == lastCandleData_Edit.Max(i => i.Argument)); var lastCandleData = lastCandleData_Edit.Find(j=>j.Argument == lastCandleData_Edit.Max(i => i.Argument));
if (lastCandleData == null) return;
// 업데이트 or 추가 // 업데이트 or 추가
bool updateFlag = true; bool updateFlag = true;
@@ -573,14 +577,36 @@ namespace BitgetAPI.WebService
} }
finally finally
{ {
//if (webSocket.State == WebSocketState.Open) closeWebSocket();
//await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "WebSocket 연결 종료", CancellationToken.None);
webSocket.Dispose();
// 웹소켓 재귀 // 웹소켓 재귀
if (Is_th_webSocketThread)
{
BitGetWebSocektStart(bitgetWebSocketType, dic); BitGetWebSocektStart(bitgetWebSocketType, dic);
} }
} }
}
// 웹소켓 종료
public async void closeWebSocket()
{
if (webSocket != null)
{
if (webSocket.State == WebSocketState.Open)
{
if (th_PingTimer != null)
{
th_PingTimer.Abort();
th_PingTimer = null;
}
await webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "WebSocket 연결 종료", CancellationToken.None);
}
webSocket.Dispose();
}
}
// Ping 테스트 (25초), 30초에 한번 응답 확인 필요 // Ping 테스트 (25초), 30초에 한번 응답 확인 필요
public static async void ContinuePing(ClientWebSocket webSocket) public static async void ContinuePing(ClientWebSocket webSocket)