Xu hướng theo chiến lược dựa trên lệnh dừng lỗ động của giao dịch chéo EMA kép

Tác giả:ChaoZhang, Ngày: 2024-01-29 09:57:20
Tags:

img

Tổng quan

Chiến lược này sử dụng đường chéo vàng và đường chéo chết của đường EMA để theo xu hướng hai hướng, và thiết lập các đường dừng lỗ năng động cho các vị trí dài và ngắn để nắm bắt các chuyển động xu hướng trên thị trường.

Chiến lược logic

  1. Tính toán đường EMA nhanh (5 ngày) và đường EMA chậm (20 ngày)
  2. Đi dài khi đường nhanh vượt qua đường chậm từ dưới; Đi ngắn khi đường nhanh vượt qua đường chậm từ trên
  3. Sau khi tham gia dài, thiết lập stop loss động ở giá nhập * (1 - tỷ lệ lỗ stop dài); Sau khi tham gia ngắn, thiết lập stop loss động ở giá nhập * (1 + tỷ lệ lỗ stop ngắn)
  4. Vị trí thoát với lệnh dừng lỗ khi giá đạt mức dừng lỗ

Phân tích lợi thế

  1. Các đường EMA có khả năng theo dõi xu hướng mạnh hơn.
  2. Động lực dừng lỗ di chuyển cùng với lợi nhuận, tối đa hóa xu hướng bắt lợi nhuận
  3. Bộ lọc bổ sung với vwap tránh bị mắc kẹt trong whipsaws và cải thiện chất lượng tín hiệu

Phân tích rủi ro

  1. Là một xu hướng thuần túy theo chiến lược, nó dễ bị tổn thương bởi các thị trường khác nhau với những đòn đánh
  2. Lỗi dừng quá lỏng lẻo có thể dẫn đến tổn thất phóng đại
  3. Tính chất chậm của tín hiệu chéo EMA có thể bỏ lỡ các điểm xuất nhập tốt nhất

Các cải tiến như quản lý rủi ro dựa trên ATR, tối ưu hóa các quy tắc dừng lỗ, thêm các chỉ số lọc vv có thể giúp cải thiện chiến lược.

Hướng dẫn cải thiện

  1. Kết hợp các chỉ số dừng lỗ động như ATR hoặc DONCH để thiết lập dừng thích nghi tốt hơn
  2. Thêm nhiều chỉ số lọc như MACD, KDJ để tránh giao dịch xấu
  3. Tối ưu hóa các tham số để tìm kết hợp chiều dài EMA tốt nhất
  4. Sử dụng các phương pháp học máy để khám phá các thông số tối ưu

Kết luận

Kết luận, đây là một xu hướng rất điển hình sau chiến lược. Chuyển đổi EMA kép với stop loss động có thể khóa hiệu quả lợi nhuận xu hướng. Trong khi đó, các rủi ro như tín hiệu tụt lại và dừng rộng vẫn tồn tại. Thông qua điều chỉnh tham số, quản lý rủi ro, bổ sung bộ lọc vv, tinh chỉnh thêm có thể dẫn đến kết quả tốt hơn.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

strategy("EMA Crossover Strategy", shorttitle="EMAC", overlay=true,calc_on_every_tick=true)

// Input parameters
shortEmaLength = input(5, title="Short EMA Length")
longEmaLength = input(20, title="Long EMA Length")
priceEmaLength = input(1, title="Price EMA Length")

// Set stop loss level with input options (optional)
longLossPerc = input.float(0.05, title="Long Stop Loss (%)",
     minval=0.0, step=0.1) * 0.01

shortLossPerc = input.float(0.05, title="Short Stop Loss (%)",
     minval=0.0, step=0.1) * 0.01

// Calculating indicators
shortEma = ta.ema(close, shortEmaLength)
longEma = ta.ema(close, longEmaLength)
//priceEma = ta.ema(close, priceEmaLength)
vwap = ta.vwap(close)

// Long entry conditions
longCondition = ta.crossover(shortEma, longEma) and close > vwap
// Short entry conditions
shortCondition = ta.crossunder(shortEma, longEma) and close > vwap

// STEP 2:
// Determine stop loss price
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)


if (longCondition)
    strategy.entry("Enter Long", strategy.long)
    strategy.exit("Exit Long",from_entry = "Enter Long",stop= longStopPrice)
plotshape(series=longCondition, title="Long Signal", color=color.green, style=shape.triangleup, location=location.belowbar)


if (shortCondition)
    strategy.entry("Enter Short", strategy.short)
    strategy.exit("Exit Short", from_entry = "Enter Short",stop = shortStopPrice)
plotshape(series=shortCondition, title="Short Signal", color=color.red, style=shape.triangledown, location=location.abovebar)

// Stop loss levels
//longStopLoss = (1 - stopLossPercent) * close
//shortStopLoss = (1 + stopLossPercent) * close

// Exit conditions
//strategy.exit("Long", from_entry="Long", loss=longStopLoss)
//strategy.exit("Short", from_entry="Short", loss=shortStopLoss)

// Plotting indicators on the chart
plot(shortEma, color=color.yellow, title="Short EMA")
plot(longEma, color=color.green, title="Long EMA")
plot(close, color=color.black, title="Close")
plot(vwap, color=color.purple, title="VWAP")

// Plot stop loss values for confirmation
plot(strategy.position_size > 0 ? longStopPrice : na,
     color=color.red, style=plot.style_line,
     linewidth=2, title="Long Stop Loss")

plot(strategy.position_size < 0 ? shortStopPrice : na,
     color=color.blue, style=plot.style_line,
     linewidth=2, title="Short Stop Loss")
// Plotting stop loss lines
//plot(longStopLoss, color=color.red, title="Long Stop Loss", linewidth=2, style=plot.style_line)
//plot(shortStopLoss, color=color.aqua, title="Short Stop Loss", linewidth=2, style=plot.style_line)

Thêm nữa