Strategi ini didasarkan pada indikator rata-rata bergerak dinamis untuk melacak tren harga secara real-time dan menghasilkan sinyal perdagangan ketika rata-rata bergerak dipecahkan. Keuntungan dari strategi ini terletak pada pengaturan parameter sederhana, aturan sinyal yang jelas, dan kesesuaian untuk kepemilikan jangka menengah hingga panjang.
Strategi ini menggunakan indikator rata-rata bergerak dinamis termasuk ALMA, EMA, SMA dan banyak lagi. Prinsipnya adalah untuk pergi panjang ketika harga melanggar di atas rata-rata bergerak dan pergi pendek ketika melanggar di bawahnya.
Secara khusus, strategi ini menggunakan rata-rata bergerak yang dibentuk oleh harga tinggi dan rendah. MA harga rendah berfungsi sebagai garis sinyal untuk sinyal panjang, sementara MA harga tinggi berfungsi sebagai garis untuk short. Ketika harga penutupan naik di atas MA harga rendah, pergi panjang. Ketika penutupan turun di bawah MA harga tinggi, pergi pendek.
Dengan menilai tren harga dengan MA dan dikombinasikan dengan prinsip breakout untuk menghasilkan sinyal, strategi trend berikut yang sederhana dan praktis terbentuk.
Strategi ini menilai arah tren dengan MA dan menghasilkan sinyal berdasarkan prinsip-prinsip breakout. Ini sederhana untuk digunakan dan cocok untuk kepemilikan jangka menengah hingga panjang. Parameter juga dapat disesuaikan untuk beradaptasi dengan perubahan pasar. Risiko dari fluktuasi jangka pendek dan kepemilikan panjang perlu dikelola dengan stop loss / profit taking. Ada ruang untuk perbaikan dengan menggabungkan lebih banyak indikator dan menemukan parameter optimal 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)