Ini adalah strategi perdagangan kuantitatif yang didasarkan pada sinyal crossover rata-rata bergerak ganda. Strategi ini menggunakan dua rata-rata bergerak, satu sebagai garis sinyal utama dan satu lagi sebagai garis sinyal pelunasan. Ini menghasilkan sinyal perdagangan dengan memantau penyeberangan harga dengan garis sinyal pelunasan, memungkinkan penangkapan tren pasar dan pelacakan momentum.
Strategi ini menggunakan dua tingkat perhitungan rata-rata bergerak. Pertama menghitung rata-rata bergerak dasar (periode default 9), diikuti oleh proses penyelarasan sekunder (periode default 5). Strategi ini menawarkan berbagai metode perhitungan rata-rata bergerak, termasuk rata-rata bergerak sederhana (SMA), rata-rata bergerak eksponensial (EMA), rata-rata bergerak halus (SMMA), rata-rata bergerak tertimbang (WMA), dan rata-rata bergerak tertimbang volume (VWMA). Sinyal panjang dihasilkan ketika harga penutupan melintasi di atas garis sinyal penyelarasan, sementara sinyal pendek dihasilkan ketika harga penutupan melintasi di bawahnya.
Ini adalah versi yang ditingkatkan dari strategi trend-mengikuti klasik yang meningkatkan stabilitas sambil mempertahankan kesederhanaan melalui desain rata-rata bergerak dua lapisan. Strategi ini menawarkan skalabilitas dan fleksibilitas yang baik, dapat beradaptasi dengan lingkungan pasar yang berbeda melalui optimasi parameter dan ekstensi fungsi. Namun, pengguna perlu memperhatikan kontrol biaya transaksi dan manajemen risiko, dan disarankan untuk melakukan backtesting menyeluruh sebelum perdagangan langsung.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Moving Average 1.0 Strategy", overlay=true) // Input for Moving Average Length len = input.int(9, minval=1, title="Length") src = input(close, title="Source") offset = input.int(title="Offset", defval=0, minval=-500, maxval=500) // Calculate the Moving Average out = ta.sma(src, len) // Plot the Moving Average plot(out, color=color.blue, title="MA", offset=offset) // Function to choose the type of moving average ma(source, length, type) => switch type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) // Input for Smoothing Method and Length typeMA = input.string(title="Method", defval="SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing") smoothingLength = input.int(title="Smoothing Length", defval=5, minval=1, maxval=100, group="Smoothing") // Calculate the Smoothing Line smoothingLine = ma(out, smoothingLength, typeMA) // Plot the Smoothing Line plot(smoothingLine, title="Smoothing Line", color=color.rgb(120, 66, 134, 35), offset=offset) // Strategy Logic if (ta.crossover(close, smoothingLine)) strategy.entry("Buy", strategy.long) if (ta.crossunder(close, smoothingLine)) strategy.entry("Sell", strategy.short)