Stratégie de jugement de tendance de volume et de prix améliorée

MACD ATR MA EMA SMA
Date de création: 2025-01-10 15:40:37 Dernière modification: 2025-01-10 15:40:37
Copier: 0 Nombre de clics: 346
1
Suivre
1617
Abonnés

Stratégie de jugement de tendance de volume et de prix améliorée

Aperçu

Cette stratégie est un système de trading basé sur l’indicateur MACD et la relation entre le volume et le prix. Elle détermine le point de retournement de la tendance du marché en observant les changements de forme de l’histogramme MACD. La stratégie adopte un mécanisme dynamique de stop-profit et de stop-loss et utilise l’indicateur ATR pour s’adapter aux fluctuations du marché et contrôler efficacement les risques.

Principe de stratégie

La logique principale de la stratégie repose sur les changements profonds et superficiels en colonnes de l’indicateur MACD, combinés au système de moyenne mobile double EMA et SMA. Lorsque l’histogramme MACD passe du sombre au clair, cela indique un changement de dynamique et le système se négociera à ce moment-là. Spécifiquement:

  1. Calculez la valeur MACD en utilisant les moyennes mobiles rapides (12) et lentes (26)
  2. MACD lissé par une ligne de signal de 9 périodes
  3. Observez les changements de couleur de l’histogramme MACD
  4. Combinez l’indicateur ATR sur 14 périodes pour définir un take profit dynamique et un stop loss

Avantages stratégiques

  1. La combinaison d’indicateurs est scientifique et raisonnable, le MACD peut capturer efficacement les tendances et l’ATR peut s’adapter aux fluctuations
  2. Les paramètres stop-profit et stop-loss sont flexibles et peuvent être ajustés en fonction des différentes caractéristiques du marché via plusieurs paramètres
  3. Le signal de trading est clair et le temps d’entrée peut être évalué intuitivement grâce au changement de couleur du graphique à barres
  4. En prenant en compte les transactions bidirectionnelles longues et courtes, augmentant l’applicabilité de la stratégie et les opportunités de profit

Risque stratégique

  1. Le MACD en tant qu’indicateur retardé peut manquer le meilleur point d’entrée pour les mouvements rapides du marché
  2. De faux signaux peuvent être générés dans un marché volatil, entraînant des transactions fréquentes.
  3. Un réglage incorrect du multiple ATR peut entraîner un stop loss trop lâche ou trop serré
  4. Il est nécessaire de mettre en place une gestion de fonds raisonnable pour éviter des pertes uniques excessives

Orientation de l’optimisation de la stratégie

  1. Introduction de signaux de confirmation de volume pour améliorer la fiabilité du signal
  2. Filtre de tendance ajouté pour réduire les faux signaux sur les marchés volatils
  3. Optimisez les multiples stop-profit et stop-loss, qui peuvent être ajustés dynamiquement en fonction de différentes périodes de temps
  4. Ajout d’un filtrage de volatilité pour réduire la fréquence des transactions pendant les périodes de forte volatilité
  5. Envisagez d’introduire des filtres temporels pour éviter de trader pendant les périodes défavorables

Résumer

Il s’agit d’une stratégie complète qui combine l’indicateur d’analyse technique classique MACD avec des méthodes modernes de contrôle des risques. Capturez le changement de dynamique du marché en observant les changements dans la forme de l’histogramme MACD et utilisez l’ATR pour un contrôle dynamique des risques. La stratégie est raisonnablement conçue, la logique de fonctionnement est claire et elle présente une bonne valeur pratique. Grâce à une optimisation et une amélioration continues, cette stratégie devrait permettre d’obtenir de meilleures performances en combat réel.

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

//@version=5
strategy(title="軒割MACD 空心量能不足策略", shorttitle="軒割MACD 空心量能不足策略", overlay=true)

//=== 1) 參數 ===//
fast_length   = input.int(title="Fast Length",        defval=12)
slow_length   = input.int(title="Slow Length",        defval=26)
src           = input.source(title="MACD Source",     defval=close)
signal_length = input.int(title="Signal Smoothing",   defval=9,  minval=1, maxval=50)
sma_source    = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA","EMA"])
sma_signal    = input.string(title="Signal MA Type",     defval="EMA", options=["SMA","EMA"])

// 啟用多單 / 空單
useLong       = input.bool(title="啟用多單?(底部紅色)", defval=true)
useShort      = input.bool(title="啟用空單?(頂部綠色)", defval=true)

// 止盈倍數 (1~10倍 ATR)
tpATRmult     = input.int(title="止盈 ATR 倍數 (1~10)", defval=10, minval=1, maxval=500)
// 止損倍數 (1~10倍 ATR)
slATRmult     = input.int(title="止損 ATR 倍數 (1~10)", defval=3, minval=1, maxval=500)

//=== 2) MACD 計算 ===//
fast_ma  = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma  = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd     = fast_ma - slow_ma
signal   = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist     = macd - signal

//=== 3) 判斷深色/淺色(用於變化訊號)===//
darkGreen  = hist >= 0 and hist <= hist[1]   // 上方,柱子縮小或持平
lightGreen = hist >= 0 and hist >  hist[1]   // 上方,柱子變大
darkRed    = hist <  0 and hist <= hist[1]   // 下方,柱子(絕對值)變大或持平
lightRed   = hist <  0 and hist >  hist[1]   // 下方,柱子(絕對值)變小

// 由「深 → 淺」是否發生在上一根
colorChangeToLightGreen = darkGreen[1] and lightGreen
colorChangeToLightRed   = darkRed[1]   and lightRed

//=== 4) ATR 計算 (用於止盈止損) ===//
atrPeriod  = 14
atrValue   = ta.atr(atrPeriod)

//=== 5) 多單策略:深紅 → 淺紅 (底部紅色) ===//
if useLong and colorChangeToLightRed
    // 以當前 K 線 low - ATR倍數 作為多單止損
    longStopLoss   = low - (slATRmult * atrValue)
    // 以當前 close + ATR倍數 作為多單止盈
    longTakeProfit = close + (tpATRmult * atrValue)

    // 進多單
    strategy.entry("Long Entry", strategy.long, comment="多", qty=1)
    strategy.exit("平多", "Long Entry", stop=longStopLoss, limit=longTakeProfit)

//=== 6) 空單策略:深綠 → 淺綠 (頂部綠色) ===//
if useShort and colorChangeToLightGreen
    // 以當前 K 線 high + ATR倍數 作為空單止損
    shortStopLoss   = high + (slATRmult * atrValue)
    // 以當前 close - ATR倍數 作為空單止盈
    shortTakeProfit = close - (tpATRmult * atrValue)

    // 進空單
    strategy.entry("Short Entry", strategy.short, comment="空", qty=1)
    strategy.exit("平空", "Short Entry", stop=shortStopLoss, limit=shortTakeProfit)

//=== 7) 繪製 MACD 與直方圖 ===//
hline(0, "Zero Line", color=color.new(#787B86, 50))

// 長條圖顏色:
//   - 上方 (hist >= 0) 時:hist 比前一根大 (淺綠) 或小 (深綠)
//   - 下方 (hist < 0)  時:hist 比前一根大 (淺紅) 或小 (深紅)
plot(hist,title="Histogram",style=plot.style_columns,color = hist >= 0? (hist > hist[1]  ? #26A69A : #B2DFDB)   : (hist > hist[1]  ? #FFCDD2 : #FF5252)  )

// 繪製 MACD 與 Signal
plot(macd,   title="MACD",   color=#2962FF)
plot(signal, title="Signal", color=#FF6D00)