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

Tác giả:ChaoZhang, Ngày: 2023-12-22 13:28:01
Tags:

img

Tổng quan

Chiến lược chéo trung bình động là một chiến lược giao dịch định lượng dựa trên trung bình di chuyển đơn giản (SMA). Nó tạo ra tín hiệu mua và bán khi các chéo SMA giai đoạn khác nhau xảy ra.

Cụ thể, chiến lược này tính toán SMA 9 giai đoạn và 45 giai đoạn. Khi giá vượt trên cả hai đường SMA, một tín hiệu mua được tạo ra. Khi giá vượt dưới cả hai đường, một tín hiệu bán được kích hoạt.

Chiến lược logic

Lý thuyết cốt lõi của chiến lược này dựa trên các nguyên tắc chéo vàng và chéo chết của đường trung bình động. Đường trung bình động có thể lọc hiệu quả tiếng ồn thị trường và chỉ ra những thay đổi xu hướng lớn. Khi MA ngắn hạn vượt qua MA dài hạn, nó báo hiệu một sự đảo ngược xu hướng tăng.

Đặc biệt, chiến lược này sử dụng các đường trung bình di chuyển đơn giản 9 giai đoạn và 45 giai đoạn. Đường 9 giai đoạn đại diện cho xu hướng ngắn hạn trong khi đường 45 giai đoạn nắm bắt các xu hướng dài hạn. Khi giá vượt qua trên cả hai đường SMA, nó cho thấy giá đang ở các kênh tăng cả ngắn hạn và dài hạn, do đó kích hoạt một bước vào dài.

Từ góc độ mã, chiến lược đầu tiên tính toán các giá trị SMA 9 giai đoạn và 45 giai đoạn. Sau đó nó sử dụng các hàm ta.crossover và ta.crossunder để phát hiện các đường chéo vàng và đường chéo chết giữa hai đường MA. Khi các tín hiệu mua và bán được kích hoạt, các hàm đồ thị vẽ tam giác và tam giác đảo ngược trên biểu đồ giá.

Ngoài ra, logic dừng lỗ được thực hiện để quản lý việc thoát khỏi giao dịch. Cụ thể, giá cao và thấp của thanh trước được trích xuất như giá dừng lỗ sau khi mở giao dịch mới. Điều này cho phép chiến lược khóa lợi nhuận và ngăn ngừa tổn thất lớn.

Phân tích lợi thế

  • Cấu hình trung bình động kép nắm bắt sự thay đổi xu hướng trung hạn đến dài hạn trong khi lọc ra tiếng ồn ngắn hạn, cải thiện chất lượng tín hiệu.

  • Cơ chế dừng lỗ kiểm soát hiệu quả rủi ro và khóa lợi nhuận.

  • Logic đơn giản và dễ thực hiện, phù hợp cho người mới bắt đầu.

  • Sử dụng vốn cao cho lợi nhuận tổng hợp.

Phân tích rủi ro

  • Các chiến lược MA kép có xu hướng tạo ra những cú đánh và tín hiệu không hợp lệ trong các thị trường hỗn loạn.

  • Đặt dừng lỗ bảo thủ không thể theo dõi xu hướng hiệu quả.

  • Chọn tham số không tối ưu có thể dẫn đến giao dịch quá mức hoặc tần suất giao dịch không đủ.

  • Không thể thích nghi với sự đảo ngược xu hướng lớn.

Giải pháp:

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

  2. Thực hiện dừng động theo xu hướng

  3. Thêm bộ lọc bằng các chỉ số khác

  4. Lưu ý thủ công xung quanh đảo ngược lớn

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

Các cải tiến khác cho chiến lược:

  1. Sử dụng MAs thích nghi hoặc theo cấp số nhân để nắm bắt tốt hơn xu hướng.

  2. Thêm bộ lọc biến động để tránh tín hiệu sai trong các thị trường dao động.

  3. Thực hiện tối ưu hóa tham số cho kết hợp tham số tốt nhất.

  4. Kết hợp các cơ chế theo xu hướng vào logic dừng lỗ.

  5. Thêm phân tích hỗ trợ kháng để tránh tín hiệu xung quanh các mức chính.

  6. Tận dụng máy học để lọc chất lượng tín hiệu hơn nữa.

Kết luận

Hệ thống chéo trung bình động là một phương pháp tiếp cận theo xu hướng đơn giản nhưng hiệu quả. Bằng cách lọc ra tiếng ồn và theo dõi xu hướng trung hạn, nó tạo ra các tín hiệu chất lượng. Với các lỗ dừng thích hợp, nó cho phép giao dịch xu hướng quản lý rủi ro. Lý thuyết đơn giản cũng làm cho nó lý tưởng cho người mới bắt đầu thực hành.


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

//@version=5
strategy("SMA Crossover Strategy", overlay=true)

// Input parameters
fast_length = input(9, title="Fast SMA Length")
slow_length = input(45, title="Slow SMA Length")

// Calculate moving averages
fast_sma = ta.sma(close, fast_length)
slow_sma = ta.sma(close, slow_length)

// Buy condition
buy_condition = ta.crossover(close, fast_sma) and ta.crossover(close, slow_sma)

// Sell condition
sell_condition = ta.crossunder(close, fast_sma) and ta.crossunder(close, slow_sma)

// Calculate stop loss levels
prev_low = request.security(syminfo.tickerid, "1D", low[1], lookahead=barmerge.lookahead_on)
prev_high = request.security(syminfo.tickerid, "1D", high[1], lookahead=barmerge.lookahead_on)

// Plot signals on the chart
plotshape(buy_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(sell_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

// Strategy exit conditions
long_stop_loss = sell_condition ? prev_low : na
short_stop_loss = buy_condition ? prev_high : na

strategy.exit("Long Exit", from_entry="Long", when=sell_condition, stop=long_stop_loss)
strategy.exit("Short Exit", from_entry="Short", when=buy_condition, stop=short_stop_loss)

strategy.entry("Long", strategy.long, when=buy_condition)
strategy.entry("Short", strategy.short, when=sell_condition)


Thêm nữa