diff --git a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs index 9d20a0d..2e05021 100644 --- a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs +++ b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs @@ -394,7 +394,7 @@ namespace BitgetAPI.IndicatorConditionSetup var 현재봉4 = candleData.movingAverageDataList[4].Value; var 현재봉8 = candleData.movingAverageDataList[8].Value; var 현재봉12 = candleData.movingAverageDataList[12].Value; - var 현재봉24 = candleData.movingAverageDataList[24].Value; + var 현재봉24 = candleData.movingAverageDataList[24].Value; var 현재봉36 = candleData.movingAverageDataList[36].Value; var 현재봉72 = candleData.movingAverageDataList[72].Value; @@ -413,7 +413,7 @@ namespace BitgetAPI.IndicatorConditionSetup if ((int)interval != 1) { continue; - } + } if (영호조건식_상향돌파) { @@ -430,13 +430,20 @@ namespace BitgetAPI.IndicatorConditionSetup //사는 시점 if (!UpBuyList.ContainsKey(market + interval)) { + var buyFlag = false; + var buyType = 0; if ( candleData.IchimokData.하한선 > 현재봉2 && candleData_전봉.IchimokData.하한선 > 전봉2 && - 현재봉72 > 현재봉2 && 전봉72 > 전봉2 && 전봉24 > 전봉2 && 현재봉24 < 현재봉2 && + 현재봉72 > 현재봉2 && 전봉72 > 전봉2 && 전봉24 > 전봉2 && 현재봉24 < 현재봉2 && 전봉12 < 전봉2 && 현재봉12 < 현재봉24 - ) + ) { - + buyFlag = true; ; + buyType = 1; + } + if (buyFlag) + { + // 없으면 생성 if (signalData == null) { @@ -458,7 +465,7 @@ namespace BitgetAPI.IndicatorConditionSetup { "BuyDate", nowTime }, { "Price", price }, { "MCandleTimeType", (int)interval }, - { "Type", 1 }, + { "Type", buyType }, { "CandleTime", candleData.Argument }, { "MovingRate4_8", 현재봉8 - 현재봉4 }, { "Candle", candleData } @@ -490,19 +497,35 @@ namespace BitgetAPI.IndicatorConditionSetup { "Price", price }, { "MCandleTimeType", (int)interval }, { "Candle", candleData }, - { "Size", size }, + { "Size", size }, { "orderId", orderDic["orderId"] } }; BuyLongList.Add(orderDataDic); LongCount++; } } - } + } } //파는 시점 else { var buyItem = UpBuyList[market + interval]; + + if (interval < MCandleTimeType.H1) + { + var buyTime = ((DateTime)buyItem["BuyDate"]).AddHours((int)interval / 60); + if (nowTime < buyTime) + continue; + } + //임시로 처리 + else + { + var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval); + if (nowTime < buyTime) + continue; + } + + var sellFlag = false; int.TryParse(buyItem["Type"].ToString(), out var type); var val = SellLongStep[market + interval]; @@ -545,7 +568,7 @@ namespace BitgetAPI.IndicatorConditionSetup break; } - if (sellFlag) + if (sellFlag) { double.TryParse(buyItem["Price"].ToString(), out var buyPrice); var resultRate = ((price - buyPrice) / buyPrice) * 100; @@ -601,7 +624,7 @@ namespace BitgetAPI.IndicatorConditionSetup { "BuyCandle", buyItem["Candle"] }, { "SellDate", nowTime}, { "SellPrice", price}, - { "SellCandle", candleData }, + { "SellCandle", candleData }, { "Rate", resultRateData } }; ResultList.Add(orderResult); @@ -633,14 +656,20 @@ namespace BitgetAPI.IndicatorConditionSetup //사는 시점 if (!DownBuyList.ContainsKey(market + interval)) { + var buyFlag = false; + var buyType = 0; if ( candleData.IchimokData.상한선 < 현재봉2 && candleData_전봉.IchimokData.상한선 < 전봉2 && 현재봉72 < 현재봉2 && 전봉72 < 전봉2 && 전봉24 < 전봉2 && 현재봉24 > 현재봉2 && 전봉12 > 전봉2 && 현재봉12 > 현재봉24 - - ) + ) { - + buyFlag = true; + buyType = 1; + } + if (buyFlag) + { + // 없으면 생성 if (signalData == null) { @@ -662,7 +691,7 @@ namespace BitgetAPI.IndicatorConditionSetup { "BuyDate", nowTime }, { "Price", price }, { "MCandleTimeType", (int)interval }, - { "Type", 1 }, + { "Type", buyType }, { "CandleTime", candleData.Argument }, { "MovingRate4_8", 현재봉4 - 현재봉8 }, { "Candle", candleData } @@ -701,13 +730,28 @@ namespace BitgetAPI.IndicatorConditionSetup ShortCount++; } } - } + } } //파는 시점 else { var sellFlag = false; - var buyItem = UpBuyList[market + interval]; + var buyItem = DownBuyList[market + interval]; + + if (interval < MCandleTimeType.H1) + { + var buyTime = ((DateTime)buyItem["BuyDate"]).AddHours((int)interval / 60); + if (nowTime < buyTime) + continue; + } + //임시로 처리 + else + { + var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval); + if (nowTime < buyTime) + continue; + } + int.TryParse(buyItem["Type"].ToString(), out var type); var val = SellShortStep[market + interval]; switch (type) @@ -832,7 +876,7 @@ namespace BitgetAPI.IndicatorConditionSetup Console.WriteLine(e.Message); } } - } + } public Dictionary GetPendingOrders() { @@ -866,7 +910,7 @@ namespace BitgetAPI.IndicatorConditionSetup public List> GetFutureAccountList() { - + var timestamp = GetTimeStamp().ToString(); @@ -884,7 +928,7 @@ namespace BitgetAPI.IndicatorConditionSetup public Dictionary CancelFutureOrder(string symbol, string orderId) { - + var timestamp = GetTimeStamp().ToString(); @@ -902,7 +946,7 @@ namespace BitgetAPI.IndicatorConditionSetup public Dictionary ChangeFuturePositionMode(FuturePositionMode mode) { - + var timestamp = GetTimeStamp().ToString(); @@ -921,7 +965,7 @@ namespace BitgetAPI.IndicatorConditionSetup public Dictionary GetFutureOrderDetail(string symbol, string orderId) { - + var timestamp = GetTimeStamp().ToString(); // sell은 ClientOID 가 필요 @@ -970,7 +1014,7 @@ namespace BitgetAPI.IndicatorConditionSetup if (orderType == OrderType.market) price = 0; - + var timestamp = GetTimeStamp().ToString();