Đây là một chiến lược cố vấn chuyên gia chỉ ngắn 3 phút cho hợp đồng tương lai E-mini S&P500 (ES). Nó tạo ra tín hiệu giao dịch bằng cách tính toán một loạt các đường trung bình động theo cấp số nhân và kết hợp các điều kiện mẫu cụ thể.
Chỉ số cốt lõi của chiến lược này là đường trung bình T3. T3 đầu tiên tính toán một tập các đường trung bình động biểu thức xe1~xe6 dựa trên tham số T3 được xác định bởi người dùng. Sau đó nó tính toán trung bình trọng số của các EMA này bằng cách sử dụng các hệ số cụ thể như đường trung bình T3 cuối cùng.
Khi giá đóng dưới đường trung bình T3, một tín hiệu mua được tạo ra. Khi giá đóng trên đường trung bình T3, một tín hiệu bán được tạo ra. Ngoài ra, chiến lược cũng đánh giá các mẫu nến cụ thể như là các điều kiện nhập cảnh bổ sung. Các lệnh giao dịch sẽ chỉ được gửi ra khi cả hai điều kiện mẫu và tín hiệu T3 xuất hiện cùng một lúc.
Sức mạnh lớn nhất của chiến lược này nằm trong thiết kế đa bộ lọc và tối ưu hóa tham số. Mặt khác, các tham số chính như T3 và các quy tắc đánh giá mô hình có thể được tối ưu hóa để thích nghi với các thị trường khác nhau và cải thiện độ chính xác nhập cảnh.
So với các đường trung bình động đơn giản, cơ chế làm mịn ba của chỉ số T3 có hiệu quả trong việc lọc ra tiếng ồn thị trường và xác định các điểm đảo ngược xu hướng.
Các rủi ro chính của chiến lược này đến từ điều chỉnh tham số không phù hợp và thời gian giữ quá lớn. Nếu tham số T3 được đặt quá lớn, các chỉ số sẽ tụt lại phía sau thị trường; nếu đặt quá nhỏ, nó làm tăng xác suất giao dịch ồn ào. Ngoài ra, các giao dịch 3 phút có thể phải đối mặt với lỗ lớn mà không có lỗ dừng kịp thời.
Để kiểm soát rủi ro, điều đầu tiên là lặp đi lặp lại backtest để xác định phạm vi tham số tối ưu cho các sản phẩm khác nhau.
Có một số hướng để cải thiện chiến lược:
Tối ưu hóa tham số T3 để tìm phạm vi tối ưu cho các công cụ giao dịch khác nhau
Cải thiện logic đánh giá mẫu để tăng độ chính xác của nhận dạng mẫu
Thêm các cơ chế dừng lỗ tiên tiến hơn như dừng lỗ sau
Thêm mô-đun quản lý tiền dựa trên yếu tố lợi nhuận hoặc rút tiền tối đa
Thêm mô-đun truy cập hỗ trợ học máy
Thông qua những cải tiến này, sự ổn định và lợi nhuận của chiến lược có thể được nâng cao từng bước.
Là một chiến lược giao dịch trong ngày ngắn hạn, chiến lược này có những lợi thế như không gian tối ưu hóa lớn, nhiều bộ lọc và thực hiện lệnh nhanh. Với một loạt các phương pháp tối ưu hóa như điều chỉnh tham số, tối ưu hóa dừng lỗ, quản lý tiền, nó có thể được điều chỉnh thành một chiến lược hiệu quả phù hợp với giao dịch tần số cao.
/*backtest start: 2023-11-16 00:00:00 end: 2023-11-23 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("ES 3m Short Only (Triple RED)", overlay=true) // Alert Message '{{strategy.order.alert_message}}' //3min T3 = input(150)//to 600 xPrice3 = close xe1 = ta.ema(xPrice3, T3) xe2 = ta.ema(xe1, T3) xe3 = ta.ema(xe2, T3) xe4 = ta.ema(xe3, T3) xe5 = ta.ema(xe4, T3) xe6 = ta.ema(xe5, T3) b3 = 0.7 c1 = -b3*b3*b3 c2 = 3*b3*b3+3*b3*b3*b3 c3 = -6*b3*b3-3*b3-3*b3*b3*b3 c4 = 1+3*b3+b3*b3*b3+3*b3*b3 nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3 // Buy Signal - Price is below T3 Average buySignal3 = xPrice3 < nT3Average sellSignal3 = xPrice3 > nT3Average //NinjaTrader Settings. acct = "Sim101" ticker = "ES 12-23" qty = 1 takeProfitTicks = 4 stopLossTicks = 16 tickSize = 0.25 takeProfitShort = close - takeProfitTicks * tickSize stopLossShort = close + stopLossTicks * tickSize OCOMarketShort = '{ "alert": "OCO Market Short", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitShort) + '", "stop_price": "' + str.tostring(stopLossShort) + '", "tif": "DAY" }' CloseAll = '{ "alert": "Close All", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '" }' IsUp = close > open IsDown = close < open PatternPlot = IsDown[2] and IsDown[1] and IsDown and close[1] <= high[0] and close[1] > close[0] and low[1] > low[0] and high[2] > high[1] and low[2] <= low[1] if (PatternPlot and sellSignal3) strategy.entry('Short', strategy.short, alert_message=OCOMarketShort) strategy.exit('Close Short', 'Short', profit=takeProfitTicks, loss=stopLossTicks, alert_message=CloseAll) //plotshape(PatternPlot, title="Custom Pattern", style=shape.circle, location=location.abovebar, color=color.red, size=size.small)