From 9fce4b863622e798d5f09cc3481a87db5505232b Mon Sep 17 00:00:00 2001 From: kyh <1329522@naver.com> Date: Mon, 15 Sep 2025 12:51:30 +0900 Subject: [PATCH] =?UTF-8?q?short=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SMABandConditionSetup.cs | 25 +++++++++++++------ BitgetApi/WebService/WebConnection.cs | 7 +++--- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs b/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs index 95ce8d3..3ba09c9 100644 --- a/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs +++ b/BitgetApi/IndicatorConditionSetup/SMABandConditionSetup.cs @@ -64,23 +64,32 @@ namespace BitgetApi.IndicatorConditionSetup var avgShortList = new List(); for (var cntData = high.Count - 120; cntData < high.Count; cntData++) - { - var highestData = Highest(high, cntData, 12, 1); + { var lowestData = Lowest(low, cntData, 12, 1); + var highData = high[cntData]; - var highData = high[cntData]; + avgLongList.Add((highData - lowestData)/lowestData * 100); + } + + for (var cntData = high.Count - 12; cntData < high.Count; cntData++) + { + var highestData = Highest(high, cntData, 4, 1); var lowData = low[cntData]; - - avgLongList.Add((highData - lowestData)/lowestData * 100); + avgShortList.Add((highestData - lowData) / highestData * 100); } + rangeThresholdLongPercent = avgLongList.Average(); - rangeThresholdShortPercent = avgShortList.Average(); + rangeThresholdShortPercent = avgShortList.Average() * 2.5; double sma72 = CalculateSMA(close, i); double prevSma72 = CalculateSMA(close, i - 1); + double sma24 = CalculateSMA(close, i, 24); + double prevSma24 = CalculateSMA(close, i - 1, 24); + + // SMA4 관련 double sma4 = CalculateSMA(close, i, 4); double prevSma4 = CalculateSMA(close, i - 1, 4); @@ -139,8 +148,8 @@ namespace BitgetApi.IndicatorConditionSetup bool rawNewLong = highestTempData == high[i] && isLongRecentTouch && greenCandle && IsSideways(high, low, i, true, rangeThresholdLongPercent) && prevSma4 <= sma4 && sma4High == sma4 && prevSma4High >= prevSma4 && (prev2Sma4Middle - prevSma4Middle) > (prevSma4Middle - sma4Middle) && sma4Middle > sma72 && sma4 > cloudTopNow; bool rawLongSell = (sma4Middle < sma72 && prevSma4Middle > prevSma72) || (sma4 == sma4Low); - bool rawNewShort = (sma72 < cloudTopAfter && sma72 < cloudTopNow) && sma72 > sma4 && sma4High > cloudBottomNow && sma4 == sma4Low && IsSideways(high, low, i, false, rangeThresholdShortPercent) && redCandle && sma4 < cloudTopNow; - bool rawShortSell = sma4High < close[i] || sma4 > sma72; + bool rawNewShort = (sma72 < cloudTopNow && prevSma4Middle > prevSma24 && sma4Middle > cloudBottomNow && sma4 < sma72 && sma4High > sma72 && sma24 > sma4Middle && sma4 == sma4Low && IsSideways(high, low, i, false, rangeThresholdShortPercent) && prevSma4 > sma4 && sma4 < cloudBottomNow) || (sma4 < sma72 && sma4High > sma72 && sma24 < sma4Middle && sma4 == sma4Low && IsSideways(high, low, i, false, rangeThresholdShortPercent) && redCandle && sma4 < cloudBottomNow && sma4Middle < cloudTopNow); + bool rawShortSell = (sma4High <= sma4 && sma4High < sma72) || sma4 > sma72; //bool rawNewLong = greenCandle && sma4Low < sma72 && IsSideways(high, low, i, true) && sma4 > cloudTopNow && prevSma4 <= prevSma4High && sma4 == sma4High && prevSma4 < sma4 && sma4Middle > sma72 && sma4 > cloudTopNow && ichmok.SenkouSpanA >= ichmok.SenkouSpanB && ichmokCurrent.SenkouSpanA >= ichmokCurrent.SenkouSpanB; //sma4 == sma4High && prevSma4 < sma4High && sma4Middle > sma72 && sma4 > cloudTopNow && ichmokCurrent.SenkouSpanA > ichmokCurrent.SenkouSpanB && ichmok.SenkouSpanA >= ichmok.SenkouSpanB; // sma4 > cloudBottomNow && IsSideways(high, low, i, true) && isSma4AboveCloud && (sma4 == sma4High && prevSma4 <= prevSma4High && prev2Sma4 <= prev2Sma4High) && (sma4 >= prevSma4 && prevSma4 >= prev2Sma4 && prev2Sma4 >= prev3Sma4); diff --git a/BitgetApi/WebService/WebConnection.cs b/BitgetApi/WebService/WebConnection.cs index 93e7a98..5d0f381 100644 --- a/BitgetApi/WebService/WebConnection.cs +++ b/BitgetApi/WebService/WebConnection.cs @@ -1157,7 +1157,7 @@ namespace BitgetAPI.WebService { var max = candleDataList.Max(t => t.Argument); lastCandleData = candleDataList.Find(t => t.Argument == max); - lastCandleData.Open = 0; + var flag = false; if (((int)mCandleTimeType) < 60) { @@ -1245,7 +1245,7 @@ namespace BitgetAPI.WebService { candleData.WebSocketUpdate = true; lastCandleData.Close = candleData.Open; - lastCandleData.Open = candleData.Open; + if (lastCandleData.High < lastCandleData.Close) { lastCandleData.High = lastCandleData.Close; @@ -1261,8 +1261,7 @@ namespace BitgetAPI.WebService if((int)mCandleTimeType > 60) { dt = dt.AddMinutes(dt.Minute * -1); - } - + } // 새 데이터 등록 candleDataList.Add(candleData);