From 58396e1197f3f599e1751b3ba920d3ae650ee64f Mon Sep 17 00:00:00 2001 From: kyh <1329522@naver.com> Date: Tue, 4 Feb 2025 10:49:36 +0900 Subject: [PATCH] =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IndicatorProcess.cs | 94 ++++++++++++++----- 1 file changed, 70 insertions(+), 24 deletions(-) diff --git a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs index 0468005..a934776 100644 --- a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs +++ b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs @@ -518,13 +518,14 @@ namespace BitgetAPI.IndicatorConditionSetup var 전봉12 = candleData_전봉.movingAverageDataList[12].Value; var 전봉24 = candleData_전봉.movingAverageDataList[24].Value; var 전봉36 = candleData_전봉.movingAverageDataList[36].Value; + var 전봉48 = candleData_전봉.movingAverageDataList[48].Value; var 전봉72 = candleData_전봉.movingAverageDataList[72].Value; + var 전봉120 = candleData_전봉.movingAverageDataList[120].Value; var 전봉144 = candleData_전봉.movingAverageDataList[144].Value; var 전봉20 = candleData_전봉.movingAverageDataList[20].Value; var 전봉40 = candleData_전봉.movingAverageDataList[40].Value; - var 전봉80 = candleData_전봉.movingAverageDataList[80].Value; - var 전봉120 = candleData_전봉.movingAverageDataList[120].Value; + var 전봉80 = candleData_전봉.movingAverageDataList[80].Value; var 전봉160 = candleData_전봉.movingAverageDataList[160].Value; //var 전봉240 = candleData_전봉.movingAverageDataList[240].Value; //var 전봉480 = candleData_전봉.movingAverageDataList[480].Value; @@ -586,6 +587,18 @@ namespace BitgetAPI.IndicatorConditionSetup var 전전봉3_30 = candleData_30_전전봉.movingAverageDataList[3].Value; var 전전전봉3_30 = candleData_30_전전전봉.movingAverageDataList[3].Value; + var oneList = new List() { + 현재봉24, + 현재봉48, + 현재봉72, + 현재봉120 + }; + var beforeOneList = new List() { + 전봉24, + 전봉48, + 전봉72, + 전봉120 + }; var 저고점_1 = 전저고점[market + "1m"]; @@ -599,6 +612,8 @@ namespace BitgetAPI.IndicatorConditionSetup returnVal = Calculate전고점(market, "30m", MCandleTimeType.M30, 전봉3_30, 전전봉3_30, 전전전봉3_30, candleData_30); if (!returnVal) continue; + + if (영호조건식_상향돌파) { var price = candleData.Close; @@ -620,23 +635,23 @@ namespace BitgetAPI.IndicatorConditionSetup var buyFlag = false; // 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["전고가"]) - || (저고점_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["전저가"] && candleData_30.Close > 저고점_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["전고가"]); + || (저고점_5["전전전고가"] > 저고점_5["전전고가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && 현재봉3_5 > 저고점_5["전고가"]); - var flag_1 = 현재봉3 > 현재봉24 && 현재봉3 > 현재봉48 && 현재봉3 > 현재봉72 && 현재봉3 > 현재봉120; + var flag_1 = 현재봉3 > oneList.Max() && 전봉3 < beforeOneList.Max(); if (flag_30 && flag_5 && flag_1) { buyFlag = true; } - if (buyFlag) { // 없으면 생성 @@ -660,6 +675,7 @@ namespace BitgetAPI.IndicatorConditionSetup { "MarketName", market }, { "BuyDate", nowTime }, { "Price", price }, + { "Flag", 저고점_30["전고가"] > 저고점_30["전전고가"]}, { "MCandleTimeType", (int)interval }, { "CandleTime", candleData.Argument }, { "Candle", candleData } @@ -706,10 +722,10 @@ namespace BitgetAPI.IndicatorConditionSetup { var buyItem = UpBuyList[market]; - + var flag = (bool)buyItem["Flag"]; if (interval < MCandleTimeType.H1) { - var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval); + var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes(30); if (nowTime < buyTime) continue; } @@ -722,9 +738,23 @@ namespace BitgetAPI.IndicatorConditionSetup } var sellFlag = false; - if (저고점_30["전저가"] > 전봉3_30 || 저고점_30["전고가"] < 저고점_30["전전고가"]) + if (저고점_30["전저가"] > 전봉3_30) sellFlag = true; + if (flag) + { + if(저고점_30["전고가"] < 저고점_30["전전고가"]) + { + sellFlag = true; + } + } + else + { + if (저고점_30["전고가"] > 저고점_30["전전고가"]) + { + buyItem["Flag"] = true; + } + } if (sellFlag) { @@ -821,16 +851,17 @@ namespace BitgetAPI.IndicatorConditionSetup //var flag_30 = (저고점_30["전전전고가"] < 저고점_30["전전고가"] && 저고점_30["전전고가"] > 저고점_30["전고가"] && 현재봉3_30 < 저고점_30["전저가"]) // || (저고점_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["전저가"]) - || (저고점_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["전고가"] && candleData_30.Close < 저고점_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_5 = (저고점_5["전전전고가"] < 저고점_5["전전고가"] && 저고점_5["전전고가"] > 저고점_5["전고가"] && candleData_5.Close < 저고점_5["전저가"]) + || (저고점_5["전전전저가"] < 저고점_5["전전저가"] && 저고점_5["전전저가"] < 저고점_5["전저가"] && 현재봉3_5 < 저고점_5["전저가"]); - var flag_1 = 현재봉3 < 현재봉24 && 현재봉3 < 현재봉48 && 현재봉3 < 현재봉72 && 현재봉3 < 현재봉120; + var flag_1 = 현재봉3 < oneList.Min() && 전봉3 > beforeOneList.Min(); if (flag_30 && flag_5 && flag_1) { @@ -859,6 +890,7 @@ namespace BitgetAPI.IndicatorConditionSetup { "MarketName", market }, { "BuyDate", nowTime }, { "Price", price }, + { "Flag", 저고점_30["전저가"] < 저고점_30["전전저가"]}, { "MCandleTimeType", (int)interval }, { "CandleTime", candleData.Argument }, { "Candle", candleData } @@ -905,10 +937,10 @@ namespace BitgetAPI.IndicatorConditionSetup else { var buyItem = DownBuyList[market]; - + var flag = (bool)buyItem["Flag"]; if (interval < MCandleTimeType.H1) { - var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes((int)interval); + var buyTime = ((DateTime)buyItem["BuyDate"]).AddMinutes(30); if (nowTime < buyTime) continue; } @@ -921,9 +953,23 @@ namespace BitgetAPI.IndicatorConditionSetup } var sellFlag = false; - if (저고점_30["전고가"] < 전봉3_30 || 저고점_30["전저가"] > 저고점_30["전전저가"]) + if (저고점_30["전고가"] < 전봉3_30) sellFlag = true; + if (flag) + { + if (저고점_30["전저가"] > 저고점_30["전전저가"]) + { + sellFlag = true; + } + } + else + { + if (저고점_30["전저가"] < 저고점_30["전전저가"]) + { + buyItem["Flag"] = true; + } + } if (sellFlag) {