From ec596d41c4521db22ecd63a72fbe7a3270aa493d Mon Sep 17 00:00:00 2001 From: kyh <1329522@naver.com> Date: Wed, 27 Nov 2024 15:08:09 +0900 Subject: [PATCH] =?UTF-8?q?2=EB=B2=88=EC=A1=B0=EA=B1=B4=EA=B0=80=EC=A7=80?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80=20=EC=B2=98=EB=A6=AC=20(1=EB=B2=88?= =?UTF-8?q?=EC=A1=B0=EA=B1=B4=EC=9D=80=20=ED=8C=90=EB=A7=A4=EC=A1=B0?= =?UTF-8?q?=EA=B1=B4=EC=97=90=20=EC=A0=84=EB=B4=89=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IndicatorProcess.cs | 146 +++++++++++++----- 1 file changed, 109 insertions(+), 37 deletions(-) diff --git a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs index 81706e7..b8a5c3b 100644 --- a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs +++ b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs @@ -122,6 +122,9 @@ namespace BitgetAPI.IndicatorConditionSetup public Dictionary> SellShortStep = new Dictionary>(); public Dictionary> SellLongStep = new Dictionary>(); + public Dictionary BuyShortStep = new Dictionary(); + public Dictionary BuyLongStep = new Dictionary(); + @@ -432,15 +435,41 @@ namespace BitgetAPI.IndicatorConditionSetup { 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(BuyLongStep.ContainsKey(market + interval) && BuyLongStep[market + interval]) + { + if (현재봉72 > 현재봉24 && 현재봉24 > 현재봉12 && 현재봉12 > 현재봉2) + { + if (Bol12 > Bol24 && 전봉Bol12 > 전봉Bol24 && + 전봉Bol12 > Bol12 && 전봉Bol24 > Bol24 && + 전봉Bol12 - 전봉Bol24 > Bol12 - Bol24) + { + buyType = 2; + buyFlag = true; + } + } } + else + { + if ( + candleData.IchimokData.하한선 > 현재봉2 && candleData_전봉.IchimokData.하한선 > 전봉2 && + 현재봉72 > 현재봉2 && 전봉72 > 전봉2 && 전봉24 > 전봉2 && 현재봉24 < 현재봉2 && + 전봉12 < 전봉2 && 현재봉12 < 현재봉24 + ) + { + buyFlag = true; ; + buyType = 1; + } + else if ( + candleData.IchimokData.상한선 < 현재봉2 && candleData_전봉.IchimokData.상한선 < 전봉2 && + 현재봉72 < 현재봉2 && 전봉72 < 전봉2 && 전봉24 > 전봉2 && 현재봉24 < 현재봉2 + ) + { + BuyShortStep[market + interval] = true; + continue; + } + } + + if (buyFlag) { @@ -531,40 +560,47 @@ namespace BitgetAPI.IndicatorConditionSetup switch (type) { case 1: - if (현재봉12 > 현재봉24 && !val[2]) + if (전봉12 > 전봉24 && !val[2]) val[2] = true; - if (현재봉2 > 현재봉72 && !val[3]) + if (전봉2 > 전봉72 && !val[3]) val[3] = true; - if (현재봉12 > 현재봉72 && !val[4]) + if (전봉12 > 전봉72 && !val[4]) val[4] = true; - if (현재봉24 > 현재봉72 && !val[5]) + if (전봉24 > 전봉72 && !val[5]) val[5] = true; if (val[1] && !val[2] && !val[3] && !val[4] && !val[5]) { - sellFlag = !(현재봉12 < 현재봉24 && 현재봉24 < 현재봉2 && 현재봉2 < 현재봉72); + sellFlag = !(전봉12 < 전봉24 && 전봉24 < 전봉2 && 전봉2 < 전봉72); } else if (val[1] && val[2] && !val[3] && !val[4] && !val[5]) { - sellFlag = !(현재봉24 < 현재봉12 && 현재봉12 < 현재봉2 && 현재봉2 < 현재봉72); + sellFlag = !(전봉24 < 전봉12 && 전봉12 < 전봉2 && 전봉2 < 전봉72); } else if (val[1] && !val[2] && val[3] && !val[4] && !val[5]) { - sellFlag = !(현재봉12 < 현재봉24 && 현재봉24 < 현재봉72 && 현재봉72 < 현재봉2); + sellFlag = !(전봉12 < 전봉24 && 전봉24 < 전봉72 && 전봉72 < 전봉2); } else if (val[1] && val[2] && val[3] && !val[4] && !val[5]) { - sellFlag = !(현재봉24 < 현재봉12 && 현재봉12 < 현재봉72 && 현재봉72 < 현재봉2); + sellFlag = !(전봉24 < 전봉12 && 전봉12 < 전봉72 && 전봉72 < 전봉2); } else if (val[1] && val[2] && val[3] && val[4] && !val[5]) { - sellFlag = !(현재봉24 < 현재봉72 && 현재봉72 < 현재봉12 && 현재봉12 < 현재봉2); + sellFlag = !(전봉24 < 전봉72 && 전봉72 < 전봉12 && 전봉12 < 전봉2); } else if (val[1] && val[2] && val[3] && val[4] && val[5]) { - sellFlag = !(현재봉72 < 현재봉24 && 현재봉24 < 현재봉12 && 현재봉12 < 현재봉2); + sellFlag = !(전봉72 < 전봉24 && 전봉24 < 전봉12 && 전봉12 < 전봉2); + } + break; + case 2: + if (Bol12 > 전봉Bol12 && Bol24 > 전봉Bol24) + { + sellFlag = true; } break; + } if (sellFlag) @@ -657,15 +693,41 @@ namespace BitgetAPI.IndicatorConditionSetup { 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 - ) + + if (BuyShortStep.ContainsKey(market + interval) && BuyShortStep[market + interval]) { - buyFlag = true; - buyType = 1; + //72 > 24 > 12 > 2 + if (현재봉72 > 현재봉24 && 현재봉24 > 현재봉12 && 현재봉12 > 현재봉2) + { + if (Bol12 > Bol24 && 전봉Bol12 > 전봉Bol24 && + 전봉Bol12 > Bol12 && 전봉Bol24 > Bol24 && + 전봉Bol12 - 전봉Bol24 > Bol12 - Bol24) + { + buyType = 2; + buyFlag = true; + } + } } + else + { + if ( + candleData.IchimokData.상한선 < 현재봉2 && candleData_전봉.IchimokData.상한선 < 전봉2 && + 현재봉72 < 현재봉2 && 전봉72 < 전봉2 && 전봉24 < 전봉2 && 현재봉24 > 현재봉2 && + 전봉12 > 전봉2 && 현재봉12 > 현재봉24 + ) + { + buyFlag = true; + buyType = 1; + } + else if ( + candleData.IchimokData.하한선 > 현재봉2 && candleData_전봉.IchimokData.하한선 > 전봉2 && + 현재봉72 > 현재봉2 && 전봉72 > 전봉2 && 전봉24 < 전봉2 && 현재봉24 > 현재봉2 + ) + { + BuyShortStep[market + interval] = true; + continue; + } + } if (buyFlag) { @@ -706,7 +768,10 @@ namespace BitgetAPI.IndicatorConditionSetup [5] = false }; SellShortStep.Add(market + interval, dic); - + if(buyType == 2) + { + BuyShortStep[market + interval] = false; + } if (ShortCount < 5) { double size = YHKIM_OrderAmount / price * YHKIM_Leverage; @@ -752,46 +817,53 @@ namespace BitgetAPI.IndicatorConditionSetup } int.TryParse(buyItem["Type"].ToString(), out var type); - var val = SellShortStep[market + interval]; + switch (type) { case 1: - if (현재봉12 < 현재봉24 && !val[2]) + var val = SellShortStep[market + interval]; + if (전봉12 < 전봉24 && !val[2]) val[2] = true; - if (현재봉2 < 현재봉72 && !val[3]) + if (전봉2 < 전봉72 && !val[3]) val[3] = true; - if (현재봉12 < 현재봉72 && !val[4]) + if (전봉12 < 전봉72 && !val[4]) val[4] = true; - if (현재봉24 < 현재봉72 && !val[5]) + if (전봉24 < 전봉72 && !val[5]) val[5] = true; if (val[1] && !val[2] && !val[3] && !val[4] && !val[5]) { - sellFlag = !(현재봉12 > 현재봉24 && 현재봉24 > 현재봉2 && 현재봉2 > 현재봉72); + sellFlag = !(전봉12 > 전봉24 && 전봉24 > 전봉2 && 전봉2 > 전봉72); } else if (val[1] && val[2] && !val[3] && !val[4] && !val[5]) { - sellFlag = !(현재봉24 > 현재봉12 && 현재봉12 > 현재봉2 && 현재봉2 > 현재봉72); + sellFlag = !(전봉24 > 전봉12 && 전봉12 > 전봉2 && 전봉2 > 전봉72); } else if (val[1] && !val[2] && val[3] && !val[4] && !val[5]) { - sellFlag = !(현재봉12 > 현재봉24 && 현재봉24 > 현재봉72 && 현재봉72 > 현재봉2); + sellFlag = !(전봉12 > 전봉24 && 전봉24 > 전봉72 && 전봉72 >전봉2); } else if (val[1] && val[2] && val[3] && !val[4] && !val[5]) { - sellFlag = !(현재봉24 > 현재봉12 && 현재봉12 > 현재봉72 && 현재봉72 > 현재봉2); + sellFlag = !(전봉24 > 전봉12 && 전봉12 > 전봉72 && 전봉72 > 전봉2); } else if (val[1] && val[2] && val[3] && val[4] && !val[5]) { - sellFlag = !(현재봉24 > 현재봉72 && 현재봉72 > 현재봉12 && 현재봉12 > 현재봉2); + sellFlag = !(전봉24 > 전봉72 && 전봉72 > 전봉12 && 전봉12 > 전봉2); } else if (val[1] && val[2] && val[3] && val[4] && val[5]) { - sellFlag = !(현재봉72 > 현재봉24 && 현재봉24 > 현재봉12 && 현재봉12 > 현재봉2); + sellFlag = !(전봉72 > 전봉24 && 전봉24 > 전봉12 && 전봉12 > 전봉2); } else sellFlag = true; break; + case 2: + if(Bol12 > 전봉Bol12 && Bol24 > 전봉Bol24) + { + sellFlag = true; + } + break; } if (sellFlag)