Strategi ini menggunakan purata bergerak berganda, khususnya 8-period dan 21-period. Ia menghasilkan isyarat panjang apabila MA yang lebih pendek melintasi yang lebih lama, dan isyarat pendek apabila MA yang lebih pendek melintasi yang lebih lama.
Strategi ini juga menggabungkan kemiringan garis purata bergerak untuk menapis beberapa tempoh bukan trend dan hanya menghasilkan isyarat apabila trend lebih jelas.
Inti strategi ini terletak pada persilangan purata bergerak jangka pendek dan jangka panjang. MA yang lebih pendek dapat menangkap perubahan trend lebih cepat, sementara MA yang lebih lama mempunyai kesan penapisan bunyi yang lebih baik. Penubuhan trend menaik disyorkan apabila MA yang lebih pendek menyeberangi MA yang lebih panjang, yang membawa kepada isyarat panjang; penubuhan trend menurun disyorkan apabila MA yang lebih pendek menyeberangi di bawah MA yang lebih panjang, yang membawa kepada isyarat pendek.
Strategi ini juga menetapkan ambang kemiringan. Hanya apabila kemiringan lebih besar daripada nilai ambang positif, isyarat panjang akan dihasilkan. Hanya apabila kemiringan kurang dari nilai ambang negatif, isyarat pendek akan dihasilkan. Ini membantu menapis zon di mana tidak ada trend yang ketara, menghasilkan isyarat perdagangan yang lebih berkualiti.
Khususnya, logik untuk menjana isyarat perdagangan adalah:
Kelebihan strategi ini termasuk:
Beberapa risiko juga wujud dengan strategi ini:
Beberapa cara untuk mengoptimumkan berdasarkan risiko ini:
Beberapa arah untuk mengoptimumkan strategi:
Ringkasnya, strategi MA berganda ini mudah dan praktikal. Dengan menangkap ciri-ciri trend yang berbeza melalui dua parameter tempoh dan menggabungkannya untuk menghasilkan isyarat perdagangan. Sementara itu, menggabungkan ambang cerun meningkatkan kualiti isyarat. Strategi ini boleh berfungsi sebagai asas untuk pelanjutan, dengan ruang pengoptimuman yang banyak dan potensi.
/*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)