Chiến lược theo dõi đường trung bình động là một chiến lược theo xu hướng dựa trên đường trung bình động đơn giản. Nó sử dụng đường trung bình động đơn giản 200 ngày để xác định hướng xu hướng giá. Khi giá vượt qua đường trung bình động, nó sẽ dài. Khi giá vượt qua đường trung bình động, nó sẽ ngắn. Chiến lược này theo dõi xu hướng để kiếm lợi nhuận.
Chiến lược dựa trên các nguyên tắc sau:
Chiến lược theo dõi xu hướng bằng cách di chuyển hướng trung bình và thực hiện giao dịch ngược lại khi giao dịch MA xảy ra, để kiếm lợi nhuận từ xu hướng.
Chiến lược có những lợi thế sau:
Ngoài ra còn có một số rủi ro:
Các rủi ro có thể được giải quyết thông qua các tối ưu hóa sau:
Chiến lược có thể được tối ưu hóa thêm trong các khía cạnh sau:
Tối ưu hóa tham số thời gian MA bằng cách sử dụng các phương pháp như Phân tích Tiến về phía trước để tìm các tham số tối ưu.
Thêm MA ngắn hạn để theo dõi cả xu hướng dài hạn và ngắn hạn.
Kết hợp các chỉ số xu hướng như MACD để cải thiện xác định sự đảo ngược xu hướng.
Thêm cơ chế dừng lỗ như dừng lỗ để kiểm soát lỗ giao dịch duy nhất.
Kiểm tra độ bền trên các sản phẩm và thời gian khác nhau.
Sử dụng máy học để tối ưu hóa tùy biến.
Chiến lược theo dõi trung bình động là một chiến lược theo dõi xu hướng đơn giản và thực tế. Nó có logic rõ ràng và dễ thực hiện để nắm bắt xu hướng. Nhưng nó cũng có một số điểm yếu như không nhạy cảm với các điều chỉnh ngắn hạn và kiểm soát rủi ro yếu. Chúng ta có thể tối ưu hóa chiến lược từ nhiều khía cạnh để làm cho nó mạnh mẽ hơn, được tham số hóa tốt hơn và quản lý rủi ro mạnh mẽ hơn. Nhìn chung, chiến lược theo dõi trung bình động có giá trị ứng dụng tốt và là một khái niệm giao dịch xu hướng quan trọng trong giao dịch định lượng.
/*backtest start: 2023-09-19 00:00:00 end: 2023-10-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MA X 200 BF", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0) /////////////// Time Frame /////////////// testStartYear = input(2012, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0) testStopYear = input(2019, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0) testPeriod() => true ///////////// MA 200 ///////////// slowMA = sma(close, input(200)) /////////////// Strategy /////////////// long = close > slowMA short = close < slowMA last_long = 0.0 last_short = 0.0 last_long := long ? time : nz(last_long[1]) last_short := short ? time : nz(last_short[1]) long_signal = crossover(last_long, last_short) short_signal = crossover(last_short, last_long) /////////////// Execution /////////////// if testPeriod() strategy.entry("Long Entry", strategy.long, when=long_signal) strategy.entry("Short Entry", strategy.short, when=short_signal) strategy.exit("Long Ex", "Long Entry") strategy.exit("Short Ex", "Short Entry") /////////////// Plotting /////////////// plot(slowMA, color = long ? color.lime : color.red, linewidth=2) bgcolor(strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=80) bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30)