
Chiến lược theo dõi đường trung bình di chuyển là một chiến lược theo dõi xu hướng dựa trên đường trung bình di chuyển đơn giản. Chiến lược này sử dụng đường trung bình di chuyển đơn giản với độ dài 200 ngày để xác định hướng xu hướng của giá, làm nhiều khi giá vượt qua đường trung bình di chuyển trên và làm trống khi giá vượt qua đường trung bình di chuyển dưới, để thực hiện theo dõi xu hướng.
Chiến lược này dựa trên các nguyên tắc sau:
Chiến lược này chủ yếu sử dụng đường trung bình di chuyển để xác định xu hướng và thực hiện các hoạt động đảo ngược kịp thời khi đường cân bằng bị đảo ngược để thu lợi nhuận từ việc theo dõi xu hướng.
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:
Đối với các rủi ro, có thể tối ưu hóa và cải thiện các khía cạnh sau:
Chiến lược này có thể được tối ưu hóa hơn nữa ở những khía cạnh sau:
Tối ưu hóa các tham số chu kỳ của trung bình di chuyển, tìm kiếm sự kết hợp tham số tối ưu. Các phương pháp tối ưu hóa tham số như Walk Forward Analysis có thể được sử dụng.
Tăng trung bình di chuyển ngắn hạn, tạo ra chiến lược đa trung bình, đồng thời theo dõi xu hướng ngắn hạn.
Kết hợp với các chỉ số xu hướng, như MACD, nâng cao khả năng nhận diện xu hướng đảo ngược.
Tham gia vào các cơ chế dừng lỗ, chẳng hạn như theo dõi dừng lỗ, treo dừng lỗ, v.v., để kiểm soát tổn thất đơn lẻ.
Thực hiện thử nghiệm lặp lại, thử nghiệm chiến lược trong các giống khác nhau và các giai đoạn khác nhau để cải thiện sự ổn định.
Sử dụng các phương pháp như học máy để thực hiện tùy chỉnh tham số và tối ưu hóa chiến lược.
Chiến lược theo dõi đường trung bình di chuyển là một chiến lược theo dõi xu hướng thực tế đơn giản, ý tưởng rõ ràng, dễ thực hiện, có thể nắm bắt cơ hội xu hướng. Tuy nhiên, chiến lược này cũng có một số vấn đề, chẳng hạn như không nhạy cảm với điều chỉnh ngắn hạn, khả năng kiểm soát rủi ro yếu, v.v.
/*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)