MACD 200 日間移動平均クロスオーバー取引戦略

作者: リン・ハーンチャオチャン開催日:2024年1月3日11時50分56秒
タグ:

img

概要

この取引戦略は,MACD指標の200日移動平均クロスオーバー操作に基づいた定量戦略である.それは,市場購入・販売シグナルを判断するためのMACD指標と,市場動向を判断するための200日移動平均の2つの機能を組み合わせ,より正確なエントリーと終了タイミングを発見することを目的としている.

戦略原則

この戦略には2つの重要なポイントがあります.

  1. MACDインジケーターの速い線と遅い線クロスオーバーは,買い・売る信号を生成する.速い線がゆっくり線を上向きに突破すると,買い信号が生成される.速い線がゆっくり線を下向きに突破すると,売り信号が生成される.

  2. 200日移動平均は,市場全体の傾向を判断する. 200日移動平均以上の価格は牛市場を示し,下は熊市場を示します. 買い信号は牛市場でのみ,売り信号は熊市場でのみ実行されます.

この2つのポイントによると,この戦略の具体的な取引規則は以下のとおりです.

MACDの速い線がMACDのスローラインを上向きに突破すると,ヒストグラムがマイナスになり,価格は200日間の移動平均線を超えると,購入操作が行われます.MACDの速い線がスローラインを下向きに突破すると,ヒストグラムが正になり,価格が200日間の移動平均線以下になると,売却操作が行われます.

利点分析

  1. 双重確認は戦略の安定性と成功率を向上させる.MACDは購入・販売信号を判断し,200日移動平均は市場の傾向を判断する.双重確認は,より大きな不確実性を持ついくつかの取引信号をフィルタリングすることができます.

  2. 強いトレンドのある市場では,この戦略は比較的高い利益をもたらすことができます.特に牛市では,価格上昇の機会を迅速に捉えることができます.

  3. MACD指標は,統合段階から脱出する際にも比較的敏感である.価格が長期間の統合を終えてトレンド段階に入ると,この戦略は新しいトレンド方向を迅速に把握することができる.

リスク分析

  1. この戦略はパラメータ設定に非常に敏感です. MACD指標パラメータの設定が正しくない場合,誤った信号を引き起こす可能性があります.

  2. トレンドターニングポイントの近くでは,MACD信号はエラーが増える傾向があります.この時点で,戦略の収益性が大きく低下する可能性があります.

  3. 価格が長期にわたって安定している場合,この戦略は明確な傾向の方向性を決定することはできません.その結果,利益/損失の変動が増加し,引き上げ時間が長くなります.

最適化

  1. より正確な信号を生み出す MACD パラメータを見つけるために,異なるパラメータの組み合わせをテストすることができます.

  2. RSIやKDなどの他の技術指標からの確認を追加して複数の指標の合意を形成することを検討し,それによって戦略の信頼性を高める.

  3. 最大引き下げを制御するためにストップ・ロスのポイントを設定します.価格が大幅に逆転するとすぐにストップ・ロスをします. これにより,損失を拡大することは効果的に回避できます.

結論

MACD 200日移動平均クロスオーバー戦略は,トレンド判断と取引信号判断の2つの機能を組み合わせ,収益性の確率を効果的に向上させることができます.これは比較的堅牢で信頼性の高い定量的な取引戦略です.しかし,この戦略はパラメータと市場状況にも少し依存しています.継続的な最適化とテストは,戦略の安定した利益 창출能力をさらに高めることができます.


/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © x11joe

//@version=4
//This strategy is based on a youtube strategy that suggested I do this...so I did!

strategy(title="MacD 200 Day Moving Average Signal Crossover Strategy", overlay=false, precision=2,commission_value=0.26, initial_capital=10000, currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

moving_avg_length = input(title="Moving Average Length", type=input.integer, defval=200)
moving_avg = sma(close,moving_avg_length)

moving_avg_normalized = close - moving_avg
plot(moving_avg_normalized, title="Moving Average Normalized", style=plot.style_line, color=color.orange,linewidth=3)

plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)

if(macd>signal and macd<0 and close>moving_avg)
    strategy.entry("buy",strategy.long)

if(close<moving_avg and macd<signal and macd>0)
    strategy.entry("sell",strategy.short)

もっと