Chiến lược này được xây dựng dựa trên chỉ số Average True Range (ATR) để xây dựng một đường SuperTrend để đánh giá hướng xu hướng thị trường và tạo ra các tín hiệu giao dịch. Nó có cả khả năng đánh giá xu hướng và theo dõi xu hướng, áp dụng cho các chỉ số tương lai, ngoại hối và tiền điện tử.
Chiến lược tính toán ATR trong một khoảng thời gian nhất định và so sánh nó với giá để xác định giá có nằm trong kênh xu hướng tăng hay không. Cụ thể, nó đầu tiên tính toán ATR, sau đó sử dụng giá trị ATR nhân một nhân để vẽ các dải trên và dưới. Khi giá cao hơn dải trên, một xu hướng tăng được xác định. Khi giá dưới dải dưới, một xu hướng giảm được xác định. Trong xu hướng tăng, nếu giá thay đổi từ xu hướng giảm sang xu hướng tăng, một tín hiệu mua được tạo ra. Trong xu hướng giảm, nếu giá thay đổi từ xu hướng tăng sang xu hướng giảm, một tín hiệu bán được kích hoạt.
Chìa khóa nằm trong việc xây dựng điểm chuẩn đánh giá xu hướng - đường SuperTrend. Đường SuperTrend dựa trên ATR thay đổi năng động, có thể lọc hiệu quả tiếng ồn thị trường và xác định hướng xu hướng chính. Trong khi đó, đường SuperTrend có hiệu ứng chậm nhất định, giúp xác nhận các điểm đảo ngược xu hướng và tránh tạo ra các tín hiệu giao dịch không chính xác.
Ưu điểm lớn nhất của chiến lược này là sự kết hợp của khả năng xác định xu hướng và theo dõi:
Những rủi ro chính của chiến lược này bao gồm:
Các giải pháp có thể bao gồm tối ưu hóa các tham số như thời gian ATR và yếu tố SuperTrend, kết hợp với các chỉ số khác để xác minh và giảm xác suất tín hiệu không chính xác.
Không gian tối ưu hóa hơn nữa tồn tại trong các lĩnh vực như:
Tối ưu hóa sâu sắc hứa hẹn sẽ nâng cao tính ổn định, thích nghi và lợi nhuận của chiến lược.
Chiến lược này thể hiện sự ổn định, độ tin cậy và lợi nhuận tổng thể. Xây dựng đường SuperTrend cho phán đoán xu hướng chính và tín hiệu giao dịch là điểm nổi bật lớn nhất của nó. Nhưng một mức độ nhất định của hiệu ứng tụt hậu và rủi ro đánh giá sai tồn tại. Parameter và tối ưu hóa mô hình hứa hẹn hiệu suất chiến lược tốt hơn. Tóm lại, như một chiến lược dựa trên xu hướng điển hình, nó đáng để xác minh và sử dụng trong giao dịch trực tiếp.
/*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!")