MACD DEMA 取引戦略


作成日: 2023-09-19 16:10:19 最終変更日: 2023-09-19 16:10:19
コピー: 0 クリック数: 1114
1
フォロー
1617
フォロワー

概要

この戦略は,MACDとDEMAの双線指標を組み合わせ,多空線金叉死叉によって取引信号を形成する.戦略は,MACDの指標の転機タイミングを捕捉し,DEMAのフィルター波を活用して,ノイズをなくして優良な入場を実現する.

戦略原則

  1. 速線DEMAfastを計算し,価格のDEMA値を取り,周期長がfastmacdである。

  2. 慢線DEMAslowを計算し,pricesのDEMA値を取得し,周期長がslowmacdである。

  3. MACD線は,速慢線差値である:DEMAfast - DEMAslow。

  4. Signalラインは MACDラインのDEMA値で,周期長は signalmacd。

  5. 多空線交差は取引信号として:金叉は多,死叉は空.

  6. 指定された日付範囲でのみ信号を発信する年月日フィルターを追加します.

優位分析

この戦略の利点は以下の通りです.

  1. MACDとDEMAを組み合わせると,指標は互補である.MACDは捕捉転換,DEMAはフィルター波により信号の質が向上する.

  2. DEMAの双線設計は,MACD指標の遅滞とノイズを軽減する.

  3. 多空線交差は判断しやすく,信号生成はシンプルで明快である.

  4. 取引日程の範囲を柔軟に設定し,異なる戦略のニーズに適応します.

  5. MACDのパラメータは,複数の状況に対応する柔軟な組み合わせを最適化できます.

リスク分析

この戦略の主なリスクは以下の通りです.

  1. MACDはトレンドを追跡する指標で,波動横軸市場には適さない.

  2. 多空間の交差は偽信号を生成し,有効なフィルタリングが必要である.

  3. 損失を抑える戦略は不十分で,過剰な損失を抑えるのが容易である.

  4. パラメータ最適化は全面的ではなく,品種によって効果が大きく異なっています.

  5. 取引日フィルタは固定値を超えて動的に調整する必要があります.

対応方法:

  1. 動量指数と組み合わせて横盤を避ける.

  2. 偽の交差信号をフィルタリングする.

  3. 合理的な初期ストップと追跡ストップを設定します.

  4. 多種パラメータの効果をテストし,動態最適化.

  5. フィルターの日付をリアルタイムに調整します.

最適化の方向

この戦略は以下の点から最適化できます.

  1. 信号フィルタリングの為の取引量指標を増加させる.

  2. MACDパラメータの組み合わせを最適化し,異なる品種データをテストする.

  3. 固定ストップ,追跡ストップなどのストップ戦略を設定する.

  4. 市場変動に応じてストップ・ポジションを動的に調整する

  5. フォロートレンドの強さ,ポジションのサイズ調整.

要約する

MACD DEMA戦略は,双指標の優位性を組み合わせ,交差信号捕捉のトレンドを利用する.しかし,MACDは本質的に遅滞性があり,偽信号をフィルタリングする注意が必要です.さらに,ストップ・ロズ戦略は,非合理的なストップを減らすために最適化する必要があります.実盤では,パラメータ最適化の結果に基づいて慎重に入場し,継続的に最適化することをお勧めします.

ストラテジーソースコード
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(" MACD DEMA STRATEGY ", overlay=true)

source=close
price=source



fastmacd = input(12,title='MACD Fast  Line Length')
slowmacd = input(26,title='MACD Slow Line Length')
signalmacd = input(9,title='Signal Line Length')

macdslowline1 = ema(close,slowmacd)
macdslowline2 = ema(macdslowline1,slowmacd)
DEMAslow = ((2 * macdslowline1) - macdslowline2 )

macdfastline1 = ema(close,fastmacd)
macdfastline2 = ema(macdfastline1,fastmacd)
DEMAfast = ((2 * macdfastline1) - macdfastline2)

MACDLine = (DEMAfast - DEMAslow)

SignalLine1 = ema(MACDLine, signalmacd)
SignalLine2 = ema(SignalLine1, signalmacd)
SignalLine = ((2 * SignalLine1) - SignalLine2 )


MACDSignal = SignalLine-MACDLine


colorbar= MACDSignal>0?green:red




yearfrom = input(2018)
yearuntil =input(2019)
monthfrom =input(1)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)







if ( crossover(MACDLine,SignalLine) ) 
    strategy.entry("MMAL", strategy.long, stop=close, oca_name="TREND",  comment="AL")
    
else
    strategy.cancel(id="MMAL")


if (  crossunder(MACDLine,SignalLine) ) 

    strategy.entry("MMSAT", strategy.short,stop=close, oca_name="TREND",  comment="SAT")
else
    strategy.cancel(id="MMSAT")