From 52b5fa80158910c25acdb5cceaa3e80b57a29718 Mon Sep 17 00:00:00 2001 From: kyh <1329522@naver.com> Date: Tue, 17 Jun 2025 11:28:53 +0900 Subject: [PATCH] =?UTF-8?q?30=EB=B6=84=EB=B4=89=205=EB=B6=84=EB=B4=89?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EA=B2=B0=EA=B3=BC=20=ED=99=95=EC=9D=B8=20?= =?UTF-8?q?=EB=B9=A0=EB=A5=B4=EA=B2=8C=20=ED=95=98=EA=B8=B0=20=EC=9C=84?= =?UTF-8?q?=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 대신 away 거르기 위한 0.7퍼로 변경(12개봉) --- .../IndicatorProcess.cs | 124 +++++++++--------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs index 6adf3dc..5c253b0 100644 --- a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs +++ b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs @@ -307,59 +307,59 @@ namespace BitgetAPI.IndicatorConditionSetup BuyShortStep[market] = 0; BuyLongStep[market] = 0; } - if (!(전저고점.ContainsKey(market + "30m"))) + if (!(전저고점.ContainsKey(market + "5m"))) continue; #region 5분봉 처리 - var candleDatas_30 = findedMarket.candleDataList[MCandleTimeType.M30]; - var candleDatas_30_정렬 = candleDatas_30.OrderBy(i => i.Argument).ToList(); - var candleDatas_30_TempList = candleDatas_30.OrderBy(i => i.Argument).ToList(); - var candleData_30 = candleDatas_30.Find(i => i.Argument == candleDatas_30_정렬.Last().Argument); + var candleDatas_5 = findedMarket.candleDataList[MCandleTimeType.M5]; + var candleDatas_5_정렬 = candleDatas_5.OrderBy(i => i.Argument).ToList(); + var candleDatas_5_TempList = candleDatas_5.OrderBy(i => i.Argument).ToList(); + var candleData_5 = candleDatas_5.Find(i => i.Argument == candleDatas_5_정렬.Last().Argument); - if (candleData_30 == null) continue; + if (candleData_5 == null) continue; - ichimokuConditionSetup.calIchimokuData(candleDatas_30_정렬, candleData_30); - movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_30_정렬, candleData_30); + ichimokuConditionSetup.calIchimokuData(candleDatas_5_정렬, candleData_5); + movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5); - candleDatas_30_정렬.RemoveAt(candleDatas_30_정렬.Count - 1); - var candleData_30_전봉 = candleDatas_30.Find(i => i.Argument == candleDatas_30_정렬.Last().Argument); + candleDatas_5_정렬.RemoveAt(candleDatas_5_정렬.Count - 1); + var candleData_5_전봉 = candleDatas_5.Find(i => i.Argument == candleDatas_5_정렬.Last().Argument); - if (candleData_30_전봉 == null) continue; - ichimokuConditionSetup.calIchimokuData(candleDatas_30_정렬, candleData_30_전봉); - movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_30_정렬, candleData_30_전봉); + if (candleData_5_전봉 == null) continue; + ichimokuConditionSetup.calIchimokuData(candleDatas_5_정렬, candleData_5_전봉); + movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5_전봉); - candleDatas_30_정렬.RemoveAt(candleDatas_30_정렬.Count - 1); - var candleData_30_전전봉 = candleDatas_30.Find(i => i.Argument == candleDatas_30_정렬.Last().Argument); + candleDatas_5_정렬.RemoveAt(candleDatas_5_정렬.Count - 1); + var candleData_5_전전봉 = candleDatas_5.Find(i => i.Argument == candleDatas_5_정렬.Last().Argument); - if (candleData_30_전전봉 == null) continue; - ichimokuConditionSetup.calIchimokuData(candleDatas_30_정렬, candleData_30_전전봉); - movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_30_정렬, candleData_30_전전봉); + if (candleData_5_전전봉 == null) continue; + ichimokuConditionSetup.calIchimokuData(candleDatas_5_정렬, candleData_5_전전봉); + movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5_전전봉); - candleDatas_30_정렬.RemoveAt(candleDatas_30_정렬.Count - 1); - var candleData_30_전전전봉 = candleDatas_30.Find(i => i.Argument == candleDatas_30_정렬.Last().Argument); + candleDatas_5_정렬.RemoveAt(candleDatas_5_정렬.Count - 1); + var candleData_5_전전전봉 = candleDatas_5.Find(i => i.Argument == candleDatas_5_정렬.Last().Argument); - if (candleData_30_전전전봉 == null) continue; - ichimokuConditionSetup.calIchimokuData(candleDatas_30_정렬, candleData_30_전전전봉); - movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_30_정렬, candleData_30_전전전봉); + if (candleData_5_전전전봉 == null) continue; + ichimokuConditionSetup.calIchimokuData(candleDatas_5_정렬, candleData_5_전전전봉); + movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5_전전전봉); - candleDatas_30_정렬.RemoveAt(candleDatas_30_정렬.Count - 1); - var candleData_30_전전전전봉 = candleDatas_30.Find(i => i.Argument == candleDatas_30_정렬.Last().Argument); + candleDatas_5_정렬.RemoveAt(candleDatas_5_정렬.Count - 1); + var candleData_5_전전전전봉 = candleDatas_5.Find(i => i.Argument == candleDatas_5_정렬.Last().Argument); - if (candleData_30_전전전전봉 == null) continue; - ichimokuConditionSetup.calIchimokuData(candleDatas_30_정렬, candleData_30_전전전전봉); - movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_30_정렬, candleData_30_전전전전봉); + if (candleData_5_전전전전봉 == null) continue; + ichimokuConditionSetup.calIchimokuData(candleDatas_5_정렬, candleData_5_전전전전봉); + movingAverageConditionSetup.Cal_YHK_Downpublic(candleDatas_5_정렬, candleData_5_전전전전봉); #endregion if (영호조건식_상향돌파 || 영호조건식_하향돌파) { if (영호조건식_상향돌파) { - var price = candleData_30.Close; - var rate = (candleData_30.Close / candleData_30.Open) * 100 - 100; - var indicatorPrice = candleData_30.Open; - var indicatorRate = (candleData_30.Close / indicatorPrice) * 100 - 100; + var price = candleData_5.Close; + var rate = (candleData_5.Close / candleData_5.Open) * 100 - 100; + var indicatorPrice = candleData_5.Open; + var indicatorRate = (candleData_5.Close / indicatorPrice) * 100 - 100; var description = string.Format("{0} 72,24,4 상승", strInterval); var signalData = signals_SD.Find(i => i.MarketName.Equals(market) && i.Description.Equals(description)); @@ -371,8 +371,8 @@ namespace BitgetAPI.IndicatorConditionSetup //사는 시점 if (!UpBuyList.ContainsKey(market)) { - if (sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.LongBuy) && - !sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.LongSell)) + if (sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.LongBuy) && + !sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.LongSell)) { BuyLongStep[market] = 0; // 없으면 생성 @@ -398,8 +398,8 @@ namespace BitgetAPI.IndicatorConditionSetup { "Price", price }, { "Flag", false }, { "MCandleTimeType", (int)interval }, - { "CandleTime", candleData_30.Argument }, - { "Candle", candleData_30 } + { "CandleTime", candleData_5.Argument }, + { "Candle", candleData_5 } }; UpBuyList.Add(market, buyDic); @@ -427,7 +427,7 @@ namespace BitgetAPI.IndicatorConditionSetup { "BuyDate", nowTime }, { "Price", price }, { "MCandleTimeType", (int)interval }, - { "Candle", candleData_30 }, + { "Candle", candleData_5 }, { "Size", size }, { "orderId", orderDic["orderId"] } }; @@ -446,14 +446,14 @@ namespace BitgetAPI.IndicatorConditionSetup var flag = (bool)buyItem["Flag"]; if (interval < MCandleTimeType.H1) { - var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes(30); - var buyTwoTime = buyTime.AddMinutes(30); + var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes(5); + var buyTwoTime = buyTime.AddMinutes(5); if (nowTime < buyTime) continue; else if (nowTime < buyTwoTime) { - if (!(sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.LongBuy, true) && - !sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.LongSell, true))) + if (!(sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.LongBuy, true) && + !sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.LongSell, true))) { buyItem["Flag"] = true; } @@ -472,11 +472,11 @@ namespace BitgetAPI.IndicatorConditionSetup if (flag) { var buyPrice = (double)buyItem["Price"]; - if(candleData_30.Close > buyPrice) + if(candleData_5.Close > buyPrice) sellFlag= true; } - if (sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.LongSell) || sellFlag) + if (sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.LongSell) || sellFlag) { double.TryParse(buyItem["Price"].ToString(), out var buyPrice); var resultRate = ((price - buyPrice) / buyPrice) * 100; @@ -491,7 +491,7 @@ namespace BitgetAPI.IndicatorConditionSetup { "BuyCandle", buyItem["Candle"] }, { "SellDate", nowTime}, { "SellPrice", price }, - { "SellCandle", candleData_30 }, + { "SellCandle", candleData_5 }, { "Rate", resultRate } }; @@ -532,7 +532,7 @@ namespace BitgetAPI.IndicatorConditionSetup { "BuyCandle", buyItem["Candle"] }, { "SellDate", nowTime}, { "SellPrice", price}, - { "SellCandle", candleData_30 }, + { "SellCandle", candleData_5 }, { "Rate", resultRateData } }; ResultList.Add(orderResult); @@ -552,10 +552,10 @@ namespace BitgetAPI.IndicatorConditionSetup } if (영호조건식_하향돌파) { - var price = candleData_30.Close; - var rate = (candleData_30.Close / candleData_30.Open) * 100 - 100; - var indicatorPrice = candleData_30.Open; - var indicatorRate = (candleData_30.Close / indicatorPrice) * 100 - 100; + var price = candleData_5.Close; + var rate = (candleData_5.Close / candleData_5.Open) * 100 - 100; + var indicatorPrice = candleData_5.Open; + var indicatorRate = (candleData_5.Close / indicatorPrice) * 100 - 100; var description = string.Format("{0} 72,24,4 하락", strInterval); var signalData = signals_SD.Find(i => i.MarketName.Equals(market) && i.Description.Equals(description)); @@ -565,8 +565,8 @@ namespace BitgetAPI.IndicatorConditionSetup //사는 시점 if (!DownBuyList.ContainsKey(market)) { - if (sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.ShortBuy) && - !sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.ShortSell)) + if (sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.ShortBuy) && + !sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.ShortSell)) { BuyShortStep[market] = 0; // 없으면 생성 @@ -591,8 +591,8 @@ namespace BitgetAPI.IndicatorConditionSetup { "Price", price }, { "Flag", false }, { "MCandleTimeType", (int)interval }, - { "CandleTime", candleData_30.Argument }, - { "Candle", candleData_30 } + { "CandleTime", candleData_5.Argument }, + { "Candle", candleData_5 } }; DownBuyList.Add(market, buyDic); @@ -620,7 +620,7 @@ namespace BitgetAPI.IndicatorConditionSetup { "BuyDate", nowTime }, { "Price", price }, { "MCandleTimeType", (int)interval }, - { "Candle", candleData_30 }, + { "Candle", candleData_5 }, { "Size", size }, { "orderId", orderDic["orderId"] } }; @@ -639,15 +639,15 @@ namespace BitgetAPI.IndicatorConditionSetup var flag = (bool)buyItem["Flag"]; if (interval < MCandleTimeType.H1) { - var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes(30); - var buyTwoTime = buyTime.AddMinutes(30); + var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes(5); + var buyTwoTime = buyTime.AddMinutes(5); if (nowTime < buyTime) continue; else if (nowTime < buyTwoTime) { - if (!(sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.ShortBuy, true) && - !sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.ShortSell, true))) + if (!(sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.ShortBuy, true) && + !sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.ShortSell, true))) { buyItem["Flag"] = true; } @@ -668,11 +668,11 @@ namespace BitgetAPI.IndicatorConditionSetup if (flag) { var buyPrice = (double)buyItem["Price"]; - if (candleData_30.Close > buyPrice) + if (candleData_5.Close > buyPrice) sellFlag = true; } - if (sMABandConditionSetup.Calculate(candleDatas_30_TempList, SMABandType.ShortSell) || sellFlag) + if (sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.ShortSell) || sellFlag) { BuyShortStep[market] = 0; double.TryParse(buyItem["Price"].ToString(), out var buyPrice); @@ -688,7 +688,7 @@ namespace BitgetAPI.IndicatorConditionSetup { "BuyCandle", buyItem["Candle"] }, { "SellDate", nowTime}, { "SellPrice", price }, - { "SellCandle", candleData_30 }, + { "SellCandle", candleData_5 }, { "Rate", resultRate } }; @@ -730,7 +730,7 @@ namespace BitgetAPI.IndicatorConditionSetup { "BuyCandle", buyItem["Candle"] }, { "SellDate", nowTime}, { "SellPrice", price }, - { "SellCandle", candleData_30 }, + { "SellCandle", candleData_5 }, { "Rate", resultRateData } }; ResultList.Add(orderResult);