
Strategi ini menggabungkan rata-rata bergerak sederhana (SMA) dan garis tren mundur linear bergulir, dengan syarat pembelian adalah harga penutupan lebih tinggi dari SMA dan garis tren, dan persyaratan keluar adalah harga penutupan lebih rendah dari SMA dan garis tren. Strategi ini terutama memanfaatkan sinyal perdagangan linear SMA dan dukungan dari garis tren bergulir, masuk saat menerobos saluran atas, dan keluar saat menerobos saluran bawah.
Strategi ini didasarkan pada beberapa komponen:
SMA: Simple Moving Average, dengan periode tertentu ((smaPeriod) menghitung rata-rata harga penutupan sebagai garis sinyal.
Garis tren bergulir: Garis lurus yang paling cocok untuk sinyal tren berdasarkan perhitungan regresi linier dalam periode tertentu (window). Metode perhitungan adalah perkalian dua terkecil.
Kondisi masuk: melakukan over entry ketika harga close out lebih tinggi dari SMA average dan rolling trend line.
Kondisi Keluar: Keluar posisi kosong ketika harga close out berada di bawah garis SMA rata-rata dan garis tren bergulir
Dengan demikian, strategi ini terutama bergantung pada sinyal perdagangan linier untuk masuk ke dalam dan keluar dari saluran. Menggunakan karakteristik pengembalian rata-rata dari rata-rata bergerak dan dukungan rata-rata dari saluran pengembalian linier, operasi pemecahan pelacakan tren dapat dilakukan.
Strategi ini mengintegrasikan pemfilteran ganda garis rata-rata dan garis tren, yang secara efektif dapat mengurangi operasi false breakout. Pada saat yang sama, garis tren bergulir memberikan dukungan saluran yang lebih akurat dan membuat keputusan perdagangan lebih dapat diandalkan. Keuntungan utama adalah sebagai berikut:
Strategi ini juga memiliki beberapa risiko, terutama yang berkaitan dengan:
Ada beberapa cara untuk mengoptimalkan risiko ini:
Strategi ini dapat dioptimalkan dari beberapa dimensi:
Tambahkan fungsi untuk menyesuaikan parameter SMA dan slippage secara dinamis. Parameter dioptimalkan secara otomatis dalam lingkungan pasar yang berbeda.
Menambahkan mekanisme stop loss yang elastis. Stop loss terjadi ketika harga menembus garis tren dalam proporsi tertentu.
Gabungan dengan indikator lain untuk memfilter sinyal. Misalnya, indikator kuantitatif, indikator kuat dan lemah, dan lain-lain. Meningkatkan akurasi keputusan.
Mengembangkan versi terbalik. Lakukan lebih banyak ketika harga mendekati dasar dan menembus saluran bawah.
Strategi ini mengintegrasikan sinyal perdagangan rata-rata bergerak dan dukungan saluran garis tren bergulir, memungkinkan operasi pelacakan tren. Mekanisme penyaringan ganda mengurangi probabilitas false breakout dan meningkatkan kualitas keputusan. Pengaturan parameter sederhana, logika yang jelas, mudah untuk diimplementasikan dan disesuaikan secara optimal. Secara keseluruhan, strategi ini membentuk sistem perdagangan tren yang dapat diandalkan, sederhana dan intuitif.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SMA Strategy with Rolling Trendline", overlay=true)
// Input parameters
smaPeriod = input(14, title="SMA Period")
window = input(20, title="Trendline Window")
startDate = input(timestamp("2023-01-01"), title="Start Date")
endDate = input(timestamp("2023-12-31"), title="End Date")
// Calculating SMA
sma = sma(close, smaPeriod)
// Function to calculate linear regression trendline for a window
linreg_trendline(window) =>
sumX = 0.0
sumY = 0.0
sumXY = 0.0
sumX2 = 0.0
for i = 0 to window - 1
sumX := sumX + i
sumY := sumY + close[i]
sumXY := sumXY + i * close[i]
sumX2 := sumX2 + i * i
slope = (window * sumXY - sumX * sumY) / (window * sumX2 - sumX * sumX)
intercept = (sumY - slope * sumX) / window
slope * (window - 1) + intercept
// Calculating the trendline
trendline = linreg_trendline(window)
// Entry and Exit Conditions
longCondition = close > sma and close < trendline
exitLongCondition = close < sma and close > trendline
// Strategy logic
if (true)
if (longCondition)
strategy.entry("Long", strategy.long)
if (exitLongCondition)
strategy.close("Long")
// Plotting
plot(sma, title="Simple Moving Average", color=color.blue)
plot(trendline, title="Rolling Trendline", color=color.red)
plotshape(series=longCondition, title="Enter Trade", location=location.belowbar, color=color.green, style=shape.triangleup)
plotshape(series=exitLongCondition, title="Exit Trade", location=location.abovebar, color=color.red, style=shape.triangledown)