Les ressources ont été chargées... Je charge...

Stratégie de rupture des bandes de Bollinger à triple écart type avec optimisation de la moyenne mobile sur 100 jours

Auteur:ChaoZhang est là., Date: 2024-12-13 11h20 et 13h
Les étiquettes:- Je vous en prie.BBSMASD

img

Résumé

Cette stratégie est un système de trading quantitatif basé sur la rupture des bandes de Bollinger, utilisant 3 écarts types pour la bande supérieure et 1 écarts types pour la bande inférieure, combinés à une moyenne mobile de 100 jours comme bande moyenne.

Principes de stratégie

Le principe de base est basé sur les propriétés statistiques des bandes de Bollinger. La bande supérieure utilise 3 écarts types, ce qui signifie que dans les hypothèses de distribution normale, la probabilité de rupture du prix au-dessus de ce niveau n'est que de 0,15%, ce qui suggère une formation de tendance significative lorsque des ruptures se produisent. La bande du milieu utilise une moyenne mobile de 100 jours, une période suffisamment longue pour filtrer efficacement le bruit du marché à court terme. La bande inférieure utilise 1 écarte type comme ligne stop-loss, un réglage relativement conservateur qui aide à une sortie rapide.

Les avantages de la stratégie

  1. Une forte capacité de capture de tendance: le réglage des 3 écarts types capte efficacement les opportunités de rupture de tendance importantes.
  2. Contrôle raisonnable des risques: l'utilisation d'un écart type comme ligne de stop-loss permet une gestion prudente des risques.
  3. Haute adaptabilité des paramètres: les multiplicateurs d'écart type et la période de moyenne mobile peuvent être ajustés en fonction des différentes caractéristiques du marché.
  4. Approche systématique: logique stratégique claire avec des capacités de backtesting complètes pour un suivi précis des performances.
  5. Large application: peut être appliquée à divers marchés, y compris les actions et les crypto-monnaies.

Risques stratégiques

  1. Risque de fausse rupture: les marchés peuvent afficher des ruptures à court terme suivies d'inversions rapides, conduisant à de faux signaux.
  2. Des retraits importants: des retraits importants peuvent se produire sur des marchés très volatils.
  3. Risque de décalage: la moyenne mobile à 100 jours présente un décalage inhérent, ce qui peut entraîner une absence de certains mouvements rapides du marché.
  4. Dépendance de l'environnement du marché: peut générer des échanges excessifs sur différents marchés, entraînant des coûts de transaction élevés.

Directions d'optimisation de la stratégie

  1. Incorporer une confirmation de volume: ajouter un mécanisme de confirmation de rupture de volume pour améliorer la fiabilité du signal.
  2. Optimiser le mécanisme de stop-loss: envisager la mise en œuvre d'arrêts de retard ou d'arrêts dynamiques basés sur l'ATR pour une gestion de sortie plus flexible.
  3. Ajouter des filtres de tendance: intégrer des indicateurs d'identification de tendance à long terme pour ne négocier que dans la direction principale de la tendance.
  4. Améliorer la gestion des positions: ajuster dynamiquement les tailles de position en fonction de la force de rupture.
  5. Ajouter des filtres de temps: Évitez de négocier pendant des périodes de marché spécifiques.

Résumé

Il s'agit d'une stratégie de suivi de tendance bien conçue avec une logique claire. Grâce aux propriétés statistiques des bandes de Bollinger et aux caractéristiques de suivi de tendance des moyennes mobiles, il capte efficacement des opportunités de rupture de marché significatives. Bien qu'il existe des risques de retrait, la stratégie conserve une valeur pratique grâce à des paramètres de stop-loss raisonnables et un contrôle des risques. Le potentiel d'optimisation supplémentaire réside dans la confirmation du signal, les mécanismes de stop-loss et les aspects de gestion de position.


/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MounirTrades007

// @version=6
strategy("Bollinger Bands", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=200)

// Get user input
var g_bb        = "Bollinger Band Settings"
upperBandSD     = input.float(title="Upper Band Std Dev", defval=3.0, tooltip="Upper band's standard deviation multiplier", group=g_bb)
lowerBandSD     = input.float(title="Lower Band Std Dev", defval=1.0, tooltip="Lower band's standard deviation multiplier", group=g_bb)
maPeriod        = input.int(title="Middle Band MA Length", defval=100, tooltip="Middle band's SMA period length", group=g_bb)
var g_tester    = "Backtester Settings"
drawTester      = input.bool(title="Draw Backtester", defval=true, group=g_tester, tooltip="Turn on/off inbuilt backtester display")

// Get Bollinger Bands
[bbIgnore1, bbHigh, bbIgnore2] = ta.bb(close, maPeriod, upperBandSD)
[bbMid, bbIgnore3, bbLow]      = ta.bb(close, maPeriod, lowerBandSD)

// Prepare trade persistent variables
drawEntry   = false
drawExit    = false

// Detect bollinger breakout
if close > bbHigh and barstate.isconfirmed and strategy.position_size == 0
    drawEntry := true
    strategy.entry(id="Trade", direction=strategy.long)
    alert("Bollinger Breakout Detected for " + syminfo.ticker, alert.freq_once_per_bar_close)

// Detect bollinger sell signal
if close < bbLow and barstate.isconfirmed and strategy.position_size != 0
    drawExit := true
    strategy.close(id="Trade")
    alert("Bollinger Exit detected for " + syminfo.ticker, alert.freq_once_per_bar_close)

// Draw bollinger bands
plot(bbMid, color=color.blue, title="Middle SMA")
plot(bbHigh, color=color.green, title="Upper Band")
plot(bbLow, color=color.red, title="Lower Band")

// Draw signals
plotshape(drawEntry, style=shape.triangleup, color=color.green, location=location.belowbar, size=size.normal, title="Buy Signal")
plotshape(drawExit, style=shape.xcross, color=color.red, location=location.belowbar, size=size.normal, title="Sell Signal")

// // =============================================================================
// // START BACKTEST CODE
// // =============================================================================

// // Prepare stats table
// var table testTable = table.new(position.top_right, 2, 2, border_width=1)
// f_fillCell(_table, _column, _row, _title, _value, _bgcolor, _txtcolor) =>
//     _cellText = _title + "\n" + _value
//     table.cell(_table, _column, _row, _cellText, bgcolor=_bgcolor, text_color=_txtcolor)

// // Draw stats table
// var bgcolor = color.black
// if barstate.islastconfirmedhistory
//     if drawTester
//         dollarReturn = strategy.equity - strategy.initial_capital
//         f_fillCell(testTable, 0, 0, "Total Trades:", str.tostring(strategy.closedtrades), bgcolor, color.white)
//         f_fillCell(testTable, 0, 1, "Win Rate:", str.tostring(strategy.wintrades / strategy.closedtrades * 100, "##.##") + "%", bgcolor, color.white)
//         f_fillCell(testTable, 1, 0, "Equity:", "$" + str.tostring(strategy.equity, "###,###.##"), bgcolor, color.white)
//         f_fillCell(testTable, 1, 1, "Return:", str.tostring((strategy.netprofit / strategy.initial_capital) * 100, "##.##") + "%", dollarReturn > 0 ? color.green : color.red, color.white)

// // =============================================================================
// // END BACKTEST CODE
// // =============================================================================

Relationnée

Plus de