From 5e83f7c792901f15b39fb29b4e4a334c2a52fa6a Mon Sep 17 00:00:00 2001 From: kyh <1329522@naver.com> Date: Tue, 26 Nov 2024 21:28:04 +0900 Subject: [PATCH] =?UTF-8?q?=EC=97=AC=EB=9F=AC=EC=A1=B0=EA=B1=B0=EC=8B=9D?= =?UTF-8?q?=20=EB=8B=A4=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IndicatorProcess.cs | 251 +++++++++++------- .../MovingAverageConditionSetup.cs | 2 + 2 files changed, 155 insertions(+), 98 deletions(-) diff --git a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs index e717401..15ddeaf 100644 --- a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs +++ b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs @@ -372,6 +372,7 @@ namespace BitgetAPI.IndicatorConditionSetup var 전전전봉8 = candleData_전전전봉.movingAverageDataList[8].Value; var 전전전봉12 = candleData_전전전봉.movingAverageDataList[12].Value; var 전전전봉24 = candleData_전전전봉.movingAverageDataList[24].Value; + var 전전전봉36 = candleData_전전전봉.movingAverageDataList[36].Value; var 전전전봉72 = candleData_전전전봉.movingAverageDataList[72].Value; var 전전봉2 = candleData_전전봉.movingAverageDataList[2].Value; @@ -379,6 +380,7 @@ namespace BitgetAPI.IndicatorConditionSetup var 전전봉8 = candleData_전전봉.movingAverageDataList[8].Value; var 전전봉12 = candleData_전전봉.movingAverageDataList[12].Value; var 전전봉24 = candleData_전전봉.movingAverageDataList[24].Value; + var 전전봉36 = candleData_전전봉.movingAverageDataList[36].Value; var 전전봉72 = candleData_전전봉.movingAverageDataList[72].Value; var 전봉2 = candleData_전봉.movingAverageDataList[2].Value; @@ -386,13 +388,15 @@ namespace BitgetAPI.IndicatorConditionSetup var 전봉8 = candleData_전봉.movingAverageDataList[8].Value; var 전봉12 = candleData_전봉.movingAverageDataList[12].Value; var 전봉24 = candleData_전봉.movingAverageDataList[24].Value; + var 전봉36 = candleData_전봉.movingAverageDataList[36].Value; var 전봉72 = candleData_전봉.movingAverageDataList[72].Value; var 현재봉2 = candleData.movingAverageDataList[2].Value; 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; @@ -435,7 +439,7 @@ namespace BitgetAPI.IndicatorConditionSetup if (!UpBuyList.ContainsKey(market + interval)) { if ( - 낮은값_72_24 < candleData.Close && 전봉2 < 낮은값_72_24_전봉 && candleData.Close > candleData.Open + 현재봉24 < 현재봉2 && 전봉24 > 전봉2 ) { FirstLongFlag[market + interval] = false; @@ -497,13 +501,120 @@ namespace BitgetAPI.IndicatorConditionSetup { var buyItem = UpBuyList[market + interval]; - - var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval); + var sellFlag = false; + var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval * 5); if (nowTime < buyTime) { - continue; + if (현재봉2 < 전봉2 && 현재봉24- 전봉24 < 전봉24 - 전전봉24) + sellFlag = true; + else + continue; } + double compareVal = 0; + int.TryParse(buyItem["Type"].ToString(), out var type); + var val = SellLongStep[market + interval]; + + if (type == 24) + { + var origin = 전봉24; + var compare = 전봉72; + + compareVal = origin; + if (val <= 0) + { + if (origin > compare) + { + if (전봉2 > origin) + val = 1; + else + sellFlag = true; + } + else + { + if (전봉2 > compare) + val = -1; + + if (전봉12 > origin && 전봉2 > 전봉12) + val = -2; + if (전봉12 < origin && 전봉2 > 전봉12) + val = 0; + if (전봉12 < compare && 전봉2 > 전봉12) + val = -1; + if (전봉12 > compare && 전봉2 > 전봉12) + val = -2; + } + } + + if (val == 1) + { + compareVal = 높은값_72_24_전봉; + + if (전봉2 > 전봉12) + { + val = 2; + } + } + + if (val == 2 || val == -2) + compareVal = 전봉12; + else if (val == 0) + compareVal = origin; + else + compareVal = compare; + } + + if (type == 72) + { + var origin = 전봉24; + var compare = 전봉72; + + compareVal = origin; + if (val <= 0) + { + if (origin > compare) + { + if (전봉2 > origin) + val = 1; + else + sellFlag = true; + } + else + { + if (전봉2 > compare) + val = -1; + + if (전봉12 > origin && 전봉2 > 전봉12) + val = -2; + if (전봉12 < origin && 전봉2 > 전봉12) + val = 0; + if (전봉12 < compare && 전봉2 > 전봉12) + val = -1; + if (전봉12 > compare && 전봉2 > 전봉12) + val = -2; + } + } + + if (val == 1) + { + compareVal = 높은값_72_24_전봉; + + if (전봉2 > 전봉12) + { + val = 2; + } + } + + if (val == 2 || val == -2) + compareVal = 전봉12; + else if (val == 0) + compareVal = origin; + else + compareVal = compare; + } + + + //var sellFlag = false; //if (interval < MCandleTimeType.H1) @@ -604,86 +715,14 @@ namespace BitgetAPI.IndicatorConditionSetup // sellFlag = true; //} - double compareVal = 0; - int.TryParse(buyItem["Type"].ToString(), out var type); - var val = SellLongStep[market + interval]; - var sellFlag = false; - if (type == 24) { - if (val == 0) - { - var origin = 현재봉24; - var compare = 현재봉72; + - compareVal = origin; - if (origin > compare) - { - if (현재봉2 > origin) - val = 1; - else - sellFlag = true; - } - else - { - if (현재봉2 > compare) - compareVal = compare; - } - } - if (val == 1) - { - compareVal = 높은값_72_24; + //SellLongStep[market + interval] = val; - if (현재봉2 > 현재봉12) - { - val = 2; - } - } - - if (val == 2) - compareVal = 현재봉12; - } - - if(type == 72) - { - if (val == 0) - { - var origin = 현재봉72; - var compare = 현재봉24; - - compareVal = origin; - - if (origin > compare) - { - if (현재봉2 > origin) - val = 1; - else - sellFlag = true; - } - else - { - if (현재봉2 > compare) - compareVal = compare; - } - } - - if (val == 1) - { - compareVal = 높은값_72_24; - - if (현재봉2 > 현재봉12) - { - val = 2; - } - } - - if (val == 2) - compareVal = 현재봉12; - } - - SellLongStep[market + interval] = val; - - if (현재봉2 < compareVal || 현재봉2 < 낮은값_72_24 || sellFlag) + if (현재봉2 < 현재봉24 || 현재봉24 < 현재봉36) + { double.TryParse(buyItem["Price"].ToString(), out var buyPrice); var resultRate = ((price - buyPrice) / buyPrice) * 100; @@ -772,7 +811,8 @@ namespace BitgetAPI.IndicatorConditionSetup if (!DownBuyList.ContainsKey(market + interval)) { if ( - 높은값_72_24 > candleData.Close && 전봉2 > 높은값_72_24_전봉 && candleData.Close < candleData.Open + 현재봉24 > 현재봉2 && 전봉24 < 전봉2 + ) { FirstShortFlag[market + interval] = false; @@ -839,7 +879,10 @@ namespace BitgetAPI.IndicatorConditionSetup var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval); if (nowTime < buyTime) { - continue; + if (현재봉2 > 전봉2) + sellFlag = true; + else + continue; } //if (interval < MCandleTimeType.H1) //{ @@ -949,79 +992,91 @@ namespace BitgetAPI.IndicatorConditionSetup { if (val == 0) { - var origin = 현재봉24; - var compare = 현재봉72; + var origin = 전봉24; + var compare = 전봉72; compareVal = origin; if (origin < compare) { - if (현재봉2 < origin) + if (전봉2 < origin) val = 1; else sellFlag = true; } else { - if (현재봉2 < compare) + if (전봉2 < compare) compareVal = compare; + + if (전봉2 < origin) + compareVal = origin; + + if(전봉12 < origin) + compareVal = 전봉12; } } if (val == 1) { - compareVal = 낮은값_72_24; + compareVal = 낮은값_72_24_전봉; - if (현재봉2 < 현재봉12) + if (전봉2 < 전봉12) { val = 2; } } if (val == 2) - compareVal = 현재봉12; + compareVal = 전봉12; } if (type == 72) { if (val == 0) { - var origin = 현재봉72; - var compare = 현재봉24; + var origin = 전봉72; + var compare = 전봉24; compareVal = origin; if (origin < compare) { - if (현재봉2 < origin) + if (전봉2 < origin) val = 1; else sellFlag = true; } else { - if (현재봉2 < compare) + if (전봉2 < compare) compareVal = compare; + + if (전봉2 < origin) + compareVal = origin; + + if (전봉12 < origin) + compareVal = 전봉12; } } if (val == 1) { - compareVal = 낮은값_72_24; + compareVal = 낮은값_72_24_전봉; - if (현재봉2 < 현재봉12) + if (전봉2 < 전봉12) { val = 2; } } if (val == 2) - compareVal = 현재봉12; + compareVal = 전봉12; } SellShortStep[market + interval] = val; - if (현재봉2 > compareVal || 전봉2 > 높은값_72_24 || sellFlag) + if (전봉2 > compareVal || 전봉2 > 높은값_72_24_전봉 || sellFlag) { double.TryParse(buyItem["Price"].ToString(), out var buyPrice); var resultRate = ((price - buyPrice) / buyPrice) * 100; diff --git a/BitgetApi/IndicatorConditionSetup/MovingAverageConditionSetup.cs b/BitgetApi/IndicatorConditionSetup/MovingAverageConditionSetup.cs index a9ab8d9..9fe8741 100644 --- a/BitgetApi/IndicatorConditionSetup/MovingAverageConditionSetup.cs +++ b/BitgetApi/IndicatorConditionSetup/MovingAverageConditionSetup.cs @@ -22,6 +22,7 @@ namespace BitgetAPI.IndicatorConditionSetup // 기간 public int CandleLength4 { get; set; } = 4; public int CandleLength2 { get; set; } = 2; + public int CandleLength36 { get; set; } = 36; // 기간 public int CandleLength72 { get; set; } = 72; // 기간 @@ -48,6 +49,7 @@ namespace BitgetAPI.IndicatorConditionSetup candleData.movingAverageDataList.Add(CandleLength4, new MovingAverageData()); candleData.movingAverageDataList.Add(CandleLength12, new MovingAverageData()); candleData.movingAverageDataList.Add(CandleLength24, new MovingAverageData()); + candleData.movingAverageDataList.Add(CandleLength36, new MovingAverageData()); candleData.movingAverageDataList.Add(CandleLength48, new MovingAverageData()); candleData.movingAverageDataList.Add(CandleLength72, new MovingAverageData()); candleData.movingAverageDataList.Add(CandleLength8, new MovingAverageData());