
二次指数移動平均クロスオーバー戦略は,典型的なトレンド追跡戦略である.これは,異なるパラメータの二次指数移動平均の金叉と死叉を使用して,市場動向を判断し,それに応じて多空を行う.
この戦略は3つの異なるパラメータの双指数移動平均を同時に使用します:DEMA(8),DEMA(20) およびDEMA(63) 〜のうち:
快線DEMA(8) 上が中線DEMA(20) と慢線DEMA(63) を通るときは,下から上向きに逆転し,多作する.快線DEMA(8) 下が中線DEMA(20) と慢線DEMA(63) を通るときは,上から下向きに逆転し,空作る.
単一の移動平均と比較して,双指数移動平均は価格の変化に敏感であり,トレンドの転換点をより早く発見することができる.この戦略は,複数の時間帯の双指数線を統合し,市場の傾向の方向を効果的に追跡することができる.
複数の時間帯のDEMラインの組み合わせにより,取引信号の質が向上し,偽突破を回避する.同時に,戦略は,3つのラインが交差する時にのみ信号を生成し,過度に頻繁な取引を避ける.
この戦略には以下のリスクがあります.
移動平均のパラメータを最適化したり,フィルタリング条件を追加したりなどによって,さらに改善し,リスクを制御することができます.
この戦略は以下の点で最適化できます.
双指数移動平均線交差戦略は,全体的な考え方が明確で,複数の時間段のDEMの組み合わせを使用して,市場トレンドの方向を効果的に判断する,典型的なトレンド追跡戦略です.この戦略は,実際の需要に応じて,パラメータ最適化,フィルタ条件の追加,ストップダスト管理などの方法で改善され,より良い戦略効果を得ることができます.
/*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 ')