This commit is contained in:
DESKTOP-1A3P75F\lee
2022-07-05 04:52:01 +09:00
27 changed files with 1254 additions and 196 deletions

View File

@@ -140,7 +140,7 @@ namespace DataSaver
var recentlyDbDataList = Million.DbManagement.DbServiceFunctions.GetOldNewDataList_FromDB
(marketList, placeName, (CommonProperty.MCandleTimeType)item);
//Million.DbManagement.DbServiceFunctions.SetCandleData(placeName, type, recentlyDbDataList, (CommonProperty.MCandleTimeType)item);
Million.DbManagement.DbServiceFunctions.SetCandleData(placeName, type, recentlyDbDataList, (CommonProperty.MCandleTimeType)item);
}
MessageBox.Show("Completed Set Candle Data");
}

View File

@@ -30,38 +30,658 @@ namespace Million_Hunter.HunterSubForm
private void InitializeComponent()
{
this.panelControl_IndicatorCondition = new DevExpress.XtraEditors.PanelControl();
this.groupBox_ = new System.Windows.Forms.GroupBox();
this.groupBox9 = new System.Windows.Forms.GroupBox();
this.textEdit_SellRegularExpression = new DevExpress.XtraEditors.TextEdit();
this.groupBox8 = new System.Windows.Forms.GroupBox();
this.textEdit_BuyRegularExpression = new DevExpress.XtraEditors.TextEdit();
this.splitContainer_SetupPanel = new System.Windows.Forms.SplitContainer();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.treeList_BuySetupList = new DevExpress.XtraTreeList.TreeList();
this.treeListColumn_IndexString = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_IndicatorType = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_Description = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.groupBox4 = new System.Windows.Forms.GroupBox();
this.treeList_SellSetupList = new DevExpress.XtraTreeList.TreeList();
this.treeListColumn_SellSetupCondition_IndexString = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_SellSetupCondition_IndicatorType = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_SellSetupCondition_Description = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.labelControl5 = new DevExpress.XtraEditors.LabelControl();
this.labelControl4 = new DevExpress.XtraEditors.LabelControl();
this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
this.treeList_ResultData = new DevExpress.XtraTreeList.TreeList();
this.treeListColumn_Inclusion = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.repositoryItemCheckEdit_Inclustion = new DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit();
this.treeListColumn_ExchangePlace = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_CodeFullName = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_KorName = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_BuyCountForTime = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_StartDate = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_BuyValue = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_EndDate = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_SellValue = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_WinFlag = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_EarningRate = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_AnalysisDescrption = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.treeListColumn_OriginalData = new DevExpress.XtraTreeList.Columns.TreeListColumn();
this.panelControl1 = new DevExpress.XtraEditors.PanelControl();
this.simpleButton_SavaAnalysisData = new DevExpress.XtraEditors.SimpleButton();
this.dateEdit_StartDateTime = new DevExpress.XtraEditors.DateEdit();
this.dateEdit_EndDateTime = new DevExpress.XtraEditors.DateEdit();
this.dateEdit_SavedDateTime = new DevExpress.XtraEditors.DateEdit();
this.simpleButton_LoadAnalysisResultData = new DevExpress.XtraEditors.SimpleButton();
this.textEdit_Description = new DevExpress.XtraEditors.TextEdit();
this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
((System.ComponentModel.ISupportInitialize)(this.panelControl_IndicatorCondition)).BeginInit();
this.panelControl_IndicatorCondition.SuspendLayout();
this.groupBox_.SuspendLayout();
this.groupBox9.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.textEdit_SellRegularExpression.Properties)).BeginInit();
this.groupBox8.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.textEdit_BuyRegularExpression.Properties)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.splitContainer_SetupPanel)).BeginInit();
this.splitContainer_SetupPanel.Panel1.SuspendLayout();
this.splitContainer_SetupPanel.Panel2.SuspendLayout();
this.splitContainer_SetupPanel.SuspendLayout();
this.groupBox3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.treeList_BuySetupList)).BeginInit();
this.groupBox4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.treeList_SellSetupList)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.treeList_ResultData)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.repositoryItemCheckEdit_Inclustion)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.panelControl1)).BeginInit();
this.panelControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dateEdit_StartDateTime.Properties.CalendarTimeProperties)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dateEdit_StartDateTime.Properties)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dateEdit_EndDateTime.Properties.CalendarTimeProperties)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dateEdit_EndDateTime.Properties)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dateEdit_SavedDateTime.Properties.CalendarTimeProperties)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dateEdit_SavedDateTime.Properties)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.textEdit_Description.Properties)).BeginInit();
this.SuspendLayout();
//
// panelControl_IndicatorCondition
//
this.panelControl_IndicatorCondition.Controls.Add(this.groupBox_);
this.panelControl_IndicatorCondition.Dock = System.Windows.Forms.DockStyle.Top;
this.panelControl_IndicatorCondition.Location = new System.Drawing.Point(0, 0);
this.panelControl_IndicatorCondition.Name = "panelControl_IndicatorCondition";
this.panelControl_IndicatorCondition.Size = new System.Drawing.Size(1271, 120);
this.panelControl_IndicatorCondition.Size = new System.Drawing.Size(1275, 231);
this.panelControl_IndicatorCondition.TabIndex = 3;
//
// groupBox_
//
this.groupBox_.Controls.Add(this.dateEdit_EndDateTime);
this.groupBox_.Controls.Add(this.dateEdit_SavedDateTime);
this.groupBox_.Controls.Add(this.dateEdit_StartDateTime);
this.groupBox_.Controls.Add(this.groupBox9);
this.groupBox_.Controls.Add(this.groupBox8);
this.groupBox_.Controls.Add(this.splitContainer_SetupPanel);
this.groupBox_.Controls.Add(this.labelControl5);
this.groupBox_.Controls.Add(this.labelControl4);
this.groupBox_.Controls.Add(this.labelControl3);
this.groupBox_.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupBox_.Location = new System.Drawing.Point(2, 2);
this.groupBox_.Name = "groupBox_";
this.groupBox_.Size = new System.Drawing.Size(1271, 227);
this.groupBox_.TabIndex = 1;
this.groupBox_.TabStop = false;
this.groupBox_.Text = "메뉴";
//
// groupBox9
//
this.groupBox9.Controls.Add(this.textEdit_SellRegularExpression);
this.groupBox9.Location = new System.Drawing.Point(6, 168);
this.groupBox9.Name = "groupBox9";
this.groupBox9.Size = new System.Drawing.Size(661, 45);
this.groupBox9.TabIndex = 8;
this.groupBox9.TabStop = false;
this.groupBox9.Text = "판매 조건 조합";
//
// textEdit_SellRegularExpression
//
this.textEdit_SellRegularExpression.Dock = System.Windows.Forms.DockStyle.Fill;
this.textEdit_SellRegularExpression.Location = new System.Drawing.Point(3, 18);
this.textEdit_SellRegularExpression.Name = "textEdit_SellRegularExpression";
this.textEdit_SellRegularExpression.Properties.ReadOnly = true;
this.textEdit_SellRegularExpression.Size = new System.Drawing.Size(655, 20);
this.textEdit_SellRegularExpression.TabIndex = 0;
//
// groupBox8
//
this.groupBox8.Controls.Add(this.textEdit_BuyRegularExpression);
this.groupBox8.Location = new System.Drawing.Point(673, 169);
this.groupBox8.Name = "groupBox8";
this.groupBox8.Size = new System.Drawing.Size(589, 45);
this.groupBox8.TabIndex = 9;
this.groupBox8.TabStop = false;
this.groupBox8.Text = "구매 조건 조합";
//
// textEdit_BuyRegularExpression
//
this.textEdit_BuyRegularExpression.Dock = System.Windows.Forms.DockStyle.Fill;
this.textEdit_BuyRegularExpression.Location = new System.Drawing.Point(3, 18);
this.textEdit_BuyRegularExpression.Name = "textEdit_BuyRegularExpression";
this.textEdit_BuyRegularExpression.Properties.ReadOnly = true;
this.textEdit_BuyRegularExpression.Size = new System.Drawing.Size(583, 20);
this.textEdit_BuyRegularExpression.TabIndex = 0;
//
// splitContainer_SetupPanel
//
this.splitContainer_SetupPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.splitContainer_SetupPanel.Location = new System.Drawing.Point(6, 39);
this.splitContainer_SetupPanel.Name = "splitContainer_SetupPanel";
//
// splitContainer_SetupPanel.Panel1
//
this.splitContainer_SetupPanel.Panel1.Controls.Add(this.groupBox3);
//
// splitContainer_SetupPanel.Panel2
//
this.splitContainer_SetupPanel.Panel2.Controls.Add(this.groupBox4);
this.splitContainer_SetupPanel.Size = new System.Drawing.Size(1259, 131);
this.splitContainer_SetupPanel.SplitterDistance = 662;
this.splitContainer_SetupPanel.TabIndex = 2;
//
// groupBox3
//
this.groupBox3.Controls.Add(this.treeList_BuySetupList);
this.groupBox3.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupBox3.Location = new System.Drawing.Point(0, 0);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(662, 131);
this.groupBox3.TabIndex = 0;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "구매 조건 조합";
//
// treeList_BuySetupList
//
this.treeList_BuySetupList.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] {
this.treeListColumn_IndexString,
this.treeListColumn_IndicatorType,
this.treeListColumn_Description});
this.treeList_BuySetupList.Cursor = System.Windows.Forms.Cursors.Default;
this.treeList_BuySetupList.Dock = System.Windows.Forms.DockStyle.Fill;
this.treeList_BuySetupList.Location = new System.Drawing.Point(3, 18);
this.treeList_BuySetupList.Name = "treeList_BuySetupList";
this.treeList_BuySetupList.OptionsBehavior.Editable = false;
this.treeList_BuySetupList.OptionsBehavior.ReadOnly = true;
this.treeList_BuySetupList.OptionsView.ShowIndicator = false;
this.treeList_BuySetupList.OptionsView.ShowRoot = false;
this.treeList_BuySetupList.Size = new System.Drawing.Size(656, 110);
this.treeList_BuySetupList.TabIndex = 1;
//
// treeListColumn_IndexString
//
this.treeListColumn_IndexString.Caption = "번호";
this.treeListColumn_IndexString.FieldName = "IndexString";
this.treeListColumn_IndexString.Name = "treeListColumn_IndexString";
this.treeListColumn_IndexString.Visible = true;
this.treeListColumn_IndexString.VisibleIndex = 0;
this.treeListColumn_IndexString.Width = 45;
//
// treeListColumn_IndicatorType
//
this.treeListColumn_IndicatorType.Caption = "지표";
this.treeListColumn_IndicatorType.FieldName = "IndicatorType";
this.treeListColumn_IndicatorType.Name = "treeListColumn_IndicatorType";
this.treeListColumn_IndicatorType.UnboundType = DevExpress.XtraTreeList.Data.UnboundColumnType.Object;
this.treeListColumn_IndicatorType.Visible = true;
this.treeListColumn_IndicatorType.VisibleIndex = 1;
this.treeListColumn_IndicatorType.Width = 41;
//
// treeListColumn_Description
//
this.treeListColumn_Description.Caption = "내용";
this.treeListColumn_Description.FieldName = "Description";
this.treeListColumn_Description.Name = "treeListColumn_Description";
this.treeListColumn_Description.Visible = true;
this.treeListColumn_Description.VisibleIndex = 2;
this.treeListColumn_Description.Width = 395;
//
// groupBox4
//
this.groupBox4.Controls.Add(this.treeList_SellSetupList);
this.groupBox4.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupBox4.Location = new System.Drawing.Point(0, 0);
this.groupBox4.Name = "groupBox4";
this.groupBox4.Size = new System.Drawing.Size(593, 131);
this.groupBox4.TabIndex = 0;
this.groupBox4.TabStop = false;
this.groupBox4.Text = "판매 조건 조합";
//
// treeList_SellSetupList
//
this.treeList_SellSetupList.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] {
this.treeListColumn_SellSetupCondition_IndexString,
this.treeListColumn_SellSetupCondition_IndicatorType,
this.treeListColumn_SellSetupCondition_Description});
this.treeList_SellSetupList.Cursor = System.Windows.Forms.Cursors.Default;
this.treeList_SellSetupList.Dock = System.Windows.Forms.DockStyle.Fill;
this.treeList_SellSetupList.Location = new System.Drawing.Point(3, 18);
this.treeList_SellSetupList.Name = "treeList_SellSetupList";
this.treeList_SellSetupList.OptionsBehavior.Editable = false;
this.treeList_SellSetupList.OptionsBehavior.ReadOnly = true;
this.treeList_SellSetupList.OptionsView.ShowIndicator = false;
this.treeList_SellSetupList.OptionsView.ShowRoot = false;
this.treeList_SellSetupList.Size = new System.Drawing.Size(587, 110);
this.treeList_SellSetupList.TabIndex = 2;
//
// treeListColumn_SellSetupCondition_IndexString
//
this.treeListColumn_SellSetupCondition_IndexString.Caption = "번호";
this.treeListColumn_SellSetupCondition_IndexString.FieldName = "IndexString";
this.treeListColumn_SellSetupCondition_IndexString.Name = "treeListColumn_SellSetupCondition_IndexString";
this.treeListColumn_SellSetupCondition_IndexString.Visible = true;
this.treeListColumn_SellSetupCondition_IndexString.VisibleIndex = 0;
this.treeListColumn_SellSetupCondition_IndexString.Width = 41;
//
// treeListColumn_SellSetupCondition_IndicatorType
//
this.treeListColumn_SellSetupCondition_IndicatorType.Caption = "지표";
this.treeListColumn_SellSetupCondition_IndicatorType.FieldName = "IndicatorType";
this.treeListColumn_SellSetupCondition_IndicatorType.Name = "treeListColumn_SellSetupCondition_IndicatorType";
this.treeListColumn_SellSetupCondition_IndicatorType.UnboundType = DevExpress.XtraTreeList.Data.UnboundColumnType.Object;
this.treeListColumn_SellSetupCondition_IndicatorType.Visible = true;
this.treeListColumn_SellSetupCondition_IndicatorType.VisibleIndex = 1;
this.treeListColumn_SellSetupCondition_IndicatorType.Width = 41;
//
// treeListColumn_SellSetupCondition_Description
//
this.treeListColumn_SellSetupCondition_Description.Caption = "내용";
this.treeListColumn_SellSetupCondition_Description.FieldName = "Description";
this.treeListColumn_SellSetupCondition_Description.Name = "treeListColumn_SellSetupCondition_Description";
this.treeListColumn_SellSetupCondition_Description.Visible = true;
this.treeListColumn_SellSetupCondition_Description.VisibleIndex = 2;
this.treeListColumn_SellSetupCondition_Description.Width = 341;
//
// labelControl5
//
this.labelControl5.Location = new System.Drawing.Point(592, 19);
this.labelControl5.Name = "labelControl5";
this.labelControl5.Size = new System.Drawing.Size(52, 14);
this.labelControl5.TabIndex = 1;
this.labelControl5.Text = "저장시간 : ";
//
// labelControl4
//
this.labelControl4.Location = new System.Drawing.Point(298, 19);
this.labelControl4.Name = "labelControl4";
this.labelControl4.Size = new System.Drawing.Size(52, 14);
this.labelControl4.TabIndex = 1;
this.labelControl4.Text = "종료시간 : ";
//
// labelControl3
//
this.labelControl3.Location = new System.Drawing.Point(16, 19);
this.labelControl3.Name = "labelControl3";
this.labelControl3.Size = new System.Drawing.Size(52, 14);
this.labelControl3.TabIndex = 1;
this.labelControl3.Text = "시작시간 : ";
//
// treeList_ResultData
//
this.treeList_ResultData.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] {
this.treeListColumn_Inclusion,
this.treeListColumn_ExchangePlace,
this.treeListColumn_CodeFullName,
this.treeListColumn_KorName,
this.treeListColumn_BuyCountForTime,
this.treeListColumn_StartDate,
this.treeListColumn_BuyValue,
this.treeListColumn_EndDate,
this.treeListColumn_SellValue,
this.treeListColumn_WinFlag,
this.treeListColumn_EarningRate,
this.treeListColumn_AnalysisDescrption,
this.treeListColumn_OriginalData});
this.treeList_ResultData.Cursor = System.Windows.Forms.Cursors.Default;
this.treeList_ResultData.Dock = System.Windows.Forms.DockStyle.Fill;
this.treeList_ResultData.Location = new System.Drawing.Point(0, 120);
this.treeList_ResultData.Location = new System.Drawing.Point(0, 275);
this.treeList_ResultData.Name = "treeList_ResultData";
this.treeList_ResultData.Size = new System.Drawing.Size(1271, 681);
this.treeList_ResultData.TabIndex = 4;
this.treeList_ResultData.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] {
this.repositoryItemCheckEdit_Inclustion});
this.treeList_ResultData.Size = new System.Drawing.Size(1275, 626);
this.treeList_ResultData.TabIndex = 5;
//
// treeListColumn_Inclusion
//
this.treeListColumn_Inclusion.AppearanceCell.Options.UseTextOptions = true;
this.treeListColumn_Inclusion.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_Inclusion.AppearanceCell.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_Inclusion.AppearanceHeader.Options.UseTextOptions = true;
this.treeListColumn_Inclusion.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_Inclusion.AppearanceHeader.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_Inclusion.Caption = "결과 반영";
this.treeListColumn_Inclusion.ColumnEdit = this.repositoryItemCheckEdit_Inclustion;
this.treeListColumn_Inclusion.FieldName = "Inclusion";
this.treeListColumn_Inclusion.Name = "treeListColumn_Inclusion";
this.treeListColumn_Inclusion.Visible = true;
this.treeListColumn_Inclusion.VisibleIndex = 0;
this.treeListColumn_Inclusion.Width = 60;
//
// repositoryItemCheckEdit_Inclustion
//
this.repositoryItemCheckEdit_Inclustion.AutoHeight = false;
this.repositoryItemCheckEdit_Inclustion.Name = "repositoryItemCheckEdit_Inclustion";
//
// treeListColumn_ExchangePlace
//
this.treeListColumn_ExchangePlace.AppearanceCell.Options.UseTextOptions = true;
this.treeListColumn_ExchangePlace.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_ExchangePlace.AppearanceCell.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_ExchangePlace.AppearanceHeader.Options.UseTextOptions = true;
this.treeListColumn_ExchangePlace.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_ExchangePlace.AppearanceHeader.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_ExchangePlace.Caption = "거래소";
this.treeListColumn_ExchangePlace.FieldName = "ExchangePlace";
this.treeListColumn_ExchangePlace.Name = "treeListColumn_ExchangePlace";
this.treeListColumn_ExchangePlace.OptionsColumn.AllowEdit = false;
this.treeListColumn_ExchangePlace.Visible = true;
this.treeListColumn_ExchangePlace.VisibleIndex = 1;
this.treeListColumn_ExchangePlace.Width = 60;
//
// treeListColumn_CodeFullName
//
this.treeListColumn_CodeFullName.AppearanceCell.Options.UseTextOptions = true;
this.treeListColumn_CodeFullName.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_CodeFullName.AppearanceCell.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_CodeFullName.AppearanceHeader.Options.UseTextOptions = true;
this.treeListColumn_CodeFullName.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_CodeFullName.AppearanceHeader.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_CodeFullName.Caption = "종목 코드";
this.treeListColumn_CodeFullName.FieldName = "CodeFullName";
this.treeListColumn_CodeFullName.Name = "treeListColumn_CodeFullName";
this.treeListColumn_CodeFullName.OptionsColumn.AllowEdit = false;
this.treeListColumn_CodeFullName.Visible = true;
this.treeListColumn_CodeFullName.VisibleIndex = 2;
this.treeListColumn_CodeFullName.Width = 80;
//
// treeListColumn_KorName
//
this.treeListColumn_KorName.AppearanceCell.Options.UseTextOptions = true;
this.treeListColumn_KorName.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_KorName.AppearanceCell.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_KorName.AppearanceHeader.Options.UseTextOptions = true;
this.treeListColumn_KorName.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_KorName.AppearanceHeader.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_KorName.Caption = "종목 이름";
this.treeListColumn_KorName.FieldName = "KorName";
this.treeListColumn_KorName.Name = "treeListColumn_KorName";
this.treeListColumn_KorName.OptionsColumn.AllowEdit = false;
this.treeListColumn_KorName.Visible = true;
this.treeListColumn_KorName.VisibleIndex = 3;
this.treeListColumn_KorName.Width = 70;
//
// treeListColumn_BuyCountForTime
//
this.treeListColumn_BuyCountForTime.AppearanceCell.Options.UseTextOptions = true;
this.treeListColumn_BuyCountForTime.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_BuyCountForTime.AppearanceCell.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_BuyCountForTime.AppearanceHeader.Options.UseTextOptions = true;
this.treeListColumn_BuyCountForTime.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_BuyCountForTime.AppearanceHeader.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_BuyCountForTime.Caption = "기간 내 구매 수";
this.treeListColumn_BuyCountForTime.FieldName = "BuyCountForTime";
this.treeListColumn_BuyCountForTime.Name = "treeListColumn_BuyCountForTime";
this.treeListColumn_BuyCountForTime.OptionsColumn.AllowEdit = false;
this.treeListColumn_BuyCountForTime.Visible = true;
this.treeListColumn_BuyCountForTime.VisibleIndex = 4;
this.treeListColumn_BuyCountForTime.Width = 80;
//
// treeListColumn_StartDate
//
this.treeListColumn_StartDate.AppearanceCell.Options.UseTextOptions = true;
this.treeListColumn_StartDate.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_StartDate.AppearanceCell.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_StartDate.AppearanceHeader.Options.UseTextOptions = true;
this.treeListColumn_StartDate.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_StartDate.AppearanceHeader.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_StartDate.Caption = "구매 시간";
this.treeListColumn_StartDate.FieldName = "StartDate";
this.treeListColumn_StartDate.Format.FormatString = "u";
this.treeListColumn_StartDate.Format.FormatType = DevExpress.Utils.FormatType.DateTime;
this.treeListColumn_StartDate.Name = "treeListColumn_StartDate";
this.treeListColumn_StartDate.OptionsColumn.AllowEdit = false;
this.treeListColumn_StartDate.Visible = true;
this.treeListColumn_StartDate.VisibleIndex = 5;
this.treeListColumn_StartDate.Width = 135;
//
// treeListColumn_BuyValue
//
this.treeListColumn_BuyValue.AppearanceCell.Options.UseTextOptions = true;
this.treeListColumn_BuyValue.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_BuyValue.AppearanceCell.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_BuyValue.AppearanceHeader.Options.UseTextOptions = true;
this.treeListColumn_BuyValue.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_BuyValue.AppearanceHeader.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_BuyValue.Caption = "구매 가격";
this.treeListColumn_BuyValue.FieldName = "BuyValue";
this.treeListColumn_BuyValue.Name = "treeListColumn_BuyValue";
this.treeListColumn_BuyValue.OptionsColumn.AllowEdit = false;
this.treeListColumn_BuyValue.Visible = true;
this.treeListColumn_BuyValue.VisibleIndex = 6;
this.treeListColumn_BuyValue.Width = 80;
//
// treeListColumn_EndDate
//
this.treeListColumn_EndDate.AppearanceCell.Options.UseTextOptions = true;
this.treeListColumn_EndDate.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_EndDate.AppearanceCell.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_EndDate.AppearanceHeader.Options.UseTextOptions = true;
this.treeListColumn_EndDate.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_EndDate.AppearanceHeader.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_EndDate.Caption = "판매 시간";
this.treeListColumn_EndDate.FieldName = "EndDate";
this.treeListColumn_EndDate.Format.FormatString = "u";
this.treeListColumn_EndDate.Format.FormatType = DevExpress.Utils.FormatType.DateTime;
this.treeListColumn_EndDate.Name = "treeListColumn_EndDate";
this.treeListColumn_EndDate.OptionsColumn.AllowEdit = false;
this.treeListColumn_EndDate.Visible = true;
this.treeListColumn_EndDate.VisibleIndex = 7;
this.treeListColumn_EndDate.Width = 135;
//
// treeListColumn_SellValue
//
this.treeListColumn_SellValue.AppearanceCell.Options.UseTextOptions = true;
this.treeListColumn_SellValue.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_SellValue.AppearanceCell.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_SellValue.AppearanceHeader.Options.UseTextOptions = true;
this.treeListColumn_SellValue.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_SellValue.AppearanceHeader.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_SellValue.Caption = "판매 가격";
this.treeListColumn_SellValue.FieldName = "SellValue";
this.treeListColumn_SellValue.Name = "treeListColumn_SellValue";
this.treeListColumn_SellValue.OptionsColumn.AllowEdit = false;
this.treeListColumn_SellValue.Visible = true;
this.treeListColumn_SellValue.VisibleIndex = 8;
this.treeListColumn_SellValue.Width = 80;
//
// treeListColumn_WinFlag
//
this.treeListColumn_WinFlag.AppearanceCell.Options.UseTextOptions = true;
this.treeListColumn_WinFlag.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_WinFlag.AppearanceCell.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_WinFlag.AppearanceHeader.Options.UseTextOptions = true;
this.treeListColumn_WinFlag.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_WinFlag.AppearanceHeader.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_WinFlag.Caption = "수익";
this.treeListColumn_WinFlag.FieldName = "WinFlag";
this.treeListColumn_WinFlag.Name = "treeListColumn_WinFlag";
this.treeListColumn_WinFlag.OptionsColumn.AllowEdit = false;
this.treeListColumn_WinFlag.Visible = true;
this.treeListColumn_WinFlag.VisibleIndex = 9;
this.treeListColumn_WinFlag.Width = 40;
//
// treeListColumn_EarningRate
//
this.treeListColumn_EarningRate.AppearanceCell.Options.UseTextOptions = true;
this.treeListColumn_EarningRate.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_EarningRate.AppearanceCell.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_EarningRate.AppearanceHeader.Options.UseTextOptions = true;
this.treeListColumn_EarningRate.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_EarningRate.AppearanceHeader.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_EarningRate.Caption = "수익률";
this.treeListColumn_EarningRate.FieldName = "EarningRate";
this.treeListColumn_EarningRate.Name = "treeListColumn_EarningRate";
this.treeListColumn_EarningRate.OptionsColumn.AllowEdit = false;
this.treeListColumn_EarningRate.Visible = true;
this.treeListColumn_EarningRate.VisibleIndex = 10;
this.treeListColumn_EarningRate.Width = 50;
//
// treeListColumn_AnalysisDescrption
//
this.treeListColumn_AnalysisDescrption.AppearanceCell.Options.UseTextOptions = true;
this.treeListColumn_AnalysisDescrption.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_AnalysisDescrption.AppearanceCell.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_AnalysisDescrption.AppearanceHeader.Options.UseTextOptions = true;
this.treeListColumn_AnalysisDescrption.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.treeListColumn_AnalysisDescrption.AppearanceHeader.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.treeListColumn_AnalysisDescrption.Caption = "기타";
this.treeListColumn_AnalysisDescrption.FieldName = "Description";
this.treeListColumn_AnalysisDescrption.Name = "treeListColumn_AnalysisDescrption";
this.treeListColumn_AnalysisDescrption.Visible = true;
this.treeListColumn_AnalysisDescrption.VisibleIndex = 11;
this.treeListColumn_AnalysisDescrption.Width = 387;
//
// treeListColumn_OriginalData
//
this.treeListColumn_OriginalData.Caption = "Data";
this.treeListColumn_OriginalData.FieldName = "OriginalSearchResult";
this.treeListColumn_OriginalData.Name = "treeListColumn_OriginalData";
//
// panelControl1
//
this.panelControl1.Controls.Add(this.labelControl1);
this.panelControl1.Controls.Add(this.textEdit_Description);
this.panelControl1.Controls.Add(this.simpleButton_LoadAnalysisResultData);
this.panelControl1.Controls.Add(this.simpleButton_SavaAnalysisData);
this.panelControl1.Dock = System.Windows.Forms.DockStyle.Top;
this.panelControl1.Location = new System.Drawing.Point(0, 231);
this.panelControl1.Name = "panelControl1";
this.panelControl1.Size = new System.Drawing.Size(1275, 44);
this.panelControl1.TabIndex = 4;
//
// simpleButton_SavaAnalysisData
//
this.simpleButton_SavaAnalysisData.Location = new System.Drawing.Point(1134, 6);
this.simpleButton_SavaAnalysisData.Name = "simpleButton_SavaAnalysisData";
this.simpleButton_SavaAnalysisData.Size = new System.Drawing.Size(136, 32);
this.simpleButton_SavaAnalysisData.TabIndex = 0;
this.simpleButton_SavaAnalysisData.Text = "결과 저장";
this.simpleButton_SavaAnalysisData.Click += new System.EventHandler(this.simpleButton_SavaAnalysisData_Click);
//
// dateEdit_StartDateTime
//
this.dateEdit_StartDateTime.EditValue = null;
this.dateEdit_StartDateTime.Location = new System.Drawing.Point(74, 16);
this.dateEdit_StartDateTime.Name = "dateEdit_StartDateTime";
this.dateEdit_StartDateTime.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
this.dateEdit_StartDateTime.Properties.CalendarTimeProperties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
this.dateEdit_StartDateTime.Properties.DisplayFormat.FormatString = "u";
this.dateEdit_StartDateTime.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
this.dateEdit_StartDateTime.Properties.Mask.EditMask = "u";
this.dateEdit_StartDateTime.Properties.ReadOnly = true;
this.dateEdit_StartDateTime.Size = new System.Drawing.Size(193, 20);
this.dateEdit_StartDateTime.TabIndex = 6;
//
// dateEdit_EndDateTime
//
this.dateEdit_EndDateTime.EditValue = null;
this.dateEdit_EndDateTime.Location = new System.Drawing.Point(356, 16);
this.dateEdit_EndDateTime.Name = "dateEdit_EndDateTime";
this.dateEdit_EndDateTime.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
this.dateEdit_EndDateTime.Properties.CalendarTimeProperties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
this.dateEdit_EndDateTime.Properties.DisplayFormat.FormatString = "u";
this.dateEdit_EndDateTime.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
this.dateEdit_EndDateTime.Properties.Mask.EditMask = "u";
this.dateEdit_EndDateTime.Properties.ReadOnly = true;
this.dateEdit_EndDateTime.Size = new System.Drawing.Size(193, 20);
this.dateEdit_EndDateTime.TabIndex = 6;
//
// dateEdit_SavedDateTime
//
this.dateEdit_SavedDateTime.EditValue = null;
this.dateEdit_SavedDateTime.Location = new System.Drawing.Point(650, 16);
this.dateEdit_SavedDateTime.Name = "dateEdit_SavedDateTime";
this.dateEdit_SavedDateTime.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
this.dateEdit_SavedDateTime.Properties.CalendarTimeProperties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
this.dateEdit_SavedDateTime.Properties.DisplayFormat.FormatString = "u";
this.dateEdit_SavedDateTime.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
this.dateEdit_SavedDateTime.Properties.Mask.EditMask = "u";
this.dateEdit_SavedDateTime.Properties.ReadOnly = true;
this.dateEdit_SavedDateTime.Size = new System.Drawing.Size(193, 20);
this.dateEdit_SavedDateTime.TabIndex = 6;
//
// simpleButton_LoadAnalysisResultData
//
this.simpleButton_LoadAnalysisResultData.Location = new System.Drawing.Point(5, 7);
this.simpleButton_LoadAnalysisResultData.Name = "simpleButton_LoadAnalysisResultData";
this.simpleButton_LoadAnalysisResultData.Size = new System.Drawing.Size(136, 32);
this.simpleButton_LoadAnalysisResultData.TabIndex = 0;
this.simpleButton_LoadAnalysisResultData.Text = "불러오기";
this.simpleButton_LoadAnalysisResultData.Click += new System.EventHandler(this.simpleButton_SavaAnalysisData_Click);
//
// textEdit_Description
//
this.textEdit_Description.Location = new System.Drawing.Point(775, 12);
this.textEdit_Description.Name = "textEdit_Description";
this.textEdit_Description.Size = new System.Drawing.Size(344, 20);
this.textEdit_Description.TabIndex = 1;
//
// labelControl1
//
this.labelControl1.Location = new System.Drawing.Point(737, 15);
this.labelControl1.Name = "labelControl1";
this.labelControl1.Size = new System.Drawing.Size(32, 14);
this.labelControl1.TabIndex = 2;
this.labelControl1.Text = "내용 : ";
//
// ResultViewerForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1271, 801);
this.ClientSize = new System.Drawing.Size(1275, 901);
this.Controls.Add(this.treeList_ResultData);
this.Controls.Add(this.panelControl1);
this.Controls.Add(this.panelControl_IndicatorCondition);
this.Name = "ResultViewerForm";
this.Text = "결과 뷰";
((System.ComponentModel.ISupportInitialize)(this.panelControl_IndicatorCondition)).EndInit();
this.panelControl_IndicatorCondition.ResumeLayout(false);
this.groupBox_.ResumeLayout(false);
this.groupBox_.PerformLayout();
this.groupBox9.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.textEdit_SellRegularExpression.Properties)).EndInit();
this.groupBox8.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.textEdit_BuyRegularExpression.Properties)).EndInit();
this.splitContainer_SetupPanel.Panel1.ResumeLayout(false);
this.splitContainer_SetupPanel.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer_SetupPanel)).EndInit();
this.splitContainer_SetupPanel.ResumeLayout(false);
this.groupBox3.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.treeList_BuySetupList)).EndInit();
this.groupBox4.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.treeList_SellSetupList)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.treeList_ResultData)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.repositoryItemCheckEdit_Inclustion)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.panelControl1)).EndInit();
this.panelControl1.ResumeLayout(false);
this.panelControl1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dateEdit_StartDateTime.Properties.CalendarTimeProperties)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dateEdit_StartDateTime.Properties)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dateEdit_EndDateTime.Properties.CalendarTimeProperties)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dateEdit_EndDateTime.Properties)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dateEdit_SavedDateTime.Properties.CalendarTimeProperties)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dateEdit_SavedDateTime.Properties)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.textEdit_Description.Properties)).EndInit();
this.ResumeLayout(false);
}
@@ -70,5 +690,46 @@ namespace Million_Hunter.HunterSubForm
private DevExpress.XtraEditors.PanelControl panelControl_IndicatorCondition;
private DevExpress.XtraTreeList.TreeList treeList_ResultData;
private System.Windows.Forms.GroupBox groupBox_;
private System.Windows.Forms.SplitContainer splitContainer_SetupPanel;
private System.Windows.Forms.GroupBox groupBox3;
private DevExpress.XtraTreeList.TreeList treeList_BuySetupList;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_IndexString;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_IndicatorType;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_Description;
private System.Windows.Forms.GroupBox groupBox4;
private DevExpress.XtraTreeList.TreeList treeList_SellSetupList;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_SellSetupCondition_IndexString;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_SellSetupCondition_IndicatorType;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_SellSetupCondition_Description;
private DevExpress.XtraEditors.LabelControl labelControl5;
private DevExpress.XtraEditors.LabelControl labelControl4;
private DevExpress.XtraEditors.LabelControl labelControl3;
private System.Windows.Forms.GroupBox groupBox9;
private DevExpress.XtraEditors.TextEdit textEdit_SellRegularExpression;
private System.Windows.Forms.GroupBox groupBox8;
private DevExpress.XtraEditors.TextEdit textEdit_BuyRegularExpression;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_Inclusion;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_ExchangePlace;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_CodeFullName;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_KorName;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_BuyCountForTime;
private DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit repositoryItemCheckEdit_Inclustion;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_StartDate;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_BuyValue;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_EndDate;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_SellValue;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_WinFlag;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_EarningRate;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_AnalysisDescrption;
private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn_OriginalData;
private DevExpress.XtraEditors.PanelControl panelControl1;
private DevExpress.XtraEditors.SimpleButton simpleButton_SavaAnalysisData;
private DevExpress.XtraEditors.DateEdit dateEdit_EndDateTime;
private DevExpress.XtraEditors.DateEdit dateEdit_SavedDateTime;
private DevExpress.XtraEditors.DateEdit dateEdit_StartDateTime;
private DevExpress.XtraEditors.LabelControl labelControl1;
private DevExpress.XtraEditors.TextEdit textEdit_Description;
private DevExpress.XtraEditors.SimpleButton simpleButton_LoadAnalysisResultData;
}
}

View File

@@ -9,6 +9,8 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Million.SaveData;
using Million.FileDBManagement;
using Million.Data;
namespace Million_Hunter.HunterSubForm
{
@@ -16,6 +18,8 @@ namespace Million_Hunter.HunterSubForm
{
// 저장 또는 불러온 Result Data
public SavedResultData _savedResultData;
// TreeList에 옮길 가공 데이터
public List<AnalysisData>_analysisDatas;
public ResultViewerForm(SavedResultData savedResultData)
{
@@ -29,6 +33,87 @@ namespace Million_Hunter.HunterSubForm
private void InitForm()
{
// 1. 결과 데이터 TreeList에 표기
// 시간 데이터 추가
//_savedResultData.SearchResultList.ToLookup()
dateEdit_StartDateTime.DateTime = _savedResultData.StartDateTime.Date;
dateEdit_EndDateTime.DateTime = _savedResultData.EndDateTime.Date;
dateEdit_SavedDateTime.DateTime = _savedResultData.SavedDateTime.Date;
textEdit_BuyRegularExpression.Text = _savedResultData.BuyRegularExpression;
textEdit_SellRegularExpression.Text = _savedResultData.SellRegularExpression;
// Buy/Sell 리스트에 데이터 추가
treeList_BuySetupList.DataSource = _savedResultData.BuySetupList;
treeList_SellSetupList.DataSource = _savedResultData.SellSetupList;
treeList_BuySetupList.RefreshDataSource();
treeList_SellSetupList.RefreshDataSource();
// _analysisDatas 리스트 초기화
if (_analysisDatas != null)
{
// 메모리 헤제
_analysisDatas.Clear();
_analysisDatas = null;
}
_analysisDatas = new List<AnalysisData>();
// 데이터 가공하기 (List<AnalysisData> _analysisDatas)
foreach (var searchResult in _savedResultData.SearchResultList)
{
var analysisData = AnalysisData.GetAnalysisData(true, searchResult.MarketData.ExchangePlace, searchResult.MarketData.CodeFullName, searchResult.MarketData.KorName,
searchResult.BuyValueList.Count, searchResult.StartDate, searchResult.BuyValueList.First(), searchResult.EndDate, searchResult.SellValue, searchResult.FirstEarningRate, searchResult.FirstWinFlag,
"", searchResult);
_analysisDatas.Add(analysisData);
}
treeList_ResultData.DataSource = _analysisDatas;
treeList_ResultData.RefreshDataSource();
//var loadedData = FileManager.LoadFormBinaryFile(_savedResultData.SavedResultAnalysisDataPath);
}
// 분석 결과 저장 버튼 클릭 이벤트
private void simpleButton_SavaAnalysisData_Click(object sender, EventArgs e)
{
// 결과 반영 체크 && Filter 된 노드만 리스트로 모음
var nodeList = treeList_ResultData.FindNodes(item => item.Visible == true && Convert.ToBoolean(item["Inclusion"]) == true);
var saveDataList = new List<AnalysisData>();
// 승률 계산하기
double winRate = 0;
// 수익률 계산하기
double profitRate = 0;
// 값이 있으면 저장
if (nodeList != null && nodeList.Count() > 0)
{
foreach (var node in nodeList)
{
var data = (AnalysisData)treeList_ResultData.GetDataRecordByNode(node);
// 승률 계산하기
winRate = 0;
// 수익률 계산하기
profitRate = 0;
saveDataList.Add(data);
}
}
// 저장 데이터 클래스 만들기
SavedAnalysisData savedAnalysisData = new SavedAnalysisData()
{
AnalysisDataList = saveDataList,
TreeListFilterString = treeList_ResultData.ActiveFilterString,
Description = textEdit_Description.Text,
FirstWinRate = winRate,
FirstProfitRate = profitRate,
SavedTime = DateTime.Now
};
// 저장 하기
FileManager.SavedResultAnalysisDataToFile(savedAnalysisData, _savedResultData.SavedResultAnalysisDataPath);
}
}
}
}

View File

@@ -299,7 +299,7 @@ namespace Million_Hunter.HunterSubForm
this.simpleButton_SavedResultDataLoad.Name = "simpleButton_SavedResultDataLoad";
this.simpleButton_SavedResultDataLoad.Size = new System.Drawing.Size(142, 38);
this.simpleButton_SavedResultDataLoad.TabIndex = 0;
this.simpleButton_SavedResultDataLoad.Text = "불러오기";
this.simpleButton_SavedResultDataLoad.Text = "항목 불러오기";
this.simpleButton_SavedResultDataLoad.Click += new System.EventHandler(this.simpleButton_SavedResultDataLoad_Click);
//
// treeList_SavedResultData
@@ -382,7 +382,7 @@ namespace Million_Hunter.HunterSubForm
// treeListColumn_WinRate
//
this.treeListColumn_WinRate.Caption = "승률(%)";
this.treeListColumn_WinRate.FieldName = "WinRate";
this.treeListColumn_WinRate.FieldName = "FirstWinRate";
this.treeListColumn_WinRate.Name = "treeListColumn_WinRate";
this.treeListColumn_WinRate.Visible = true;
this.treeListColumn_WinRate.VisibleIndex = 5;
@@ -391,7 +391,7 @@ namespace Million_Hunter.HunterSubForm
// treeListColumn_ProfitRate
//
this.treeListColumn_ProfitRate.Caption = "수익률(%)";
this.treeListColumn_ProfitRate.FieldName = "ProfitRate";
this.treeListColumn_ProfitRate.FieldName = "FirstProfitRate";
this.treeListColumn_ProfitRate.Format.FormatType = DevExpress.Utils.FormatType.Custom;
this.treeListColumn_ProfitRate.Name = "treeListColumn_ProfitRate";
this.treeListColumn_ProfitRate.Visible = true;

View File

@@ -49,8 +49,18 @@ namespace Million_Hunter.HunterSubForm
}
// 결과 데이터 정보 가져오기
foreach (var filePath in Directory.GetFiles(CommonProperty.SaveProgramDirecotryPath).ToList().FindAll(item => item.Contains(CommonProperty.InfoExtend)))
savedResultDatas.Add(FileManager.LoadResultDataInfoFromFile(filePath));
foreach (var filePath in Directory.GetFiles(CommonProperty.SaveProgramDirecotryPath).ToList()
.FindAll(item => item.Contains(CommonProperty.InfoExtend)))
{
var savedResult = FileManager.LoadResultDataInfoFromFile(filePath);
savedResult.SavedInfoDataPath = filePath;
savedResult.SavedResultDataPath =
filePath.Replace(CommonProperty.InfoExtend, CommonProperty.DataExtend);
savedResult.SavedResultAnalysisDataPath =
filePath.Replace(CommonProperty.InfoExtend, CommonProperty.AnalysisExtendFolder);
savedResultDatas.Add(savedResult);
}
// 트리 리스트에 추가
treeList_SavedResultData.DataSource = savedResultDatas;
@@ -105,14 +115,28 @@ namespace Million_Hunter.HunterSubForm
var selectedResultData = (SavedResultData)treeList.GetDataRecordByNode(hitInfo.Node);
// Main 폼의 SaveResultData 초기화
//Main 폼의 SaveResultData 초기화
_mainForm._saveResultData = null;
// Main 폼의 SaveResultData 초기화 (클론 복사 해야할 수 있음)
//Main 폼의 SaveResultData 초기화 (클론 복사 해야할 수 있음)
_mainForm._saveResultData = selectedResultData.Clone();
_mainForm._saveResultData.SearchResultList =
FileManager.LoadResultDataFromFile(selectedResultData.SavedResultDataPath);
_mainForm._saveResultData.SavedInfoDataPath = selectedResultData.SavedResultDataPath;
_mainForm._saveResultData.SavedResultDataPath = selectedResultData.SavedResultDataPath;
_mainForm._saveResultData.SavedResultAnalysisDataPath = selectedResultData.SavedResultAnalysisDataPath;
// 데이터가 있는 경우 버튼 색 변경
if (_mainForm._saveResultData.SearchResultList != null)
{
_mainForm.simpleButton_ViewResultData.Appearance.BackColor = Color.FromArgb(128, 128, 255);
}
this.DialogResult = DialogResult.OK;
this.Close();
}
}
}
}

View File

@@ -210,7 +210,7 @@ namespace Million_Hunter
this.panelControl_IndicatorSetup.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panelControl_IndicatorSetup.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
this.panelControl_IndicatorSetup.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Flat;
this.panelControl_IndicatorSetup.Location = new System.Drawing.Point(19, 83);
this.panelControl_IndicatorSetup.Name = "panelControl_IndicatorSetup";
this.panelControl_IndicatorSetup.Size = new System.Drawing.Size(885, 263);
@@ -237,6 +237,8 @@ namespace Million_Hunter
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
this.dateEdit_EndDateTime.Properties.CalendarTimeProperties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
this.dateEdit_EndDateTime.Properties.DisplayFormat.FormatString = "u";
this.dateEdit_EndDateTime.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
this.dateEdit_EndDateTime.Properties.Mask.EditMask = "u";
this.dateEdit_EndDateTime.Size = new System.Drawing.Size(193, 20);
this.dateEdit_EndDateTime.TabIndex = 4;
@@ -248,8 +250,13 @@ namespace Million_Hunter
this.dateEdit_StartDateTime.Name = "dateEdit_StartDateTime";
this.dateEdit_StartDateTime.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
this.dateEdit_StartDateTime.Properties.CalendarTimeEditing = DevExpress.Utils.DefaultBoolean.True;
this.dateEdit_StartDateTime.Properties.CalendarTimeProperties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
this.dateEdit_StartDateTime.Properties.DisplayFormat.FormatString = "u";
this.dateEdit_StartDateTime.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
this.dateEdit_StartDateTime.Properties.EditFormat.FormatString = "u";
this.dateEdit_StartDateTime.Properties.EditFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
this.dateEdit_StartDateTime.Properties.Mask.EditMask = "u";
this.dateEdit_StartDateTime.Size = new System.Drawing.Size(193, 20);
this.dateEdit_StartDateTime.TabIndex = 4;
@@ -576,7 +583,6 @@ namespace Million_Hunter
private System.Windows.Forms.GroupBox groupBox6;
private DevExpress.XtraTreeList.TreeList treeList_BuySetupList;
private DevExpress.XtraEditors.SimpleButton simpleButton_CalcurateData;
private DevExpress.XtraEditors.SimpleButton simpleButton_ViewResultData;
private System.Windows.Forms.GroupBox groupBox7;
private DevExpress.XtraEditors.SimpleButton simpleButton_SavedResultViewer;
private DevExpress.XtraEditors.DateEdit dateEdit_StartDateTime;
@@ -599,6 +605,7 @@ namespace Million_Hunter
private System.Windows.Forms.GroupBox groupBox8;
private System.Windows.Forms.GroupBox groupBox9;
private DevExpress.XtraEditors.SimpleButton simpleButton_SaveTest;
public DevExpress.XtraEditors.SimpleButton simpleButton_ViewResultData;
}
}

View File

@@ -15,6 +15,8 @@ using Million.Manager;
using Million.SaveData;
using Microsoft.CodeAnalysis.CSharp.Scripting;
using System.Threading.Tasks;
using DevExpress.Data.Helpers;
using System.Drawing;
namespace Million_Hunter
{
@@ -265,123 +267,71 @@ namespace Million_Hunter
var totalIndicator = new List<IndicatorCoditionSetup>();
totalIndicator.AddRange(buyIndicatorList);
totalIndicator.AddRange(sellIndicatorList);
var candleTypeList = totalIndicator.Select(t => t.MCandleTimeType).ToList();
candleTypeList.Add(CommonProperty.MCandleTimeType.M1);
candleTypeList = candleTypeList.Distinct().ToList();
totalIndicator.AddRange(sellIndicatorList);
var tableList = CommonProperty.selectedMarketOfPlaceList;
var totalResultList = new List<SearchResult>();
//임시로 하나만
Parallel.For(0, tableList.Count, i =>
{
//임시로 하나만
//for (var i = 0; i < tableList.Count; i++)
//{
var selectTable = tableList[i];
var selectTable = tableList[i];
//data setting
var distinctIndicator = IndicatorSetupManager.Distinct(totalIndicator);
var dic = new Dictionary<CommonProperty.MCandleTimeType, List<List<CandleData>>>();
foreach (var item in candleTypeList)
{
var candleDataListClass = DbServiceFunctions.GetCandleData(selectTable,
_saveResultData.StartDateTime, _saveResultData.EndDateTime, item);
var indicatorSetUpList = distinctIndicator.Where(t => t.MCandleTimeType == item).ToList();
foreach (var setup in indicatorSetUpList)
{
setup.excute(candleDataListClass.CandleDataLists_Im);
}
dic[item] = ValidationCheckManager.SplitValidationCandleDataList(candleDataListClass.CandleDataLists_Im, item);
}
var resultCandleDataList = new List<CandleData>();
// 총 데이터
var dic = DataManager.GetStandardData(totalIndicator, _saveResultData.StartDateTime, _saveResultData.EndDateTime, selectTable, distinctIndicator, true);
// buy, sell 계산
var lossIndicator = new List<IndicatorCoditionSetup>();
//var totalCalculateCandleList = new List<CandleData>();
foreach (var item in dic[CommonProperty.MCandleTimeType.M1])
resultCandleDataList.AddRange(item);
// 1분봉 데이터 Setting
var resultCandleDataList = dic[CommonProperty.MCandleTimeType.M1];
resultCandleDataList = resultCandleDataList.Where(t => _saveResultData.StartDateTime <= t.DateTime && t.DateTime < _saveResultData.EndDateTime).ToList();
// 최초와 cross의 조건먼저 계산이 필요함(선처리)
var subIndicator = totalIndicator.Where(t => t.SubIndicatorSetupType == CommonProperty.SubIndicatorSetupType.최초돌파 ||
t.SubIndicatorSetupType == CommonProperty.SubIndicatorSetupType.크로스).ToList();
var indiList = new List<string>();
foreach(var item in subIndicator)
indiList.AddRange(item.FirstOverSubRegExpression.Split(',').ToList());
// Sub Indicator string list 반환
var subIndStringiList = DataManager.GetSubIndicatorStringList(totalIndicator);
indiList = indiList.Distinct().ToList();
foreach(var item in indiList)
{
var indicator = totalIndicator.FirstOrDefault(t => t.IndexString == item);
if(indicator != null)
{
if (indicator.IndicatorType == CommonProperty.IndicatorType.가격비율)
{
//추후 가격도 처리 해야함 EX: 호가 단위 등등
var temp = (PriceRateCondtionSetup)indicator;
if(temp.PriceRateSetupConditionType == CommonProperty.PriceRateSetupConditionType.비율) {
lossIndicator.Add(indicator);
continue;
}
}
var list = new List<CandleData>();
// Sub Indicator Class
var subIndicator = totalIndicator.Where(t => subIndStringiList.Any(u => u == t.IndexString)).ToList();
foreach (var parent in dic[indicator.MCandleTimeType]) list.AddRange(parent);
// 선처리
CalculateManager.GetCalculateIndicator(totalIndicator, subIndStringiList, lossIndicator, _saveResultData.StartDateTime,
_saveResultData.EndDateTime, resultCandleDataList, subIndicator, dic);
list = list.Where(t => _saveResultData.StartDateTime <= t.DateTime && t.DateTime < _saveResultData.EndDateTime).ToList();
var totalIndi = totalIndicator.Select(t => t.IndexString).ToList();
CalculateManager.SwitchFun(indicator, list, resultCandleDataList, subIndicator);
//totalCalculateCandleList.AddRange(CalculateManager.SwitchFun(indicator, list, resultCandleDataList));
}
}
// 중복계산 방지
foreach (var item in subIndStringiList)
totalIndi.Remove(item);
// 후처리
foreach (var indicator in totalIndicator)
{
if (indiList.Any(t => t == indicator.IndexString)) continue;
if (indicator.IndicatorType == CommonProperty.IndicatorType.가격비율)
{
var temp = (PriceRateCondtionSetup)indicator;
//추후 가격도 처리 해야함 EX: 호가 단위 등등
if (temp.PriceRateSetupConditionType == CommonProperty.PriceRateSetupConditionType.비율)
{
lossIndicator.Add(indicator);
continue;
}
}
var list = new List<CandleData>();
foreach (var parent in dic[indicator.MCandleTimeType]) list.AddRange(parent);
list = list.Where(t => _saveResultData.StartDateTime <= t.DateTime && t.DateTime < _saveResultData.EndDateTime).ToList();
CalculateManager.SwitchFun(indicator, list, resultCandleDataList, subIndicator);
//totalCalculateCandleList.AddRange(CalculateManager.SwitchFun(indicator, list, resultCandleDataList));
}
//계산되지 않는 범위의 데이터 Filter
//totalCalculateCandleList = totalCalculateCandleList.Where(t => t.DateTime >= _saveResultData.StartDateTime && t.DateTime < _saveResultData.EndDateTime).ToList();
CalculateManager.GetCalculateIndicator(totalIndicator, totalIndi, lossIndicator, _saveResultData.StartDateTime,
_saveResultData.EndDateTime, resultCandleDataList, subIndicator, dic);
// 계산 로직
var resultLsit = ResultLogicManager.GetSearchResultList(resultCandleDataList, lossIndicator,
_saveResultData.BuyRegularExpression, _saveResultData.SellRegularExpression, selectTable, totalIndicator);
totalResultList.AddRange(resultLsit);
//}
//}
});
//수익 률 계산 로직 -> 이거는 추후 빼도 될듯
double totalVal = 0;
double win = 0;
double lose = 0;
double firstProfitRate = 0;
double firstWin = 0;
//승률, 수익률 계산
foreach (var item in totalResultList)
{
if (item.FirstWinFlag) firstWin++;
firstProfitRate += item.FirstEarningRate;
win += item.WinCount;
lose += item.LoseCount;
totalVal += item.TotalEarningRate;
@@ -414,7 +364,8 @@ namespace Million_Hunter
tt /= totalResultList.Count;
_saveResultData.FirstWinRate = (firstWin * 100) / totalResultList.Count;
_saveResultData.FirstProfitRate = firstProfitRate / totalResultList.Count;
_saveResultData.WinRate = winRate;
_saveResultData.ProfitRate = totalVal / totalResultList.Count;
_saveResultData.SearchResultList = totalResultList;
@@ -424,6 +375,13 @@ namespace Million_Hunter
MessageBox.Show("데이터 저장 성공");
else
MessageBox.Show("데이터 저장 실패");
// 데이터가 있는 경우 버튼 색 변경
if (_saveResultData.SearchResultList != null)
{
simpleButton_ViewResultData.Appearance.BackColor = Color.FromArgb(128, 128, 255);
}
}
@@ -437,7 +395,7 @@ namespace Million_Hunter
return;
}
var resultViewerForm = new ResultViewerForm(_saveResultData) { StartPosition = FormStartPosition.CenterScreen };
var resultViewerForm = new ResultViewerForm(_saveResultData) { StartPosition = FormStartPosition.CenterScreen};
resultViewerForm.Visible = true;
}
@@ -448,8 +406,8 @@ namespace Million_Hunter
if (savedResultViewerForm.ShowDialog() != DialogResult.OK) return;
// 시간 데이터 추가
dateEdit_StartDateTime.Text = _saveResultData.StartDateTime.Date.ToString();
dateEdit_EndDateTime.Text = _saveResultData.EndDateTime.Date.ToString();
dateEdit_StartDateTime.DateTime = _saveResultData.StartDateTime.Date;
dateEdit_EndDateTime.DateTime = _saveResultData.EndDateTime.Date;
textEdit_BuyRegularExpression.Text = _saveResultData.BuyRegularExpression;
textEdit_SellRegularExpression.Text = _saveResultData.SellRegularExpression;
@@ -480,7 +438,8 @@ namespace Million_Hunter
_saveResultData.StartDateTime = dateEdit_StartDateTime.DateTime;
_saveResultData.EndDateTime = dateEdit_EndDateTime.DateTime;
_saveResultData.SavedDateTime = DateTime.Now;
_saveResultData.SearchResultList = new List<SearchResult>();
if(_saveResultData == null)
_saveResultData.SearchResultList = new List<SearchResult>();
_saveResultData.BuyRegularExpression = textEdit_BuyRegularExpression.Text;
_saveResultData.SellRegularExpression = textEdit_SellRegularExpression.Text;

View File

@@ -179,7 +179,6 @@
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>

View File

@@ -114,15 +114,15 @@ namespace Million_Prototype
private void button3_Click(object sender, EventArgs e)
{
List<CandleDataList> list = null;
DataSettingManager realTimeMsg = null;
RealtimeDataSettingManager realTimeMsg = null;
int firstFlag = 0;
for (; ; )
{
if (firstFlag == 0)
{
realTimeMsg = new DataSettingManager(null, PaymentType.KRW);
realTimeMsg = new RealtimeDataSettingManager(null, PaymentType.KRW);
realTimeMsg.StartGetRealTimeTicker(null);
var dsm = new DataSettingManager(null, PaymentType.KRW);
var dsm = new RealtimeDataSettingManager(null, PaymentType.KRW);
list = dsm.GetRealTimeCandleData(MCandleTimeType.M1, 200);
firstFlag = 1;
}

View File

@@ -296,6 +296,8 @@ namespace Million
public static string InfoExtend = ".info";
// Save 결과 리스트 파일 확장자
public static string DataExtend = ".data";
// Save 결과 분석 데이터
public static string AnalysisExtendFolder = "_analysis";
#endregion
}

View File

@@ -0,0 +1,74 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Million.Data
{
[Serializable]
public class AnalysisData
{
// 결과에 포함 및 제외 조건
public bool Inclusion { get; set; } = true;
// 거래소
public string ExchangePlace { get; set; }
// 종목 코드
public string CodeFullName { get; set; }
// 종목 이름
public string KorName { get; set; }
// 기간 내 총 구매 횟수
public int BuyCountForTime { get; set; }
// 구매 시간
public DateTime StartDate { get; set; }
// 구매 가격
public double BuyValue { get; set; }
// 판매 시간
public DateTime EndDate { get; set; }
// 판매 가격
public double SellValue { get; set; }
// 승률
public double EarningRate { get; set; }
// 수익률
public bool WinFlag { get; set; }
// 기타 기입 내용
public string Description { get; set; }
// 원본 데이터 참조
public SearchResult OriginalSearchResult { get; set; }
public static AnalysisData GetAnalysisData(bool Inclusion, string ExchangePlace, string CodeFullName, string KorName,
int BuyCountForTime, DateTime StartDate, double BuyValue, DateTime EndDate, double SellValue,
double EarningRate, bool WinFlag, string Description, SearchResult OriginalSearchResult)
{
var analysis = new AnalysisData();
analysis.Inclusion = Inclusion;
analysis.ExchangePlace = ExchangePlace;
analysis.CodeFullName = CodeFullName;
analysis.KorName = KorName;
analysis.BuyCountForTime = BuyCountForTime;
analysis.StartDate = StartDate;
analysis.BuyValue = BuyValue;
analysis.EndDate = EndDate;
analysis.SellValue = SellValue;
analysis.EarningRate = EarningRate;
analysis.WinFlag = WinFlag;
analysis.Description = Description;
analysis.OriginalSearchResult = OriginalSearchResult;
return analysis;
}
}
}

View File

@@ -6,6 +6,7 @@ using System.Threading.Tasks;
namespace Million.Data
{
[Serializable]
public class BollingerData : IndicatorData
{
public MovingAverageData movingAverage;

View File

@@ -4,6 +4,7 @@ using static Million.CommonProperty;
namespace Million.Data
{
[Serializable]
public class CandleData
{
// 시간
@@ -23,13 +24,10 @@ namespace Million.Data
public int CandleTimeType { get; set; }
public Dictionary<string, IndicatorData> IndicatorDic { get; set; } = new Dictionary<string, IndicatorData>();
public Dictionary<string, bool> SellLogicFlag { get; set; } = new Dictionary<string, bool>();
public Dictionary<string, bool> CalculateFlag { get; set; } = new Dictionary<string, bool>();
public CandleType CandleType { get; set; } = CandleType.None;
/// <summary>

View File

@@ -1,7 +1,9 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
namespace Million.Data
{
[Serializable]
public class CandleDataList
{
// 코인 종목

View File

@@ -6,6 +6,7 @@ using System.Threading.Tasks;
namespace Million.Data
{
[Serializable]
public class IchimokData : IndicatorData
{
/// <summary>

View File

@@ -9,43 +9,44 @@ namespace Million.Data
/// <summary>
/// 결과값 저장 클레스 원형
/// </summary>
[Serializable]
public class IndicatorData
{
/// <summary>
/// 종가값 위,아래 비교 - 시가 돌파여부 검색
/// </summary>
public CommonProperty.Indicator_over indicator_over = CommonProperty.Indicator_over.없음;
public CommonProperty.Indicator_over indicator_over { get; set; } = CommonProperty.Indicator_over.없음;
/// <summary>
/// 종가로 계산할때 해당 봉 고가 값
/// </summary>
public double highValue = 0;
public double highValue { get; set; } = 0;
/// <summary>
/// 종가로 계산할때 해당 봉 고가 값
/// </summary>
public double lowValue = 0;
public double lowValue { get; set; } = 0;
/// <summary>
/// 종가로 계산할때 해당 봉 시가 값
/// </summary>
public double startValue = 0;
public double startValue { get; set; } = 0;
/// <summary>
/// 값
/// </summary>
public double value = 0;
public double value { get; set; } = 0;
/// <summary>
/// 돌파지점과 종가가 같아지는 값
/// 0이면 값 없음
/// </summary>
public double overlapValue = 0;
public double overlapValue { get; set; } = 0;
/// <summary>
/// 상,하 돌파 여부
/// </summary>
public CommonProperty.OverStatus overStatus = CommonProperty.OverStatus.None;
public CommonProperty.OverStatus overStatus { get; set; } = CommonProperty.OverStatus.None;
/// <summary>
/// 데이터 존재 여부 반환

View File

@@ -1,5 +1,8 @@
namespace Million.Data
using System;
namespace Million.Data
{
[Serializable]
public class MarketData
{
// 거래소

View File

@@ -6,6 +6,7 @@ using System.Threading.Tasks;
namespace Million.Data
{
[Serializable]
public class MovingAverageData
{
public int period;

View File

@@ -22,6 +22,9 @@ namespace Million.Data
public string CodeFullName { get; set; }
public double FirstEarningRate { get; set; }
public bool FirstWinFlag { get; set; } = false;
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
@@ -29,9 +32,9 @@ namespace Million.Data
public List<double> BuyEarningRate { get; set; } = new List<double>();
public List<double> BuyValueList { get; set; } = new List<double>();
public double SellValue;
public double SellValue { get; set; }
public double TotalEarningRate;
public double TotalEarningRate { get; set; }
public int WinCount { get; set; } = 0;
public int LoseCount { get; set; } = 0;

View File

@@ -6,6 +6,7 @@ using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
using DevExpress.Xpo;
using DevExpress.XtraTreeList.Nodes;
using DocumentFormat.OpenXml.Drawing;
using Million.Data;
using Million.SaveData;
@@ -75,11 +76,29 @@ namespace Million.FileDBManagement
try
{
// saveResultData 저장하기
SaveToBinaryFile(savedResultData.SearchResultList, guid.ToString() + CommonProperty.DataExtend);
// Info Data 저장하기
SaveToBinaryFile(savedResultData, guid.ToString() + CommonProperty.InfoExtend);
// saveResultData 저장하기
SaveToBinaryFile(savedResultData.SearchResultList, guid.ToString() + CommonProperty.DataExtend);
return true;
}
catch (Exception) { return false; }
}
// 결과 분석 데이터 저장하기
public static bool SavedResultAnalysisDataToFile(SavedAnalysisData savedAnalysisData, string AnalysisFolderPath)
{
try
{
if (!Directory.Exists(AnalysisFolderPath))
Directory.CreateDirectory(AnalysisFolderPath);
// 저장하기
var guid = Guid.NewGuid();
SaveToBinaryFile(savedAnalysisData,null, AnalysisFolderPath + "\\" + guid);
return true;
}
catch (Exception) { return false; }
@@ -100,8 +119,15 @@ namespace Million.FileDBManagement
}
// 결과 분석 데이터 불러오기
public static TreeListNodes LoadResultAnalysisDataFromFile(string fileFullPath)
{
var savedResultData = (TreeListNodes)LoadFormBinaryFile(fileFullPath);
return savedResultData;
}
// 클래스 Binary 파일로 저장
public static bool SaveToBinaryFile(object saveData, string fileName)
public static bool SaveToBinaryFile(object saveData, string fileName, string fullfilePath = null)
{
var baBinaryFormatter = new BinaryFormatter();
Stream stream = null;
@@ -111,6 +137,8 @@ namespace Million.FileDBManagement
var directoryInfo = new DirectoryInfo(CommonProperty.SaveProgramDirecotryPath);
var fileFullPath = string.Format(@"{0}\{1}", directoryInfo.FullName, fileName);
if (fullfilePath != null)
fileFullPath = fullfilePath;
// 폴더 없으면 파일 생성
if (!directoryInfo.Exists)
@@ -122,7 +150,7 @@ namespace Million.FileDBManagement
return true;
}
catch (Exception)
catch (Exception e)
{
return false;
}

View File

@@ -1,4 +1,5 @@
using Million.Data;
using Million.DbManagement;
using Million.IndicatorConditionSetup;
using System;
using System.Collections.Generic;
@@ -428,30 +429,32 @@ namespace Million.Manager
for (var i = 0; i < parentCandleDataList.Count; i++)
{
var parent = parentCandleDataList[i];
if (!parent.IndicatorDic.ContainsKey(subSetup.IndexString)) continue;
var subKey = GetKeyData(subSetup);
if (!parent.IndicatorDic.ContainsKey(subKey)) continue;
var subIndiOverlapVal = parent.IndicatorDic[subSetup.IndexString].overlapValue;
var overlapValue = parent.IndicatorDic[setUp.IndexString].overlapValue;
var subIndiOverlapVal = parent.IndicatorDic[subKey].overlapValue;
var overlapValue = GetValueData(setUp, parent, key);
// 고가
if(type == 1)
if (type == 1)
{
if (parent.IndicatorDic[subSetup.IndexString].highValue != 0 &&
parent.IndicatorDic[setUp.IndexString].highValue != 0)
if (parent.IndicatorDic[subKey].highValue != 0 &&
parent.IndicatorDic[key].highValue != 0)
{
subIndiOverlapVal = parent.IndicatorDic[subSetup.IndexString].highValue;
overlapValue = parent.IndicatorDic[setUp.IndexString].highValue;
subIndiOverlapVal = parent.IndicatorDic[subKey].highValue;
overlapValue = parent.IndicatorDic[key].highValue;
}
}
// 저가
if(type == 2)
{
if (parent.IndicatorDic[subSetup.IndexString].lowValue != 0 &&
parent.IndicatorDic[setUp.IndexString].lowValue != 0)
if (parent.IndicatorDic[subKey].lowValue != 0 &&
parent.IndicatorDic[key].lowValue != 0)
{
subIndiOverlapVal = parent.IndicatorDic[subSetup.IndexString].lowValue;
overlapValue = parent.IndicatorDic[setUp.IndexString].lowValue;
subIndiOverlapVal = parent.IndicatorDic[subKey].lowValue;
overlapValue = parent.IndicatorDic[key].lowValue;
}
}
@@ -489,7 +492,7 @@ namespace Million.Manager
if (((MovingAverageConditionSetup)subSetup).MovingAverageType == MovingAverageType.거래량)
childs = GetChildrenDatas(parent, subSetup.MCandleTimeType, childrenCandleDataList);
var subIndiOver = setUp.GetQuoteValue(subList, childs);
var subIndiOver = subSetup.GetQuoteValue(subList, childs);
double overlapVal = 0;
foreach(var item in indiOver)
{
@@ -499,57 +502,39 @@ namespace Million.Manager
break;
}
}
parent.CalculateFlag[setUp.IndexString] = true;
if (!parent.IndicatorDic.ContainsKey(key))
{
parent.IndicatorDic[key] = new IndicatorData();
parent.IndicatorDic[key].overlapValue = overlapVal;
}
else
{
parent.IndicatorDic[key].overlapValue = overlapVal;
}
childs = GetChildrenDatas(parent, setUp.MCandleTimeType, childrenCandleDataList);
foreach(var item in childs)
foreach (var item in childs)
{
if(item.EndValue > overlapVal)
if (item.CalculateFlag[setUp.IndexString]) continue;
item.CalculateFlag[setUp.IndexString] = true;
if (!(item.HighValue <= overlapVal && item.LowValue >= overlapVal))
{
item.CalculateFlag[setUp.IndexString] = true;
parent.CalculateFlag[setUp.IndexString] = true;
overlapVal = item.StartValue;
}
if (parent.IndicatorDic.ContainsKey(key))
{
parent.IndicatorDic[key].overlapValue = overlapVal;
}
else
{
parent.IndicatorDic[key] = new IndicatorData();
parent.IndicatorDic[key] = parent.IndicatorDic[key];
parent.IndicatorDic[key].overlapValue = overlapVal;
}
if (item.IndicatorDic.ContainsKey(key))
{
if (setUp.CrossType == CrossType.CrossOverStatus)
{
item.IndicatorDic[key].overlapValue = overlapVal;
}
else
{
if (item.StartValue > overlapVal)
item.IndicatorDic[key].overlapValue = item.StartValue;
else
item.IndicatorDic[key].overlapValue = overlapVal;
}
}
else
{
item.IndicatorDic[key] = new IndicatorData();
item.IndicatorDic[key] = parent.IndicatorDic[key];
if (setUp.CrossType == CrossType.CrossOverStatus)
{
item.IndicatorDic[key].overlapValue = overlapVal;
}
else
{
if (item.StartValue > overlapVal)
item.IndicatorDic[key].overlapValue = item.StartValue;
else
item.IndicatorDic[key].overlapValue = overlapVal;
}
}
if (!item.IndicatorDic.ContainsKey(key))
{
item.IndicatorDic[key] = new IndicatorData();
item.IndicatorDic[key].overlapValue = overlapVal;
}
else
{
item.IndicatorDic[key].overlapValue = overlapVal;
}
}
@@ -778,7 +763,7 @@ namespace Million.Manager
{
if (!item.IndicatorDic.ContainsKey(key)) continue;
double value = GetValue(item, setUp);
var overlapData = GetOverlapValueData(setUp, item, key);
var overlapData = GetValueData(setUp, item, key);
if (CompareSettingValueOfTranspierce(setUp.IndicatorOver, overlapData, value))
{
@@ -852,6 +837,10 @@ namespace Million.Manager
child.IndicatorDic[key] = new IndicatorData();
child.IndicatorDic[key] = item.IndicatorDic[key];
}
else
{
child.IndicatorDic[key] = item.IndicatorDic[key];
}
if (!trueVal)
{
@@ -866,7 +855,13 @@ namespace Million.Manager
if (trueVal)
{
child.CalculateFlag[setUp.IndexString] = true;
child.IndicatorDic[key].overlapValue = val;
if(child.IndicatorDic.ContainsKey(key))
child.IndicatorDic[key].overlapValue = val;
else
{
child.IndicatorDic[key] = new IndicatorData();
child.IndicatorDic[key].overlapValue = val;
}
}
}
}
@@ -928,6 +923,37 @@ namespace Million.Manager
return false;
}
/// <summary>
/// 계산된 값 가져오는 함수
/// </summary>
/// <param name="setUp"></param>
/// <param name="candleData"></param>
/// <param name="key"></param>
/// <returns></returns>
private static double GetValueData(IndicatorCoditionSetup setUp, CandleData candleData, string key)
{
var data = candleData.IndicatorDic[key].value;
#region 비교할 데이터 추출
if (candleData.IndicatorDic[key].GetType() == typeof(IchimokData))
{
if (((IchimokuConditionSetup)setUp).IndicatorIchmokuOverLine == CommonProperty.Indicator_IchmokuOverLine.선행스팬1)
{
data = ((IchimokData)candleData.IndicatorDic[key]).value;
}
else if (((IchimokuConditionSetup)setUp).IndicatorIchmokuOverLine == CommonProperty.Indicator_IchmokuOverLine.선행스팬2)
{
data = ((IchimokData)candleData.IndicatorDic[key]).value2;
}
else if (((IchimokuConditionSetup)setUp).IndicatorIchmokuOverLine == CommonProperty.Indicator_IchmokuOverLine.선행스팬1OR2중고가)
{
data = ((IchimokData)candleData.IndicatorDic[key]).GetOverValue();
}
}
#endregion
return data;
}
/// <summary>
/// 조건별 Overlap value 데이터 리턴
/// </summary>
@@ -953,7 +979,7 @@ namespace Million.Manager
{
overlapData = ((IchimokData)candleData.IndicatorDic[key]).GetOverValue();
}
}
}
#endregion
return overlapData;
}
@@ -1093,5 +1119,42 @@ namespace Million.Manager
if (list.Count == count) return list;
return new List<CandleData>();
}
/// <summary>
/// Indicator 계산 로직
/// </summary>
/// <param name="totalIndicator"></param>
/// <param name="indiList"></param>
/// <param name="lossIndicator"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <param name="resultCandleDataList"></param>
/// <param name="subIndicator"></param>
public static void GetCalculateIndicator(List<IndicatorCoditionSetup> totalIndicator, List<string> indiList, List<IndicatorCoditionSetup> lossIndicator,
DateTime startDate, DateTime endDate, List<CandleData> resultCandleDataList, List<IndicatorCoditionSetup> subIndicator, Dictionary<MCandleTimeType, List<CandleData>> parentList)
{
foreach (var item in indiList)
{
var indicator = totalIndicator.FirstOrDefault(t => t.IndexString == item);
if (indicator != null)
{
if (indicator.IndicatorType == CommonProperty.IndicatorType.가격비율)
{
//추후 가격도 처리 해야함 EX: 호가 단위 등등
var temp = (PriceRateCondtionSetup)indicator;
if (temp.PriceRateSetupConditionType == CommonProperty.PriceRateSetupConditionType.비율)
{
lossIndicator.Add(indicator);
continue;
}
}
var list = parentList[indicator.MCandleTimeType];
list = list.Where(t => startDate <= t.DateTime && t.DateTime < endDate).ToList();
SwitchFun(indicator, list, resultCandleDataList, subIndicator);
}
}
}
}
}

View File

@@ -0,0 +1,84 @@
using Million.Data;
using Million.DbManagement;
using Million.IndicatorConditionSetup;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Million.CommonProperty;
namespace Million.Manager
{
/// <summary>
/// 데이터 구성 Manager Class
/// </summary>
public static class DataManager
{
/// <summary>
/// DB에서 데이터 가져오며 Setting 처리 함
/// </summary>
/// <param name="candleTypeList"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <param name="market"></param>
/// <param name="distinctIndicator"></param>
/// <returns></returns>
public static Dictionary<MCandleTimeType, List<CandleData>> GetStandardData(List<IndicatorCoditionSetup> totalIndicator, DateTime startDate,
DateTime endDate, MarketData market, List<IndicatorCoditionSetup> distinctIndicator, bool flag = false)
{
var candleTypeList = totalIndicator.Select(t => t.MCandleTimeType).ToList();
candleTypeList.Add(CommonProperty.MCandleTimeType.M1);
candleTypeList = candleTypeList.Distinct().ToList();
var dic = new Dictionary<CommonProperty.MCandleTimeType, List<CandleData>>();
//계산로직에 필요한 Data setting
foreach (var item in candleTypeList)
{
var candleDataListClass = DbServiceFunctions.GetCandleData(market,
startDate, endDate, item);
var indicatorSetUpList = distinctIndicator.Where(t => t.MCandleTimeType == item).ToList();
foreach (var setup in indicatorSetUpList)
{
setup.excute(candleDataListClass.CandleDataLists_Im);
}
var list = new List<CandleData>();
if (flag)
{
var parentData = ValidationCheckManager.SplitValidationCandleDataList(candleDataListClass.CandleDataLists_Im, item);
foreach (var parent in parentData) list.AddRange(parent);
dic.Add(item, list);
}
else
dic.Add(item, candleDataListClass.CandleDataLists_Im);
}
return dic;
}
/// <summary>
/// Sub Indicator List String 반환 Function
/// </summary>
/// <param name="totalIndicator"></param>
/// <returns></returns>
public static List<string> GetSubIndicatorStringList(List<IndicatorCoditionSetup> totalIndicator)
{
// 최초와 cross의 조건먼저 계산이 필요함(선처리)
var parentIndicator = totalIndicator.Where(t => t.SubIndicatorSetupType == CommonProperty.SubIndicatorSetupType.최초돌파 ||
t.SubIndicatorSetupType == CommonProperty.SubIndicatorSetupType.크로스).ToList();
var subIndStringiList = new List<string>();
foreach (var item in parentIndicator)
{
var subRegExpression = item.FirstOverSubRegExpression;
if (item.SubIndicatorSetupType == CommonProperty.SubIndicatorSetupType.크로스)
subRegExpression = item.CrossSubRegExpression;
subIndStringiList.AddRange(subRegExpression.Split(',').ToList());
}
subIndStringiList = subIndStringiList.Distinct().ToList();
return subIndStringiList;
}
}
}

View File

@@ -15,7 +15,7 @@ namespace Million.Manager
/// <summary>
/// Data Setting하는 Manager Class
/// </summary>
public class DataSettingManager
public class RealtimeDataSettingManager
{
/// <summary>
/// Ticker에 들어갈 데이터
@@ -33,7 +33,7 @@ namespace Million.Manager
/// <summary>
/// 생성자
/// </summary>
public DataSettingManager(List<string> codeFullNameList, PaymentType buyType, string tableName = "Upbit")
public RealtimeDataSettingManager(List<string> codeFullNameList, PaymentType buyType, string tableName = "Upbit")
{
this.buyType = buyType;
marketList = DbServiceFunctions.GetMarketDatas(tableName, Enum.GetName(typeof(PaymentType), buyType));
@@ -86,7 +86,7 @@ namespace Million.Manager
}
return returnData;
}
}
public void StartGetRealTimeTicker(object state, int duTime = 0, int period = 50)
{

View File

@@ -147,7 +147,10 @@ namespace Million.Manager
var result = new SearchResult();
var rate = ((item.SellValue - buyValue) / buyValue) * 100;
result.FirstEarningRate = rate;
result.EndDate = item.DateTime;
result.CodeFullName = market.CodeFullName;
result.MarketData = market;
result.BuyEarningRate.Add(rate);
result.BuyValueList.Add(buyValue);
result.BuyList.ConGoodsData = market;
@@ -158,6 +161,7 @@ namespace Million.Manager
result.TotalEarningRate = rate;
result.WinCount = rate > 0 ? 1 : 0;
result.LoseCount = rate < 0 ? 1 : 0;
result.FirstWinFlag = rate > 0 ? true : false;
result.TermCandleDataList = termList;
resultList.Add(result);
removeBuyList.Add(buy);
@@ -182,16 +186,25 @@ namespace Million.Manager
item.SellValue = val - Math.Round(val * 0.0005);
var result = new SearchResult();
result.CodeFullName = market.CodeFullName;
result.MarketData = market;
result.BuyList.ConGoodsData = market;
result.SellData = item;
result.SellValue = item.SellValue;
result.EndDate = item.DateTime;
double firstRate = 0;
double totalRate = 0;
var firstFlag = true;
var firstWinFlag = false;
foreach (var buy in buyList)
{
var rate = ((item.SellValue - buy.BuyValue) / buy.BuyValue) * 100;
if (firstFlag) {
firstRate = rate;
firstFlag = false;
firstWinFlag = rate > 0 ? true : false;
}
totalRate += rate;
if(rate > 0)
@@ -209,7 +222,8 @@ namespace Million.Manager
result.StartDate = result.BuyList.CandleDataLists_Im[0].DateTime;
result.TermCandleDataList = termList;
result.FirstWinFlag = firstWinFlag;
result.FirstEarningRate = firstRate;
result.TotalEarningRate = totalRate;
resultList.Add(result);

View File

@@ -152,6 +152,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="CommonProperty.cs" />
<Compile Include="Data\AnalysisData.cs" />
<Compile Include="Data\BollingerData.cs" />
<Compile Include="Data\CandleData.cs" />
<Compile Include="Data\CandleDataList.cs" />
@@ -190,7 +191,8 @@
</Compile>
<Compile Include="Manager\BuyLogicManager.cs" />
<Compile Include="Manager\CalculateManager.cs" />
<Compile Include="Manager\DataSettingManager.cs" />
<Compile Include="Manager\DataManager.cs" />
<Compile Include="Manager\RealtimeDataSettingManager.cs" />
<Compile Include="Manager\IndicatorSetupManager.cs" />
<Compile Include="Manager\InteratorScripter.cs" />
<Compile Include="Manager\OrderbookManager.cs" />
@@ -200,6 +202,7 @@
<Compile Include="Manager\ValidationCheckManager.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SaveData\SavedAnalysisData.cs" />
<Compile Include="SaveData\SavedResultData.cs" />
<Compile Include="SubForm\AccumulateDataUI.cs">
<SubType>UserControl</SubType>

View File

@@ -0,0 +1,31 @@
using Million.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Million.SaveData
{
[Serializable]
public class SavedAnalysisData
{
// 적용된 필터 스트링
public string TreeListFilterString { get; set; }
// 분석 데이터 리스트
public List<AnalysisData> AnalysisDataList { get; set; } = null;
// 기타
public string Description { get; set; } = null;
// 승률
public double FirstWinRate { get; set; }
// 수익률
public double FirstProfitRate { get; set; }
// 저장 시간
public DateTime SavedTime { get; set; }
}
}

View File

@@ -30,6 +30,16 @@ namespace Million.SaveData
// 정규식 (Sell)
public string SellRegularExpression { get; set; }
[field: NonSerialized]
// 실제 데이터 경로 (Data Info)
public string SavedInfoDataPath { get; set; }
// 실제 데이터 경로 (결과 Data)
[field: NonSerialized]
public string SavedResultDataPath { get; set; }
// 실제 데이터 경로 (결과 분석 데이터)
[field: NonSerialized]
public string SavedResultAnalysisDataPath { get; set; }
[field: NonSerialized]
// 결과 데이터
public List<SearchResult> SearchResultList { get; set; }
@@ -39,6 +49,10 @@ namespace Million.SaveData
public double WinRate { get; set; }
// 수익휼
public double ProfitRate { get; set; }
// 승률 (매도 전 첫번째만 포함)
public double FirstProfitRate { get; set; }
// 수익률 (매도 전 첫번째만 포함)
public double FirstWinRate { get; set; }
public SavedResultData Clone()
{