この戦略は,MACDとDEMAのデュアルレール指標を組み合わせて,クロスオーバーから取引信号を生成する.MACD指標のターニングポイントを捕捉し,より良いエントリを達成するためにフィルタリングのためにDEMAを使用する.
期間長さ fastmacd の価格の DEMA 値として速線 DEMAfast を計算する.
期間長さ slowmacd の価格の DEMA 値としてゆっくり線 DEMAslow を計算する.
MACD線は,速い線と遅い線の違いです. DEMAfast - DEMAAslow.
シグナルラインは,周期シグナルマックドのMACDラインのDEMA値です.
MACDとシグナルラインのクロスオーバーは,金色のクロスでロング,デッドクロスでショートでトレードシグナルを生成します.
指定された日付範囲内でのみ信号を生成するために日付フィルターを追加します.
この戦略の主な利点は以下の通りです.
MACDとDEMAを組み合わせると,インディケーターが補完されます.MACDはターンを記録し,DEMAはシグナル品質を改善するためにフィルターをします.
DEMAの二重レール設計により MACD指標の遅延とノイズが減少します
MACDのクロスオーバー信号は 解釈しやすく 清潔でシンプルです
日付フィルターの柔軟な設定は,異なる戦略のニーズに対応します.
MACDパラメータは,市場の条件に合わせて柔軟性のために最適化できます.
この戦略の主なリスクは
MACDは動揺する横向市場における 傾向指標として苦戦しています
クロスオーバーは 誤った信号を生成し 効果的なフィルタリングが必要です
ストップ・ロスの戦略は堅牢ではない ストップが大きすぎる傾向がある
パラメータの最適化が 十分ではありません 製品ごとに 性能が大きく異なります
日付フィルタが硬すぎます 動的調整が必要です
解決策:
市場を横向きにしないように インディケーターを追加します.
偽のクロスをフィルタリングするために価格条件を追加します.
合理的な初期ストップ・ロスを設定します
製品間のテストパラメータ ダイナミック最適化
リアルタイム条件に基づいてフィルター日付を調整します
戦略の潜在的改善:
クロスオーバー信号の音量フィルターを追加します
MACD パラメータの組み合わせを様々な製品で最適化する.
ストップ・ロスのストップ・ストラテジーを追加します
市場変動に基づいてストップロスを動的に調整する.
ポジションのサイズを測るためのトレンド強さを追跡する.
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")