MACDトレンド予測戦略は,MACD指標とEMA指標に基づいたトレンドフォロー戦略である.この戦略は,信号線を横断することで取引信号を生成する伝統的なMACD戦略とは異なり,MACD線と信号線との間の距離の変化によってトレード信号を生成する.
速線DEMAfastを計算する:速線MMEfastの2つのEMA値を計算し,速線DEMAfastを公式DEMAfast = ((2 * MMEfast) - MMEfastbに従って計算する.
スローライン DEMAslow を計算する: スローライン MMEslow の EMA 値を2つ計算し,式 DEMAslow = ((2 * MMEslow) - MMEslowb に基づいてスローライン DEMAslow を計算する.
MACD線を計算する. MACD線は,高速線DEMAfastと遅い線DEMAslow,LigneMACDZeroLagの差である.
信号線を計算する: MACD線MMEsignalの2つの EMA値を計算し, Lignesignal信号線を公式 Lignesignal = ((2 * MMEsignal) - MMEsignalbに従って計算する.
MACD線とシグナルラインを比較する:MACD線が信号線よりも大きいとき購入信号を生成し,MACD線が信号線よりも小さいとき販売信号を生成する.
上記の計算は,MACD指標の遅延を効果的に減らすことができるDEMAアルゴリズムを使用しています.
DEMA アルゴリズムを使用すると MACD インジケーターの遅延を軽減し,取引信号をより敏感にすることができます.
MACDのクロスオーバー信号に頼らないが,MACDと信号線の間の距離の変化によってトレンドの変化を把握し,トレンドを早期に入力することができる.
戦略は傾向を正確に判断し,利潤が良ければ利益因子は1.6~3.5に達する.
戦略の論理は単純で明快で,理解し実行しやすく,定量取引に適しています.
遅れている指標として,MACDは範囲限定市場では多くの無効な取引信号を生む可能性があります.
DEMA アルゴリズムが遅延を軽減するとはいえ 遅延を完全に排除することはできません まだ遅延があります
戦略に従う傾向として,利益は様々な市場で良くないかもしれません.
SMA,LMA,TSPのパラメータは,異なる期間や品種に最適化する必要があります.
ストップ・ロスの戦略は,コントロール・ロスを追加する必要があるかもしれません.
SMA,LMA,TSPのパラメータを最適化し,異なる期間や取引種に適応します.
トレード損失を制御するATRのようなダイナミックストップ損失戦略を追加します.
トレンド判断指標を組み込むことで,変動する市場での取引を避ける.
市場変動に基づいてポジションを調整するためにポジションサイズを追加します.
入口と出口のロジックを最適化して 取引信号のルールを改良します
MACDトレンド予測戦略は,遅延を減らすためにDEMAアルゴリズムを使用してMACDの計算を改善し,MACDと信号線間の距離変化によってトレンドを判断する.トレンドフォロー戦略として,トレンド変化を効果的に把握することができます.利益因子は1.6-3.5に達し,一定の利点があります.しかし,より多くの市場環境に適応するために,パラメータのさらなる最適化,ストップ損失戦略,レンジング市場のフィルタリングなどが必要です.これはこの戦略の開発方向になります.
/*backtest start: 2022-10-26 00:00:00 end: 2023-11-01 00:00:00 period: 1d basePeriod: 1h 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/ // © moritz1301 //@version=4 strategy("MACD Trendprediction Strategy V1", shorttitle="MACD TPS", overlay=true) sma = input(12,title='DEMA Courte') lma = input(26,title='DEMA Longue') tsp = input(9,title='Signal') dolignes = input(true,title="Lignes") MMEslowa = ema(close,lma) MMEslowb = ema(MMEslowa,lma) DEMAslow = ((2 * MMEslowa) - MMEslowb ) MMEfasta = ema(close,sma) MMEfastb = ema(MMEfasta,sma) DEMAfast = ((2 * MMEfasta) - MMEfastb) LigneMACDZeroLag = (DEMAfast - DEMAslow) MMEsignala = ema(LigneMACDZeroLag, tsp) MMEsignalb = ema(MMEsignala, tsp) Lignesignal = ((2 * MMEsignala) - MMEsignalb ) MACDZeroLag = (LigneMACDZeroLag - Lignesignal) bgcolor(LigneMACDZeroLag<Lignesignal ? color.red : color.green) if (LigneMACDZeroLag>Lignesignal) strategy.entry("Buy", strategy.long, comment="BUY") if (LigneMACDZeroLag<Lignesignal) strategy.close("Buy", strategy.long, comment="SELL")