La stratégie de négociation des paires de négociation de rupture de la bande de Bollinger de MCL-YG

Auteur:ChaoZhang est là., Date: 2023-11-14 13:49:12 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie utilise les ruptures de la bande de Bollinger pour générer des signaux de trading et mettre en œuvre le trading en paire entre deux actifs positivement corrélés MCL et YG. Elle va long MCL et court YG lorsque le prix du MCL touche la bande supérieure, et court MCL et long YG lorsque le prix du MCL touche la bande inférieure, pour trader le long de la tendance des prix.

La logique de la stratégie

Premièrement, la stratégie calcule la ligne SMA et StdDev en fonction des prix de clôture sur une certaine période. Puis elle ajoute un décalage au-dessus et en dessous de la SMA pour former les bandes supérieure et inférieure des bandes de Bollinger. Un signal d'achat est généré lorsque le prix touche la bande supérieure, et un signal de vente lorsque le prix touche la bande inférieure.

La stratégie utilise la logique de négociation de rupture des bandes de Bollinger - aller long lorsque le prix dépasse la bande supérieure et aller court lorsque le prix dépasse la bande inférieure. Les bandes de Bollinger ajustent dynamiquement la largeur des bandes en fonction de la volatilité du marché, ce qui aide à filtrer le bruit du marché pendant les périodes d'intervalle.

Il implémente le trading de paires entre deux actifs positivement corrélés MCL et YG. Lorsque MCL dépasse la bande supérieure, cela montre que MCL est en tendance haussière.

Les avantages

  1. Les opérations de rupture basées sur les bandes de Bollinger peuvent filtrer efficacement le bruit du marché et identifier les tendances
  2. Les transactions en paires sur des actifs corrélés peuvent générer des rendements alpha de la divergence de prix
  3. La dimensionnement dynamique des positions aide à contrôler le risque pour les transactions individuelles
  4. Logique d'entrée et de sortie de rupture standard rend la logique de stratégie simple et claire

Les risques

  1. Un mauvais réglage des paramètres des bandes de Bollinger peut entraîner trop de signaux ou des signaux peu clairs.
  2. La diminution de la corrélation entre les actifs peut réduire les bénéfices du trading de la paire
  3. Les ruptures peuvent être trompées par de faux signaux sur des marchés instables, causant des pertes
  4. Aucun stop loss ne peut entraîner des pertes accrues pour les transactions uniques

Les risques peuvent être réduits en optimisant les paramètres, en sélectionnant des actifs ayant une corrélation et une liquidité plus fortes, en définissant un stop loss approprié, etc.

Des possibilités d'optimisation

  1. Optimiser les paramètres des bandes de Bollinger pour trouver la meilleure combinaison
  2. Testez plus de paires d'actifs corrélées et sélectionnez la meilleure combinaison
  3. Ajouter une logique de stop loss pour limiter les pertes pour les transactions uniques
  4. Ajouter plus de filtres pour éviter les faux signaux de rupture
  5. Incorporer d'autres facteurs tels que la confirmation du volume pour améliorer le calendrier d'entrée

Résumé

Dans l'ensemble, la stratégie est simple et directe, capturant les tendances avec des bandes de Bollinger et gagnant de l'alpha du trading en paire. Mais il y a place à l'amélioration de l'ajustement des paramètres, du stop loss et de la sélection des paires.


/*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)



Plus de