Chiến lược giao dịch chéo trung bình động

Tác giả:ChaoZhang, Ngày: 2024-01-24 11:48:29
Tags:

img

Tổng quan

Chiến lược giao dịch chéo trung bình chuyển động tạo ra tín hiệu mua và bán bằng cách tính toán chéo của đường EMA nhanh (fastLength) và đường EMA chậm (slowLength). Khi đường nhanh vượt qua đường chậm, một tín hiệu mua được tạo ra. Khi đường nhanh vượt qua đường chậm, một tín hiệu bán được tạo ra. Chiến lược này đơn giản và thực tế, phù hợp với giao dịch trung và ngắn hạn.

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

Chiến lược này sử dụng hai đường trung bình động, đường nhanh và đường chậm. Các thông số đường nhanh EMAfastLength mặc định là đường 9 ngày, và các thông số đường chậm EMAslowLength mặc định là đường 26 ngày. Tính toán giao thoa của hai đường EMA để xác định tín hiệu mua và bán thị trường:

  1. Khi đường nhanh phá vỡ lên qua đường chậm, một tín hiệu mua enterLong() được tạo ra.
  2. Khi đường nhanh phá vỡ xuống qua đường chậm, một tín hiệu bán enterShort))) được tạo ra.

Các tín hiệu giao dịch cụ thể và các quy tắc chiến lược là như sau:

  1. Khi đường nhanh vượt qua đường chậm, đi dài; khi đường nhanh vượt qua đường chậm, đóng vị trí.
  2. Lợi nhuận lâu dài là Mục tiêu tỷ lệ phần trăm (thất định 0,15%) của giá, tức là đóng vị trí khi lợi nhuận đạt 15%.
  3. Stop loss cho dài là StopLosspercentage (thất định 0,20%) của giá, đó là đóng vị trí khi lỗ đạt 20%.
  4. Vị trí ngắn hoạt động theo cùng một cách.

Vì vậy, chiến lược này giao dịch dựa trên đường chéo vàng và đường chéo chết của hai đường trung bình động.

Phân tích lợi thế

  1. Chiến lược đơn giản và dễ hiểu.
  2. Việc áp dụng đường trung bình động lọc một số tiếng ồn thị trường và làm cho tín hiệu giao dịch chính xác hơn.
  3. Quy tắc giao dịch rõ ràng với lợi nhuận chắc chắn và dừng lỗ.
  4. Các thông số thử nghiệm có thể được điều chỉnh linh hoạt để thích nghi với các điều kiện thị trường khác nhau.

Phân tích rủi ro

  1. Đường trung bình động có sự chậm trễ, có thể bỏ lỡ những thay đổi giá ngắn hạn, dẫn đến các điểm mua và bán không chính xác.
  2. Các thông số trung bình động chu kỳ khác nhau có thể tạo ra tín hiệu sai và mang lại tổn thất.
  3. Chỉ dựa vào một vài tham số, chiến lược này có yêu cầu tối ưu hóa siêu tham số cao để tìm kết hợp tham số tốt nhất.
  4. Trong một số xu hướng lớn nhất định, chiến lược này có xu hướng thất bại.

Để giải quyết rủi ro, các tham số có thể được tối ưu hóa bao gồm chu kỳ trung bình động, đa dạng giao dịch, tỷ lệ lấy lợi nhuận và tỷ lệ dừng lỗ, v.v.

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

Ý tưởng chéo trung bình động của chiến lược này rất đơn giản và thực tế. Nó có thể được tối ưu hóa theo các cách sau:

  1. Thay đổi loại trung bình động: Ngoài EMA, cũng kiểm tra SMA, LWMA, HMA và các loại khác.
  2. Thêm các chỉ số khác: Kết hợp với RSI, MACD và các chỉ số khác.
  3. Tối ưu hóa tham số: Tự động tối ưu hóa hai tham số chu kỳ của EMA để tìm kết hợp tham số tốt nhất.
  4. Việc lọc xu hướng: Giao dịch chọn lọc dựa trên các tình huống xu hướng chính.
  5. Lợi nhuận và tối ưu hóa dừng lỗ: Cải thiện tỷ lệ lợi nhuận cố định và dừng lỗ để làm cho nó thực tế hơn.

Thông qua các thử nghiệm tối ưu hóa này, hiệu quả thực tế và sự ổn định của chiến lược có thể được cải thiện đáng kể.

Tóm lại

Ý tưởng chiến lược chéo trung bình động là đơn giản, nhưng ứng dụng thực tế đòi hỏi tối ưu hóa liên tục. Chiến lược này cung cấp logic tạo ra tín hiệu giao dịch và các quy tắc giao dịch cơ bản. Trên cơ sở này, nó có thể được tối ưu hóa rất nhiều để trở thành một chiến lược định lượng có thể sử dụng. Việc áp dụng trung bình động cũng cung cấp cho chúng ta những ý tưởng cho các chiến lược, dựa trên đó chúng ta có thể đổi mới và cải thiệ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=4
strategy("EMA Cross by MarketAlpha", overlay=true)
EMAfastLength = input(defval = 9, minval = 2)
EMAslowLength = input(defval = 26, minval = 2)
Targetpercentage = input(defval = 0.15, title = "Profit Target in percentage", minval = 0.05)
StopLosspercentage = input(defval = 0.20, title = "Stop Loss in percentage", minval = 0.05)
profitpoints = close*Targetpercentage
stoplosspoints = close*StopLosspercentage
price = close

FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2000)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

emafast = ema(price, EMAfastLength)
emaslow = sma(price, EMAslowLength)
plot(emafast,color=green)
plot(emaslow,color=red)

enterLong() => crossover(emafast, emaslow)
strategy.entry(id = "MarketAlpha Long", long = true, when = window() and enterLong())
strategy.exit("Exit Long", from_entry = "MarketAlpha Long", profit = profitpoints,loss = stoplosspoints)

enterShort() => crossunder(emafast, emaslow)
strategy.entry(id = "MarketAlpha Short", long = false, when = window() and enterShort())
strategy.exit("Exit Short", from_entry = "MarketAlpha Short", profit = profitpoints,loss = stoplosspoints)



Thêm nữa