
Strategi ini menggunakan dua rata-rata bergerak, yaitu rata-rata bergerak 8 periode dan rata-rata bergerak 21 periode. Bila rata-rata bergerak jangka pendek di atas rata-rata bergerak jangka panjang, lakukan lebih banyak; Bila rata-rata bergerak jangka pendek di bawah rata-rata bergerak jangka panjang, lakukan lebih sedikit.
Strategi ini juga memperkenalkan indikator kemiringan rata-rata bergerak untuk memfilter beberapa kisaran tanpa tren dan hanya menghasilkan sinyal perdagangan ketika tren lebih jelas.
Inti dari strategi ini adalah persilangan antara rata-rata bergerak jangka pendek dan rata-rata bergerak jangka panjang. Rata-rata bergerak jangka pendek menangkap tren perubahan harga lebih cepat, sementara rata-rata bergerak jangka panjang memiliki efek penyaringan yang lebih baik terhadap kebisingan.
Strategi ini juga mengatur sebuah tipis slope. Sinyal do-plus hanya dihasilkan ketika slope lebih besar dari tipis positif dan sinyal do-blank hanya dihasilkan ketika slope lebih kecil dari tipis negatif. Ini dapat menyaring beberapa interval tanpa tren yang jelas, sehingga kualitas sinyal perdagangan lebih tinggi.
Secara khusus, logika pembuatan sinyal perdagangan dari strategi ini adalah:
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Ada beberapa cara untuk mengoptimalkan risiko ini:
Strategi ini juga dapat dioptimalkan dalam beberapa arah:
Strategi moving average ganda ini secara keseluruhan sederhana dan praktis, menangkap karakteristik tren yang berbeda melalui parameter diffs dua periode, dan menggabungkannya untuk menghasilkan sinyal perdagangan. Pada saat yang sama, pengenalan nilai terendah slope meningkatkan kualitas sinyal. Strategi ini dapat digunakan sebagai strategi dasar dan diperluas, dan ada banyak ruang untuk pengoptimalan dan pengembangan.
/*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)