Umgekehrte Durchbruchstrategie

Schriftsteller:ChaoZhang, Datum: 2023-12-20 14:48:57
Tags:

img

Übersicht

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.

Strategieprinzip

Die Kernlogik dieser Strategie besteht darin, geeignete Short- oder Long-Positionen einzunehmen, wenn sich die Preise aus Überkauf- oder Überverkaufszonen umkehren.

  1. Der CCI-Indikator oder der Momentum-Indikator gibt goldene Kreuz-Todkreuz-Signale aus, um den Überkauf- oder Überverkaufstatus zu bestimmen.

  2. Der RSI-Indikator beurteilt, ob er sich in einer Überkauf- oder Überverkaufszone befindet.

  3. Verwenden Sie Bollinger Bands oberen und unteren Schiene, um festzustellen, ob der Preis von der normalen Bandbreite abweicht.

  4. 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.

Analyse der Vorteile

Der größte Vorteil dieser Strategie besteht darin, dass sie mehrere Indikatoren kombiniert, um Umkehrchancen mit relativ hoher Gewinnrate zu bestimmen.

  1. Die Zuverlässigkeit ist höher, wenn mehrere Faktoren verwendet werden.

  2. Eine Umkehrung des Trends hat eine größere Gewinnwahrscheinlichkeit.

  3. Durch die Erkennung von Abweichungen wird vermieden, einen falschen Ausbruch zu verfolgen, und das systemische Risiko wird verringert.

  4. Der Stop-Loss-Mechanismus kontrolliert das Risiko und kann den Verlust eines einzelnen Tickets so weit wie möglich minimieren.

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Beurteilungsunsicherheiten bei der Umkehrung des Zeitpunkts. Stop-Loss kann ausgelöst werden.

  2. Bollinger Bands Parameter, die nicht angemessen eingestellt sind, nehmen normale Kursbewegung als abnormal an.

  3. Die Anzahl der Transaktionen könnte relativ hoch sein.

  4. Beurteilen Sie, ob die Parameter historischen Daten entsprechen.

Optimierung

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Verwenden Sie maschinelle Lernalgorithmen zur automatischen Optimierung von Parametern. Vermeiden Sie künstliche empirische Fehler.

  2. Erhöhen Sie den Schieferindex, den Amplitudeindex usw., um die Überkauf- und Überverkaufsstärke zu bestimmen.

  3. Hinzufügen von Handelsvolumenindikatoren zur Bestimmung der Zuverlässigkeit der Umkehrung, z. B. Volumen, offene Zinsen usw.

  4. Integrieren Sie Blockchain-Daten, um die Marktstimmung zu messen, verbessern Sie die Anpassungsfähigkeit der Strategie.

  5. Einführung eines anpassungsfähigen Stop-Loss-Mechanismus, der auf der Volatilität des Marktes basiert.

Zusammenfassung

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)


Mehr