Stratégie de dynamique entre les cycles contenus

Auteur:ChaoZhang est là., Date: 2023-09-20 14:59:37
Les étiquettes:

Résumé

L'idée de base de cette stratégie est de déterminer la direction de la tendance en utilisant le motif de chandelier contenu entre les cycles et de l'utiliser comme signal d'entrée.

La logique de la stratégie

  1. La logique spécifique est la suivante: le haut de la bougie actuelle est inférieur au haut de la bougie précédente, et le bas de la bougie actuelle est supérieur au bas de la bougie précédente.

  2. Déterminez si la bougie précédente était haussière ou baissière. Si la fermeture était plus élevée que l'ouverture, elle était haussière. Si la fermeture était inférieure à l'ouverture, elle était baissière.

  3. Si la bougie précédente était haussière et que le modèle contenu se produit, placez un ordre d'arrêt d'achat au plus élevé de la bougie précédente plus 10% de sa plage.

  4. Si la bougie précédente était baissière et que le schéma contenu se produit, placez un ordre de vente stop au plus bas de la bougie précédente moins 10% de sa plage.

  5. Une fois que l'ordre stop est déclenché et que la position est ouverte, définissez l'ordre stop loss et take profit.

  6. Si un autre motif de barre interne se forme, fermez d'abord les positions existantes et placez ensuite de nouveaux ordres en attente.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Il utilise la logique inhérente aux chandeliers et fournit un calendrier d'entrée précis.

  2. Les règles sont simples et faciles à suivre pour le trading réel.

  3. L'arrêt des pertes et la prise de profit basée sur la fourchette précédente des bougies aident à contrôler le risque.

  4. De nouvelles commandes en attente sont passées à chaque fois qu'un modèle qualifié apparaît, ce qui nous permet de suivre la nouvelle tendance.

Analyse des risques

Il y a aussi des risques:

  1. Le schéma contenu n'entraîne pas toujours un renversement de tendance ou une accélération.

  2. La distance d'arrêt des pertes peut être trop petite pour résister à de grandes fluctuations du marché.

  3. L'objectif de prise de bénéfices peut être trop large, ce qui empêche de réaliser des bénéfices en temps opportun.

  4. La stratégie repose davantage sur les tendances des marchés, le potentiel de profit étant limité pendant la consolidation.

  5. La fréquence élevée des transactions entraîne des coûts de transaction élevés.

Les solutions:

  1. Ajouter d'autres indicateurs pour confirmer les signaux et réduire les faux signaux.

  2. Élargir légèrement le stop loss, mais pas plus de 50% de la plage précédente.

  3. Réduire l'objectif de prise de profit à environ 50% de la fourchette précédente.

  4. Optimiser la gestion des capitaux, réduire la taille des positions individuelles pour différents marchés.

  5. Réduire les critères d'entrée afin de réduire la fréquence des transactions.

Directions d'optimisation

Quelques façons d'optimiser la stratégie:

  1. Ajoutez un indicateur de tendance comme le MACD pour déterminer la direction de la tendance, en évitant les sautes de courant pendant la consolidation.

  2. Utilisez des techniques de stop loss plus avancées comme le stop trailing ou le stop loss pour la protection des bénéfices.

  3. Testez différents taux de stop loss et de profit pour trouver les paramètres optimaux.

  4. Ajoutez une logique de réentrée pour capturer la tendance à nouveau après le stop loss.

  5. Optimiser la taille des positions en fonction de la volatilité du marché.

  6. Optimiser la gestion des capitaux, par exemple la taille des positions fractionnaires fixes.

  7. Testez la stratégie sur différents produits et délais.

Conclusion

En résumé, il s'agit d'une stratégie qui utilise le modèle contenu entre les cycles pour déterminer les points tournants de la tendance et placer des ordres en attente pour capturer les renversements de tendance. Elle présente les avantages de signaux d'entrée clairs, de règles simples et de risques contrôlables, mais présente également des risques de faux signaux et une marge d'optimisation. Nous pouvons améliorer encore sa stabilité et sa rentabilité en combinant des filtres de tendance, en optimisant les arrêts, en ajustant la taille des positions, etc. Elle est plus adaptée aux marchés en tendance et doit être optimisée et testée pour différentes conditions de marché avant son utilisation réelle pour maximiser son efficacité.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

// Inside Bar Momentum Strategy
// As defined on Babypips.com
// https://www.babypips.com/trading/forex-inside-bar-20170113

// strategy("Babypips: Inside Bar Momentum Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=5)

From_Year  = input(defval = 2018, title = "From Year")
From_Month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
From_Day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
To_Year    = input(defval = 9999, title = "To Year")
To_Month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
To_Day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
Start  = timestamp(From_Year, From_Month, From_Day, 00, 00)  // backtest start window
Finish = timestamp(To_Year, To_Month, To_Day, 23, 59)        // backtest finish window
Window = true

Stop_Buy_Perc  = input(10, "Stop Buy Order Percentage From Previous Candle's Range")/100
Stop_Loss_Perc = input(20, "Stop Loss Distance from High/Low of Previous Candle")/100
Take_Prof_Perc = input(80, "Take Profit Distance from High/Low of Previous Candle")/100

Risk = input(2, "Percentage Of EQUITY to risk per trade", step=0.1, minval=0, maxval=100)/100

Inside_Bar = high[1] > high[0] and low[1] < low[0]
Prev_Range = high[1] - low[1]
Bullish = open[1] < close[1]
Bearish = open[1] > close[1]

// Get Key Levels 
Long_Stop_Buy_Level   = high[1] + (Prev_Range * Stop_Buy_Perc)
Short_Stop_Buy_Level  = low[1]  - (Prev_Range * Stop_Buy_Perc)
Long_Stop_Loss_Level  = high[1] - (Prev_Range * Stop_Loss_Perc)
Short_Stop_Loss_Level = low[1]  + (Prev_Range * Stop_Loss_Perc)
Long_Take_Prof_Level  = high[1] + (Prev_Range * Take_Prof_Perc)
Short_Take_Prof_Level = low[1]  - (Prev_Range * Take_Prof_Perc)

// Position Sizing
long_qty = floor((strategy.equity * Risk) / (Long_Stop_Buy_Level - Long_Stop_Loss_Level))
short_qty = floor((strategy.equity * Risk) / (Short_Stop_Loss_Level - Short_Stop_Buy_Level))

// -------------------------- LONG CONDITIONS --------------------------------//
// The first candlestick must be bullish (green or white) and if the second 
// candlestick is completely contained by the first, set a buy stop order at 
// the first candle’s high plus 10% of its range (high minus low).

// Place the stop loss at the first candle’s high minus 20% of its range 
// and set the target at the first candle’s high plus 80% of its range

// If another inside bar pattern forms, the current position should be closed 
// or the pending buy/sell order must be canceled and entry orders must be 
// updated to the latest candles.

Long_Condition = Window and Inside_Bar and Bullish
if (Long_Condition)
    // Incase we still have a buy stop order in the market
    strategy.cancel_all()
    // Close any existing positions according to the rules
    strategy.close_all()
    strategy.entry("Bullish IB", strategy.long, stop=Long_Stop_Buy_Level)
    strategy.exit("Bullish Exit","Bullish IB", stop=Long_Stop_Loss_Level, limit=Long_Take_Prof_Level)
    
// -------------------------- SHORT CONDITIONS -------------------------------//
// The first candlestick must be bearish (red or black) and if the second 
// candlestick is completely contained by the first, set a sell stop order at 
// the first candle’s low minus 10% of its range (high minus low).

// Place the stop loss at the first candle’s low plus 20% of its range and 
// set the target at the first candle’s low minus 80% of its range.

// If another inside bar pattern forms, the current position should be closed 
// or the pending buy/sell order must be canceled and entry orders must be 
// updated to the latest candles.

Short_Condition = Window and Inside_Bar and Bearish
if (Short_Condition)
    // Incase we still have a buy stop order in the market
    strategy.cancel_all()
    // Close any existing positions according to the rules
    strategy.close_all()
    strategy.entry("Bearish IB", strategy.short, stop=Short_Stop_Buy_Level)
    strategy.exit("Bearish Exit","Bearish IB", stop=Short_Stop_Loss_Level, limit=Short_Take_Prof_Level)
    
// ----------------------------- PLOTTING ------------------------------------//
plotshape(Inside_Bar, style=shape.arrowdown, location=location.abovebar, color=purple)


Plus de