
Ini adalah strategi perdagangan kuantitatif yang didasarkan pada sinyal silang dua garis rata-rata. Strategi ini menggunakan dua rata-rata bergerak, satu sebagai garis sinyal utama dan yang lain sebagai garis sinyal halus. Strategi ini menghasilkan sinyal perdagangan dengan memantau persilangan harga dengan garis sinyal halus, untuk menangkap tren pasar dan melacak momentum.
Strategi ini menggunakan dua tingkatan perhitungan rata-rata bergerak. Pertama, sebuah rata-rata bergerak dasar ((default period 9) dihitung, dan kemudian rata-rata ini diproses dua kali ((default period 5)). Strategi ini menawarkan pilihan dari berbagai metode perhitungan rata-rata, termasuk rata-rata bergerak sederhana (SMA), rata-rata bergerak indeks (EMA), rata-rata bergerak geser (SMMA), rata-rata bergerak berbobot (WMA) dan rata-rata bergerak berbobot (VWMA).
Ini adalah versi yang lebih baik dari strategi pelacakan tren klasik, yang meningkatkan stabilitas dengan desain rata-rata bergerak bertingkat dua, sambil menjaga kesederhanaan strategi. Strategi ini memiliki skalabilitas dan fleksibilitas yang baik, dapat beradaptasi dengan lingkungan pasar yang berbeda melalui pengoptimalan parameter dan perluasan fungsi. Namun, pengguna perlu berhati-hati untuk mengontrol biaya perdagangan dan mengelola risiko, dan disarankan untuk melakukan pengujian ulang yang memadai sebelum melakukan perdagangan di tempat.
/*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)