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

MACD量的な取引戦略

作者: リン・ハーンチャオチャン,日付: 2023-12-19 15:11:57
タグ:

img

概要

この戦略は,MACDが一定値を下回る場合,平均逆転の機会を利用するために,MACD指標を使用してロングポジション取引信号を構築します.

戦略の論理

ロングシグナルは,MACD線がSIGNAL線を下回り,MACDの絶対値は−0.00025を下回ると生成される.ロングポジションを取った後,MACD線が再びSIGNAL線を超えると,ポジションは閉鎖される.

この戦略は,超売りゾーンを検出するためにMACD指標を使用する.移動平均理論によると,短期的には平均逆転の確率があり,この確率に基づいて長い信号が確立される.

利点

  1. MACD指標を利用して 過売りレベルを判断し,ある程度の信頼性を有します.
  2. シンプルな取引信号と 簡単に実行できるルール
  3. 長期保持期間は,取引頻度が低くなって,取引コストとスライドが減少する.

リスク

  1. 逆転が失敗するリスクは 逆転が起こらない場合 損失につながるでしょう
  2. MACD パラメータの選択が不適切であるため,無効な信号です.

このリスクはパラメータの最適化によって軽減できる.

改良

  1. MACD パラメータを最適化して 最適な組み合わせを見つけます
  2. 最適な期間を見つけるために,異なる保持期間をテストします.
  3. ストップ・ロストメカニズムを追加します

概要

この戦略は,MACD指標によって識別された過剰販売レベルからの平均逆転の確率を利用し,長い保持期間を通じて長い信号,および利益を生成する.MACDパラメータを最適化し,ストップ損失を追加することで信頼性が向上する.要約すると,比較的単純な指標とルールを用いて,理解し実行しやすい定量戦略を構築する.


//@version=3
strategy(title="MACD - EURUSD", shorttitle="MACD EURUSD")

// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=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

plot(hist, title="Histogram", 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)

longCond = crossover(macd, signal) and macd < -0.00025
exitLong = crossover(macd, hist)


strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)

もっと