Stratégie de trading quantitative révolutionnaire avec triple écart type et bande de Bollinger combinée à une optimisation de la moyenne mobile sur 100 jours

MA BB SMA SD
Date de création: 2024-12-13 11:20:13 Dernière modification: 2024-12-13 11:20:13
Copier: 3 Nombre de clics: 483
1
Suivre
1617
Abonnés

Stratégie de trading quantitative révolutionnaire avec triple écart type et bande de Bollinger combinée à une optimisation de la moyenne mobile sur 100 jours

Aperçu

Cette stratégie est une stratégie de trading quantitatif basée sur une rupture de la ceinture de Brin, utilisant une courbe supérieure de 3 fois l’écart standard et une courbe inférieure de 1 fois l’écart standard, tout en combinant la moyenne mobile à 100 jours comme courbe intermédiaire. La stratégie est principalement conçue pour capturer les tendances à long terme en détectant les ruptures de prix et en utilisant les ruptures de prix comme signal d’arrêt.

Principe de stratégie

Le principe central de la stratégie est basé sur les caractéristiques statistiques de la ceinture de Brin. L’écart standard de 3 fois est utilisé dans la voie supérieure, ce qui signifie que la probabilité de rupture de la voie supérieure n’est que de 0,15% dans le cas d’une distribution normale, de sorte que la formation d’une tendance significative est souvent annoncée lorsque la rupture se produit.

Avantages stratégiques

  1. La capacité à saisir les tendances est élevée: avec des réglages à 3 fois le décalage standard, il est possible de saisir efficacement les opportunités de rupture de tendances importantes.
  2. Le contrôle des risques est raisonnable: un écart standard de 1 fois est utilisé comme ligne de stop-loss et le contrôle des risques est plus conservateur.
  3. Les paramètres sont très réglables: les périodes de variation standard et de moyenne mobile peuvent être ajustées en fonction des différentes caractéristiques du marché.
  4. Systématique: logique stratégique claire, fonction de rétroaction parfaite, performance statistique précise.
  5. Large adaptabilité: peut être appliqué dans plusieurs domaines tels que le marché boursier et le marché des crypto-monnaies.

Risque stratégique

  1. Risque de fausse percée: le marché peut se retourner rapidement après une percée de courte durée, ce qui conduit à de faux signaux.
  2. Un retrait plus important: un retrait plus important peut survenir dans un marché très volatil.
  3. Risque de retard: la ligne moyenne de 100 jours présente un certain retard et risque de manquer des événements rapides.
  4. Dépendance aux conditions du marché: les entrées et les sorties peuvent être fréquentes dans les marchés instables, ce qui entraîne des coûts de transaction excessifs.

Orientation de l’optimisation de la stratégie

  1. Introduction de la confirmation de la quantité de transaction: un mécanisme de confirmation de la rupture de la quantité de transaction peut être ajouté pour améliorer la fiabilité du signal.
  2. Optimisation des mécanismes d’arrêt des pertes: l’introduction d’un arrêt de suivi ou d’un arrêt ATR dynamique peut être envisagée pour améliorer la flexibilité de l’arrêt des pertes.
  3. Ajout de filtres de tendance: vous pouvez ajouter des indicateurs de tendance à long terme et ne négocier que dans la direction de la tendance principale.
  4. Optimisation de la gestion des positions: la taille des positions peut être ajustée en fonction de la dynamique de la force de rupture.
  5. Ajout d’un filtre temporel permettant d’éviter certaines périodes de marché.

Résumer

Il s’agit d’une stratégie de suivi de tendance conçue de manière rationnelle et logique. Grâce aux caractéristiques statistiques des bandes de blur et aux caractéristiques de suivi de tendance des moyennes mobiles, il est possible de capturer efficacement des opportunités de percée importantes sur le marché. Bien qu’il existe un certain risque de retrait, il a toujours une bonne valeur pratique grâce à un réglage et un contrôle des risques raisonnables.

Code source de la stratégie
/*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
// // =============================================================================