From 504cfd8af6e5e19badd00db91f89df1bf9b208ee Mon Sep 17 00:00:00 2001 From: kyh <1329522@naver.com> Date: Fri, 30 May 2025 09:43:42 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B0=80=EA=B2=A9=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=82=AC=EB=8B=88=20=EB=8A=A6=EC=96=B4=EC=84=9C=20=EB=AA=BB?= =?UTF-8?q?=EC=82=BC=20=ED=98=84=EC=9E=AC=EA=B0=80=EB=A1=9C=20=EC=82=AC?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IndicatorProcess.cs | 2 +- .../SMABandConditionSetup.cs | 37 +++++++++++-------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs index 2bb4876..f8d1ae9 100644 --- a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs +++ b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs @@ -414,7 +414,7 @@ namespace BitgetAPI.IndicatorConditionSetup if (LongCount < 5) { double size = YHKIM_OrderAmount / price * YHKIM_Leverage; - var orderData = FutureOrder(market, FutureMarginMode.isolated, size, price, FutureSide.BuyLong, OrderType.limit, YHKIM_Leverage); + var orderData = FutureOrder(market, FutureMarginMode.isolated, size, 0, FutureSide.BuyLong, OrderType.limit, YHKIM_Leverage); if (orderData != null) { var orderDic = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(orderData["data"])); diff --git a/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs b/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs index a89035e..e5cf3ca 100644 --- a/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs +++ b/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs @@ -27,19 +27,21 @@ namespace BitgetApi.IndicatorConditionSetup public class SMABandConditionSetup { private readonly int rangeLookback = 12; - private readonly double rangeThresholdPercent = 0.6; - private bool wasBelowCloud = false; - private bool allowNewShortEntry = true; + private readonly double rangeThresholdPercent = 0.7; + /// + /// false 는 구매 전, true는 판매 후 + /// + private bool firstCloudFlag = true; public bool Calculate(List candles, SMABandType type) - { - var close = candles.Select(t => t.Close).ToList(); + { + var close = candles.Select(t => t.Close).ToList(); - var high = candles.Select(t=>t.High).ToList(); + var high = candles.Select(t => t.High).ToList(); - var low = candles.Select(t => t.Low).ToList(); + var low = candles.Select(t => t.Low).ToList(); - var open = candles.Select(t => t.Open).ToList(); + var open = candles.Select(t => t.Open).ToList(); int i = close.Count - 1; if (close.Count < 100 || high.Count < 100 || low.Count < 100 || open.Count < 100) @@ -77,16 +79,17 @@ namespace BitgetApi.IndicatorConditionSetup bool isSma4BelowCloud = sma4 < cloudBottomNow; bool isSma4AboveCloud = sma4 > cloudTopNow; + bool cloudFlag = false; - if (isSma4BelowCloud && !wasBelowCloud) + if (!firstCloudFlag) { - allowNewShortEntry = true; - wasBelowCloud = true; + if(isSma4BelowCloud) + cloudFlag = true; } - else if (!isSma4BelowCloud) + else { - allowNewShortEntry = false; - wasBelowCloud = false; + if (cloudBottomNow < sma4) + firstCloudFlag = false; } @@ -99,7 +102,7 @@ namespace BitgetApi.IndicatorConditionSetup bool rawLongSell = (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && sma4 < sma4Middle); - bool rawNewShort = allowNewShortEntry && isSideways && isSma4BelowCloud && (sma4 == sma4Low && prevSma4 >= prevSma4Low && prev2Sma4 >= prev2Sma4Low) && (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && prev2Sma4 <= prev3Sma4); + bool rawNewShort = cloudFlag && isSideways && isSma4BelowCloud && (sma4 == sma4Low && prevSma4 >= prevSma4Low && prev2Sma4 >= prev2Sma4Low) && (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && prev2Sma4 <= prev3Sma4); bool rawShortSell = (sma4 >= prevSma4 && prevSma4 >= prev2Sma4 && sma4 > sma4Middle); @@ -114,7 +117,9 @@ namespace BitgetApi.IndicatorConditionSetup } else if (type == SMABandType.LongSell) - { + { + if (rawLongSell) + firstCloudFlag = true; return rawLongSell; } else if (type == SMABandType.ShortSell)