diff --git a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs index 2bb4876..f8d1ae9 100644 --- a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs +++ b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs @@ -414,7 +414,7 @@ namespace BitgetAPI.IndicatorConditionSetup if (LongCount < 5) { 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) { var orderDic = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(orderData["data"])); diff --git a/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs b/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs index a89035e..e5cf3ca 100644 --- a/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs +++ b/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs @@ -27,19 +27,21 @@ namespace BitgetApi.IndicatorConditionSetup public class SMABandConditionSetup { private readonly int rangeLookback = 12; - private readonly double rangeThresholdPercent = 0.6; - private bool wasBelowCloud = false; - private bool allowNewShortEntry = true; + private readonly double rangeThresholdPercent = 0.7; + /// + /// false 는 구매 전, true는 판매 후 + /// + private bool firstCloudFlag = true; public bool Calculate(List candles, SMABandType type) - { - var close = candles.Select(t => t.Close).ToList(); + { + var close = candles.Select(t => t.Close).ToList(); - var high = candles.Select(t=>t.High).ToList(); + var high = candles.Select(t => t.High).ToList(); - var low = candles.Select(t => t.Low).ToList(); + var low = candles.Select(t => t.Low).ToList(); - var open = candles.Select(t => t.Open).ToList(); + var open = candles.Select(t => t.Open).ToList(); int i = close.Count - 1; if (close.Count < 100 || high.Count < 100 || low.Count < 100 || open.Count < 100) @@ -77,16 +79,17 @@ namespace BitgetApi.IndicatorConditionSetup bool isSma4BelowCloud = sma4 < cloudBottomNow; bool isSma4AboveCloud = sma4 > cloudTopNow; + bool cloudFlag = false; - if (isSma4BelowCloud && !wasBelowCloud) + if (!firstCloudFlag) { - allowNewShortEntry = true; - wasBelowCloud = true; + if(isSma4BelowCloud) + cloudFlag = true; } - else if (!isSma4BelowCloud) + else { - allowNewShortEntry = false; - wasBelowCloud = false; + if (cloudBottomNow < sma4) + firstCloudFlag = false; } @@ -99,7 +102,7 @@ namespace BitgetApi.IndicatorConditionSetup 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); @@ -114,7 +117,9 @@ namespace BitgetApi.IndicatorConditionSetup } else if (type == SMABandType.LongSell) - { + { + if (rawLongSell) + firstCloudFlag = true; return rawLongSell; } else if (type == SMABandType.ShortSell)