
Chiến lược chéo trung bình chuyển động của chỉ số chuyển động trung bình kết hợp hai chỉ số kỹ thuật mạnh mẽ là đường trung bình chuyển động ((MA) và đường trung bình ((ADX) để cung cấp cho các nhà giao dịch phân tích kỹ thuật chính xác hơn. Chiến lược này được thiết kế đặc biệt cho phân tích thị trường động và cung cấp tín hiệu giao dịch rõ ràng.
Chiến lược này theo dõi chuyển động giá bằng cách tính toán đường trung bình di chuyển trọng lượng ((WMA), làm phẳng biến động giá, tạo ra tín hiệu xu hướng. Đồng thời, tính toán chỉ số hướng trung bình ((ADX) và chỉ số chuyển động tích cực âm ((+/- DI), đánh giá sự hiện diện và cường độ của xu hướng.
Chiến lược dựa trên giao dịch giữa MA và ADX làm cơ sở cho quyết định giao dịch. Khi ADX cao hơn ngưỡng thấp và DIdiff ((DI+ - DI-) lớn hơn 0, hãy làm nhiều; Khi ADX cao hơn ngưỡng thấp và DIdiff nhỏ hơn 0, hãy giữ vị trí bằng phẳng.
Chiến lược này kết hợp lợi thế của các chỉ số trung bình di chuyển và ADX để xác định hiệu quả sự tồn tại và hướng của xu hướng, giảm tín hiệu sai. Chỉ số kết hợp này cung cấp tín hiệu giao dịch đáng tin cậy hơn so với chỉ số đơn lẻ.
Ngoài ra, chiến lược này hoàn toàn dựa trên chiến lược định lượng dựa trên tính toán tham số, có hiệu quả phản hồi tốt, hoạt động ổn định trên đĩa cứng, phù hợp với giao dịch thuật toán.
Chiến lược này dễ gây ra rủi ro giao dịch khi thị trường biến động mạnh. Khi giá biến động mạnh và chỉ số không phản ứng, nó sẽ gây tổn thất cho tài khoản. Ngoài ra, cài đặt tham số chỉ số không đúng cũng có thể ảnh hưởng đến hiệu quả của chiến lược.
Có thể kiểm soát tổn thất đơn lẻ bằng cách dừng lỗ. Đồng thời tối ưu hóa các tham số và kết hợp với các bộ lọc chỉ số khác để giảm tín hiệu sai.
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 bộ lọc chỉ số khác như Brinband, RSI, v.v. để cải thiện chất lượng tín hiệu
Tối ưu hóa tham số chiều dài của đường trung bình di chuyển và chỉ số ADX để tìm các tham số kết hợp tối ưu
Tăng cơ chế ngăn chặn tổn thất, kiểm soát tổn thất đơn lẻ
Kiểm tra thời gian giữ vị trí khác nhau để tìm chu kỳ giữ vị trí tốt nhất
Chiến lược giao chéo trung bình di động, có thể xác định hiệu quả hướng xu hướng thị trường bằng cách tính toán động lượng giá và cường độ xu hướng, là một chiến lược theo dõi xu hướng đáng tin cậy. Chiến lược này có mức độ thuật toán cao, đo đạc ổn định, hoạt động tốt trên thực tế. Có thể đạt được hiệu quả chiến lược tốt hơn bằng cách tiếp tục tối ưu hóa.
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// © Julien_Eche
//@version=5
strategy("MA ADX Strategy", overlay=true, default_qty_type=strategy.percent_of_equity)
start_date = input(timestamp("1975-01-01T00:00:00"), title="Start Date")
end_date = input(timestamp("2099-01-01T00:00:00"), title="End Date")
// Indicator Inputs
group1 = "MA Parameters"
lengthMA = input.int(50, title="MA Length", minval=1, group=group1)
sourceMA = input(close, title="MA Source", group=group1)
group2 = "ADX Parameters"
diLength = input.int(14, title="DI Length", minval=1, group=group2)
adxSmoothing = input.int(14, title="ADX Smoothing", minval=1, maxval=50, group=group2)
adxMAActive = input.int(15, title="ADX MA Active", minval=1, group=group2)
// Directional Movement calculations
upwardMovement = ta.change(high)
downwardMovement = -ta.change(low)
trueRangeSmoothed = ta.rma(ta.atr(diLength), diLength)
positiveDM = fixnan(100 * ta.rma(upwardMovement > downwardMovement and upwardMovement > 0 ? upwardMovement : 0, diLength) / trueRangeSmoothed)
negativeDM = fixnan(100 * ta.rma(downwardMovement > upwardMovement and downwardMovement > 0 ? downwardMovement : 0, diLength) / trueRangeSmoothed)
dmSum = positiveDM + negativeDM
// Average Directional Index (ADX) calculation
averageDX = 100 * ta.rma(math.abs(positiveDM - negativeDM) / math.max(dmSum, 1), adxSmoothing)
// Line color determination
lineColor = averageDX > adxMAActive and positiveDM > negativeDM ? color.teal : averageDX > adxMAActive and positiveDM < negativeDM ? color.red : color.gray
// Moving Average (MA) calculation
maResult = ta.wma(sourceMA, lengthMA)
// Plotting the Moving Average with color
plot(maResult, color=lineColor, title="MA", linewidth=3)
// Strategy logic
if (averageDX > adxMAActive and positiveDM > negativeDM)
strategy.entry("Buy", strategy.long)
if (averageDX > adxMAActive and positiveDM < negativeDM)
strategy.close("Buy")