Diese Strategie verwendet Bollinger-Band-Breakouts, um Handelssignale zu generieren und den Paarhandel zwischen zwei positiv korrelierten Vermögenswerten MCL und YG umzusetzen.
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.
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.
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)