
Chiến lược chéo trung bình di chuyển 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. Chiến lược này tạo ra tín hiệu mua và bán bằng cách tính toán các trung bình di chuyển đơn giản trong các chu kỳ khác nhau khi chúng giao nhau.
Cụ thể, chiến lược này tính toán trung bình di chuyển đơn giản của đường 9 và đường 45. Khi giá vượt qua đường 9 và đường 45, nó tạo ra tín hiệu mua; Khi giá vượt qua đường 9 và đường 45 dưới đó, nó tạo ra tín hiệu bán.
Lập luận cốt lõi của chiến lược này dựa trên nguyên lý “đá chết” của các đường trung bình di chuyển. Đường trung bình di chuyển có thể lọc hiệu quả tiếng ồn thị trường, cho thấy sự thay đổi trong xu hướng lớn. Khi đường trung bình ngắn hạn vượt qua đường trung bình dài hạn, giá bắt đầu đi vào xu hướng tăng; khi đường trung bình ngắn hạn vượt qua đường trung bình dài hạn, giá bắt đầu đi vào xu hướng giảm.
Cụ thể, chiến lược này sử dụng đường trung bình di chuyển đơn giản của đường 9 và đường 45. Đường 9 đại diện cho xu hướng ngắn hạn và đường 45 đại diện cho xu hướng dài hạn. Khi giá vượt qua đường 9 và đường 45, nó cho thấy giá cổ phiếu đang ở kênh tăng trong ngắn hạn và dài hạn, do đó tạo ra tín hiệu mua; khi giá vượt qua đường 9 và đường 45, nó cho thấy xu hướng tăng của giá cổ phiếu dần dần suy yếu, do đó tạo ra tín hiệu bán.
Về mặt logic mã, chiến lược này đầu tiên tính toán đường trung bình di chuyển đơn giản của đường 9 và đường 45 và sau đó đánh giá hình nét vàng và hình nét chết của đường cân bằng bằng các hàm ta.crossover và ta.crossunder. Khi tạo ra tín hiệu mua và bán, hãy sử dụng hàm plotshape để vẽ biểu đồ tín hiệu hình tam giác và hình tam giác đảo ngược trên biểu đồ đường K.
Ngoài ra, chiến lược này cũng thiết lập logic dừng lỗ cho các vị trí dài và ngắn. Cụ thể, sau khi mở vị trí, giá cao nhất và giá thấp nhất của một đường K trước đó sẽ được lấy làm giá dừng lỗ. Điều này có thể khóa lợi nhuận và tránh thua lỗ quá lớn.
Phản ứng:
Chiến lược này có thể được tối ưu hóa hơn nữa:
Sử dụng đường trung bình di chuyển thích ứng hoặc đường trung bình di chuyển chỉ số để nắm bắt tốt hơn các thay đổi xu hướng.
Tăng các tín hiệu lọc như chỉ số dao động để tránh tín hiệu sai trong trường hợp chấn động.
Sử dụng phương pháp tối ưu hóa tham số để tìm kiếm sự kết hợp tham số tốt nhất.
Thêm một cơ chế theo dõi xu hướng vào logic dừng, cho phép đường dừng theo dõi giá một cách linh hoạt.
Tăng sự phán đoán về mức hỗ trợ kháng cự lớn để tránh tín hiệu sai ở các vùng giá quan trọng.
Hình thức này được kết hợp với mô hình học máy để lọc thêm chất lượng tín hiệu.
Chiến lược giao chéo đường thẳng là một chiến lược theo dõi xu hướng đơn giản và thực tế. Nó có thể lọc hiệu quả tiếng ồn, nắm bắt sự thay đổi trong xu hướng trung và dài hạn của giá. Sau khi kết hợp với logic dừng lỗ thích hợp, có thể giao dịch xu hướng trên cơ sở kiểm soát rủi ro.
/*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)