삿는데 다음봉 되보니 아닐경우에 대한 예외처리 추가(원본가 오면 팔아버림)

This commit is contained in:
kyh
2025-06-16 13:15:49 +09:00
parent 68548e05f4
commit d9aba561cb
2 changed files with 77 additions and 26 deletions

View File

@@ -1,5 +1,6 @@
using BitgetAPI.Data;
using BitgetAPI.Data.IndicatorData;
using DevExpress.Utils.Extensions;
using DevExpress.XtraBars.Ribbon.Gallery;
using DevExpress.XtraBars.ViewInfo;
using System;
@@ -34,7 +35,7 @@ namespace BitgetApi.IndicatorConditionSetup
/// </summary>
private bool firstCloudFlag = true;
public bool Calculate(List<CandleData> candles, SMABandType type)
public bool Calculate(List<CandleData> candles, SMABandType type, bool flag = false)
{
var close = candles.Select(t => t.Close).ToList();
@@ -44,6 +45,14 @@ namespace BitgetApi.IndicatorConditionSetup
var open = candles.Select(t => t.Open).ToList();
if (flag)
{
close.RemoveAt(close.Count - 1);
high.RemoveAt(high.Count - 1);
low.RemoveAt(low.Count - 1);
open.RemoveAt(open.Count - 1);
}
int i = close.Count - 1;
if (close.Count < 100 || high.Count < 100 || low.Count < 100 || open.Count < 100)
return false;
@@ -79,18 +88,18 @@ namespace BitgetApi.IndicatorConditionSetup
bool isSma4BelowCloud = low[i] < cloudBottomNow;
bool isSma4AboveCloud = high[i] > cloudTopNow;
bool cloudFlag = false;
//bool cloudFlag = false;
if (!firstCloudFlag)
{
if(isSma4BelowCloud)
cloudFlag = true;
}
else
{
if (!isSma4BelowCloud)
firstCloudFlag = false;
}
//if (!firstCloudFlag)
//{
// if(isSma4BelowCloud)
// cloudFlag = true;
//}
//else
//{
// if (!isSma4BelowCloud)
// firstCloudFlag = false;
//}
bool greenCandle = open[i] < close[i];
@@ -101,8 +110,8 @@ namespace BitgetApi.IndicatorConditionSetup
bool rawLongSell = (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && sma4 < sma4High);
bool rawNewShort = cloudFlag && IsSideways(high, low, i, false) && isSma4BelowCloud && (sma4 == sma4Low && prevSma4 >= prevSma4Low && prev2Sma4 >= prev2Sma4Low) && (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && prev2Sma4 <= prev3Sma4);
//cloudFlag &&
bool rawNewShort = 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);
@@ -122,8 +131,8 @@ namespace BitgetApi.IndicatorConditionSetup
}
else if (type == SMABandType.ShortSell)
{
if (rawShortSell)
firstCloudFlag = true;
//if (rawShortSell)
// firstCloudFlag = true;
return rawShortSell;
}