この戦略は,2つの移動平均値,特に8期と21期を採用する.より短いMAがより長いMAを横切るときに長い信号,より短いMAがより長いMAを下回るときに短い信号を生成する.
この戦略は,移動平均線の傾きを組み込み,トレンドではない時期をフィルターし,トレンドがより顕著であるときにのみシグナルを出します.
この戦略の核心は,短期間の移動平均値と長期間の移動平均値のクロスオーバーにあります.より短いMAは傾向の変化をより速く捉えることができ,より長いMAはノイズフィルタリング効果が優れています.より短いMAがより長いMAを横切ると,長い信号につながる.より短いMAがより長いMAを横切って,短い信号につながる場合,上昇傾向の確立が提案されています.
この戦略では,傾斜の
取引シグナルを生成する論理は,
この戦略の利点は以下の通りです.
この戦略にはいくつかのリスクもあります:
これらのリスクに基づいて最適化する方法:
戦略を最適化するためのいくつかの方向性:
概要すると,このダブルMA戦略はシンプルで実用的です. 2つの期間パラメータを通じて異なるトレンド特性を捕捉し,それらを組み合わせて取引信号を生成します. 一方,傾斜
/*backtest start: 2024-01-09 00:00:00 end: 2024-01-16 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //written by sixpathssenin //@version=4 strategy(title="Dual Moving Average",initial_capital=10000,overlay=true) ma1= sma(close,8) ma2= sma(close,21) angleCriteria = input(title="Angle", type=input.integer, defval=7, minval=1, maxval=13) i_lookback = input(2, "Angle Period", input.integer, minval = 1) i_atrPeriod = input(10, "ATR Period", input.integer, minval = 1) i_angleLevel = input(6, "Angle Level", input.integer, minval = 1) i_maSource = input(close, "MA Source", input.source) f_angle(_src, _lookback, _atrPeriod) => rad2degree = 180 / 3.141592653589793238462643 //pi ang = rad2degree * atan((_src[0] - _src[_lookback]) / atr(_atrPeriod)/_lookback) ang _angle = f_angle(ma2, i_lookback, i_atrPeriod) plot(ma1,color=#FF0000) plot(ma2,color=#00FF00) crosso=crossover(ma1,ma2) crossu=crossunder(ma1,ma2) _lookback = 15 f_somethingHappened(_cond, _lookback) => bool _crossed = false for i = 1 to _lookback if _cond[i] _crossed := true _crossed longcrossed = f_somethingHappened(crosso,_lookback) shortcrossed = f_somethingHappened(crossu,_lookback) long = longcrossed and _angle > angleCriteria short= shortcrossed and _angle < -(angleCriteria) if(long) strategy.entry("Long",strategy.long) if(short) strategy.entry("short",strategy.short)