Xu hướng lượng tử theo chiến lược

Tác giả:ChaoZhang, Ngày: 2024-01-04 15:25:42
Tags:

img

Tổng quan

Chiến lược theo dõi xu hướng lượng là một chiến lược theo dõi xu hướng dựa trên đường EMA và ATR stop loss. Nó sử dụng đường EMA để đánh giá hướng xu hướng thị trường tổng thể, và theo dõi stop loss với ATR để khóa lợi nhuận xu hướng, tối đa hóa lợi nhuận.

Nguyên tắc

Chiến lược bao gồm các phần chính sau:

  1. Các đường EMA để xác định xu hướng chính

    Sử dụng đường 13 ngày, 50 ngày và 100 ngày để hình thành xu hướng tăng / giảm và đánh giá hướng xu hướng chính.

  2. Lỗi dừng động ATR

    Sử dụng chỉ số ATR để tính phạm vi chuyển động giá của giai đoạn hiện tại và đặt giá dừng lỗ để khóa lợi nhuận.

  3. Đơn giản hóa tín hiệu

    Giá đóng cửa trơn tru trong một khoảng thời gian nhất định với SMA để tránh các tín hiệu sai.

  4. Tín hiệu tăng/giảm

    Đi dài khi giá vượt qua đường EMA, đi ngắn khi vượt qua dưới.

Phân tích lợi thế

Chiến lược có những lợi thế sau:

  1. Kiểm soát lượng nước tuyệt vời, lượng nước tối đa trong phạm vi 160%.
  2. Động lực dừng lỗ thông minh hơn một cố định, có thể khóa trong lợi nhuận xu hướng nhiều hơn.
  3. Sử dụng EMA để xác định xu hướng chính tránh giao dịch đảo ngược.
  4. Các thanh mịn lọc các tín hiệu giả và cải thiện tỷ lệ thắng.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro:

  1. Các thông số tĩnh có thể không phù hợp với các sản phẩm khác nhau, cần tối ưu hóa.
  2. Dừng lỗ có thể tồn tại trong các thị trường khác nhau.
  3. Cần sự ổn định của máy chủ để tránh mất tín hiệu.

Những rủi ro này có thể được giảm thiểu thông qua tối ưu hóa tham số, thử nghiệm khả năng thích nghi v.v.

Hướng dẫn tối ưu hóa

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa tham số tự động với các thuật toán học máy.
  2. Đặt giá trị giá trị giá trị giá trị giá trị.
  3. Tăng bộ lọc hợp chất để cải thiện sự ổn định.
  4. Xem xét thử nghiệm chéo sản phẩm để cải thiện khả năng thích nghi.

Kết luận

Tóm lại, đây là một chiến lược lượng được thiết kế dựa trên khái niệm theo xu hướng. Nó xác định hướng xu hướng với EMA và sử dụng dừng lỗ ATR năng động. Nó có thể kiểm soát hiệu quả giảm trong khi nắm bắt lợi nhuận xu hướng. Tăng cường và lặp lại liên tục có thể tạo ra kết quả tốt hơn.


/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Combined Strategy", overlay=true)

// Input variables for EMA Crossover
ema13_length = input(13, title="EMA 13 Length")
ema50_length = input(50, title="EMA 50 Length")
ema100_length = input(100, title="EMA 100 Length")
ema200_length = input(200, title="EMA 200 Length")

// Calculate EMAs for EMA Crossover
ema13 = ema(close, ema13_length)
ema50 = ema(close, ema50_length)
ema100 = ema(close, ema100_length)
ema200 = ema(close, ema200_length)

// Plot EMAs for EMA Crossover
plot(ema13, color=color.blue, title="EMA 13")
plot(ema50, color=color.orange, title="EMA 50")
plot(ema100, color=color.green, title="EMA 100")
plot(ema200, color=color.red, title="EMA 200")

// Input variables for LinReg Candles
signal_length = input(title="Signal Smoothing", type=input.integer, minval=1, maxval=200, defval=11)
sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=true)

lin_reg = input(title="Lin Reg", type=input.bool, defval=true)
linreg_length = input(title="Linear Regression Length", type=input.integer, minval=1, maxval=200, defval=11)

// Calculate LinReg Candles
bopen = lin_reg ? linreg(open, linreg_length, 0) : open
bhigh = lin_reg ? linreg(high, linreg_length, 0) : high
blow = lin_reg ? linreg(low, linreg_length, 0) : low
bclose = lin_reg ? linreg(close, linreg_length, 0) : close

r = bopen < bclose

signal = sma_signal ? sma(bclose, signal_length) : ema(bclose, signal_length)

plotcandle(r ? bopen : na, r ? bhigh : na, r ? blow: na, r ? bclose : na, title="LinReg Candles", color=color.green, wickcolor=color.green, bordercolor=color.green, editable=true)
plotcandle(r ? na : bopen, r ? na : bhigh, r ? na : blow, r ? na : bclose, title="LinReg Candles", color=color.red, wickcolor=color.red, bordercolor=color.red, editable=true)

plot(signal, color=color.white)

// Input variables for UT Bot Alerts
a = input(1, title="Key Value. 'This changes the sensitivity'")
c = input(10, title="ATR Period")
h = input(false, title="Signals from Heikin Ashi Candles")

// Calculate UT Bot Alerts
xATR = atr(c)
nLoss = a * xATR

src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=false) : close

xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
   iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), 
   iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))

pos = 0   
pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
   iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 

xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

ema = ema(src,1)
above = crossover(ema, xATRTrailingStop)
below = crossover(xATRTrailingStop, ema)

buy = src > xATRTrailingStop and above 
sell = src < xATRTrailingStop and below

barbuy = src > xATRTrailingStop 
barsell = src < xATRTrailingStop 

strategy.entry("Buy", strategy.long, when=buy)
strategy.close("Buy", when=sell)
strategy.entry("Sell", strategy.short, when=sell)
strategy.close("Sell", when=buy)

plotshape(buy, title="Buy", text='Buy', style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, transp=0, size=size.tiny)
plotshape(sell, title="Sell", text='Sell', style=shape.labeldown, location=location.abovebar, color=color.red, textcolor=color.white, transp=0, size=size.tiny)

barcolor(barbuy ? color.green : na)
barcolor(barsell ? color.red : na)

alertcondition(buy, "UT Long", "UT Long")
alertcondition(sell, "UT Short", "UT Short")


Thêm nữa