
Ini adalah strategi perdagangan kuantitatif berdasarkan isyarat silang dua garis rata. Strategi ini menggunakan dua rata-rata bergerak, satu sebagai isyarat utama dan yang lain sebagai isyarat licin. Strategi ini menghasilkan isyarat perdagangan dengan memantau persilangan harga dan isyarat licin.
Strategi menggunakan dua tahap pengiraan rata-rata bergerak. Pertama, satu rata-rata bergerak asas dikira ((kelayakan lalai adalah 9) dan kemudian dua kali perlakuan rata-rata di atas rata-rata ini ((kelayakan lalai adalah 5). Strategi menyediakan pilihan pelbagai kaedah pengiraan rata-rata, termasuk purata bergerak sederhana (SMA), purata bergerak indeks (EMA), purata bergerak rata-rata (SMMA), purata bergerak berat (WMA) dan purata bergerak berat (VWMA).
Ini adalah versi yang lebih baik dari strategi trend-tracking klasik, dengan reka bentuk rata-rata bergerak dua lapis, meningkatkan kestabilan sambil mengekalkan kesederhanaan strategi. Strategi ini mempunyai skalabiliti dan fleksibiliti yang baik, dapat menyesuaikan diri dengan keadaan pasaran yang berbeza melalui pengoptimuman parameter dan pengembangan fungsi.
/*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)