Chiến lược theo dõi xu hướng siêu đa khung thời gian


Ngày tạo: 2024-01-15 11:35:47 sửa đổi lần cuối: 2024-01-15 11:35:47
sao chép: 0 Số nhấp chuột: 556
1
tập trung vào
1617
Người theo dõi

Chiến lược theo dõi xu hướng siêu đa khung thời gian

Tổng quan

Chiến lược này là một chiến lược sử dụng chỉ số ATR để xây dựng các kênh xu hướng động trong nhiều khung thời gian, để thực hiện theo dõi xu hướng. Chiến lược sẽ tạo ra tín hiệu khi giá phá vỡ kênh, bằng cách liên tục điều chỉnh kênh để nắm bắt xu hướng lớn hơn.

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

Chiến lược sử dụng chỉ số ATR để xây dựng kênh xu hướng tăng và kênh xu hướng giảm. Cụ thể, đường kênh tăng là giá đóng cửa trừ đi N lần của chỉ số ATR; đường kênh giảm là giá đóng cửa cộng với N lần của chỉ số ATR.

Khi giá phá vỡ kênh tăng, nó tạo ra tín hiệu mua; khi giá phá vỡ kênh giảm, nó tạo ra tín hiệu bán. Các kênh sẽ điều chỉnh theo động thái giá mới nhất, do đó theo dõi xu hướng.

Ngoài ra, chiến lược cũng xác định một biến xu hướng để xác định hiện tại là xu hướng tăng hoặc xu hướng giảm. Các biến xu hướng được sử dụng cùng với đường dẫn để tránh tạo ra tín hiệu sai.

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

  • Theo dõi xu hướng bằng cách sử dụng các kênh động
  • Giảm nguy cơ biến động của thị trường
  • Các thông số đường dẫn có thể điều chỉnh, thích ứng mạnh
  • Khả năng thay đổi khung thời gian

Rủi ro chiến lược

  • Theo dõi quá cấp tiến có thể làm tăng nguy cơ mất mát
  • Các tham số kênh được thiết lập không đúng, tín hiệu ít hoặc tín hiệu sai nhiều
  • Cần có khả năng lập trình mạnh mẽ để điều chỉnh các tham số

Cách tối ưu hóa:

  • Tích hợp giảm ATR để giảm theo dõi
  • Tối ưu hóa các tham số, tìm các tham số kết hợp tốt nhất
  • Tăng chiến lược dừng lỗ, giảm tổn thất đơn

Hướng tối ưu hóa chiến lược

  • Thêm bộ lọc cho các chỉ số khác để đảm bảo tín hiệu đáng tin cậy hơn
  • Tăng chiến lược giảm lỗ, giảm rủi ro
  • Tối ưu hóa tham số để tìm tham số tốt nhất
  • Tối ưu hóa thời gian nhập cảnh và xuất cảnh, tăng tỷ lệ lợi nhuận

Tóm tắt

Chiến lược này nói chung là một chiến lược theo dõi xu hướng tốt hơn. Nó có thể điều chỉnh động, theo chiều hướng, tránh theo đuổi cao và giảm. Bằng cách tối ưu hóa tham số và cải tiến thích hợp, bạn có thể tăng thêm lợi thế chiến lược, giảm rủi ro, để có được hiệu quả tốt hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('超级趋势精简优化版', overlay=true)
Periods = input(title='ATR周期', defval=10)
src = input(hl2, title='价格数据源')
Multiplier = input.float(title='ATR 乘数', step=0.1, defval=3.0)
changeATR = input(title='更改ATR计算方法', defval=true,tooltip = '默认为art否则sma(ta.tr,ATR周期)')
showsignals = input(title='显示买入/卖出信号', defval=false)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.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='上涨趋势', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal and showsignals ? up : na, title='买点', text='买点', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))
dnPlot = plot(trend == 1 ? na : dn, title='下跌趋势', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal and showsignals ? dn : na, title='卖点', text='卖点', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))
FromMonth = input.int(defval=9, title='From Month', minval=1, maxval=12)
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31)
FromYear = input.int(defval=2018, title='From Year', minval=999)
ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12)
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31)
ToYear = input.int(defval=9999, title='To Year', minval=999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() =>
    time >= start and time <= finish ? true : false
longCondition = buySignal
if longCondition and window()
    strategy.entry('BUY', strategy.long, comment = '买入')
shortCondition = sellSignal
if shortCondition and window()
    strategy.close('BUY',comment = '卖出')
buy1 = ta.barssince(buySignal)
sell1 = ta.barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na