
Chiến lược này là một chiến lược giao dịch dựa trên đường trung bình di chuyển. Nó sử dụng đường trung bình di chuyển 45 ngày làm chỉ số kỹ thuật chính để mua và bán dựa trên tín hiệu của giá vượt qua đường trung bình di chuyển.
Khi giá tăng vượt qua đường trung bình di chuyển 45 ngày, nó tạo ra tín hiệu mua; khi giữ vị trí 8 ngày, nó tạo ra tín hiệu bán. Sau đó, nếu giá tăng trở lại và vượt qua đường trung bình di chuyển 45 ngày, nó sẽ tạo ra tín hiệu mua một lần nữa.
Các nguyên tắc của chiến lược là:
Đây là logic giao dịch cốt lõi của chiến lược này.
Chiến lược này có những ưu điểm sau:
Chiến lược này cũng có một số rủi ro:
Phản ứng:
Chiến lược này có thể được tối ưu hóa từ các khía cạnh sau:
Tối ưu hóa các tham số trung bình di chuyển để tìm kiếm sự kết hợp tham số tốt nhất. Các tham số số ngày khác nhau như 15 ngày, 30 ngày, 60 ngày có thể được thử nghiệm.
Tối ưu hóa thời gian nắm giữ, tìm kiếm ngày nắm giữ tối ưu. Bạn có thể thử nghiệm các thời gian nắm giữ khác nhau như 5 ngày, 10 ngày, 15 ngày.
Thêm dừng di động để theo dõi xu hướng và kiểm soát rủi ro. Ví dụ: dừng trialing hoặc dừng ATR.
Thêm các chỉ số khác để lọc, chẳng hạn như MACD, KDJ, v.v., để giảm tín hiệu giả.
Tối ưu hóa các điều kiện tái nhập cảnh để ngăn chặn giao dịch quá thường xuyên, chẳng hạn như tăng thời gian làm mát.
Kiểm tra hiệu quả của các thị trường khác nhau và các giống khác nhau. Các tham số cần được tối ưu hóa cho các thị trường khác nhau.
Chiến lược giao chéo đường trung bình di chuyển này nói chung là một chiến lược theo dõi xu hướng đơn giản và thực tế. Nó sử dụng tính năng theo dõi xu hướng của đường trung bình di chuyển để tạo ra tín hiệu giao dịch. Ưu điểm là dễ thực hiện, trade-off là có thể có một số sai lầm.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Moving Average Crossover Strategy", overlay=true)
// Calculate the 45-day moving average
ma_length = 45
ma = ta.sma(close, ma_length)
// Track position entry and entry bar
var bool in_long_position = na
var int entry_bar = na
var int exit_bar = na
// Entry condition: Close price crosses above the 45-day moving average to enter the position
if (not in_long_position and ta.crossover(close, ma) and not na(ma[1]) and close > ma and close[1] < ma[1])
in_long_position := true
entry_bar := bar_index
// Exit condition: Close the position after holding for 8 trading days
if (in_long_position and bar_index - entry_bar >= 8)
in_long_position := false
exit_bar := bar_index
// Re-entry condition: Wait for price to cross over the 45-day moving average again
if (not in_long_position and ta.crossover(close, ma) and not na(ma[1]) and close > ma and close[1] > ma[1] and (na(exit_bar) or bar_index - exit_bar >= 8))
in_long_position := true
entry_bar := bar_index
// Execute long entry and exit
if (in_long_position)
strategy.entry("Long", strategy.long)
if (not in_long_position)
strategy.close("Long")