diff --git a/Million Buyer/MainForm.cs b/Million Buyer/MainForm.cs index 9f0c3d3..85baff8 100644 --- a/Million Buyer/MainForm.cs +++ b/Million Buyer/MainForm.cs @@ -29,6 +29,8 @@ namespace Million_Buyer { public partial class MainForm : Form { + BuyerMode programMode = BuyerMode.BuyerRealtime; + private SavedResultData _saveResultData; //결과 데이터 private List resultDataList; @@ -78,7 +80,7 @@ namespace Million_Buyer public void Init() { InitManager.InitFunc("Upbit", PaymentType.KRW); - CommonProperty.programMode = BuyerMode.BuyerRealtime; + cb_BigMoneyVolType.Properties.Items.Clear(); cb_BigMoneyVolType.Properties.Items.AddRange(InitManager.GetCandleTimeTypes()); cb_BuyBigthanHighType.Properties.Items.Clear(); @@ -105,9 +107,9 @@ namespace Million_Buyer /// /// private void rd_Realtime_CheckedChanged(object sender, EventArgs e) - { - CommonProperty.programMode = BuyerMode.BuyerRealtime; - SetReadOnly(true); + { + programMode = BuyerMode.BuyerRealtime; + SetReadOnly(true); } /// @@ -116,9 +118,9 @@ namespace Million_Buyer /// /// private void rd_buyer_CheckedChanged(object sender, EventArgs e) - { - CommonProperty.programMode = BuyerMode.Buyer; - SetReadOnly(false); + { + programMode = BuyerMode.Buyer; + SetReadOnly(false); } /// @@ -172,11 +174,11 @@ namespace Million_Buyer TopVolFlag = cb_TopVol.Checked; BigMoneyVolFlag = ck_BigMoneyVol.Checked; - if (BigMoneyVolFlag) + if(BigMoneyVolFlag) BigMoneyVolType = (MCandleTimeType)Enum.Parse(typeof(MCandleTimeType), cb_BigMoneyVolType.Text.ToString()); BuyBigthanHighValFlag = ck_BuyBigthanHighVal.Checked; - if (BuyBigthanHighValFlag) + if(BuyBigthanHighValFlag) BuyBigthanHighValType = (MCandleTimeType)Enum.Parse(typeof(MCandleTimeType), cb_BigMoneyVolType.Text.ToString()); bt_BuyStart_Click(null, null); @@ -390,7 +392,7 @@ namespace Million_Buyer if (programMode == BuyerMode.BuyerRealtime) InsertLog("실시간 검증 구동 중.."); else if (programMode == BuyerMode.Buyer) - InsertLog("Buyer 구동 중.."); + InsertLog("Buyer 구동 중.."); var cnt = 0; sw.Start(); @@ -414,7 +416,7 @@ namespace Million_Buyer realTimeMsg = new RealtimeDataSettingManager(null, programMode, this.payment); var startDateTime = DateTime.Now; - var endDateTime = startDateTime; + var endDateTime = startDateTime; dataList = realTimeMsg.GetRealTimeCandleData(candleTypeList, startDateTime, endDateTime, 200); @@ -444,12 +446,12 @@ namespace Million_Buyer } lb_BuyMarketCount.Text = buyList.Count.ToString(); - })); + })); #endregion firstFlag = false; - + sw.Stop(); InsertLog("Deafult Data Setting 완료..\\r\n" + "Default 계산 시간 : " + sw.Elapsed.ToString()); LogManager.WriteLog("Default 계산 시간 : " + sw.Elapsed.ToString()); @@ -480,31 +482,30 @@ namespace Million_Buyer if (tickDataList == null) tickDataList = new List(); - if (tickDataList.Select(t => t.TrendType).Where(t => t == "RISE").ToList().Count > tickDataList.Count * 0.7) + if (tickDataList.Select(t => t.TrendType).Where(t=>t == "RISE").ToList().Count > tickDataList.Count * 0.7) { topVolTempCnt = (int)(topVolTempCnt * 15 / 10); } if (tickDataList.Count > topVolTempCnt) { - //var AccumulateTradeVolume = tickDataList.OrderByDescending(t => t.AccumulateTradeVolume).Select(t=>t.CoinFullName).ToList(); - //var AccumulateTradePrice = tickDataList.OrderByDescending(t => t.AccumulateTradePrice).Select(t => t.CoinFullName).ToList(); + var AccumulateTradeVolume = tickDataList.OrderByDescending(t => t.AccumulateTradeVolume).Select(t=>t.CoinFullName).ToList(); + var AccumulateTradePrice = tickDataList.OrderByDescending(t => t.AccumulateTradePrice).Select(t => t.CoinFullName).ToList(); - //AccumulateTradeVolume.RemoveRange(topVolTempCnt, AccumulateTradeVolume.Count - topVolTempCnt); - //AccumulateTradePrice.RemoveRange(topVolTempCnt, AccumulateTradePrice.Count - topVolTempCnt); + AccumulateTradeVolume.RemoveRange(topVolTempCnt, AccumulateTradeVolume.Count - topVolTempCnt); + AccumulateTradePrice.RemoveRange(topVolTempCnt, AccumulateTradePrice.Count - topVolTempCnt); - //foreach(var item in AccumulateTradePrice) - //{ - // foreach(var item2 in AccumulateTradeVolume) - // { - // if (item == item2) filterNameList.Add(item); - // } - //} + foreach(var item in AccumulateTradePrice) + { + foreach(var item2 in AccumulateTradeVolume) + { + if (item == item2) filterNameList.Add(item); + } + } //var AccumulateTradeVolume24 = tickDataList.OrderByDescending(t => t.AccumulateTradeVolume24).Select(t => t.CoinFullName).ToList(); - var AccumulateTradePrice24 = tickDataList.OrderByDescending(t => t.AccumulateTradePrice24).Select(t => t.CoinFullName).ToList(); - AccumulateTradePrice24.RemoveRange(topVolTempCnt, AccumulateTradePrice24.Count - topVolTempCnt); - filterNameList = AccumulateTradePrice24; + //var AccumulateTradePrice24 = tickDataList.OrderByDescending(t => t.AccumulateTradePrice24).Select(t => t.CoinFullName).ToList(); + //for (var i = 0; i < 5; i++) //{ // if (!filterNameList.Any(t => t == AccumulateTradePrice24[i])) @@ -534,7 +535,7 @@ namespace Million_Buyer // } // } //} - } + } } if (buyList.Count == 0) allSell = false; @@ -574,7 +575,7 @@ namespace Million_Buyer var recentlyData = DataManager.GetRecentlyData(dic, MCandleTimeType.M1, true); var recentlyDate = recentlyData.DateTime; - + if ((int)smallCandleType < 60) recentlyDate = recentlyDate.AddMinutes(-1 * (int)smallCandleType); else { @@ -608,7 +609,6 @@ namespace Million_Buyer if (!buyFlag) continue; var flag = buyScript.DicExcuteScript(recentlyData.CalculateFlag); - if (flag) { if (overlapBuyManagementList[item]) @@ -630,7 +630,6 @@ namespace Million_Buyer subIndicatorStateManagement[indi.IndexString][item] = false; overlapBuyManagementList[item] = true; - continue; } } @@ -676,9 +675,8 @@ namespace Million_Buyer { if (!filterNameList.Any(t => t == item)) { - //InsertLog("거래량이 안됨 : " + item + ", DateTime : " + recentlyData.DateTime.ToString("yyyy-MM-dd HH:mm:ss")); + InsertLog("거래량이 안됨 : " + item + ", DateTime : " + recentlyData.DateTime.ToString("yyyy-MM-dd HH:mm:ss")); overlapBuyManagementList[item] = false; - continue; } } @@ -687,12 +685,11 @@ namespace Million_Buyer InsertLog("Insert Buy Logic"); if (programMode == BuyerMode.Buyer) { - //LogManager.WriteLog("Buy CoinFullName : " + item + "\r\nCandleData : " + JsonConvert.SerializeObject(recentlyData), "BuySell"); - //InsertLog("Buy Coin Name : " + item + ", DateTime : " + recentlyData.DateTime.ToString("yyyy-MM-dd HH:mm:ss")); + LogManager.WriteLog("Buy CoinFullName : " + item + "\r\nCandleData : " + JsonConvert.SerializeObject(recentlyData), "BuySell"); + InsertLog("Buy Coin Name : " + item + ", DateTime : " + recentlyData.DateTime.ToString("yyyy-MM-dd HH:mm:ss")); if (buyCycleCount >= cycleCount) { - //InsertLog("Count Over"); - + InsertLog("Count Over"); continue; } @@ -720,7 +717,6 @@ namespace Million_Buyer if (buyData.Uuid == "") { InsertLog("Return Data 가 에러라서 구매 불가. Log 확인 바람"); - continue; } buyCycleCount++; @@ -730,7 +726,7 @@ namespace Million_Buyer string str = "Buy : " + item + ",\r\n Buy Candle Data : " + JsonConvert.SerializeObject(recentlyData) + "\r\n"; LogManager.WriteLog(str, item); - InsertLog("Buy Coin Name : " + item + ", DateTime : " + recentlyData.DateTime.ToString("yyyy-MM-dd HH:mm:ss")); + overlapBuyManagementList[item] = false; InsertLog(buyData.ConGoodsData.CoinFullName + " Market Data 구입 DateTime : " + time.ToString("yyyy-MM-dd HH:mm:ss")); @@ -755,12 +751,10 @@ namespace Million_Buyer sw.Stop(); if (sw.Elapsed.TotalSeconds > 1) InsertLog("Buy 계산 로직 : " + sw.Elapsed.ToString()); - } } else { - overlapBuyManagementList[item] = true; } } @@ -828,7 +822,7 @@ namespace Million_Buyer //{ // flag = true; //} - } + } } if (flag) @@ -865,9 +859,9 @@ namespace Million_Buyer var sellOrder = OrderSell(buyItem.ConGoodsData.CoinFullName, buyItem.Uuid, sellVal); result.SellCount = sellOrder.ExecutedVolume; - if (sellVal == 0) - { - sellVal = sellItem.EndValue; + if(sellVal == 0) + { + sellVal = sellItem.SellValue; } buyCycleCount--; diff --git a/Million/CommonProperty.cs b/Million/CommonProperty.cs index 483390d..2cbf05e 100644 --- a/Million/CommonProperty.cs +++ b/Million/CommonProperty.cs @@ -312,8 +312,7 @@ namespace Million //public static string BitThumJasonFilePath = $"{SaveProgramDirecotryPath}\\CoinGoods.txt"; #endregion - //프로그램 타입 - public static BuyerMode programMode = BuyerMode.BuyerRealtime; + //TODO 추후 관리 방안 고려 #region # 데이터 베이스 정보 # @@ -366,8 +365,7 @@ namespace Million { BuyerRealtime, Buyer, - HunterRealtime, - None + HunterRealtime } #endregion diff --git a/Million/Manager/CalculateManager.cs b/Million/Manager/CalculateManager.cs index 5054a23..048e6d9 100644 --- a/Million/Manager/CalculateManager.cs +++ b/Million/Manager/CalculateManager.cs @@ -409,18 +409,15 @@ namespace Million.Manager originValueList.Add(parent.IndicatorDic[originKey].value); compareValueList.Add(parent.IndicatorDic[compareKey].value); - if (!(CommonProperty.programMode == BuyerMode.Buyer || CommonProperty.programMode == BuyerMode.BuyerRealtime)) + if (originSetup.CandlePriceType == CandlePriceType.종가) { - if (originSetup.CandlePriceType == CandlePriceType.종가) - { - originValueList.Add(parent.IndicatorDic[originKey].highValue); - originValueList.Add(parent.IndicatorDic[originKey].lowValue); - } - if (compareSetup.CandlePriceType == CandlePriceType.종가) - { - compareValueList.Add(parent.IndicatorDic[compareKey].highValue); - compareValueList.Add(parent.IndicatorDic[compareKey].lowValue); - } + originValueList.Add(parent.IndicatorDic[originKey].highValue); + originValueList.Add(parent.IndicatorDic[originKey].lowValue); + } + if (compareSetup.CandlePriceType == CandlePriceType.종가) + { + compareValueList.Add(parent.IndicatorDic[compareKey].highValue); + compareValueList.Add(parent.IndicatorDic[compareKey].lowValue); } var cnt = originValueList.Count >= compareValueList.Count ? originValueList.Count : compareValueList.Count; @@ -452,14 +449,11 @@ namespace Million.Manager (cSetup.CompareType == CompareType.Origin_Down_Compare_Up && originVal < compareVal) || (cSetup.CompareType == CompareType.Origin_DownOrSame_Compare_Up && originVal <= compareVal)) { - if (!(CommonProperty.programMode == BuyerMode.Buyer || CommonProperty.programMode == BuyerMode.BuyerRealtime)) + flag = false; + if (!CommonProperty.compareIndicatorState[setUp.IndexString][coinFullName]) { - flag = false; - if (!CommonProperty.compareIndicatorState[setUp.IndexString][coinFullName]) - { - CommonProperty.compareIndicatorState[setUp.IndexString][coinFullName] = true; - break; - } + CommonProperty.compareIndicatorState[setUp.IndexString][coinFullName] = true; + break; } parent.CalculateFlag[cSetup.IndexString] = true; @@ -479,14 +473,8 @@ namespace Million.Manager } - if (!(CommonProperty.programMode == BuyerMode.Buyer || CommonProperty.programMode == BuyerMode.BuyerRealtime)) - { - if (flag) - { - CommonProperty.compareIndicatorState[setUp.IndexString][coinFullName] = false; - } - } - + if (flag) + CommonProperty.compareIndicatorState[setUp.IndexString][coinFullName] = false; } } @@ -503,7 +491,7 @@ namespace Million.Manager if (buyData != null) { var rate = ((PriceRateCondtionSetup)setUp).Rate; - var rateVal = buyData.BuyValue + (buyData.BuyValue * (rate / 100)); + var rateVal = buyData.BuyValue + (buyData.BuyValue * rate / 100); var key = GetKeyData(setUp); foreach (var item in parentCandleDataList) { @@ -1394,10 +1382,10 @@ namespace Million.Manager { value = data.LowValue; } - else + else if (setUp.CandlePriceType == CommonProperty.CandlePriceType.종가) { value = data.EndValue; - } + } return value; }