Stratégie de trading à rendement proportionnel élevé basée sur la structure des prix

RR SL TP ATH ATL
Date de création: 2025-02-18 15:42:01 Dernière modification: 2025-02-18 15:42:01
Copier: 1 Nombre de clics: 393
1
Suivre
1617
Abonnés

Stratégie de trading à rendement proportionnel élevé basée sur la structure des prix

Aperçu

Il s’agit d’une stratégie de négociation de rupture basée sur l’action purement de prix, conçue avec un rapport de rendement à risque élevé de 1:5. La stratégie consiste à négocier en identifiant les ruptures des niveaux de prix clés et en associant la structure dynamique du marché à la définition d’objectifs de stop-loss et de profit. La stratégie ne repose sur aucun indicateur technique et prend des décisions de négociation entièrement basées sur l’action des prix en temps réel.

Principe de stratégie

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

  1. Former des points de référence de rupture en identifiant les prix maximaux et minimaux à des périodes rétrospectives
  2. Ouverture d’une position en surplus lorsque le cours de clôture atteint un sommet antérieur, ouverture d’une position vide lorsqu’il atteint un sommet antérieur
  3. Basé sur la position d’arrêt dynamique pour les fluctuations récentes, les positions multiples sont arrêtées au plus bas et les positions vides au plus haut
  4. Position des objectifs de profit calculée sur la base d’un rapport de risque/rendement de 1:5
  5. Limiter le nombre maximum de transactions par jour afin d’éviter une survente Le processus de négociation est entièrement basé sur le comportement des prix, sans utiliser d’indicateurs techniques comme référence.

Avantages stratégiques

  1. Le comportement pur des prix des transactions pour éviter les perturbations causées par le retard des indicateurs
  2. Le ratio de rendement par risque est élevé et le gain potentiel par transaction est cinq fois plus élevé que le risque.
  3. paramètres de stop-loss dynamiques, adaptés à la structure du marché
  4. Signaux de transaction clairs et marquages visuels pour faciliter l’exécution des transactions
  5. Les paramètres sont hautement ajustables pour s’adapter à différents environnements de marché
  6. Contrôle des risques rigoureux, y compris une limite de transactions par jour

Risque stratégique

  1. Les faux signaux de rupture peuvent être fréquents dans les marchés en crise.
  2. Le rapport de risque/rendement élevé peut conduire à des gains relativement faibles
  3. Un rappel après une percée peut déclencher un arrêt de perte
  4. Les changements de volatilité du marché peuvent affecter la performance de la stratégie
  5. Il faut des mouvements de prix plus importants pour atteindre les objectifs de profit

Mesures d’atténuation :

  • Utilisation de la stratégie dans les marchés tendances
  • Évitez les transactions pendant les grandes annonces
  • La taille de position raisonnable
  • Paramètres de vérification et d’optimisation périodiques

Orientation de l’optimisation de la stratégie

  1. Ajout d’un filtre de tendance pour négocier uniquement dans la direction de la tendance dominante
  2. Ajout d’un mécanisme de confirmation de la livraison pour améliorer la fiabilité de la percée
  3. Le ratio de retour sur risque ajusté en fonction de la dynamique de la volatilité
  4. L’introduction d’analyses à cycles multiples améliore la précision des transactions
  5. Développer des mécanismes de stop-loss plus intelligents, tels que le suivi des stop-loss
  6. Ajout de fonctionnalités de reconnaissance de l’environnement du marché et adaptation des paramètres de stratégie

Résumer

Il s’agit d’une stratégie de négociation de comportement de prix rigoureusement conçue, logiquement claire. Conçue avec un rapport de rendement à risque élevé, la recherche de gains substantiels tout en contrôlant efficacement les risques. L’avantage de la stratégie réside dans la conduite pure des prix, la flexibilité des paramètres et la perfection du contrôle des risques. Bien qu’il existe un certain risque de fausse percée, la stabilité et la fiabilité de la stratégie peuvent être encore améliorées par l’orientation optimisée recommandée.

Code source de la stratégie
/*backtest
start: 2024-02-19 00:00:00
end: 2024-11-14 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Filtered Price Action Breakout", overlay=true)

// === INPUTS ===
lookback = input.int(20, title="Breakout Lookback Period", minval=5)
stopLookback = input.int(10, title="Stop Loss Lookback Period", minval=3)
rrMultiplier = input.float(5.0, title="Risk-to-Reward Multiplier", step=0.1)
maxTradesPerDay = input.int(5, title="Max Trades Per Day", minval=1)

// Ensure there are enough bars for calculations
inRange = bar_index >= lookback

// === CALCULATIONS ===
// Highest high and lowest low over the 'lookback' period
highestHigh = ta.highest(high, lookback)
lowestLow = ta.lowest(low, lookback)

// Define breakout conditions (using previous bar's level)
bullBreakout = ta.crossover(close, highestHigh[1])
bearBreakout = ta.crossunder(close, lowestLow[1])

// Store breakout signals in variables to prevent inconsistencies
bullBreakoutSignal = bullBreakout
bearBreakoutSignal = bearBreakout

// Determine stop levels based on recent swing lows/highs
longStop = ta.lowest(low, stopLookback)
shortStop = ta.highest(high, stopLookback)

// Track number of trades per day (fixing boolean condition issue)
newDay = ta.change(time("D")) != 0
todayTrades = ta.barssince(newDay)
tradeCount = 0
if newDay
    tradeCount := 0
else
    tradeCount := tradeCount + 1

// === STRATEGY LOGIC: ENTRY & EXIT ===
if bullBreakoutSignal and tradeCount < maxTradesPerDay
    entryPrice = close
    stopLevel = longStop
    risk = entryPrice - stopLevel
    if risk > 0
        target = entryPrice + rrMultiplier * risk
        strategy.entry("Long", strategy.long)
        strategy.exit("Long Exit", from_entry="Long", stop=stopLevel, limit=target)
        tradeCount := tradeCount + 1
        
        // // Draw Markups
        // label.new(bar_index, entryPrice, text="Long Entry", color=color.green, textcolor=color.white, size=size.small, style=label.style_label_down)
        // line.new(x1=bar_index, y1=entryPrice, x2=bar_index + 5, y2=entryPrice, color=color.green, width=2)
        // line.new(x1=bar_index, y1=stopLevel, x2=bar_index + 5, y2=stopLevel, color=color.red, width=2, style=line.style_dotted)
        // line.new(x1=bar_index, y1=target, x2=bar_index + 5, y2=target, color=color.blue, width=2, style=line.style_dashed)
        // label.new(bar_index, stopLevel, text="Stop Loss", color=color.red, textcolor=color.white, size=size.small, style=label.style_label_down)
        // label.new(bar_index, target, text="Target", color=color.blue, textcolor=color.white, size=size.small, style=label.style_label_up)

if bearBreakoutSignal and tradeCount < maxTradesPerDay
    entryPrice = close
    stopLevel = shortStop
    risk = stopLevel - entryPrice
    if risk > 0
        target = entryPrice - rrMultiplier * risk
        strategy.entry("Short", strategy.short)
        strategy.exit("Short Exit", from_entry="Short", stop=stopLevel, limit=target)
        tradeCount := tradeCount + 1
        
        // // Draw Markups
        // label.new(bar_index, entryPrice, text="Short Entry", color=color.red, textcolor=color.white, size=size.small, style=label.style_label_up)
        // line.new(x1=bar_index, y1=entryPrice, x2=bar_index + 5, y2=entryPrice, color=color.red, width=2)
        // line.new(x1=bar_index, y1=stopLevel, x2=bar_index + 5, y2=stopLevel, color=color.green, width=2, style=line.style_dotted)
        // line.new(x1=bar_index, y1=target, x2=bar_index + 5, y2=target, color=color.blue, width=2, style=line.style_dashed)
        // label.new(bar_index, stopLevel, text="Stop Loss", color=color.green, textcolor=color.white, size=size.small, style=label.style_label_up)
        // label.new(bar_index, target, text="Target", color=color.blue, textcolor=color.white, size=size.small, style=label.style_label_down)

// === PLOTTING ===
plot(highestHigh, color=color.green, title="Highest High (Breakout Level)")
plot(lowestLow, color=color.red, title="Lowest Low (Breakout Level)")