
Strategi ini menggabungkan purata bergerak sederhana ((SMA) dan garis trend pengembalian linear bergulir, menetapkan syarat pembelian adalah harga penutupan lebih tinggi daripada SMA dan garis trend, dan syarat Keluar adalah harga penutupan lebih rendah daripada SMA dan garis trend. Strategi ini menggunakan isyarat perdagangan linear SMA dan sokongan garis trend bergulir, masuk ketika menerobos saluran atas, keluar ketika menerobos saluran bawah.
Strategi ini adalah berdasarkan kepada beberapa komponen:
SMA: purata bergerak mudah, dengan jangka masa tertentu ((smaPeriod) untuk mengira purata harga penutupan sebagai garis isyarat.
Garis trend bergulir: Garis lurus yang paling sesuai berdasarkan pengiraan regresi linear dalam tempoh masa tertentu (window) sebagai isyarat trend. Kaedah pengiraan adalah perkalian dua terendah.
Syarat kemasukan: Masuk lebih banyak apabila harga penutupan lebih tinggi daripada garis rata-rata SMA dan garis trend bergulir.
Syarat Keluar: Keluar kedudukan kosong apabila harga penutupan berada di bawah garis trend rata-rata SMA dan garis trend bergulir.
Dengan cara ini, strategi ini bergantung kepada masuk ke dalam isyarat perdagangan linear, dan keluar dari saluran. Menggunakan ciri-ciri pengembalian rata-rata rata-rata bergerak dan sokongan rata-rata saluran pengembalian linear, operasi penembusan mengikuti trend dapat dicapai.
Strategi ini mengintegrasikan penapisan berganda garisan rata dan garisan trend, yang dapat mengurangkan operasi penembusan palsu. Pada masa yang sama, garisan trend bergulir memberikan sokongan saluran yang lebih tepat, menjadikan keputusan perdagangan lebih dipercayai. Kelebihan utama adalah sebagai berikut:
Strategi ini juga mempunyai beberapa risiko, yang tertumpu kepada beberapa perkara berikut:
Untuk mengatasi risiko ini, anda boleh mula dengan cara berikut:
Strategi ini boleh dioptimumkan dari segi berikut:
Tambah fungsi untuk menyesuaikan secara dinamik kitaran SMA dan parameter titik geser. Optimumkan parameter secara automatik dalam keadaan pasaran yang berbeza.
Menambah mekanisme penangguhan elastis. Penangguhan apabila harga menembusi garis trend dalam peratusan tertentu.
Gabungan dengan isyarat penapisan indikator lain. Sebagai contoh, indikator kuantitatif, indikator kekuatan lemah, dan lain-lain. Meningkatkan ketepatan keputusan.
Mengembangkan versi terbalik. Melakukan lebih banyak apabila harga mendekati bahagian bawah dan menembusi saluran ke bawah.
Strategi ini mengintegrasikan isyarat perdagangan purata bergerak dan sokongan saluran garis trend bergulir, yang membolehkan operasi pengesanan trend. Mekanisme penapisan berganda mengurangkan kebarangkalian penembusan palsu dan meningkatkan kualiti keputusan.
/*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)