MACD移動平均牛熊変換戦略

作者: リン・ハーンチャオチャン, 日時: 2023-12-08 15:29:41
タグ:

img

概要

MACD移動平均牛熊変換戦略は,市場トレンドが逆転したかどうかを判断するために,MACD指標のDIFFとDEAラインを計算し,それによって取引信号を生成する.DIFFがDEAを超えると長くなり,DIFFがDEAを下回ると短くなります.この戦略には,偽のブレイクを避けるために価格EMAフィルターも含まれています.

戦略の論理

この戦略は主にMACD指標のDIFFとDEA線に基づいている.MACDはDIFF,DEA,MACD線で構成される移動平均収束差を表す.その中でも,DIFFは短期EMAと長期EMAの差を表し,DEAはDIFF信号を確認するために使用されるDIFFのEMAであり,MACDはDIFFとDEAの差を表し,差異を特定するために使用される.

DIFFがDEAを突破すると,短期移動平均が強化し始め,市場は上昇傾向になります.DIFFがDEAを下回ると,短期移動平均が弱まり,市場は下落傾向になります.したがって,DIFFがDEAを突破するとこの戦略は長続きし,DEAを下回ると短縮されます.

さらに,この戦略は偽のブレイクを避けるために価格EMAフィルターを組み込む.DIFFがDEAを突破し,価格が前のロング価格を下回るときのみ,DIFFがDEAを下回り,価格が前のショート価格を下回るときのみ,ロングに行く.

利点分析

MACD移動平均牛熊変換戦略は,MACDのみによって生成される偽信号を避けるために,MACD指標と価格EMAフィルターを組み合わせ,取引パフォーマンスを向上させる.この戦略は市場の傾向の変化を迅速に特定し,短期取引に適しています.

主な利点は以下の通りです.

  1. トレンド逆転点を特定し,ターニングポイントを把握するためにMACDを使用
  2. 誤ったブレイクアウトの機会を減らすために価格EMAフィルターを組み込む
  3. 短期取引に適した高速信号生成
  4. 中期トレンド利益の把握に続く展開傾向
  5. 大半のトレーダーと一致する 換算点での取引の思考パターン

リスク分析

MACD 移動平均牛熊換算戦略には,いくつかのリスクもあります.

  1. MACDは誤ったシグナルを生成し,価格EMAフィルターが必要ですが,いくつかの動きも見逃します.
  2. DIFFとDEAの線を注意深く監視する必要性, 適切なパラメータ調整が誤った信号を増やす
  3. 突破信号は1バーのみを考慮し, 鞭打ちされるリスクがあります
  4. 戦略は主に信号のDIFF/DEAクロスオーバーに依存し,信号が頻繁すぎると取引頻度を増やすことができます

リスクを最適化するための主な方法は以下の通りです.

  1. 誤った信号を減らすためにMACDパラメータを調整する
  2. フィルターの強度を向上させ,ウィップソー発生を減らす
  3. 取引頻度を制限するために,ポジション保持にフィルターを追加する.

オプティマイゼーションの方向性

MACD 移動平均牛熊変換戦略は,次の次元でさらに最適化することができます:

  1. DIFF/DEA期間のMACDパラメータを最適化する
  2. 低取引頻度にタイミングフィルターを追加する
  3. 利益目標の制御のためにストップ・ロスト/収益戦略を組み込む
  4. BOLL帯とKDのような他の指標フィルターを追加します
  5. 逆トレンド取引を避けるためにトレンドバイアスを組み込む
  6. この戦略枠組みに基づいて脱出戦略や利益採取模範を策定する

結論

MACD移動平均ブルベア変換戦略は,DIFFとDEAクロスオーバー信号による上昇/下落の市場参入を特定し,誤った信号を削除するために価格EMAフィルターを使用し,市場のトレンド逆転点を効果的に決定する.シンプルで明確な論理により,短期および中期取引に適した変換点を迅速に特定する.最適化するための次のステップには,パラメータを調整し,フィルターを強化し,戦略をより堅牢にするために取引頻度を制御する.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("macd_strategy", 
          shorttitle="macd", 
          overlay=true, 
          pyramiding=1, 
          max_bars_back=5000, 
          calc_on_order_fills = false, 
          calc_on_every_tick=true, 
          default_qty_type=strategy.percent_of_equity, 
          default_qty_value=100, 
          commission_type =strategy.commission.percent, 
          commission_value=0.00075)
[diff, dea, _] = macd(close, 12, 26, 7)
dea_close = ema(diff, 3)
price = ema(close, 9)
plot(price)
cross_over_price = na
cross_over_signal = na
cross_over_price := cross_over_price[1]
cross_over_signal := cross_over_signal[1]

cross_under_price = na
cross_under_signal = na
cross_under_price := cross_under_price[1]
cross_under_signal := cross_under_signal[1]
if (crossover(diff,dea))
    cross_over_price := price[1]
    cross_over_signal := diff
if (crossunder(diff,dea))
    cross_under_price := price[1]
    cross_under_signal := diff
if dea > 0
    cross_over_price = na
    cross_over_signal = na
else
    cross_under_price = na
    cross_under_signal = na
if diff > 0
    if cross_under_price > cross_under_price[1]*1 and cross_under_signal < cross_under_signal[1]*0.95
        strategy.entry("S", strategy.short,  comment="S")
else
    if cross_over_price < cross_over_price[1]*1 and cross_over_signal > cross_over_signal[1]*0.95
        strategy.entry("B", strategy.long,  comment="B")
// strategy.exit("exit_s", "S", stop = strategy.position_avg_price*1.05, when=strategy.position_size < 0)
// strategy.exit("exit_b", "B", stop = strategy.position_avg_price*0.95, when=strategy.position_size > 0)
strategy.close_all(when=(strategy.position_size < 0 and (dea < 0 or diff > cross_under_signal*1 or crossover(diff, dea)) or (strategy.position_size > 0 and (dea > 0 or diff < cross_over_signal*1 or crossunder(diff, dea)))))

もっと