Verbesserte Momentum-Strategie zur Beurteilung von Volumen und Preistrends

MACD ATR MA EMA SMA
Erstellungsdatum: 2025-01-10 15:40:37 zuletzt geändert: 2025-01-10 15:40:37
Kopie: 0 Klicks: 346
1
konzentrieren Sie sich auf
1617
Anhänger

Verbesserte Momentum-Strategie zur Beurteilung von Volumen und Preistrends

Überblick

Bei dieser Strategie handelt es sich um ein Handelssystem, das auf dem MACD-Indikator und der Beziehung zwischen Volumen und Preis basiert. Es bestimmt den Wendepunkt des Markttrends, indem es die Änderungen in der Form des MACD-Histogramms beobachtet. Die Strategie verwendet einen dynamischen Stop-Profit- und Stop-Loss-Mechanismus und nutzt den ATR-Indikator, um sich an Marktschwankungen anzupassen und Risiken wirksam zu kontrollieren.

Strategieprinzip

Die Kernlogik der Strategie basiert auf den tiefen und flachen Säulenänderungen des MACD-Indikators, kombiniert mit dem dualen gleitenden Durchschnittssystem EMA und SMA. Wenn das MACD-Histogramm von dunkel auf hell wechselt, deutet dies auf eine Veränderung der Dynamik hin und das System wird zu diesem Zeitpunkt handeln. Speziell:

  1. Berechnen Sie den MACD-Wert mithilfe der schnellen (12) und langsamen (26) gleitenden Durchschnitte
  2. MACD geglättet durch eine 9-Perioden-Signallinie
  3. Beobachten Sie die Farbänderungen des MACD-Histogramms
  4. Kombinieren Sie den 14-Perioden-ATR-Indikator, um dynamische Take-Profit- und Stop-Loss-Werte festzulegen

Strategische Vorteile

  1. Die Indikatorkombination ist wissenschaftlich und sinnvoll, MACD kann Trends effektiv erfassen und ATR kann sich an Schwankungen anpassen
  2. Die Stop-Profit- und Stop-Loss-Einstellungen sind flexibel und können über mehrere Parameter an unterschiedliche Markteigenschaften angepasst werden.
  3. Das Handelssignal ist klar und der Einstiegszeitpunkt kann intuitiv durch den Farbwechsel des Balkendiagramms beurteilt werden
  4. Berücksichtigung sowohl langer als auch kurzer Zweiwegetransaktionen, wodurch die Anwendbarkeit der Strategie und die Gewinnmöglichkeiten erhöht werden

Strategisches Risiko

  1. MACD als nachlaufender Indikator kann den besten Einstiegspunkt für schnelle Marktbewegungen verpassen
  2. In einem volatilen Markt können falsche Signale erzeugt werden, die zu häufigem Handel führen
  3. Eine falsche Einstellung des ATR-Multiples kann dazu führen, dass der Stop-Loss zu locker oder zu eng ist.
  4. Es ist notwendig, das Fondsmanagement vernünftig einzurichten, um übermäßige Einzelverluste zu vermeiden

Richtung der Strategieoptimierung

  1. Einführung eines Lautstärkebestätigungssignals zur Verbesserung der Signalzuverlässigkeit
  2. Trendfilter hinzugefügt, um falsche Signale in volatilen Märkten zu reduzieren
  3. Optimieren Sie die Take-Profit- und Stop-Loss-Multiplikatoren, die je nach Zeiträumen dynamisch angepasst werden können.
  4. Volatilitätsfilterung hinzugefügt, um die Handelsfrequenz in Zeiten hoher Volatilität zu reduzieren
  5. Erwägen Sie die Einführung von Zeitfiltern, um den Handel in ungünstigen Zeiträumen zu vermeiden

Zusammenfassen

Hierbei handelt es sich um eine umfassende Strategie, die den klassischen technischen Analyseindikator MACD mit modernen Methoden der Risikokontrolle kombiniert. Erfassen Sie die Veränderung der Marktdynamik, indem Sie die Veränderungen in der Form des MACD-Histogramms beobachten, und nutzen Sie ATR zur dynamischen Risikokontrolle. Die Strategie ist sinnvoll konzipiert, die Betriebslogik ist klar und sie hat einen guten praktischen Wert. Durch kontinuierliche Optimierung und Verbesserung dieser Strategie soll im tatsächlichen Kampf eine bessere Leistung erzielt werden.

Strategiequellcode
/*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)