Strategi ini menggunakan persilangan purata bergerak antara bingkai masa yang berbeza untuk menjana isyarat perdagangan. Ia membolehkan pemerhatian MA bingkai masa yang lebih lama pada carta semasa untuk mengesan trend yang lebih besar. Ini tergolong dalam strategi trend antara bingkai masa berikut.
Strategi ini menggunakan dua purata bergerak yang dikira pada jangka masa yang berasingan.
Sebagai contoh pada carta 15min ia menggunakan 20MA dan 50MA:
Apabila 15min 20MA melintasi di atas 50MA harian, ia pergi panjang.
Ini mencapai kesan memerhatikan trend jangka masa yang lebih lama pada tempoh semasa.
Titik persimpangan boleh ditandakan untuk isyarat perdagangan yang jelas.
Risiko boleh dikurangkan dengan:
Strategi ini boleh ditingkatkan dengan:
Ujian lebih banyak gabungan tempoh MA untuk pengoptimuman
Menambah pengesahan sekunder apabila crossover berlaku
e.g. periksa momentum MACD
Mengoptimumkan hentian untuk mengelakkan keluar awal
Pertimbangkan Post123 bukti untuk memutuskan keluar
Penapis yang berbeza untuk TF pendek dan panjang
Lebih ketat untuk TF pendek, lebih santai untuk TF panjang
Pertimbangkan set parameter yang berbeza untuk sesi yang berbeza
Keadaan pasaran berbeza-beza mengikut sesi
Strategi ini mengamati persilangan antara MAs beberapa bingkai masa untuk menentukan arah trend dan mendedahkan trend yang lebih besar. Ini menapis bunyi jangka pendek dan memberi tumpuan kepada pergerakan harga yang lebih besar. Walau bagaimanapun, cabaran seperti penyesuaian bingkai masa dan isyarat yang tertinggal wujud. Peningkatan boleh dibuat melalui pengujian balik dan pengoptimuman yang ketat untuk parameter yang kukuh, menambah penapis untuk pengesahan, pengesahan langsung untuk penambahbaikan berterusan mengikut maklum balas pasaran. Pembelajaran dan pengoptimuman yang berterusan adalah kunci kepada adaptiviti.
/*backtest start: 2022-09-14 00:00:00 end: 2023-09-20 00:00:00 period: 7d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //Run script on a long interval gives better result for e.g. 1 Day //Plots The Majority of Moving Averages //Defaults to Current Chart Time Frame --- But Can Be Changed to Higher Or Lower Time Frames //2nd MA Capability with Show Crosses Feature //study(title="CM_Ultimate_MA_MTF", shorttitle="CM_Ultimate_MA_MTF", overlay=true) strategy("Stratergy CM_Ultimate_MA_MTF", shorttitle = "Stratergy CM_Ultimate_MA_MTF", overlay = true) //,default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //inputs src = close useCurrentRes = input(true, title="Use Current Chart Resolution?") resCustom = input(title="Use Different Timeframe? Uncheck Box Above", defval="D") len = input(20, title="Moving Average Length - LookBack Period") atype = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA") cc = input(true,title="Change Color Based On Direction?") smoothe = input(2, minval=1, maxval=10, title="Color Smoothing - 1 = No Smoothing") doma2 = input(false, title="Optional 2nd Moving Average") len2 = input(50, title="Moving Average Length - Optional 2nd MA") atype2 = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA") cc2 = input(true,title="Change Color Based On Direction 2nd MA?") warn = input(false, title="***You Can Turn On The Show Dots Parameter Below Without Plotting 2nd MA to See Crosses***") warn2 = input(false, title="***If Using Cross Feature W/O Plotting 2ndMA - Make Sure 2ndMA Parameters are Set Correctly***") sd = input(false, title="Show Dots on Cross of Both MA's") res = useCurrentRes ? timeframe.period : resCustom //hull ma definition hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len))) //TEMA definition ema1 = ema(src, len) ema2 = ema(ema1, len) ema3 = ema(ema2, len) tema = 3 * (ema1 - ema2) + ema3 avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : tema //2nd Ma - hull ma definition hullma2 = wma(2*wma(src, len2/2)-wma(src, len2), round(sqrt(len2))) //2nd MA TEMA definition sema1 = ema(src, len2) sema2 = ema(sema1, len2) sema3 = ema(sema2, len2) stema = 3 * (sema1 - sema2) + sema3 avg2 = atype2 == 1 ? sma(src,len2) : atype2 == 2 ? ema(src,len2) : atype2 == 3 ? wma(src,len2) : atype2 == 4 ? hullma2 : atype2 == 5 ? vwma(src, len2) : atype2 == 6 ? rma(src,len2) : tema out = avg out_two = avg2 out1 = security(syminfo.tickerid, res, out) out2 = security(syminfo.tickerid, res, out_two) ma_up = out1 >= out1[smoothe] ma_down = out1 < out1[smoothe] col = cc ? ma_up ? lime : ma_down ? red : aqua : aqua col2 = cc2 ? ma_up ? lime : ma_down ? red : aqua : aqua circleYPosition = out2 chk=col==red?1:0 if (not na(chk)) if (chk[1]==1 and chk==0) strategy.entry("RsiLE", strategy.long, comment="RsiLE") else strategy.exit("RsiLE") if (chk[1]==0 and chk==1) strategy.entry("RsiSE", strategy.short, comment="RsiLE") else strategy.exit("RsiSE") plot(out1, title="Multi-Timeframe Moving Avg", style=line, linewidth=4, color = col) plot(doma2 and out2 ? out2 : na, title="2nd Multi-TimeFrame Moving Average", style=circles, linewidth=4, color=col2) plot(sd and cross(out1, out2) ? circleYPosition : na,style=cross, linewidth=5, color=yellow)