Strategi ini berdasarkan kepada penunjuk purata bergerak dinamik untuk mengesan trend harga dalam masa nyata dan menjana isyarat perdagangan apabila purata bergerak ditembusi. Kelebihan strategi ini terletak pada tetapan parameter yang mudah, peraturan isyarat yang jelas, dan kesesuaian untuk pegangan jangka sederhana hingga panjang.
Strategi ini menggunakan penunjuk purata bergerak dinamik termasuk ALMA, EMA, SMA dan banyak lagi. Prinsipnya adalah untuk pergi lama apabila harga memecahkan di atas purata bergerak dan pergi pendek apabila ia memecahkan di bawah.
Secara khusus, strategi ini menggunakan purata bergerak yang dibentuk oleh harga tinggi dan rendah. MA harga rendah berfungsi sebagai garis isyarat untuk isyarat panjang, sementara MA harga tinggi berfungsi sebagai garis untuk pendek. Apabila harga penutupan meningkat di atas MA harga rendah, pergi panjang. Apabila penutupan turun di bawah MA harga tinggi, pergi pendek.
Dengan menilai trend harga dengan MA dan digabungkan dengan prinsip pecah untuk menjana isyarat, strategi trend berikut yang mudah dan praktikal terbentuk.
Strategi ini menilai arah trend dengan MA dan menghasilkan isyarat berdasarkan prinsip-prinsip pecah. Ia mudah digunakan dan sesuai untuk pegangan jangka menengah hingga panjang. Parameter juga boleh diselaraskan untuk menyesuaikan diri dengan perubahan pasaran. Risiko dari turun naik jangka pendek dan pegangan panjang perlu diurus dengan berhenti kehilangan / mengambil keuntungan. Terdapat ruang untuk peningkatan dengan menggabungkan lebih banyak penunjuk dan mencari parameter optimum melalui pembelajaran mesin.
/*backtest start: 2023-12-02 00:00:00 end: 2024-01-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Baseline Strategy - evo", shorttitle="Baseline", overlay=true) //INPUTS mat = input("ALMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "ALMA"]) baseline = input(55, title="MA Length") src = input(ohlc4, title="Closing Source") offset = input(0.85, step=0.05, title="Offset (alma only)") sigma = input(10, title="Sigma (alma only)") useCurrentRes = input(true, title="Use Current Resolution") resCustom = input("1440", title="Timeframe") showsignals = input(false, title="Show Signals ?") //BASELINE baselinehigh = mat=="SMA" ? sma(high,baseline) : mat=="EMA" ? ema(high,baseline) : mat=="WMA" ? wma(high,baseline) : mat=="HMA" ? wma(2*wma(high, baseline/2)-wma(high, baseline), round(sqrt(baseline))) : mat=="VWMA" ? vwma(high,baseline) : mat=="RMA" ? rma(high,baseline) : mat=="ALMA" ? alma(high, baseline, offset, sigma) : na baselinelow = mat=="SMA" ? sma(low,baseline) : mat=="EMA" ? ema(low,baseline) : mat=="WMA" ? wma(low,baseline) : mat=="HMA" ? wma(2*wma(low, baseline/2)-wma(low, baseline), round(sqrt(baseline))) : mat=="VWMA" ? vwma(low,baseline) : mat=="RMA" ? rma(low,baseline) : mat=="ALMA" ? alma(low, baseline, offset, sigma) : na //RESOLUTION res = useCurrentRes ? timeframe.period : resCustom mtfhigh = security(syminfo.tickerid, res, baselinehigh) mtflow = security(syminfo.tickerid, res, baselinelow) //PLOTS plot(mtfhigh, color=color.navy, linewidth=2, transp=0, title="Baseline High") plot(mtflow, color=color.navy, linewidth=2, transp=0, title="Baseline Low") long = src > mtfhigh short = src < mtflow barcolor(long ? #ffe0b2 : short ? #2a2e39 : not long and not short ? #b09e82 : na, title="BaseLine BarColor") signal = 0 signal := long ? 1 : short ? 2 : nz(signal[1]) plotshape(showsignals ? (signal != signal[1] and long ? mtflow : na) : na, title="Long", location=location.absolute, size=size.small, style=shape.labelup, text="Long", textcolor=color.black, transp=40, color=#00ff00) plotshape(showsignals ? (signal != signal[1] and short ? mtfhigh : na) : na, title="Short", location=location.absolute, size=size.small, style=shape.labeldown, text="Short", textcolor=color.white, transp=40, color=#ff0000) alertcondition(signal != signal[1], title="Trend Change !", message="Trend Change !") if (long) strategy.entry("Long", strategy.long) if (short) strategy.entry("Short", strategy.short)