Stratégie de trading multi-périodes Advanced Range Breakout

HTF SMA PIN BAR RSI EMA VOL
Date de création: 2025-02-18 18:08:09 Dernière modification: 2025-02-18 18:08:09
Copier: 0 Nombre de clics: 530
1
Suivre
1617
Abonnés

Stratégie de trading multi-périodes Advanced Range Breakout

Aperçu

Il s’agit d’une stratégie de négociation à plusieurs périodes de temps basée sur la théorie des intervalles de cartographie. La stratégie identifie les opportunités de négociation potentielles en analysant principalement les formes de cartographie et les intervalles de prix des périodes de temps plus élevées. La stratégie intègre un filtre de volume de transaction et un mécanisme d’arrêt dynamique pour capturer les opportunités de tendance en franchissant les hauts et les bas de la période précédente.

Principe de stratégie

Le cœur de la stratégie est de surveiller les cas de rupture de la fourchette précédente sur une période de temps plus longue (de 4 heures par défaut).

  1. La stratégie continue de suivre et de stocker les hauts et les bas des deux premières lignes K de haute période
  2. Un signal de couverture est formé lorsque le prix de clôture d’une ligne K actuelle est inférieur au prix de clôture précédent et que la ligne K actuelle est à un niveau élevé.
  3. Un signal de multiplication est formé lorsque le prix d’achèvement d’une ligne K actuelle est supérieur au prix d’achèvement d’une ligne K précédente et que l’innovation de la ligne K actuelle est faible.
  4. Le prix d’entrée est fixé à la position haute ou basse qui déclenche la ligne K.
  5. Objectif de profit fixé à la hauteur ou à la basse correspondante de la période précédente
  6. Distance d’arrêt ajustée dynamiquement en fonction de la taille de l’intervalle

Avantages stratégiques

  1. L’analyse des périodes multiples fournit des signaux plus fiables
  2. Paramètres de stop-loss dynamiques qui s’adaptent aux fluctuations du marché
  3. Un mécanisme de filtrage de volume de transaction en option pour augmenter la confirmation des transactions
  4. Une interface visuelle claire, comprenant des marqueurs pour le prix de déclenchement, le prix de cible et le prix de stop
  5. La logique de la stratégie est simple, claire, facile à comprendre et à mettre en œuvre.
  6. Adapté à une variété de types de transactions et de conditions de marché

Risque stratégique

  1. Les faux signaux de rupture peuvent être fréquents dans les marchés en période de turbulence
  2. Un grand multiple de stop-loss peut entraîner des pertes excessives à la fois.
  3. La confiance dans les données historiques sur les prix peut être retardée dans un environnement de marché en évolution rapide
  4. L’impact des facteurs fondamentaux n’est pas pris en compte
  5. La mise en œuvre efficace peut être difficile dans des marchés moins liquides

Orientation de l’optimisation de la stratégie

  1. Introduction de filtres de tendance tels que les moyennes mobiles ou l’indicateur ADX
  2. Ajouter plus de critères de jugement de marché
  3. Optimiser la stratégie de stop loss et envisager l’introduction de stop loss mobile
  4. Ajouter un module de gestion de volume
  5. Considérez d’ajouter plus d’analyses de co-opération à des périodes de temps
  6. Introduction d’indicateurs de volatilité pour optimiser le jugement des intervalles

Résumer

Il s’agit d’une stratégie de négociation à plusieurs périodes de temps structurée et logiquement claire. La recherche d’opportunités potentielles de tendance est effectuée en analysant le comportement des prix à des périodes de temps plus élevées, tout en intégrant une gestion des risques et un mécanisme de filtrage. Le principal avantage de la stratégie réside dans son adaptabilité et son extensibilité, qui permet de s’adapter à différents environnements de marché par un simple ajustement des paramètres.

Code source de la stratégie
/*backtest
start: 2025-01-18 00:00:00
end: 2025-02-17 00:00:00
period: 6h
basePeriod: 6h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Candle Range Theory Strategy", overlay=true)

// Input parameters
var string HTF = input.timeframe("240", "Higher Timeframe (Minutes)")  // 4H default
var float stopLossMultiplier = input.float(1.5, "Stop Loss Multiplier", minval=0.5)
var bool useVolFilter = input.bool(false, "Use Volume Filter")
var float volThreshold = input.float(1.5, "Volume Threshold Multiplier", minval=1.0)

// Function to get higher timeframe data
getHtfData(src) =>
    request.security(syminfo.tickerid, HTF, src)

// Calculate volume condition once per bar
var bool volCondition = true
if useVolFilter
    float vol = getHtfData(volume)
    float avgVol = ta.sma(vol, 20)
    volCondition := vol > avgVol * volThreshold

// Get HTF candle data
htf_open = getHtfData(open)
htf_high = getHtfData(high)
htf_low = getHtfData(low)
htf_close = getHtfData(close)

// Store previous candle data
var float h1 = na  // High of Candle 1
var float l1 = na  // Low of Candle 1
var float h2 = na  // High of Candle 2
var float l2 = na  // Low of Candle 2
var float prevClose = na

// Track setup conditions
var string setupType = na
var float triggerLevel = na
var float targetLevel = na
var float stopLevel = na

// Update candle data - fixed time function usage
var bool isNewBar = false
isNewBar := ta.change(request.security(syminfo.tickerid, HTF, time)) != 0

if isNewBar
    h1 := h2
    l1 := l2
    h2 := htf_high[1]
    l2 := htf_low[1]
    prevClose := htf_close[1]

    // Identify setup conditions
    if not na(h1) and not na(h2) and not na(prevClose)
        if (h2 > h1 and prevClose < h1)  // Short setup
            setupType := "short"
            triggerLevel := l2
            targetLevel := l1
            stopLevel := h2 + (h2 - l1) * stopLossMultiplier
        else if (l2 < l1 and prevClose > l1)  // Long setup
            setupType := "long"
            triggerLevel := h2
            targetLevel := h1
            stopLevel := l2 - (h1 - l2) * stopLossMultiplier
        else
            setupType := na
            triggerLevel := na
            targetLevel := na
            stopLevel := na

// Entry conditions using pre-calculated volume condition - fixed line breaks
bool longCondition = setupType == "long" and high > triggerLevel and not na(triggerLevel) and volCondition
bool shortCondition = setupType == "short" and low < triggerLevel and not na(triggerLevel) and volCondition

// Execute trades
if longCondition
    strategy.entry("Long", strategy.long, comment="Long Entry")
    strategy.exit("Long Exit", "Long", limit=targetLevel, stop=stopLevel)

if shortCondition
    strategy.entry("Short", strategy.short, comment="Short Entry")
    strategy.exit("Short Exit", "Short", limit=targetLevel, stop=stopLevel)

// Plot signals - fixed plotshape parameters
plotshape(series=longCondition, title="Long Signal", location=location.belowbar, color=color.green, style=shape.triangleup)
plotshape(series=shortCondition, title="Short Signal", location=location.abovebar, color=color.red, style=shape.triangledown)

plot(triggerLevel, "Trigger Level", color=color.yellow, style=plot.style_circles)
plot(targetLevel, "Target Level", color=color.blue, style=plot.style_circles)
plot(stopLevel, "Stop Level", color=color.red, style=plot.style_circles)