diff --git a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs index faa7096..8d44498 100644 --- a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs +++ b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs @@ -582,11 +582,21 @@ namespace BitgetAPI.IndicatorConditionSetup var 전전봉3_5 = candleData_5_전전봉.movingAverageDataList[3].Value; var 전전전봉3_5 = candleData_5_전전전봉.movingAverageDataList[3].Value; + var 현재봉4_5 = candleData_5.movingAverageDataList[4].Value; + var 전봉4_5 = candleData_5_전봉.movingAverageDataList[4].Value; + var 전전봉4_5 = candleData_5_전전봉.movingAverageDataList[4].Value; + var 전전전봉4_5 = candleData_5_전전전봉.movingAverageDataList[4].Value; + var 현재봉3_30 = candleData_30.movingAverageDataList[3].Value; var 전봉3_30 = candleData_30_전봉.movingAverageDataList[3].Value; var 전전봉3_30 = candleData_30_전전봉.movingAverageDataList[3].Value; var 전전전봉3_30 = candleData_30_전전전봉.movingAverageDataList[3].Value; + var 현재봉4_30 = candleData_30.movingAverageDataList[4].Value; + var 전봉4_30 = candleData_30_전봉.movingAverageDataList[4].Value; + var 전전봉4_30 = candleData_30_전전봉.movingAverageDataList[4].Value; + var 전전전봉4_30 = candleData_30_전전전봉.movingAverageDataList[4].Value; + var oneList = new List() { 현재봉24, 현재봉48, @@ -605,11 +615,11 @@ namespace BitgetAPI.IndicatorConditionSetup var 저고점_5 = 전저고점[market + "5m"]; var 저고점_30 = 전저고점[market + "30m"]; - var returnVal = Calculate전고점(market, "1m", MCandleTimeType.M1, 전봉3, 전전봉3, 전전전봉3, candleData); + var returnVal = Calculate전고점(market, "1m", MCandleTimeType.M1, 전봉4, 전전봉4, 전전전봉4, candleData); if (!returnVal) continue; - returnVal = Calculate전고점(market, "5m", MCandleTimeType.M5, 전봉3_5, 전전봉3_5, 전전전봉3_5, candleData_5); + returnVal = Calculate전고점(market, "5m", MCandleTimeType.M5, 전봉4_5, 전전봉4_5, 전전전봉4_5, candleData_5); if (!returnVal) continue; - returnVal = Calculate전고점(market, "30m", MCandleTimeType.M30, 전봉3_30, 전전봉3_30, 전전전봉3_30, candleData_30); + returnVal = Calculate전고점(market, "30m", MCandleTimeType.M30, 전봉4_30, 전전봉4_30, 전전전봉4_30, candleData_30); if (!returnVal) continue; @@ -636,16 +646,15 @@ namespace BitgetAPI.IndicatorConditionSetup // 30분봉 var flag_30 = - //(저고점_30["전전전저가"] > 저고점_30["전전저가"] - // && (저고점_30["전전저가"] < 전봉3 && 저고점_30["전전저가"] < 전전봉3 && 저고점_30["전전저가"] < 현재봉3 && 전전봉3 > 전봉3 && 전봉3 < 현재봉3) - //&& 현재봉3_30 > 저고점_30["전고가"]) || - (저고점_30["전전전저가"] > 저고점_30["전전저가"] && 저고점_30["전전저가"] < 저고점_30["전저가"] && 전봉3_30 < 저고점_30["전고가"] && 현재봉3_30 > 저고점_30["전고가"]); - //|| (저고점_30["전전전고가"] > 저고점_30["전전고가"] && 저고점_30["전전고가"] > 저고점_30["전고가"] && 현재봉3_30 > 저고점_30["전고가"]); + (저고점_30["전전전저가"] > 저고점_30["전전저가"] && 저고점_30["전전저가"] > 저고점_30["전저가"] && 전봉4_30 < 저고점_30["전고가"] && 현재봉4_30 > 저고점_30["전고가"] && + 저고점_30["전전전고가"] > 저고점_30["전전고가"] && 저고점_30["전전고가"] > 저고점_30["전고가"]) + || (저고점_30["전전전저가"] > 저고점_30["전전저가"] && 저고점_30["전전저가"] < 저고점_30["전저가"] && 전봉4_30 < 저고점_30["전고가"] && 현재봉4_30 > 저고점_30["전고가"]); - var flag_5 = (저고점_5["전전전저가"] > 저고점_5["전전저가"] && 저고점_5["전전저가"] < 저고점_5["전저가"] && 현재봉3_5 > 저고점_5["전고가"]) - || (저고점_5["전전전고가"] > 저고점_5["전전고가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && 현재봉3_5 > 저고점_5["전고가"]); + var flag_5 = (저고점_5["전전전저가"] > 저고점_5["전전저가"] && 저고점_5["전전저가"] < 저고점_5["전저가"] && 현재봉4_5 > 저고점_5["전고가"]) + || (저고점_5["전전전고가"] > 저고점_5["전전고가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && 현재봉4_5 > 저고점_5["전고가"]) + || (저고점_5["전전저가"] < 저고점_5["전저가"] && 저고점_5["전전고가"] < 저고점_5["전고가"]); - var flag_1 = 현재봉3 > oneList.Max(); + var flag_1 = 현재봉4 > oneList.Max(); if (flag_30 && flag_5 && flag_1) { @@ -738,8 +747,7 @@ namespace BitgetAPI.IndicatorConditionSetup } var sellFlag = false; - if (저고점_30["전저가"] > 전봉3_30) - sellFlag = true; + if (flag) { @@ -748,17 +756,15 @@ namespace BitgetAPI.IndicatorConditionSetup sellFlag = true; } - if (저고점_30["전전고가"] > 현재봉3_30) + if (저고점_30["전전고가"] > 현재봉4_30) { sellFlag = true; } } else { - if (저고점_30["전저가"] > 현재봉3_30) - { + if (저고점_30["전저가"] > 현재봉4_30) sellFlag = true; - } if (저고점_30["전고가"] > 저고점_30["전전고가"]) { @@ -862,16 +868,14 @@ namespace BitgetAPI.IndicatorConditionSetup // || (저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] < 저고점_30["전고가"] && 현재봉3_30 < 저고점_30["전저가"]); var flag_30 = - //(저고점_30["전전전고가"] < 저고점_30["전전고가"] - //&& (저고점_30["전전고가"] > 전봉3 && 저고점_30["전전고가"] > 전전봉3 && 저고점_30["전전고가"] > 현재봉3 && 전전봉3 < 전봉3 && 전봉3 > 현재봉3) - //&& 현재봉3_30 < 저고점_30["전저가"]) || - (저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] > 저고점_30["전고가"] && 전봉3_30 > 저고점_30["전저가"] && 현재봉3_30 < 저고점_30["전저가"]); - //|| (저고점_30["전전전저가"] < 저고점_30["전전저가"] && 저고점_30["전전저가"] < 저고점_30["전저가"] && 현재봉3_30 < 저고점_30["전저가"]); - - var flag_5 = (저고점_5["전전전고가"] < 저고점_5["전전고가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && 현재봉3_5 < 저고점_5["전저가"]) - || (저고점_5["전전전저가"] < 저고점_5["전전저가"] && 저고점_5["전전저가"] < 저고점_5["전저가"] && 현재봉3_5 < 저고점_5["전저가"]); - - var flag_1 = 현재봉3 < oneList.Min(); + (저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] < 저고점_30["전고가"] && 전봉4_30 > 저고점_30["전저가"] && 현재봉4_30 < 저고점_30["전저가"] && + 저고점_30["전전전저가"] < 저고점_30["전전저가"] && 저고점_30["전전저가"] < 저고점_30["전저가"]) + || (저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] > 저고점_30["전고가"] && 전봉4_30 > 저고점_30["전저가"] && 현재봉4_30 < 저고점_30["전저가"]); + + var flag_5 = (저고점_5["전전전고가"] < 저고점_5["전전고가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && 현재봉4_5 < 저고점_5["전저가"]) + || (저고점_5["전전전저가"] < 저고점_5["전전저가"] && 저고점_5["전전저가"] < 저고점_5["전저가"] && 현재봉4_5 < 저고점_5["전저가"]) + || (저고점_5["전전저가"] > 저고점_5["전저가"] && 저고점_5["전전고가"] > 저고점_5["전고가"]); + var flag_1 = 현재봉4 < oneList.Min(); if (flag_30 && flag_5 && flag_1) { @@ -962,24 +966,21 @@ namespace BitgetAPI.IndicatorConditionSetup continue; } var sellFlag = false; - - if (저고점_30["전고가"] < 전봉3_30) - sellFlag = true; - + if (flag) { if (저고점_30["전저가"] > 저고점_30["전전저가"]) { sellFlag = true; } - if (저고점_30["전전저가"] < 현재봉3_30) + if (저고점_30["전전저가"] < 현재봉4_30) { sellFlag = true; } } else { - if (저고점_30["전고가"] < 현재봉3_30) + if (저고점_30["전고가"] < 현재봉4_30) { sellFlag = true; } @@ -1082,7 +1083,7 @@ namespace BitgetAPI.IndicatorConditionSetup //전저가 if (전봉3 > 전전봉3 && 전전봉3 < 전전전봉3 && 저고점["tempLowVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() && - ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempHighVal"] >= 120 * (int)type) + ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempHighVal"] >= 120 * (int)type + 59.9999) { 저고점["tempLow2Val"] = 저고점["tempLowVal"]; 저고점["tempLowVal"] = ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds(); @@ -1095,7 +1096,7 @@ namespace BitgetAPI.IndicatorConditionSetup } else if (전봉3 > 전전봉3 && 전전봉3 < 전전전봉3 && 저고점["tempLowVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() && - ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempHighVal"] < 120 * (int)type) + ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempHighVal"] < 120 * (int)type + 59.9999) { //이전으로 초기화 작업(High) 저고점["전고가"] = 저고점["전전고가"]; @@ -1111,7 +1112,7 @@ namespace BitgetAPI.IndicatorConditionSetup //전고가 if (전전봉3 > 전봉3 && 전전봉3 > 전전전봉3 && 저고점["tempHighVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() && - ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempLowVal"] >= 120 * (int)type) + ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempLowVal"] >= 120 * (int)type + 59.9999) { 저고점["tempHigh2Val"] = 저고점["tempHighVal"]; 저고점["tempHighVal"] = ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds(); @@ -1123,7 +1124,7 @@ namespace BitgetAPI.IndicatorConditionSetup } else if (전전봉3 > 전봉3 && 전전봉3 > 전전전봉3 && 저고점["tempHighVal"] != ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() && - ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempLowVal"] < 120 * (int)type) + ((DateTimeOffset)candleData.Argument).ToUnixTimeSeconds() - 저고점["tempLowVal"] < 120 * (int)type + 59.9999) { //이전으로 초기화 작업(Low) 저고점["전저가"] = 저고점["전전저가"];