Files
Million/Million Hunter/HunterSubForm/ResultViewerForm.cs
2022-06-20 22:50:45 +09:00

119 lines
3.9 KiB
C#

using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Million.SaveData;
using Million.FileDBManagement;
using Million.Data;
namespace Million_Hunter.HunterSubForm
{
public partial class ResultViewerForm : DevExpress.XtraEditors.XtraForm
{
// 저장 또는 불러온 Result Data
public SavedResultData _savedResultData;
public ResultViewerForm(SavedResultData savedResultData)
{
InitializeComponent();
_savedResultData = savedResultData;
InitForm();
}
private void InitForm()
{
// 1. 결과 데이터 TreeList에 표기
// 시간 데이터 추가
//_savedResultData.SearchResultList.ToLookup()
textEdit_StartDateTime.Text = _savedResultData.StartDateTime.Date.ToString();
textEdit_EndDateTime.Text = _savedResultData.EndDateTime.Date.ToString();
textEdit_SavedDateTime.Text = _savedResultData.SavedDateTime.Date.ToString();
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();
// 데이터 가공하기
Dictionary<string, object> wrapperList = new Dictionary<string, object>();
// CodeFullName으로 리스트 분리하기
var list = _savedResultData.SearchResultList.ToLookup(item => item.BuyList.ConGoodsData.CodeFullName);
var oderbyList = list.OrderBy(item => item.Key);
// Parent Node
foreach(var groupItem in oderbyList)
{
var firstChildNode = groupItem.First();
var parentNode = treeList_ResultData.Nodes.Add(groupItem.Key, firstChildNode);
// Child Node
foreach (var item in groupItem)
{
parentNode.Nodes.Add(item.BuyList.ConGoodsData.CodeFullName);
}
}
//FileManager.SaveToBinaryFile(treeList_ResultData.Nodes, null, _savedResultData.SavedResultAnalysisDataPath);
//var loadedData = FileManager.LoadFormBinaryFile(_savedResultData.SavedResultAnalysisDataPath);
}
[Serializable]
public class AnalysisData
{
// 결과에 포함 및 제외 조건
bool inclusion { get; set; } = true;
// 거래소
string ExchangePlace { get; set; }
// 종목 코드
string CodeFullName { get; set; }
// 종목 이름
string KorName { get; set; }
// 기간 내 총 구매 횟수
int BuyCountForTime { get; set; }
// 기간 내 구매 회수 변경 설정
int SetBuyCountForTime { get; set; }
// 구매 시간
DateTime StartDate { get; set; }
// 구매 가격
double BuyValue { get; set; }
// 판매 시간
DateTime EndDate { get; set; }
// 판매 가격
double SellValue { get; set; }
// 기타 기입 내용
string Description { get; set; }
// 승률
double EarningRate { get; set; }
// 수익률
double WinCount { get; set; }
// 원본 데이터 참조
SearchResult OriginalSearchResult { get; set; }
}
}
}