Chiến lược giao thoa EMA kép

Tác giả:ChaoZhang, Ngày: 2023-10-16 16:15:38
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch chéo EMA kép dựa trên chỉ số EMA nhanh và EMA chậm. Chiến lược tạo ra tín hiệu dài khi EMA nhanh vượt qua EMA chậm, và đóng các vị trí dài khi EMA nhanh vượt qua dưới EMA chậm. Chiến lược này đơn giản và thực tế cho giao dịch trung hạn.

Chiến lược logic

Chiến lược này chủ yếu được thực hiện với các chỉ số EMA kép. EMA nhanh có thời gian ngắn hơn để phản ánh các thay đổi giá một cách nhạy cảm, trong khi EMA chậm có thời gian dài hơn để chỉ ra xu hướng dài hạn.

Khi EMA nhanh vượt qua trên EMA chậm, một thập giá vàng được hình thành, cho thấy đà tăng giá trong ngắn hạn để đi dài. Khi EMA nhanh vượt qua dưới EMA chậm, một thập giá chết được hình thành, cho thấy đà giảm để đóng các vị trí dài.

Cụ thể, chiến lược bao gồm:

  1. Các thông số đầu vào cho EMA nhanh và chậm, bao gồm thời gian, nguồn, v.v.

  2. Tính toán EMA nhanh và EMA chậm.

  3. Định nghĩa đường chéo vàng khi EMA nhanh vượt qua EMA chậm.

  4. Định nghĩa death cross khi EMA nhanh vượt qua dưới EMA chậm.

  5. Đi dài trên những cây thập giá vàng.

  6. Gắn chặt vị trí trên thập tự tử.

  7. Tùy chọn mua ngắn và dừng lỗ/lợi nhuận.

  8. Thông báo mua và bán sản phẩm.

Với hệ thống chéo EMA kép đơn giản này, chiến lược có thể bắt được xu hướng ngắn hạn cho lợi nhuận.

Phân tích lợi thế

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

  1. Lý luận rất đơn giản và rõ ràng, dễ hiểu.

  2. Chỉ sử dụng EMA kép, dễ thực hiện.

  3. Có thể bắt được xu hướng ngắn hạn để kiếm lợi nhuận.

  4. Thời gian EMA tùy chỉnh cho các thị trường khác nhau.

  5. Tùy chọn mua ngắn để kiểm soát rủi ro.

  6. Tùy chọn dừng lỗ/lấy lợi nhuận.

  7. Thông báo mua/bán để theo dõi.

  8. Dễ dàng tối ưu hóa các thông số EMA để có lợi nhuận tốt hơn.

Phân tích rủi ro

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

  1. EMA kép có thể tạo ra các tín hiệu sai gây ra tổn thất không cần thiết.

  2. Cài đặt stop loss không chính xác có thể làm tăng lỗ.

  3. Tần suất giao dịch cao làm tăng chi phí và rủi ro trượt.

  4. Các thông số EMA cố định không thể thích nghi với những thay đổi của thị trường.

  5. Có khuynh hướng theo đuổi đà, mất sự phán đoán bình tĩnh.

  6. Không thể xác định xu hướng đảo ngược, có thể mở các vị trí đảo ngược.

Các biện pháp quản lý rủi ro tương ứng:

  1. Tối ưu hóa các thông số EMA để giảm tín hiệu sai.

  2. Thiết lập stop loss thích hợp để giới hạn mỗi lỗ giao dịch.

  3. Tối ưu hóa thời gian EMA để giảm tần suất.

  4. Điều chỉnh EMA năng động cho các giai đoạn thị trường khác nhau.

  5. Thêm các chỉ số xu hướng để tránh theo đuổi đà.

  6. Xác định hướng xu hướng chính bằng các công cụ xu hướng.

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 năng động các thông số EMA cho các thị trường khác nhau.

  2. Thêm các bộ lọc hàng để cải thiện độ chính xác.

  3. Bao gồm chỉ số biến động để giảm vị thế trong môi trường biến động thấp.

  4. Thêm xác nhận âm lượng cho tín hiệu.

  5. Đặt mức giá, như 20SMA breakout trước khi nhận tín hiệu.

  6. Cải thiện chiến lược dừng lỗ và kiếm lợi nhuận.

  7. Thêm phân tích xu hướng chính để tránh giao dịch chống lại xu hướng.

  8. Tiếp tục tối ưu hóa chiến lược bằng các thuật toán học máy.

Tóm lại

Tóm lại, chiến lược chéo EMA kép có logic đơn giản và rõ ràng để nắm bắt xu hướng ngắn hạn, nhưng cũng có một số rủi ro lợi nhuận. Chúng ta có thể quản lý rủi ro bằng cách tối ưu hóa các tham số, thực hiện dừng lỗ / lấy lợi nhuận, lọc cổ phiếu, đánh giá các xu hướng chính vv, để liên tục có được lợi nhuận thỏa đáng. Chiến lược có thể được cải thiện dần dần với nghiên cứu và cải tiến liên tục.


/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy("EMA Strategy", shorttitle="EMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)


// === Inputs ===
// short ma
maFastSource = input(defval=close, title="Fast MA Source")
maFastLength = input(defval=3, title="Fast MA Period", minval=1)

// long ma
maSlowSource = input(defval=close, title="Slow MA Source")
maSlowLength = input(defval=9, title="Slow MA Period", minval=1)

// invert trade direction
shorting = input(defval=false, title="Allow Shorting?")
// risk management
useStop = input(defval=false, title="Use Initial Stop Loss?")
slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1)
useTS = input(defval=false, title="Use Trailing Stop?")
tslPoints = input(defval=120, title="Trail Points", minval=1)
useTSO = input(defval=false, title="Use Offset For Trailing Stop?")
tslOffset = input(defval=20, title="Trail Offset Points", minval=1)

// Messages for buy and sell
message_buy  = input("Buy message", title="Buy Alert Message")
message_sell   = input("Sell message", title="Sell Alert Message")

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time)
 
time_cond  = true

// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)

plot(fastMA, color=color.blue)
plot(slowMA, color=color.purple)

goLong() =>
    crossover(fastMA, slowMA)
killLong() =>
    crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_buy)
strategy.close("Buy", when=killLong() and time_cond, alert_message = message_sell)

// Shorting if using
if shorting
    strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_sell)
    strategy.close("Sell", when=goLong() and time_cond, alert_message = message_buy)

if useStop
    strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08)
    strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08)



Thêm nữa