ダブル指数関数移動平均クロスオーバー戦略は,典型的なトレンドフォロー戦略である. 異なるパラメータを持つダブル指数関数移動平均 (DEMA) の黄金十字と死十字を使用して,市場のトレンドを決定し,対応するロングとショートポジションを作成する.
この戦略は,異なるパラメータを持つ3つのDEMAを同時に使用しています.DEMA (8).DEMA (.) 20とDEMA (.) 63です.
DEMAは短期的な傾向を把握するために最も早く反応します.
DEMAは,中期トレンドを特定するために少しゆっくりと動いています.
DEMAは,長期的傾向の方向性を判断するのに最も遅い反応を示します.
急速線DEMA(8) が中間線DEMA(20) とスロー線DEMA(63を横切ると,市場は下から上へと回転し,ロングポジションを設定する.DEMA(8) がDEMA(20) とDEMA(63を下を通過すると,市場は上から下へと回転し,ショートポジションを設定する.
単一移動平均と比較して,ダブル指数移動平均は価格変化により敏感であり,トレンドのターニングポイントを早期に検出することができます.この戦略は複数のタイムフレームのDEMAを組み合わせ,市場のトレンド方向性を効果的に追跡することができます.
多時間枠のDEMラインの組み合わせは,取引信号の質を向上させ,偽のブレイクを回避する.同時に,この戦略は,3つのラインが交差するときにのみ信号を生成し,過剰な取引頻度を回避する.
この戦略の主なリスクは,
パラメータの最適化やフィルター条件の追加などによってリスクをさらに改善し制御することができます.
戦略は以下の側面から最適化できます.
DEMAクロスオーバー戦略は,明確な全体的な考えを持っています.マルチタイムフレームDEMAを組み合わせることで,市場のトレンド方向を効果的に決定することができ,典型的なトレンドフォロー戦略です.戦略は,より良い戦略結果を得るため,実際のニーズに応じてパラメータ最適化,フィルター追加,ストップ損失管理などにより改善することができます.
/*backtest start: 2022-11-16 00:00:00 end: 2023-11-22 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/ // © Noldo //@version=4 //Quoted by Author HighProfit //Lead-In strategy("Double Exponential Moving Average 8-20-63 Strategy", shorttitle="DEMA-8-20-63", overlay=true, max_bars_back = 5000, initial_capital=100000, max_bars_back = 5000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, pyramiding = 0) short = input(8, minval=1) srcShort = input(ohlc4, title="Source Dema 1") long = input(20, minval=1) srcLong = input(low, title="Source Dema 2") long2 = input(63, minval=1) srcLong2 = input(close, title="Source Dema 3") e1 = ema(srcShort, short) e2 = ema(e1, short) dema1 = 2 * e1 - e2 plot(dema1, color=color.green, linewidth=2) e3 = ema(srcLong, long) e4 = ema(e3, long) dema2 = 2 * e3 - e4 plot(dema2, color=color.blue, linewidth=2) e5 = ema(srcLong2, long2) e6 = ema(e5, long2) dema3 = 2 * e5 - e6 plot(dema3, color=color.black, linewidth=2) longC = dema1 > dema2 and dema1 > dema3 shortC = dema1 < dema2 and dema1 < dema3 alertlong = longC and not longC[1] alertshort = shortC and not shortC[1] strategy.entry("Long" , strategy.long , when = longC ,comment="Long") strategy.entry("Short", strategy.short, when = shortC,comment="Short") // Alerts alertcondition(longC , title='Long' , message=' Buy Signal ') alertcondition(shortC , title='Short', message=' Sell Signal ')