Chiến lược giao dịch chéo kỳ dựa trên chỉ báo EMA


Ngày tạo: 2024-01-29 15:56:56 sửa đổi lần cuối: 2024-01-29 15:56:56
sao chép: 0 Số nhấp chuột: 608
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch chéo kỳ dựa trên chỉ báo EMA

Tổng quan

Chiến lược này là một chiến lược giao dịch xuyên chu kỳ dựa trên chỉ số EMA. Nó sử dụng hai chu kỳ EMA khác nhau làm tín hiệu mua và bán, làm nhiều khi đi qua EMA chu kỳ dài trên EMA chu kỳ ngắn và bỏ trống khi đi qua EMA chu kỳ dài dưới EMA chu kỳ ngắn, thuộc chiến lược theo dõi xu hướng. Chiến lược này đồng thời đặt điểm dừng lỗ và điểm dừng để kiểm soát rủi ro.

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

Chiến lược này sử dụng các chỉ số EMA của các giao dịch như tín hiệu giao dịch. Cụ thể, tính toán EMA ngắn hạn và EMA dài hạn, tạo ra một tín hiệu mua khi vượt qua EMA dài hạn trên EMA ngắn hạn; tạo ra một tín hiệu bán khi vượt qua EMA dài hạn dưới EMA ngắn hạn.

Sau khi vào vị trí, chiến lược đồng thời thiết lập mức dừng lỗ và mức dừng. Cấp dừng là một tỷ lệ phần trăm của giá nhập vào làm đường dừng lỗ, nếu giá chạm vào mức dừng lỗ thì sẽ dừng vị trí; Cấp dừng là một tỷ lệ phần trăm của giá nhập vào làm đường dừng, nếu giá chạm vào đường dừng thì sẽ dừng vị trí.

Chiến lược này cũng cho phép lựa chọn chỉ mua nhiều hoặc chỉ mua ít, và lựa chọn giao dịch trong ngày hoặc giao dịch giữ. Đối với giao dịch trong ngày, sẽ bắt buộc cân bằng vị trí trước khi đóng cửa.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Sử dụng chỉ số EMA để lọc đường cong, tránh bị nhầm lẫn bởi các biến động tần số cao, có thể bắt được xu hướng đường dài và trung bình một cách ngẫu nhiên.

  2. Sử dụng giao dịch EMA ngắn và giao dịch EMA dài để tránh giao dịch thường xuyên.

  3. Thiết lập Stop Loss Stop để kiểm soát tỷ lệ rủi ro / lợi nhuận cho mỗi lệnh, có lợi cho quản lý tiền.

  4. Có thể lựa chọn chỉ giao dịch cổ phần hoặc chỉ giao dịch cổ phần, giao dịch trong ngày hoặc giao dịch giữ vị trí, phù hợp với các loại hình giao dịch khác nhau.

  5. Nó hỗ trợ nhiều loại giao dịch, bao gồm cổ phiếu, ngoại hối, tiền kỹ thuật số.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro tiềm ẩn:

  1. Các chỉ số EMA có thể bị chậm trễ và có thể bỏ lỡ các điểm chuyển hướng ngắn hạn.

  2. Lựa chọn không đúng của EMA có thể gây ra sự nhầm lẫn tín hiệu giao dịch.

  3. Những người nắm giữ cổ phiếu quá lâu có thể chịu đựng những cú sốc lớn hơn.

  4. Hạn chế lỗ hổng có thể kết thúc quá sớm hoặc giảm lợi nhuận.

Các biện pháp quản lý rủi ro có:

  1. Tối ưu hóa các tham số EMA để tìm kết hợp chu kỳ tốt nhất.

  2. Thêm một số chỉ số khác để hỗ trợ.

  3. Động thái điều chỉnh điểm dừng lỗ.

  4. Sự can thiệp của con người

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Tối ưu hóa các tham số EMA để tìm các kết hợp chu kỳ dài và ngắn phù hợp với các giống khác nhau.

  2. Thêm các chỉ số khác, chẳng hạn như MACD, KD, để đạt được cộng hưởng đa chỉ số.

  3. Tăng khả năng đào tạo mô hình học máy, tạo ra động lực dừng thiệt hại.

  4. Tiếp cận các chỉ số RISK tiên tiến hơn để thiết kế tính năng.

  5. Thêm các yếu tố giao dịch thích ứng, tự tối ưu hóa tham số.

Tóm tắt

Chiến lược này nói chung là một mẫu chiến lược theo dõi xu hướng tuyệt vời, ưu điểm cốt lõi là sử dụng chỉ số EMA để lọc tiếng ồn để đạt được lợi nhuận ổn định, đồng thời có quản lý lợi nhuận rủi ro hoàn hảo. Bằng cách tối ưu hóa liên tục, chiến lược này có thể trở thành chiến lược định lượng phổ biến trên khắp thị trường, đáng để các nhà giao dịch học hỏi và thực hành.

Mã nguồn chiến lược
/*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 by Vikrant Singh", overlay=true)


// Input for EMA Lengths
var bool runningPOS = false
var float stopLossLevel = na
var float targetLevel = na
shortLength = input(11, title="Short EMA Length")
longLength = input(21, title="Long EMA Length")

// Input for Stop-Loss and Target
stopLossPct = input(1, title="Stop-Loss (%)")
targetPct = input(3, title="Target (%)")
longOnly = input(true, title="Long Only")
intraDay = input(true, title="intraday?")


// Calculate EMAs
emaShort = ta.ema(close, shortLength)
emaLong = ta.ema(close, longLength)

// Calculate crossover conditions
crossoverCondition = ta.crossover(emaShort, emaLong)
crossunderCondition = ta.crossunder(emaShort, emaLong)

// Entry condition (long position just before crossover)
if crossoverCondition and not runningPOS and longOnly and (hour <= 15)
    strategy.entry("Long", strategy.long)
    runningPOS := true
    stopLossLevel := close * (1 - stopLossPct / 100)
    targetLevel := close * (1 + targetPct / 100)

//Entry condition (short position just before crossover)
if crossunderCondition and not runningPOS and not longOnly and (hour <= 15)
    strategy.entry("Short", strategy.short)
    runningPOS := true
    stopLossLevel := close * (1 + stopLossPct / 100)
    targetLevel := close * (1 - targetPct / 100)

// Exit conditions (square off on reverse crossover)
//Exit long
if (crossunderCondition or (low < stopLossLevel) or (high > targetLevel) ) and longOnly and runningPOS
    strategy.close("Long",comment = "Exit long")// ("Long", from_entry="Long",stop=stopLossLevel, limit=targetLevel)
    runningPOS := false

//Exit short
if (crossoverCondition or (high > stopLossLevel) or (low < targetLevel) ) and not longOnly and runningPOS
    strategy.close("Short", comment = "Exit Short")
    runningPOS := false

if intraDay and runningPOS
    if (hour >= 15)
        strategy.close_all(comment = "Intraday square off")
        //strategy.close("Long",comment = "intraday square off")
        runningPOS := false


// Plot EMAs
plot(emaShort, color=color.blue, title="Short EMA")
plot(emaLong, color=color.red, title="Long EMA")