Chiến lược EMA với ATR Stop Loss

Tác giả:ChaoZhang, Ngày: 2023-12-11 16:00:09
Tags:

img

Tổng quan

Chiến lược này sử dụng đường chéo vàng EMA để tạo ra tín hiệu giao dịch, nghĩa là tín hiệu mua được tạo ra khi đường EMA nhanh vượt qua trên đường EMA chậm, và tín hiệu bán được tạo ra khi đường EMA nhanh vượt qua dưới đường EMA chậm. Nó thuộc về một chiến lược theo xu hướng điển hình. Đồng thời, chiến lược sử dụng chỉ số ATR để thiết lập một stop loss động để kiểm soát rủi ro trong khi đảm bảo lợi nhuận.

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

  1. Định nghĩa thời gian EMA nhanh là 13 và thời gian EMA chậm là 48.
  2. Khi đường EMA nhanh vượt qua trên đường EMA chậm, một tín hiệu mua được tạo ra; khi đường EMA nhanh vượt qua dưới đường EMA chậm, một tín hiệu bán được tạo ra.
  3. Sử dụng các hàm ta.crossover và ta.crossunder để xác định đường chéo vàng và đường chéo chết của đường trung bình động.
  4. Sử dụng chỉ số ATR để tính toán stop loss động, gấp 1,5 lần ATR từ gần.
  5. Hiển thị trực quan các tín hiệu giao dịch và mức dừng lỗ thông qua thay đổi màu sắc, dấu mua / bán và đường dừng lỗ.

Phân tích lợi thế

  1. Các tín hiệu được tạo ra dựa trên EMA Golden Cross và Death Cross, tránh bỏ lỡ các xu hướng thị trường chính và lợi nhuận là đáng kể.
  2. ATR trailing stop loss đảm bảo lợi nhuận phù hợp theo xu hướng trong khi kiểm soát rút vốn, đạt được tỷ lệ rủi ro-lợi nhuận cân bằng.
  3. Hiển thị tín hiệu trực quan và hiển thị dừng mất mát, dễ vận hành, phù hợp với hầu hết mọi người.
  4. Một số tham số có thể điều chỉnh, dễ hiểu và tối ưu hóa.

Phân tích rủi ro

  1. Các vụ tai nạn nhấp nháy có thể kích hoạt việc dừng lỗ.
  2. Các tín hiệu không hợp lệ thường xuyên có thể xảy ra trong các thị trường dao động.
  3. Cài đặt tham số không chính xác có thể dẫn đến bước vào quá mạnh hoặc stop loss lỏng lẻo.
  4. Các thông số EMA và các thông số ATR cần tối ưu hóa đúng cách.

Giải pháp:

  1. Dỡ bỏ đúng nhân ATR để để lại một số bộ đệm từ mức cao gần đây.
  2. Xem xét các cơ chế xác nhận sau khi tín hiệu xảy ra, chẳng hạn như giá phá vỡ mức cao trước đó v.v.
  3. Tối ưu hóa tham số nên tính đến các điều kiện thị trường khác nhau.

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

  1. Kiểm tra các kết hợp tham số khác nhau để tìm các tham số tối ưu.
  2. Xem xét thêm các chỉ số khác để lọc tín hiệu, chẳng hạn như chỉ số khối lượng, biến động vv để cải thiện chất lượng tín hiệu.
  3. Điều chỉnh các thông số EMA theo xu hướng chính để nắm bắt tốt hơn xu hướng chính.
  4. Xem xét điều chỉnh động nhân stop loss ATR để mở rộng phạm vi stop trong các thị trường xu hướng.
  5. Kết hợp các thuật toán học máy để tối ưu hóa tham số thích nghi.

Kết luận

Chiến lược này tương đối đơn giản và dễ sử dụng. Nó tạo ra các tín hiệu dựa trên đường chéo EMA, theo xu hướng, và sử dụng ATR trailing stop loss để kiểm soát rủi ro một cách hiệu quả. Mặc dù có thể có một số tín hiệu sai, nó có khả năng mạnh mẽ trong việc nắm bắt xu hướng chính và lợi nhuận tương đối ổn định. Nó phù hợp như một chiến lược giao dịch định lượng cơ bản. Ngoài ra còn có tiềm năng cải tiến lớn thông qua tối ưu hóa tham số và mở rộng chức năng.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © byee322

/// This strategy uses the EMA to generate buy and sell signals with a 1.5x ATR stop loss
//@version=5
strategy("EMA Strategy with ATR Stop Loss", overlay=true)

// Define the EMA lengths as input parameters
emaLength1 = input(13, "EMA Length 1")
emaLength2 = input(48, "EMA Length 2")

// Define the moving averages
ema1 = ta.ema(close, emaLength1)
ema2 = ta.ema(close, emaLength2)

// Buy signal: EMA 1 crosses above EMA 2
buy = ta.crossover(ema1, ema2)

// Sell signal: EMA 1 crosses below EMA 2
sell = ta.crossunder(ema1, ema2)

// Define the state variable
state = 0
state := buy ? 1 : sell ? -1 : nz(state[1])

// Change the color of the candles
color = state == 1 ? color.green : state == -1 ? color.red : na

// Plot the colored candles
plotcandle(open, high, low, close, color=color)

// Plot the signals on the chart with text labels
plotshape(buy, style=shape.triangleup, color=color.new(color.green, 50), location=location.belowbar, text="Buy")
plotshape(sell, style=shape.triangledown, color=color.new(color.red, 50), location=location.abovebar, text="Sell")

// Calculate the ATR
atrVal = ta.atr(14)

// Calculate the stop loss level for buy
stopLossBuy = buy ? close[1] - 1.5 * atrVal : na

// Calculate the stop loss level for sell
stopLossSell = sell ? close[1] + 1.5 * atrVal : na

// Plot the stop loss level for buy
plot(stopLossBuy,  color=color.new(color.green, 50), linewidth=3)

// Plot the stop loss level for sell
plot(stopLossSell, color=color.new(color.red, 50), linewidth=3)

if buy
    strategy.entry("Enter Long", strategy.long)
else if sell
    strategy.entry("Enter Short", strategy.short)

Thêm nữa