Ini adalah strategi dagangan kuantitatif berdasarkan isyarat crossover purata bergerak berganda. Strategi ini menggunakan dua purata bergerak, satu sebagai garis isyarat utama dan satu lagi sebagai garis isyarat pelincir. Ia menjana isyarat dagangan dengan memantau persilangan harga dengan garis isyarat pelincir, membolehkan menangkap trend pasaran dan mengesan momentum.
Strategi ini menggunakan dua tahap pengiraan purata bergerak. Ia mula-mula mengira purata bergerak asas (periode lalai 9), diikuti dengan proses pelembap sekunder (periode lalai 5). Strategi ini menawarkan pelbagai kaedah pengiraan purata bergerak, termasuk Purata Bergerak Sederhana (SMA), Purata Bergerak Eksponensial (EMA), Purata Bergerak Lurus (SMMA), Purata Bergerak Berimbang (WMA), dan Purata Bergerak Berimbang Volume (VWMA). Isyarat panjang dihasilkan apabila harga penutupan melintasi di atas garis isyarat pelembap, sementara isyarat pendek dihasilkan apabila harga penutupan melintasi di bawahnya.
Ini adalah versi yang dipertingkatkan dari strategi trend-mengikut klasik yang meningkatkan kestabilan sambil mengekalkan kesederhanaan melalui reka bentuk purata bergerak dua lapisan. Strategi ini menawarkan skalabiliti dan fleksibiliti yang baik, dapat disesuaikan dengan persekitaran pasaran yang berbeza melalui pengoptimuman parameter dan pelanjutan fungsi. Walau bagaimanapun, pengguna perlu memberi perhatian kepada kawalan kos transaksi dan pengurusan risiko, dan disyorkan untuk menjalankan pengujian balik yang 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)