가격으로 사니 늦어서 못삼 현재가로 사도록 수정

This commit is contained in:
kyh
2025-05-30 09:43:42 +09:00
parent 5c797e2b11
commit 504cfd8af6
2 changed files with 22 additions and 17 deletions

View File

@@ -414,7 +414,7 @@ namespace BitgetAPI.IndicatorConditionSetup
if (LongCount < 5) if (LongCount < 5)
{ {
double size = YHKIM_OrderAmount / price * YHKIM_Leverage; double size = YHKIM_OrderAmount / price * YHKIM_Leverage;
var orderData = FutureOrder(market, FutureMarginMode.isolated, size, price, FutureSide.BuyLong, OrderType.limit, YHKIM_Leverage); var orderData = FutureOrder(market, FutureMarginMode.isolated, size, 0, FutureSide.BuyLong, OrderType.limit, YHKIM_Leverage);
if (orderData != null) if (orderData != null)
{ {
var orderDic = JsonConvert.DeserializeObject<Dictionary<string, string>>(JsonConvert.SerializeObject(orderData["data"])); var orderDic = JsonConvert.DeserializeObject<Dictionary<string, string>>(JsonConvert.SerializeObject(orderData["data"]));

View File

@@ -27,9 +27,11 @@ namespace BitgetApi.IndicatorConditionSetup
public class SMABandConditionSetup public class SMABandConditionSetup
{ {
private readonly int rangeLookback = 12; private readonly int rangeLookback = 12;
private readonly double rangeThresholdPercent = 0.6; private readonly double rangeThresholdPercent = 0.7;
private bool wasBelowCloud = false; /// <summary>
private bool allowNewShortEntry = true; /// false 는 구매 전, true는 판매 후
/// </summary>
private bool firstCloudFlag = true;
public bool Calculate(List<CandleData> candles, SMABandType type) public bool Calculate(List<CandleData> candles, SMABandType type)
{ {
@@ -77,16 +79,17 @@ namespace BitgetApi.IndicatorConditionSetup
bool isSma4BelowCloud = sma4 < cloudBottomNow; bool isSma4BelowCloud = sma4 < cloudBottomNow;
bool isSma4AboveCloud = sma4 > cloudTopNow; bool isSma4AboveCloud = sma4 > cloudTopNow;
bool cloudFlag = false;
if (isSma4BelowCloud && !wasBelowCloud) if (!firstCloudFlag)
{ {
allowNewShortEntry = true; if(isSma4BelowCloud)
wasBelowCloud = true; cloudFlag = true;
} }
else if (!isSma4BelowCloud) else
{ {
allowNewShortEntry = false; if (cloudBottomNow < sma4)
wasBelowCloud = false; firstCloudFlag = false;
} }
@@ -99,7 +102,7 @@ namespace BitgetApi.IndicatorConditionSetup
bool rawLongSell = (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && sma4 < sma4Middle); bool rawLongSell = (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && sma4 < sma4Middle);
bool rawNewShort = allowNewShortEntry && isSideways && isSma4BelowCloud && (sma4 == sma4Low && prevSma4 >= prevSma4Low && prev2Sma4 >= prev2Sma4Low) && (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && prev2Sma4 <= prev3Sma4); bool rawNewShort = cloudFlag && isSideways && isSma4BelowCloud && (sma4 == sma4Low && prevSma4 >= prevSma4Low && prev2Sma4 >= prev2Sma4Low) && (sma4 <= prevSma4 && prevSma4 <= prev2Sma4 && prev2Sma4 <= prev3Sma4);
bool rawShortSell = (sma4 >= prevSma4 && prevSma4 >= prev2Sma4 && sma4 > sma4Middle); bool rawShortSell = (sma4 >= prevSma4 && prevSma4 >= prev2Sma4 && sma4 > sma4Middle);
@@ -115,6 +118,8 @@ namespace BitgetApi.IndicatorConditionSetup
else if (type == SMABandType.LongSell) else if (type == SMABandType.LongSell)
{ {
if (rawLongSell)
firstCloudFlag = true;
return rawLongSell; return rawLongSell;
} }
else if (type == SMABandType.ShortSell) else if (type == SMABandType.ShortSell)