資源の読み込みに... 荷物...

強化された価格量動向の勢い戦略

作者: リン・ハーンチャオチャン開催日:2025年1月10日 15:40:37
タグ:マックドATRマルチエイマSMA

 Enhanced Price-Volume Trend Momentum Strategy

概要

この戦略は,MACD指標と価格・ボリューム関係に基づいた取引システムで,MACDヒストグラムパターンの変化を観察することによって市場のトレンド逆転点を特定する.この戦略は,市場変動に適応し,リスクを効果的に制御するためにATR指標を使用して動的な利益とストップロスのメカニズムを使用する.

戦略原則

この戦略のコアロジックは,MACDヒストグラムの色変化を組み合わせた二重EMAとSMA移動平均システムに基づいています.MACDヒストグラムが暗から明るい色に移行すると,勢力の変化を示し,システムが取引を実行するようになります.具体的には: 1. MACD値を計算するには,快速の平均と遅い平均を使用する. 2. 9 期間の信号線でスムーズな MACD 3. MACD ヒストグラムの色深度の変化を監視する 4. 14 期間の ATR を使用して動的な利益目標とストップ損失を設定する

戦略 の 利点

  1. 指標の科学的な組み合わせで,MACDは動向を効果的に把握し,ATRは変動に適応する
  2. 柔軟な収益とストップ・ロスの設定は,異なる市場特性に係るマルチプリキュータパラメータによって調整できます
  3. ヒストグラムの色変化に基づいて直感的なエントリータイミングを持つ明確な取引信号
  4. 長期取引と短期取引の両方に対応し,戦略の多様性と利益の機会を増やす

戦略リスク

  1. MACDは遅れている指標として,急速な市場動向における最適なエントリーポイントを逃す可能性があります.
  2. 異なる市場で誤った信号を生成し,頻繁な取引につながる可能性があります
  3. ATR マルチプリチャーの設定が正しくない場合,ストップが太りすぎたり太りすぎたりする
  4. 過剰な単一の取引損失を避けるために適切なマネー管理が必要です

戦略の最適化方向

  1. 信号の信頼性を向上させるため,音量確認信号を組み込む
  2. トレンドフィルターを追加して,変動市場における誤った信号を減らす
  3. 異なるタイムフレームに基づいて動的調整によって,利益とストップ損失の倍数を最適化
  4. 波動性の高い期間に取引頻度を減らすため波動性フィルタリングを含みます.
  5. 不利な期間の取引を避けるために時間フィルターを導入することを検討します

概要

この戦略は,クラシックな技術分析指標MACDと近代的なリスク管理方法を組み合わせた包括的な戦略である.動的リスク管理のためにATRを使用しながらMACDヒストグラムパターン変化を観察することによって市場の勢力の変化を捉える.この戦略は明確な運用論理と実用的な価値で設計されています.継続的な最適化と改善を通じて,この戦略は実際の取引条件でより良いパフォーマンスを有することを約束しています.


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


関連性

もっと