
Chiến lược giao dịch trung bình di chuyển kép là một chiến lược giao dịch định lượng phổ biến. Chiến lược này sử dụng trung bình di chuyển của hai chu kỳ thời gian khác nhau để tạo ra tín hiệu giao dịch dựa trên sự giao nhau của chúng. Cụ thể, khi trung bình di chuyển ngắn hạn vượt qua trung bình di chuyển dài hạn, nó được coi là tín hiệu mua; khi trung bình di chuyển ngắn hạn vượt qua trung bình di chuyển dài hạn, nó được coi là tín hiệu bán.
Nguyên tắc cốt lõi của chiến lược này là: đường trung bình di chuyển ngắn hạn có thể phản ánh xu hướng ngắn hạn của giá tài sản, đường trung bình di chuyển dài hạn có thể phản ánh xu hướng dài hạn của giá tài sản. Khi đường ngắn hạn đi qua đường dài hạn, cho thấy xu hướng ngắn hạn chuyển sang tăng, lúc đó bạn có thể mua; khi đường ngắn hạn đi qua đường dài hạn, cho thấy xu hướng ngắn hạn chuyển sang giảm, lúc đó bạn có thể bán. Bằng cách này, bạn có thể theo dõi và nắm bắt điểm biến của xu hướng giá.
Cụ thể, chiến lược này xác định hai đường trung bình di chuyển: một là đường trung bình di chuyển ngắn hạn 5 ngày, được sử dụng để nắm bắt xu hướng giá ngắn hạn; một là đường trung bình di chuyển dài hạn 15 ngày, được sử dụng để đánh giá xu hướng giá dài hạn. Khi đường 5 ngày đi qua đường 15 ngày từ dưới lên, cho thấy giá ngắn hạn đã bắt đầu tăng, đây là tín hiệu mua; và khi đường 5 ngày đi qua đường 15 ngày từ trên xuống, cho thấy giá ngắn hạn bắt đầu giảm, đây là tín hiệu bán.
So với các chiến lược khác, chiến lược trung bình di chuyển kép có những lợi thế sau:
Chiến lược trung bình di chuyển đôi cũng có một số rủi ro, bao gồm:
Giải pháp tương ứng:
Chiến lược này có thể được tối ưu hóa theo các hướng sau:
Kết hợp với các chỉ số khác để lọc tín hiệu, như MACD, KDJ, v.v. để tránh tạo ra tín hiệu giả
Tiếp theo là giới thiệu các moving average thích ứng, điều chỉnh các tham số moving average theo mức độ biến động của thị trường, cải thiện sự ổn định.
Tối ưu hóa các tham số trung bình di chuyển, tìm các tham số kết hợp tối ưu và cải thiện hiệu quả chiến lược
Tham gia vào các cơ chế ngăn chặn thiệt hại, ngăn chặn sự gia tăng tổn thất và nâng cao khả năng kiểm soát rủi ro
Giao diện nhiều khung thời gian, sử dụng các tín hiệu đường mặt trời và đường tròn để tăng sự ổn định
Chuyển đổi trạng thái Markov, sử dụng các tham số khác nhau cho các trạng thái thị trường khác nhau để cải thiện khả năng thích ứng
Chiến lược giao dịch trung bình di chuyển kép là một chiến lược giao dịch định lượng với hiệu quả ổn định hơn. Nguyên tắc giao dịch của nó đơn giản, dễ hiểu và thực hiện, điều chỉnh tham số linh hoạt, có thể theo dõi xu hướng thị trường một cách hiệu quả.
//@version=3
strategy("CS: 2 Moving Averages Script - Strategy (Testing)", overlay=true)
// === GENERAL INPUTS ===
// short ma
ma1Source = input(defval = close, title = "MA 1 Source")
ma1Length = input(defval = 5, title = "MA 1 Period", minval = 1)
// long ma
ma2Source = input(defval = close, title = "MA 2 Source")
ma2Length = input(defval = 15, title = "MA 2 Period", minval = 1)
// === SERIES SETUP ===
/// a couple of ma's..
ma1 = ema(ma1Source, ma1Length)
ma2 = ema(ma2Source, ma2Length)
// === PLOTTING ===
fast = plot(ma1, title = "MA 1", color = red, linewidth = 2, style = line, transp = 30)
slow = plot(ma2, title = "MA 2", color = green, linewidth = 2, style = line, transp = 30)
// === LOGIC ===
enterLong = crossover(ma1, ma2)
exitLong = crossover(ma2, ma1)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 2012)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2012)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
// Entry //
strategy.entry(id="Long Entry", long=true, when=enterLong and window())
strategy.entry(id="Short Entry", long=false, when=exitLong and window())