Chiến lược theo xu hướng dựa trên các đường xu hướng siêu việt


Ngày tạo: 2023-12-08 17:07:53 sửa đổi lần cuối: 2023-12-08 17:07:53
sao chép: 3 Số nhấp chuột: 606
1
tập trung vào
1621
Người theo dõi

Chiến lược theo xu hướng dựa trên các đường xu hướng siêu việt

Tổng quan

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ố.

Nguyên tắc chiến lược

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.

Lợi thế chiến lược

Ư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à:

  1. Dòng xu hướng siêu được xây dựng bằng ATR, có thể xác định xu hướng thị trường một cách hiệu quả, lọc tiếng ồn.
  2. Đường siêu xu hướng có độ trễ, giúp giảm tín hiệu sai.
  3. Nó có thể đưa ra các tín hiệu đánh giá xu hướng và giao dịch cùng một lúc, hoạt động rất đơn giản.
  4. Các tham số Parametrization có thể được tối ưu hóa để phù hợp với thị trường rộng hơn.
  5. Các chỉ số trực quan để đánh giá xu hướng hiện tại.

Phân tích rủi ro

Chiến lược này có những rủi ro:

  1. Thiết lập tham số ATR không chính xác có thể dẫn đến đường siêu xu hướng quá nhạy cảm hoặc chậm trễ.
  2. Không thể hoàn toàn tránh được ảnh hưởng của tiếng ồn, trong một số trường hợp có thể tạo ra tín hiệu sai.
  3. Tuy nhiên, khi có sự biến động mạnh, độ chính xác của đường xu hướng sẽ giảm xuống.
  4. Không thể dự đoán được điểm đảo ngược của xu hướng, chỉ có thể theo dõi xu hướng đã xảy ra.

Đố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ẻ.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa hơn nữa:

  1. Kết hợp với thuật toán học máy, để thực hiện tối ưu hóa tự động của tham số.
  2. Thêm các chỉ số đánh giá và xác minh như chỉ số trung bình di chuyển trơn.
  3. Thiết lập chiến lược dừng lỗ, tối ưu hóa quản lý tiền.
  4. Phương pháp kết hợp các chỉ số cảm xúc, phân tích tin tức và các phương pháp khác để dự đoán sự đảo ngược xu hướng tiềm ẩn.
  5. Sử dụng kỹ thuật học sâu để phân tích dữ liệu lịch sử lớn hơn, cải thiện tính chính xác của phán đoán.

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.

Tóm tắt

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.

Mã nguồn chiến lược
/*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!")