MCL-YG Bollinger Band Breakout Pair Trading Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-14 13:49:12
Tags:

img

Übersicht

Diese Strategie verwendet Bollinger-Band-Breakouts, um Handelssignale zu generieren und den Paarhandel zwischen zwei positiv korrelierten Vermögenswerten MCL und YG umzusetzen.

Strategie Logik

Erstens berechnet die Strategie die SMA-Linie und den StdDev basierend auf den Schlusskurs über einen bestimmten Zeitraum. Dann fügt sie einen Versatz über und unter die SMA hinzu, um die oberen und unteren Bande der Bollinger-Bänder zu bilden. Ein Kaufsignal wird generiert, wenn der Preis das obere Band berührt, und ein Verkaufssignal, wenn der Preis das untere Band berührt.

Die Strategie nutzt die Breakout-Handelslogik von Bollinger Bands - gehen Sie lang, wenn der Preis über das obere Band bricht und gehen Sie kurz, wenn der Preis unter das untere Band bricht. Bollinger Bands passen die Breite der Bands dynamisch an, basierend auf der Marktvolatilität, was hilft, Marktlärm während der Bereichsphasen zu filtern. Im Gegensatz zu festen Kanalbanden erweitern sich Bollinger Bands bei hoher Volatilität und schmälern sich bei geringer Volatilität. Dies ermöglicht es, etwas Lärm zu filtern, wenn die Volatilität hoch ist, und kleinere Ausbrüche zu erfassen, wenn die Volatilität niedrig ist.

Es implementiert den Paarhandel zwischen zwei positiv korrelierten Vermögenswerten MCL und YG. Wenn MCL über das obere Band bricht, zeigt dies, dass MCL im Aufwärtstrend ist. Die Strategie geht lang MCL und kurz YG - den stärkeren Vermögenswert kaufen und den schwächeren verkaufen, um von der Divergenz in ihren Preisen zu profitieren.

Vorteile

  1. Breakout-Handel auf Basis von Bollinger-Bändern kann Marktlärm effektiv filtern und Trends identifizieren
  2. Der Handel mit korrelierten Vermögenswerten in Paaren kann durch Preisdivergenzen Alpha-Renditen erzielen
  3. Dynamische Positionsgröße hilft, das Risiko für einzelne Trades zu kontrollieren
  4. Standard-Breakout-Eintritt und Umkehr-Ausgang Logik macht die Strategie Logik einfach und klar

Risiken

  1. Eine schlechte Abstimmung der Bollinger Bands-Parameter kann zu zu vielen Signalen oder unklaren Signalen führen
  2. Eine abnehmende Korrelation zwischen den Vermögenswerten kann die Gewinne aus dem Handel mit dem Paar verringern
  3. Durch falsche Signale in unruhigen Märkten können Breakouts getäuscht werden, was zu Verlusten führt
  4. Keine Stop-Loss kann zu erhöhten Verlusten bei Einzelgeschäften führen

Die Risiken können durch Optimierung der Parameter, Auswahl von Vermögenswerten mit stärkerer Korrelation und Liquidität, Festlegung eines angemessenen Stop-Loss usw. verringert werden.

Optimierungsmöglichkeiten

  1. Optimieren Sie die Bollinger-Band-Parameter, um die beste Kombination zu finden
  2. Testen Sie mehr korrelierte Vermögenspaare und wählen Sie die beste Kombination aus
  3. Hinzufügen von Stop-Loss-Logik, um Verluste für einzelne Trades zu begrenzen
  4. Fügen Sie weitere Filter hinzu, um falsche Ausbruchssignale zu vermeiden
  5. Einbeziehung anderer Faktoren wie Volumenbestätigung zur Verbesserung der Eintrittszeit

Zusammenfassung

Im Allgemeinen ist die Strategie einfach und unkompliziert, Trends mit Bollinger Bands erfassen und Alpha aus dem Paarhandel gewinnen.


/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © shark792

//@version=5

// 1. Define strategy settings
strategy(title="MCL-YG Pair Trading Strategy", overlay=true,
     pyramiding=0, initial_capital=10000,
     commission_type=strategy.commission.cash_per_order,
     commission_value=4, slippage=2)

smaLength = input.int(title="SMA Length", defval=20)
stdLength = input.int(title="StdDev Length", defval=20)

ubOffset = input.float(title="Upper Band Offset", defval=1, step=0.5)
lbOffset = input.float(title="Lower Band Offset", defval=1, step=0.5)

usePosSize = input.bool(title="Use Position Sizing?", defval=true)
riskPerc   = input.float(title="Risk %", defval=0.5, step=0.25)


// 2. Calculate strategy values
smaValue = ta.sma(close, smaLength)
stdDev   = ta.stdev(close, stdLength)

upperBand = smaValue + (stdDev * ubOffset)
lowerBand = smaValue - (stdDev * lbOffset)

riskEquity  = (riskPerc / 100) * strategy.equity
atrCurrency = (ta.atr(20) * syminfo.pointvalue)
posSize     = usePosSize ? math.floor(riskEquity / atrCurrency) : 1


// 3. Output strategy data
plot(series=smaValue, title="SMA", color=color.teal)

plot(series=upperBand, title="UB", color=color.green,
     linewidth=2)
plot(series=lowerBand, title="LB", color=color.red,
     linewidth=2)


// 4. Determine long trading conditions
enterLong = ta.crossover(close, upperBand)
exitLong  = ta.crossunder(close, smaValue)


// 5. Code short trading conditions
enterShort = ta.crossunder(close, lowerBand)
exitShort  = ta.crossover(close, smaValue)


// 6. Submit entry orders
if enterLong
    strategy.entry(id="EL", direction=strategy.long, qty=posSize)

if enterShort
    strategy.entry(id="ES", direction=strategy.short, qty=posSize)


// 7. Submit exit orders
strategy.close(id="EL", when=exitLong)
strategy.close(id="ES", when=exitShort)



Mehr