Stratégie de suivi de cassure de l'action des prix du double MACD

MACD ATR
Date de création: 2024-11-25 11:15:50 Dernière modification: 2024-11-25 11:15:50
Copier: 1 Nombre de clics: 532
1
Suivre
1617
Abonnés

Stratégie de suivi de cassure de l’action des prix du double MACD

Aperçu

Il s’agit d’une stratégie de négociation combinant un double MACD et une analyse du comportement des prix. La stratégie consiste à déterminer les tendances du marché en observant les variations de couleur du double MACD sur des cycles de 15 minutes, tout en recherchant des formes de fortes tendances sur des cycles de 5 minutes et en confirmant des signaux de rupture sur des cycles de 1 minute.

Principe de stratégie

La stratégie utilise deux ensembles d’indicateurs MACD de paramètres différents ((34/144/9 et 100/200/50) pour confirmer une tendance du marché. Lorsque les deux graphiques verticaux MACD affichent la même tendance en couleurs, le système recherche sur le graphique de 5 minutes une forme de crête forte, caractérisée par une entité 1,5 fois plus grande que la ligne d’ombre. Une fois la crête forte trouvée, le système surveille le graphique de 1 minute pour voir s’il y a une rupture.

Avantages stratégiques

  1. Analyse multi-périodes: combinaison de trois périodes de temps de 15 minutes, 5 minutes et 1 minute pour améliorer la fiabilité du signal
  2. Confirmation de la tendance: utilisation de la double vérification MACD pour réduire les faux signaux
  3. Analyse du comportement des prix: identifier les niveaux de prix critiques à travers les tendances de forte hausse
  4. Gestion dynamique des risques: arrêt automatique des pertes et suivi des arrêts basé sur l’ATR
  5. Filtrage des signaux: conditions d’entrée strictes pour réduire les erreurs
  6. Automatisation élevée: transactions entièrement automatisées et moins d’interventions humaines

Risque stratégique

  1. Risque d’inversion de tendance: une fausse percée dans un marché très volatil
  2. Risque de glissement: les transactions à haute fréquence sur un cycle de 1 minute peuvent être affectées par des glissements
  3. Risque de survente: les signaux fréquents peuvent conduire à une survente
  4. Dépendance aux conditions du marché: une mauvaise performance dans un marché en crise Mesures d’atténuation :
  • Ajouter un filtre de tendance
  • Définition du seuil de fluctuation minimale
  • Ajout d’une limite de transactions
  • Introduction d’un mécanisme d’identification de l’environnement de marché

Orientation de l’optimisation de la stratégie

  1. Optimisation des paramètres MACD: les paramètres MACD peuvent être ajustés en fonction des différentes caractéristiques du marché
  2. Optimisation des arrêts de perte: envisagez d’ajouter des arrêts de perte dynamiques basés sur la volatilité
  3. Filtrage des heures de transaction: ajout d’une limite de fenêtre de temps de transaction
  4. Gestion des positions: mise en place d’un mécanisme de construction et de sortie en lots
  5. Filtrage de l’environnement des marchés: ajout d’indicateurs de force de tendance
  6. Contrôle des retraits: mise en place d’un mécanisme de contrôle des risques basé sur la courbe des droits et intérêts

Résumer

Il s’agit d’un système stratégique intégrant l’analyse technique et la gestion des risques. Il s’agit d’un système stratégique intégrant l’analyse technique et la gestion des risques. Il s’agit d’un système stratégique intégrant l’analyse technique et la gestion des risques.

Code source de la stratégie
/*backtest
start: 2024-01-01 00:00:00
end: 2024-11-24 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
strategy("Price Action + Double MACD Strategy with ATR Trailing", overlay=true)

// Inputs for MACD
fastLength1 = input.int(34, title="First MACD Fast Length")
slowLength1 = input.int(144, title="First MACD Slow Length")
signalLength1 = input.int(9, title="First MACD Signal Length")

fastLength2 = input.int(100, title="Second MACD Fast Length")
slowLength2 = input.int(200, title="Second MACD Slow Length")
signalLength2 = input.int(50, title="Second MACD Signal Length")

// Input for ATR Trailing
atrMultiplier = input.float(1.5, title="ATR Multiplier for Trailing")

// Inputs for Stop Loss
atrStopMultiplier = input.float(1.0, title="ATR Multiplier for Stop Loss")

// MACD Calculations
[macdLine1, signalLine1, macdHist1] = ta.macd(close, fastLength1, slowLength1, signalLength1)
[macdLine2, signalLine2, macdHist2] = ta.macd(close, fastLength2, slowLength2, signalLength2)

// Get 15M MACD histogram colors
macdHist1Color = request.security(syminfo.tickerid, "15", (macdHist1 >= 0 ? (macdHist1[1] < macdHist1 ? #26A69A : #B2DFDB) : (macdHist1[1] < macdHist1 ? #FFCDD2 : #FF5252)))
macdHist2Color = request.security(syminfo.tickerid, "15", (macdHist2 >= 0 ? (macdHist2[1] < macdHist2 ? #26A69A : #B2DFDB) : (macdHist2[1] < macdHist2 ? #FFCDD2 : #FF5252)))

// Check MACD color conditions
isMacdUptrend = macdHist1Color == #26A69A and macdHist2Color == #26A69A
isMacdDowntrend = macdHist1Color == #FF5252 and macdHist2Color == #FF5252

// Function to detect strong 5M candles
isStrongCandle(open, close, high, low) =>
    body = math.abs(close - open)
    tail = math.abs(high - low) - body
    body > tail * 1.5  // Ensure body is larger than the tail

// Variables to track state
var float fiveMinuteHigh = na
var float fiveMinuteLow = na
var bool tradeExecuted = false
var bool breakoutDetected = false
var float entryPrice = na
var float stopLossPrice = na
var float longTakeProfit = na
var float shortTakeProfit = na

// Check for new 15M candle and reset flags
if ta.change(time("15"))
    tradeExecuted := false      // Reset trade execution flag
    breakoutDetected := false  // Reset breakout detection
    if isStrongCandle(open[1], close[1], high[1], low[1])
        fiveMinuteHigh := high[1]
        fiveMinuteLow := low[1]
    else
        fiveMinuteHigh := na
        fiveMinuteLow := na

// Get 1-minute close prices
close1m = request.security(syminfo.tickerid, "5", close)

// Ensure valid breakout direction and avoid double breakouts
if not na(fiveMinuteHigh) and not breakoutDetected
    for i = 1 to 3
        if close1m[i] > fiveMinuteHigh and not tradeExecuted  // 1M breakout check with close
            breakoutDetected := true
            if isMacdUptrend 
                // Open Long trade
                entryPrice := close
                stopLossPrice := close - (atrStopMultiplier * ta.atr(14))  // ATR-based stop loss
                longTakeProfit := close + (atrMultiplier * ta.atr(14)) // Initialize take profit

                strategy.entry("Long", strategy.long)
                tradeExecuted := true
            break // Exit the loop after detecting a breakout

        else if close1m[i] < fiveMinuteLow and not tradeExecuted  // 1M breakout check with close
            breakoutDetected := true
            if isMacdDowntrend
                // Open Short trade
                entryPrice := close
                stopLossPrice := close + (atrStopMultiplier * ta.atr(14))  // ATR-based stop loss
                shortTakeProfit := close - (atrMultiplier * ta.atr(14)) // Initialize take profit

                strategy.entry("Short", strategy.short)
                tradeExecuted := true
            break // Exit the loop after detecting a breakout

// Update trailing take-profit dynamically
if tradeExecuted and strategy.position_size > 0  // Long trade
    longTakeProfit := math.max(longTakeProfit, close + (atrMultiplier * ta.atr(14)))
    strategy.exit("Long TP/SL", "Long", stop=stopLossPrice, limit=longTakeProfit)

else if tradeExecuted and strategy.position_size < 0  // Short trade
    shortTakeProfit := math.min(shortTakeProfit, close - (atrMultiplier * ta.atr(14)))
    strategy.exit("Short TP/SL", "Short", stop=stopLossPrice, limit=shortTakeProfit)

// Reset trade state when position is closed
if strategy.position_size == 0
    tradeExecuted := false
    entryPrice := na
    longTakeProfit := na
    shortTakeProfit := na