diff --git a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs index 0e0baa8..2bb4876 100644 --- a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs +++ b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs @@ -370,7 +370,8 @@ namespace BitgetAPI.IndicatorConditionSetup //사는 시점 if (!UpBuyList.ContainsKey(market)) { - if (sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.LongBuy)) + if (sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.LongBuy) && + !sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.LongSell)) { BuyLongStep[market] = 0; // 없으면 생성 @@ -544,7 +545,8 @@ namespace BitgetAPI.IndicatorConditionSetup //사는 시점 if (!DownBuyList.ContainsKey(market)) { - if (sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.ShortBuy)) + if (sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.ShortBuy) && + !sMABandConditionSetup.Calculate(candleDatas_5_TempList, SMABandType.ShortSell)) { BuyShortStep[market] = 0; // 없으면 생성 diff --git a/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs b/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs index 562e18d..856c15f 100644 --- a/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs +++ b/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs @@ -51,7 +51,7 @@ namespace BitgetApi.IndicatorConditionSetup double prev2Sma4High = Highest(close, i - 2, 12); double prev2Sma4Low = Lowest(close, i - 2, 12); - + double prev2Sma4Middle = SMA(close, i - 2, 12); bool isSideways = IsSideways(high, low, i); // 조건 판단 @@ -69,8 +69,8 @@ namespace BitgetApi.IndicatorConditionSetup bool rawLongSell = close[i] < sma4Middle || (prevSma4High == prevSma4 && sma4High > sma4); - bool rawNewShort = (sma4 == sma4Low && prevSma4 == prevSma4Low && prevSma4 > sma4 && redCandle && (sma4Middle - prevSma4Middle) < (prevSma4Middle - SMA(close, i - 2, 12))); - + bool rawNewShort = (sma4 == sma4Low && prevSma4 > sma4 && prevSma4 > prevSma4Low && open[i] > close[i] && ((sma4Middle - prevSma4Middle) < (prevSma4Middle - prev2Sma4Middle))); + bool rawShortSell = close[i] > sma4Middle || (sma4High == sma4 && prevSma4High > prevSma4) || (prev2Sma4Low == prev2Sma4 && prevSma4Low < prevSma4); // === 시그널 계산 ===