isside 관련 오류 수정(자기자신포함하지 않음)

This commit is contained in:
kyh
2025-06-11 10:50:50 +09:00
parent d32225c46f
commit 68548e05f4

View File

@@ -71,7 +71,6 @@ namespace BitgetApi.IndicatorConditionSetup
double prev3Sma4Low = Lowest(close, i - 3, 12);
double prev3Sma4Middle = SMA(close, i - 3, 12);
bool isSideways = IsSideways(high, low, i);
var ichmok = GetIchimokuCloud(candles, i - 25);
@@ -98,12 +97,12 @@ namespace BitgetApi.IndicatorConditionSetup
bool redCandle = open[i] > close[i];
// 진입/청산 조건
bool rawNewLong = sma4 > cloudBottomNow && isSideways && isSma4AboveCloud && (sma4 == sma4High && prevSma4 <= prevSma4High && prev2Sma4 <= prev2Sma4High) && (sma4 >= prevSma4 && prevSma4 >= prev2Sma4 && prev2Sma4 >= prev3Sma4);
bool rawNewLong = sma4 > cloudBottomNow && IsSideways(high, low, i, true) && isSma4AboveCloud && (sma4 == sma4High && prevSma4 <= prevSma4High && prev2Sma4 <= prev2Sma4High) && (sma4 >= prevSma4 && prevSma4 >= prev2Sma4 && prev2Sma4 >= prev3Sma4);
bool rawLongSell = (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && sma4 < sma4High);
bool rawNewShort = cloudFlag && isSideways && isSma4BelowCloud && (sma4 == sma4Low && prevSma4 >= prevSma4Low && prev2Sma4 >= prev2Sma4Low) && (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && prev2Sma4 <= prev3Sma4);
bool rawNewShort = cloudFlag && IsSideways(high, low, i, false) && isSma4BelowCloud && (sma4 == sma4Low && prevSma4 >= prevSma4Low && prev2Sma4 >= prev2Sma4Low) && (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && prev2Sma4 <= prev3Sma4);
bool rawShortSell = (sma4 >= prevSma4 && prevSma4 >= prev2Sma4 && sma4 > sma4Middle);
@@ -123,7 +122,7 @@ namespace BitgetApi.IndicatorConditionSetup
}
else if (type == SMABandType.ShortSell)
{
if (rawLongSell)
if (rawShortSell)
firstCloudFlag = true;
return rawShortSell;
@@ -158,12 +157,23 @@ namespace BitgetApi.IndicatorConditionSetup
.Min();
}
private bool IsSideways(List<double> high, List<double> low, int index)
private bool IsSideways(List<double> high, List<double> low, int index, bool type)
{
double highestHigh = high.Skip(index - rangeLookback).Take(rangeLookback).Max();
double lowestLow = low.Skip(index - rangeLookback).Take(rangeLookback).Min();
double range = highestHigh - lowestLow;
return range > (highestHigh * rangeThresholdPercent / 100.0);
double highestHigh = high.Skip(index - rangeLookback).Take(rangeLookback + 1).Max();
double lowestLow = low.Skip(index - rangeLookback).Take(rangeLookback + 1).Min();
// long
if (type)
{
double range = high[index] - lowestLow;
return range > (high[index] * rangeThresholdPercent / 100.0) && highestHigh == high[index];
}
//short
else
{
double range = highestHigh - low[index];
return range > (low[index] * rangeThresholdPercent / 100.0) && lowestLow == low[index];
}
}
private IchimokuResult GetIchimokuCloud(List<CandleData> candles, int i)