diff --git a/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs b/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs index a96f23c..dc9bc39 100644 --- a/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs +++ b/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs @@ -14,7 +14,8 @@ namespace BitgetApi.IndicatorConditionSetup { private readonly int rangeLookback = 12; private readonly double rangeThresholdPercent = 0.6; - + private bool wasBelowCloud = false; + private bool allowNewShortEntry = true; public bool Calculate(List candles, SMABandType type) { @@ -67,6 +68,17 @@ namespace BitgetApi.IndicatorConditionSetup bool isSma4BelowCloud = sma4 < cloudBottomNow; bool isSma4AboveCloud = sma4 > cloudTopNow; + if (isSma4BelowCloud && !wasBelowCloud) + { + allowNewShortEntry = true; + wasBelowCloud = true; + } + else if (!isSma4BelowCloud) + { + allowNewShortEntry = false; + wasBelowCloud = false; + } + bool greenCandle = open[i] < close[i]; bool redCandle = open[i] > close[i]; @@ -77,8 +89,7 @@ namespace BitgetApi.IndicatorConditionSetup bool rawLongSell = (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && prev2Sma4 <= prev3Sma4 && sma4 == sma4Low); - bool rawNewShort = isSideways && isSma4BelowCloud && (sma4 == sma4Low && prevSma4 >= prevSma4Low && prev2Sma4 >= prev2Sma4Low) && (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && prev2Sma4 <= prev3Sma4); - + bool rawNewShort = allowNewShortEntry && isSideways && isSma4BelowCloud && (sma4 == sma4Low && prevSma4 >= prevSma4Low && prev2Sma4 >= prev2Sma4Low) && (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && prev2Sma4 <= prev3Sma4); bool rawShortSell = (sma4 >= prevSma4 && prevSma4 >= prev2Sma4 && prev2Sma4 >= prev3Sma4 && sma4 == sma4High); @@ -93,7 +104,7 @@ namespace BitgetApi.IndicatorConditionSetup } else if (type == SMABandType.LongSell) - { + { return rawLongSell; } else if (type == SMABandType.ShortSell)