isside 관련 오류 수정(자기자신포함하지 않음)
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user