
Strategi ini menggunakan rata-rata bergerak dan standar deviasi saluran untuk menilai pergerakan pasar dan menghasilkan sinyal perdagangan ketika harga melewati standar deviasi saluran.
Strategi ini pertama-tama menghitung SMA pada N hari (default 50 hari) dan kemudian berdasarkan SMA menghitung standar deviasi StdDev untuk harga periode tersebut. Dengan SMA sebagai sumbu tengah, masing-masing di atas dan di bawah dengan StdDev dua kali lipat untuk membangun saluran standar deviasi di atas dan bawah.
Setelah masuk ke pasar, strategi akan mengatur stop loss position. Secara khusus, setelah melakukan over, stop loss line adalah harga penutupan saat masuk ke pasar ((100 - stop loss persentase); setelah shorting, stop loss line adalah harga penutupan saat masuk ke pasar ((100 + stop loss persentase)
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Solusi untuk menghadapi risiko adalah sebagai berikut:
Strategi ini masih memiliki ruang untuk dioptimalkan lebih jauh:
Verifikasi menggunakan garis rata-rata dari beberapa periode waktu, hindari kurva yang terlalu sensitif.
Menggabungkan dengan indikator lain seperti MACD untuk menilai tren dan deviasi.
Memperkenalkan algoritma pembelajaran mesin dengan parameter optimasi dinamis.
Strategi Average Line Regression Breakthrough secara keseluruhan adalah strategi perdagangan kuantitatif yang sangat praktis. Ini memiliki keuntungan untuk melacak tren, mengontrol pengunduran diri, dan mencapai kebutuhan yang sederhana dan sesuai untuk perdagangan kuantitatif. Selain itu, perlu diperhatikan beberapa pilihan parameter dan masalah pengaturan stop loss, yang dikombinasikan dengan analisis multi-aksis waktu dan optimasi parameter, untuk mendapatkan kinerja strategi yang lebih baik.
/*backtest
start: 2023-02-16 00:00:00
end: 2024-02-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Standard Deviation Bands with Buy/Sell Signals", overlay=true)
// Input for the number of standard deviations
deviationMultiplier = input.float(2.0, title="Standard Deviation Multiplier")
// Input for the length of the moving average
maLength = input.int(50, title="Moving Average Length")
// Input for the stop loss percentage
stopLossPercentage = input.float(12, title="Stop Loss Percentage")
// Calculate the moving average
sma = ta.sma(close, maLength)
// Calculate the standard deviation of the price
priceDeviation = ta.stdev(close, maLength)
// Calculate the upper and lower bands
upperBand = sma + (priceDeviation * deviationMultiplier)
lowerBand = sma - (priceDeviation * deviationMultiplier)
// Plot the bands
plot(upperBand, color=color.green, title="Upper Band")
plot(lowerBand, color=color.red, title="Lower Band")
// Plot the moving average
plot(sma, color=color.blue, title="SMA", linewidth=2)
// Buy Signal
buyCondition = ta.crossover(close, lowerBand)
sellCondition = ta.crossunder(close, upperBand)
// Calculate stop loss level
stopLossLevelBuy = close * (1 - stopLossPercentage / 100)
stopLossLevelSell = close * (1 + stopLossPercentage / 100)
// Create Buy and Sell Alerts
alertcondition(buyCondition, title="Buy Signal", message="Buy Signal - Price Crossed Below Lower Band")
alertcondition(sellCondition, title="Sell Signal", message="Sell Signal - Price Crossed Above Upper Band")
// Plot Buy and Sell Arrows on the chart
plotshape(buyCondition, style=shape.triangleup, location=location.belowbar, color=color.green, title="Buy Signal Arrow")
plotshape(sellCondition, style=shape.triangledown, location=location.abovebar, color=color.red, title="Sell Signal Arrow")
// Exit Long and Short Positions
var float stopLossBuy = na
var float stopLossSell = na
if ta.crossover(close, sma)
stopLossBuy := stopLossLevelBuy
if ta.crossunder(close, sma)
stopLossSell := stopLossLevelSell
strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.exit("Stop Loss/Take Profit Buy", from_entry = "Buy", stop = stopLossBuy)
strategy.entry("Sell", strategy.short, when = sellCondition)
strategy.exit("Stop Loss/Take Profit Sell", from_entry = "Sell", stop = stopLossSell)