Chiến lược giao dịch kết hợp chỉ số hai đường trung bình và tăng tốc là một chiến lược giao dịch định lượng sử dụng moving average và chỉ số động để tạo và xác minh tín hiệu giao dịch đồng thời. Chiến lược này kết hợp khả năng theo dõi xu hướng của đường trung bình và tính năng động của chỉ số tăng tốc, có thể nắm bắt được đường nét của xu hướng thị trường một cách hiệu quả thông qua các điều kiện nhập và rút ra nghiêm ngặt, đồng thời xác nhận xu hướng và tránh rủi ro giảm lợi nhuận hoặc thậm chí là mất mát do thu hẹp khu vực lợi nhuận giao dịch hoặc biến động thị trường.
Chiến lược này dựa trên đường trung bình di chuyển đơn giản (SMA) 20 chu kỳ và đường trung bình di chuyển chỉ số (EMA) 5 chu kỳ. Trong đó, đường SMA 20 chu kỳ có thể làm mỏng các biến động thị trường một cách hiệu quả, xác định xu hướng giá trong trung và dài hạn; đường EMA 5 chu kỳ có thể nắm bắt xu hướng thay đổi giá ngắn hạn một cách linh hoạt hơn bằng cách cho trọng lượng cao hơn cho giá gần đây.
Sau khi tín hiệu giao dịch được tạo ra, chiến lược này cũng đưa ra chỉ số MACD để xác minh xu hướng. Cụ thể, khi tạo ra tín hiệu mua, MACD cần xuất hiện hiện tượng kim loại DIFF với đường DEA và duy trì một số chu kỳ để xác nhận xu hướng mua hiện đang tăng; Ngược lại, khi tạo ra tín hiệu bán cần quan sát xu hướng giảm MACD duy trì một chu kỳ nhất định sau khi hình thành chu kỳ chết.
Cuối cùng, cho dù là mua hay bán, chiến lược này sẽ đặt mức dừng lỗ hợp lý. Cụ thể, đường dừng lỗ mua sẽ được đặt dưới giá trị tối thiểu dưới điểm vào; đường dừng lỗ mua sẽ được đặt trên giá trị tối đa trên điểm vào. Và, điểm dừng lỗ sẽ được cập nhật trong thời gian thực theo biến động giá.
Các tham số của MACD có thể được điều chỉnh để có được sự kết hợp tốt hơn. Ngoài ra, các tham số chu kỳ trung bình nên được tối ưu hóa theo các đặc điểm của các giống khác nhau. Cuối cùng, có thể nới lỏng mức dừng lỗ thích hợp để đảm bảo lợi nhuận hướng lớn được giải phóng đầy đủ.
Chiến lược này có thể được tối ưu hóa hơn nữa theo một số hướng sau:
Tiếp theo, các nhà nghiên cứu đã đưa ra một thuật toán tự thích ứng. Các kết hợp tự động có chu kỳ động có thể tự động thích ứng với sự thay đổi của thị trường mà không cần sự can thiệp của con người để tối ưu hóa tham số.
Kết hợp với mô hình học máy. Các thuật toán như học sâu có thể được sử dụng để tự động xác định các đặc điểm của các thị trường khác nhau và xuất ra các thiết lập tham số tối ưu trong thời gian thực.
Thêm các điều kiện lọc bổ sung. Các chỉ số kỹ thuật khác có thể được thêm vào các tín hiệu giao dịch hiện có như các tiêu chuẩn phán đoán phụ trợ, chẳng hạn như giới thiệu các yếu tố khối lượng giao dịch.
Tối ưu hóa chiến lược dừng lỗ. Có thể nghiên cứu các phương pháp dừng lỗ thông minh hơn như dừng đột phá, theo dõi dừng lỗ để có được lợi nhuận lớn hơn trong khi kiểm soát rủi ro.
Chiến lược kết hợp đường trung bình kép và MACD đã xem xét tổng hợp các đặc điểm xu hướng, yếu tố động lực và kiểm soát rủi ro, vượt qua các giới hạn của chỉ số kỹ thuật đơn lẻ, có thể cải thiện hiệu quả sự ổn định của giao dịch định lượng. Chiến lược này có thể điều chỉnh thông qua các tham số để thích ứng tốt với các môi trường thị trường khác nhau, đáng để áp dụng và tối ưu hóa liên tục. Đồng thời, việc giới thiệu nhiều phương tiện thông minh hơn vẫn có không gian tối ưu hóa lớn, có thể mong đợi tối ưu hóa tự động hóa và tối đa hóa hiệu quả của chiến lược kết hợp với thuật toán trí tuệ nhân tạo.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger Band Strategy with Early Signal (v5)", overlay=true)
// Inputs
length = 20
mult = 1.5
src = close
riskRewardRatio = input(3.0, title="Risk-Reward Ratio")
// Calculating Bollinger Bands
basis = ta.ema(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
// Plotting Bollinger Bands
plot(upper, "Upper Band", color=color.red)
plot(lower, "Lower Band", color=color.green)
// Tracking Two Candles Ago Crossing Bollinger Bands
var float twoCandlesAgoUpperCrossLow = na
var float twoCandlesAgoLowerCrossHigh = na
if (close[2] > upper[2])
twoCandlesAgoUpperCrossLow := low[2]
if (close[2] < lower[2])
twoCandlesAgoLowerCrossHigh := high[2]
// Entry Conditions
longCondition = (not na(twoCandlesAgoLowerCrossHigh)) and (high > twoCandlesAgoLowerCrossHigh)
shortCondition = (not na(twoCandlesAgoUpperCrossLow)) and (low < twoCandlesAgoUpperCrossLow)
// Plotting Entry Points
plotshape(longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Strategy Execution
if (longCondition)
stopLoss = low - (high - low) * 0.05
takeProfit = close + (close - stopLoss) * riskRewardRatio
strategy.entry("Buy", strategy.long)
strategy.exit("Exit Buy", "Buy", stop=stopLoss, limit=takeProfit)
if (shortCondition)
stopLoss = high + (high - low) * 0.05
takeProfit = close - (stopLoss - close) * riskRewardRatio
strategy.entry("Sell", strategy.short)
strategy.exit("Exit Sell", "Sell", stop=stopLoss, limit=takeProfit)