
Chiến lược này dựa trên chỉ số Average True Range (ATR) để xây dựng kênh SuperTrend, tạo ra tín hiệu mua và bán dựa trên giá phá vỡ kênh siêu xu hướng. Chiến lược này kết hợp các ưu điểm của theo dõi xu hướng và quản lý dừng lỗ, có thể theo dõi hiệu quả hướng xu hướng.
Đường lên và đường xuống của kênh siêu xu hướng được tính bằng công thức sau:
Đường đua lên = (giá cao nhất + giá thấp nhất) / 2 + ATR (n) * nhân tố Đường đua dưới = (giá cao nhất + giá thấp nhất) / 2 - ATR (n) * nhân tố
Trong đó, ATR (n) là tần số thực trung bình trong n ngày, nhân là một tham số có thể điều chỉnh, mặc định là 3.
Khi giá đóng cửa cao hơn đường đua là tín hiệu bullish, khi giá đóng cửa thấp hơn đường đua là tín hiệu bearish. Chiến lược xác định nhập và ra thị trường dựa trên tín hiệu bullish và bearish.
Phương pháp giải quyết rủi ro:
Chiến lược này sử dụng kênh siêu xu hướng để thực hiện theo dõi xu hướng và quản lý lỗ hổng. Việc kết hợp các tham số ATR và các tham số yếu tố là rất quan trọng đối với hiệu quả của chiến lược. Bước tiếp theo sẽ tối ưu hóa chiến lược hơn nữa từ các khía cạnh tối ưu hóa tham số, lọc tín hiệu, v.v., để nó có thể thích ứng với môi trường thị trường phức tạp hơn.
/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supertrend Backtest", shorttitle="STBT", overlay=true)
// Input for ATR Length
atrLength = input.int(10, title="ATR Length", minval=1)
atrFactor = input.float(3.0, title="Factor", minval=0.01, step=0.01)
// Calculate SuperTrend
[supertrend, direction] = ta.supertrend(atrFactor, atrLength)
supertrend := barstate.isfirst ? na : supertrend
// Define entry and exit conditions
longCondition = ta.crossover(close, supertrend)
shortCondition = ta.crossunder(close, supertrend)
// Plot the SuperTrend
plot(supertrend, color=color.new(color.blue, 0), title="SuperTrend")
// Plot Buy and Sell signals
plotshape(series=longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")
// Strategy Entry and Exit
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)