Stratégie de trading intelligente multi-conditionnelle avec structure de rupture et confirmation du volume

BOS SMA ATR TP SL
Date de création: 2024-12-20 16:15:43 Dernière modification: 2024-12-20 16:15:43
Copier: 0 Nombre de clics: 442
1
Suivre
1617
Abonnés

Stratégie de trading intelligente multi-conditionnelle avec structure de rupture et confirmation du volume

Aperçu

Il s’agit d’une stratégie de négociation intelligente basée sur la structure de rupture (BOS) et la confirmation du volume de transaction. La stratégie utilise un mécanisme de vérification conditionnelle multiple, comprenant des exigences de confirmation continue et des paramètres de stop-loss dynamiques, pour améliorer la fiabilité des transactions et la capacité de contrôle des risques.

Principe de stratégie

La logique fondamentale de la stratégie comprend les éléments clés suivants :

  1. Identifier les hauts et les bas structurels en calculant les plus hauts et les plus bas de la période donnée
  2. Calculer une moyenne mobile pour déterminer si le volume de transactions actuel a été considérablement augmenté
  3. Nombre cumulé de confirmations multiples lorsque les prix ont dépassé les sommets antérieurs et que le volume de transactions a augmenté
  4. Nombre cumulé de confirmations à vide lorsque les prix ont chuté au-dessus des niveaux antérieurs et que le volume de transactions a augmenté
  5. Le signal de transaction n’est déclenché qu’après avoir atteint le nombre de confirmations spécifié.
  6. Le prix de stop-loss basé sur le pourcentage après la constitution de la position

Avantages stratégiques

  1. Le mécanisme de vérification à conditions multiples améliore la fiabilité des signaux de transaction
  2. La combinaison des indicateurs de volume de transaction pour éviter les erreurs de jugement liées aux fausses percées
  3. Utilisation d’un mécanisme de confirmation en continu pour réduire la fréquence des opérations et améliorer le taux de réussite
  4. Un arrêt-stop-loss dynamique qui ajuste automatiquement la position de sortie en fonction du prix d’entrée
  5. La logique de la stratégie est claire, les paramètres sont réglables, et l’adaptation est bonne.

Risque stratégique

  1. Les faux-bribes peuvent être fréquents dans les marchés en crise, entraînant des arrêts de pertes en série.
  2. Les stop-loss pourraient ne pas être suffisamment rapides en cas de forte volatilité
  3. Le mécanisme de confirmation peut entraîner des retards d’entrée et la perte du meilleur prix.
  4. Le critère de jugement de la transaction est fixe et ne s’adapte pas bien aux changements de la situation du marché. Solution:
  • L’introduction d’indicateurs de volatilité du marché et de paramètres d’ajustement dynamique
  • Augmentation des filtres de tendance pour réduire les fausses signaux de choc
  • Optimisation de la logique d’arrêt des pertes et flexibilité de l’arrêt des pertes
  • Conception d’une méthode de calcul du seuil de rendement adapté

Orientation de l’optimisation de la stratégie

  1. Augmentation des indicateurs de jugement de tendance, tels que les systèmes de moyennes mobiles, qui ne négocient que dans la direction de la tendance
  2. Introduction de l’indicateur ATR pour ajuster dynamiquement la distance de freinage et améliorer la flexibilité du contrôle du vent
  3. Mécanisme de déduction de la dépréciation de la quantité de livraison adaptée aux fluctuations de conception
  4. Ajouter un filtre temporel pour éviter les périodes à risque
  5. Optimiser les mécanismes de confirmation pour améliorer l’efficacité des admissions tout en garantissant la fiabilité

Résumer

Il s’agit d’un système de stratégie qui combine la théorie classique de l’analyse technique et les méthodes modernes de négociation quantitative. La stratégie a une bonne stabilité et fiabilité grâce à la vérification de conditions multiples et à un contrôle rigoureux des risques. Bien qu’il existe des aspects qui doivent être optimisés, la conception globale du cadre est rationnelle et présente une bonne valeur d’application pratique.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BOS and Volume Strategy with Confirmation", overlay=true)

// Parameters
swingLength = input.int(20, title="Swing Length", minval=1)
volumeMultiplier = input.float(1.1, title="Volume Multiplier", step=0.1)
volumeSMA_length = input.int(10, title="Volume SMA Length", minval=1)
takeProfitPercentage = input.float(0.02, title="Take Profit Percentage", step=0.01)
stopLossPercentage = input.float(0.15, title="Stop Loss Percentage", step=0.01)  // New parameter for stop loss
atrLength = input.int(14, title="ATR Length")
confirmationBars = input.int(2, title="Confirmation Bars", minval=1)

// Calculate Swing Highs and Lows
swingHigh = ta.highest(high, swingLength)[1]
swingLow = ta.lowest(low, swingLength)[1]

// Calculate Volume Moving Average
volumeSMA = ta.sma(volume, volumeSMA_length)
highVolume = volume > (volumeSMA * volumeMultiplier)

// Break of Structure Detection with Confirmation
var int bullishCount = 0
var int bearishCount = 0

if (close > swingHigh and highVolume)
    bullishCount := bullishCount + 1
    bearishCount := 0
else if (close < swingLow and highVolume)
    bearishCount := bearishCount + 1
    bullishCount := 0
else
    bullishCount := 0
    bearishCount := 0

bullishBOSConfirmed = (bullishCount >= confirmationBars)
bearishBOSConfirmed = (bearishCount >= confirmationBars)

// Entry and Exit Conditions
var float entryPrice = na  // Declare entryPrice as a variable

if (bullishBOSConfirmed and strategy.position_size <= 0)
    entryPrice := close  // Use ':=' for assignment
    strategy.entry("Long", strategy.long)

if (strategy.position_size > 0)
    // Calculate stop loss price
    stopLossPrice = entryPrice * (1 - stopLossPercentage)
    strategy.exit("Take Profit Long", from_entry="Long", limit=entryPrice * (1 + takeProfitPercentage), stop=stopLossPrice)

if (bearishBOSConfirmed and strategy.position_size >= 0)
    entryPrice := close  // Use ':=' for assignment
    strategy.entry("Short", strategy.short)

if (strategy.position_size < 0)
    // Calculate stop loss price
    stopLossPrice = entryPrice * (1 + stopLossPercentage)
    strategy.exit("Take Profit Short", from_entry="Short", limit=entryPrice * (1 - takeProfitPercentage), stop=stopLossPrice)

// Plot Swing Highs and Lows for Visualization
plot(swingHigh, title="Swing High", color=color.green, linewidth=1)
plot(swingLow, title="Swing Low", color=color.red, linewidth=1)