
Chiến lược này là chiến lược theo dõi xu hướng dựa trên đường siêu xu hướng được xây dựng dựa trên các chỉ số biến động thực trung bình (Average True Range, ATR), được sử dụng để xác định hướng xu hướng thị trường và cung cấp tín hiệu giao dịch. Chiến lược này có chức năng hai chiều là xác định xu hướng và theo dõi xu hướng, có thể được sử dụng trong các lĩnh vực như chỉ số cổ phiếu, tương lai, ngoại hối và tiền kỹ thuật số.
Chiến lược này bằng cách tính toán chỉ số ATR trong một chu kỳ nhất định và so sánh nó với giá để xác định xem giá có nằm trong đường xu hướng tăng hay không. Cụ thể, chiến lược này đầu tiên tính toán chỉ số ATR, sau đó xây dựng đường lên và đường xuống dựa trên hệ số nhân giá trị ATR.
Điểm mấu chốt của chiến lược này là xây dựng tiêu chuẩn để đánh giá xu hướng vượt qua đường xu hướng. Đường xu hướng vượt quá được dựa trên sự thay đổi động lực của chỉ số ATR, có thể lọc hiệu quả tiếng ồn thị trường, đánh giá hướng xu hướng chính. Đồng thời, đường xu hướng vượt quá có một sự chậm trễ, điều này giúp xác nhận điểm chuyển hướng xu hướng và tránh tạo ra tín hiệu giao dịch sai.
Ưu điểm lớn nhất của chiến lược này là khả năng kết hợp phân tích xu hướng và theo dõi xu hướng. Cụ thể, các lợi thế chính là:
Chiến lược này có những rủi ro:
Đối phó, có thể được tối ưu hóa bằng cách điều chỉnh các tham số như chu kỳ ATR, hệ số đường xu hướng vượt quá, hoặc có thể kết hợp với các chỉ số khác để xác minh, giảm xác suất tín hiệu sai. Ngoài ra, có thể đặt điểm dừng để kiểm soát tổn thất đơn lẻ.
Chiến lược này có thể được tối ưu hóa hơn nữa:
Bằng cách tối ưu hóa sâu, chúng tôi hy vọng sẽ tiếp tục cải thiện sự ổn định, khả năng thích ứng và lợi nhuận của chiến lược.
Chiến lược này có tính chất ổn định, đáng tin cậy và có lợi nhuận tốt. Xây dựng xu hướng chính và đánh giá đường xu hướng, đồng thời cung cấp tín hiệu giao dịch là điểm sáng của chiến lược. Tuy nhiên, cũng có một mức độ chậm trễ và rủi ro sai lầm.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Supertrend Strategy", overlay = true)
Periods = input(10, title="ATR Period")
src = input(hl2, title="Source")
Multiplier = input(3.0, title="ATR Multiplier", step=0.1)
changeATR = input(true, title="Change ATR Calculation Method?")
showsignals = input(true, title="Show Buy/Sell Signals?")
highlighting = input(true, title="Highlighter On/Off?")
atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)
strategy.entry("Buy", strategy.long, when=buySignal)
strategy.entry("Sell", strategy.short, when=sellSignal)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")