
Chiến lược giao dịch chéo hai đường trung bình di chuyển 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 hai chu kỳ trung bình di chuyển khác nhau làm tín hiệu mua bán, mua khi đường trung bình ngắn hạn đi qua đường trung bình dài hạn và bán khi đường trung bình ngắn hạn đi qua đường trung bình dài hạn. Mã chiến lược hỗ trợ nhiều loại trung bình di chuyển phổ biến, chẳng hạn như trung bình di chuyển đơn giản (SMA), trung bình di chuyển chỉ số (EMA), trung bình di chuyển kép (DEMA), trung bình di chuyển ba chỉ số (TEMA), trung bình di chuyển tăng quyền hạn (WMA) và trung bình di chuyển tăng quyền hạn (VMA), và có thể thiết lập các loại trung bình ngắn hạn và trung bình dài hạn một cách linh hoạt.
Nguyên tắc cốt lõi của chiến lược này là sử dụng các đặc tính xu hướng và độ trễ của hai đường trung bình di chuyển có thời kỳ khác nhau để nắm bắt xu hướng giá. Nói chung, đường trung bình ngắn hạn nhạy cảm hơn với sự thay đổi giá, trong khi đường trung bình dài hạn tương đối chậm lại. Khi giá đang trong xu hướng tăng, đường trung bình ngắn hạn sẽ di chuyển lên trước đường trung bình dài hạn và cuối cùng xuyên qua đường trung bình dài hạn, tạo thành tín hiệu mua “gold fork”; ngược lại, khi giá đang trong xu hướng giảm, đường trung bình ngắn hạn sẽ di chuyển xuống trước đường trung bình dài hạn và cuối cùng xuyên qua đường trung bình dài hạn, tạo thành tín hiệu bán “dead fork”.
Dễ sử dụng: Chiến lược giao dịch số lượng đơn giản, dễ hiểu và dễ thực hiện, phù hợp để học và sử dụng cho các nhà giao dịch mới.
Khả năng áp dụng rộng rãi: Chiến lược này có thể được áp dụng cho các thị trường tài chính và các chỉ số giao dịch khác nhau, chẳng hạn như cổ phiếu, tương lai, ngoại hối, tiền điện tử.
Tính linh hoạt về tham số: mã chiến lược hỗ trợ nhiều loại trung bình di chuyển và loại giá phổ biến, người dùng có thể thiết lập các tham số linh hoạt theo nhu cầu của mình để phù hợp với môi trường thị trường và phong cách giao dịch khác nhau.
Theo dõi xu hướng: Thông qua tín hiệu chéo của hai đường trung bình theo chu kỳ khác nhau, chiến lược này có thể nắm bắt được xu hướng chính của giá tốt hơn, giúp tránh giao dịch ngược.
Sự chậm trễ: Đường trung bình di chuyển là một chỉ số theo dõi xu hướng, có một số sự chậm trễ, có thể bỏ lỡ thời gian nhập cảnh và xuất cảnh tốt nhất.
Thất bại trong thị trường chấn động: Trong thị trường chấn động hoặc trong tình huống sắp xếp ngang, giá dao động lớn, tín hiệu giao chéo trung bình thường xuyên, có thể dẫn đến giao dịch thường xuyên của chiến lược, gây ra chi phí giao dịch cao và mất tiền.
Khó tối ưu hóa tham số: Việc lựa chọn chu kỳ trung bình có ảnh hưởng lớn đến hiệu quả chiến lược, nhưng tham số tối ưu thường khác nhau do tình trạng thị trường khác nhau, rất khó để tìm ra một sự kết hợp tham số tối ưu phù hợp với mọi người.
Tiếp cận bộ lọc xu hướng: dựa trên tín hiệu chéo đồng đạo, bạn có thể sử dụng bộ lọc xu hướng kết hợp với các chỉ số xu hướng khác như MACD, ADX, và chỉ giao dịch khi xu hướng rõ ràng, tránh giao dịch thường xuyên trong thị trường biến động.
Tối ưu hóa Stop Loss: Thêm logic Stop Loss hợp lý vào chiến lược, chẳng hạn như Stop Loss di chuyển, Stop Loss biến động, v.v., để kiểm soát rủi ro giao dịch một lần và tăng tỷ lệ lợi nhuận rủi ro của chiến lược.
Tối ưu hóa tham số động: Đối với các môi trường thị trường khác nhau, bạn có thể thường xuyên tối ưu hóa động các tham số như chu kỳ đường trung bình, cho phép chiến lược có thể thích ứng với sự thay đổi của thị trường và tăng sự ổn định.
Sự kết hợp đa yếu tố: kết hợp tín hiệu chéo trung bình di chuyển đôi với các yếu tố định lượng hiệu quả khác (như động lượng, giá trị, khối lượng giao dịch, v.v.) để tạo ra một chiến lược đa yếu tố hiệu quả hơn.
Chiến lược giao chéo đường trung bình di chuyển kép là một chiến lược theo dõi xu hướng đơn giản và cổ điển để nắm bắt xu hướng giá thông qua tín hiệu giao chéo của hai đường trung bình chu kỳ khác nhau, phù hợp với thị trường xu hướng. Tuy nhiên, chiến lược này cũng có những vấn đề về sự chậm trễ và khó tối ưu hóa tham số, cần được tối ưu hóa và cải tiến kết hợp với các phương pháp khác, chẳng hạn như lọc xu hướng, tối ưu hóa tham số động, kết hợp nhiều yếu tố để cải thiện tính phù hợp và ổn định của chiến lược. Nói chung, chiến lược giao chéo đường trung bình di chuyển kép có thể là một trong những chiến lược cơ bản của giao dịch định lượng và đáng được học tập và nghiên cứu bởi nhiều người đam mê.
/*backtest
start: 2023-05-08 00:00:00
end: 2024-05-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SustainableInvestment
//@version=5
strategy("Moving average strategy (이동평균선 전략)", overlay=true)
// === INPUTS ===
basisType = input.string(defval = "EMA", title = "MA Type: SMA, EMA, DEMA, TEMA, WMA, VWMA ",options=["SMA", "EMA", "DEMA", "TEMA", "WMA", "VWMA"])
shortLen = input.int(defval = 1, title = "Short MA Period", minval = 1)
longLen = input.int(defval = 20, title = "Long MA Period", minval = 1)
price = input.string(defval = "Typical", title = "Price Type : Close, High, Open, Low, Typical, Center ",options=["Close", "High", "Open", "Low", "Typical", "Center"])
// === BASE FUNCTIONS ===
// 가격 종류 설정
priceType(price) =>
Typical = (high+low+close)/3
Center = (high+low) / 2
price=="High"?high : price=="Low"?low : price=="Open"?open : price=="Typical"?Typical : price=="Center"?Center : close
// 이동평균선 종류 설정
variant(type, src, len) =>
v1 = ta.sma(src, len) // Simple
v2 = ta.ema(src, len) // Exponential
v3 = 2 * v2 - ta.ema(v2, len) // Double Exponential
v4 = 3 * (v2 - ta.ema(v2, len)) + ta.ema(ta.ema(v2, len), len) // Triple Exponential
v5 = ta.wma(src, len) // Weighted
v6 = ta.vwma(src, len) // Volume Weighted
type=="EMA"?v2 : type=="DEMA"?v3 : type=="TEMA"?v4 : type=="WMA"?v5 : type=="VWMA"?v6 : v1
longCondition = ta.crossover(variant(basisType, priceType(price), shortLen), variant(basisType, priceType(price), longLen))
if (longCondition)
strategy.entry("Long Entry", strategy.long)
exitCondition = ta.crossunder(variant(basisType, priceType(price), shortLen), variant(basisType, priceType(price), longLen))
if (exitCondition)
strategy.close("Long Entry","Long Exit")