Die Reverse Mean Breakthrough Strategy ist eine Multi-Faktor-Trend-Umkehrstrategie. Sie kombiniert gleitenden Durchschnitt, Bollinger Bands, CCI, RSI und andere technische Indikatoren, um Preisumkehrmöglichkeiten aus überkauften und überverkauften Bereichen zu erfassen. Die Strategie beinhaltet auch eine regelmäßige Divergenzanalyse, um Inkonsistenzen zwischen aktuellen und früheren Trends zu erkennen und so falsche Ausbrüche zu vermeiden.
Die Kernlogik dieser Strategie besteht darin, geeignete Short- oder Long-Positionen einzunehmen, wenn sich die Preise aus Überkauf- oder Überverkaufszonen umkehren.
Der CCI-Indikator oder der Momentum-Indikator gibt goldene Kreuz-Todkreuz-Signale aus, um den Überkauf- oder Überverkaufstatus zu bestimmen.
Der RSI-Indikator beurteilt, ob er sich in einer Überkauf- oder Überverkaufszone befindet.
Verwenden Sie Bollinger Bands oberen und unteren Schiene, um festzustellen, ob der Preis von der normalen Bandbreite abweicht.
Erkennen Sie eine regelmäßige Divergenz des RSI-Indikators, um falsche Ausbrüche zu vermeiden.
Wenn die oben genannten Bedingungen erfüllt sind, wird die Strategie umgekehrten Eintritt Richtung nehmen und Stop-Loss setzen, um das Risiko zu kontrollieren.
Der größte Vorteil dieser Strategie besteht darin, dass sie mehrere Indikatoren kombiniert, um Umkehrchancen mit relativ hoher Gewinnrate zu bestimmen.
Die Zuverlässigkeit ist höher, wenn mehrere Faktoren verwendet werden.
Eine Umkehrung des Trends hat eine größere Gewinnwahrscheinlichkeit.
Durch die Erkennung von Abweichungen wird vermieden, einen falschen Ausbruch zu verfolgen, und das systemische Risiko wird verringert.
Der Stop-Loss-Mechanismus kontrolliert das Risiko und kann den Verlust eines einzelnen Tickets so weit wie möglich minimieren.
Diese Strategie birgt auch einige Risiken:
Beurteilungsunsicherheiten bei der Umkehrung des Zeitpunkts. Stop-Loss kann ausgelöst werden.
Bollinger Bands Parameter, die nicht angemessen eingestellt sind, nehmen normale Kursbewegung als abnormal an.
Die Anzahl der Transaktionen könnte relativ hoch sein.
Beurteilen Sie, ob die Parameter historischen Daten entsprechen.
Die Strategie kann in folgenden Aspekten optimiert werden:
Verwenden Sie maschinelle Lernalgorithmen zur automatischen Optimierung von Parametern. Vermeiden Sie künstliche empirische Fehler.
Erhöhen Sie den Schieferindex, den Amplitudeindex usw., um die Überkauf- und Überverkaufsstärke zu bestimmen.
Hinzufügen von Handelsvolumenindikatoren zur Bestimmung der Zuverlässigkeit der Umkehrung, z. B. Volumen, offene Zinsen usw.
Integrieren Sie Blockchain-Daten, um die Marktstimmung zu messen, verbessern Sie die Anpassungsfähigkeit der Strategie.
Einführung eines anpassungsfähigen Stop-Loss-Mechanismus, der auf der Volatilität des Marktes basiert.
Die umgekehrte Durchbruchstrategie integriert mehrere Indikatoren, um Umkehrtrades zu bestimmen. Mit einer angemessenen Risikokontrolle hat sie eine relativ hohe Gewinnrate. Die Strategie ist praktisch und bietet Raum für weitere Optimierungen.
/*backtest start: 2023-12-12 00:00:00 end: 2023-12-19 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title='BroTheJo Strategy', shorttitle='BTJ INV', overlay=true) // Input settings stopLossInPips = input.int(10, minval=0, title='Stop Loss (in Pips)') ccimomCross = input.string('CCI', 'Entry Signal Source', options=['CCI', 'Momentum']) ccimomLength = input.int(10, minval=1, title='CCI/Momentum Length') useDivergence = input.bool(false, title='Find Regular Bullish/Bearish Divergence') rsiOverbought = input.int(65, minval=1, title='RSI Overbought Level') rsiOversold = input.int(35, minval=1, title='RSI Oversold Level') rsiLength = input.int(14, minval=1, title='RSI Length') plotMeanReversion = input.bool(true, 'Plot Mean Reversion Bands on the chart') emaPeriod = input(200, title='Lookback Period (EMA)') bandMultiplier = input.float(1.6, title='Outer Bands Multiplier') // CCI and Momentum calculation momLength = ccimomCross == 'Momentum' ? ccimomLength : 10 mom = close - close[momLength] cci = ta.cci(close, ccimomLength) ccimomCrossUp = ccimomCross == 'Momentum' ? ta.cross(mom, 0) : ta.cross(cci, 0) ccimomCrossDown = ccimomCross == 'Momentum' ? ta.cross(0, mom) : ta.cross(0, cci) // RSI calculation src = close up = ta.rma(math.max(ta.change(src), 0), rsiLength) down = ta.rma(-math.min(ta.change(src), 0), rsiLength) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down) oversoldAgo = rsi[0] <= rsiOversold or rsi[1] <= rsiOversold or rsi[2] <= rsiOversold or rsi[3] <= rsiOversold overboughtAgo = rsi[0] >= rsiOverbought or rsi[1] >= rsiOverbought or rsi[2] >= rsiOverbought or rsi[3] >= rsiOverbought // Regular Divergence Conditions bullishDivergenceCondition = rsi[0] > rsi[1] and rsi[1] < rsi[2] bearishDivergenceCondition = rsi[0] < rsi[1] and rsi[1] > rsi[2] // Mean Reversion Indicator meanReversion = plotMeanReversion ? ta.ema(close, emaPeriod) : na stdDev = plotMeanReversion ? ta.stdev(close, emaPeriod) : na upperBand = plotMeanReversion ? meanReversion + stdDev * bandMultiplier : na lowerBand = plotMeanReversion ? meanReversion - stdDev * bandMultiplier : na // Entry Conditions prevHigh = ta.highest(high, 1) prevLow = ta.lowest(low, 1) shortEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition) and (prevHigh >= meanReversion) and (prevLow >= meanReversion) longEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition) and (prevHigh <= meanReversion) and (prevLow <= meanReversion) // Plotting oldShortEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition) oldLongEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition) plotshape(oldLongEntryCondition, title='BUY', style=shape.triangleup, text='B', location=location.belowbar, color=color.new(color.lime, 0), textcolor=color.new(color.white, 0), size=size.tiny) plotshape(oldShortEntryCondition, title='SELL', style=shape.triangledown, text='S', location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny) // Strategy logic if (longEntryCondition) stopLoss = close - stopLossInPips strategy.entry("Buy", strategy.long) strategy.exit("exit", "Buy", stop=stopLoss) if (shortEntryCondition) stopLoss = close + stopLossInPips strategy.entry("Sell", strategy.short) strategy.exit("exit", "Sell", stop=stopLoss) // Close all open positions when outside of bands closeAll = (high >= upperBand) or (low <= lowerBand) if (closeAll) strategy.close_all("Take Profit/Cut Loss") // Plotting plot(upperBand, title='Upper Band', color=color.fuchsia, linewidth=1) plot(meanReversion, title='Mean', color=color.gray, linewidth=1) plot(lowerBand, title='Lower Band', color=color.blue, linewidth=1)