
Chiến lược này dựa trên ý tưởng của nhà phân tích kỹ thuật John Ehlers, sử dụng các chỉ số dẫn đường của Ehlers để đánh giá các giá trong chu kỳ lịch sử, phát ra tín hiệu mua và bán. Chiến lược này kết hợp giá tổng hợp theo xu hướng và chỉ số dẫn đường của Ehlers, sử dụng đường chỉ số đi qua giá tổng hợp theo xu hướng để tạo ra tín hiệu giao dịch.
Chiến lược này đầu tiên tính toán giá tổng hợp giảm xu hướng (Detrended Synthetic Price, DSP), DSP có được một hàm đồng bộ với chu kỳ thống trị giá thực bằng cách trừ đi giá trị của một bộ lọc Bathworth 3 cấp và bộ lọc Bathworth 2 cấp.
Sau đó, tính toán chỉ số dẫn đầu của Ehlers (ELI), ELI được tính bằng cách trừ đi đường trung bình di chuyển đơn giản của giá tổng hợp và giá tổng hợp, nó có thể báo trước thời điểm chuyển đổi chu kỳ.
Cuối cùng, khi Els dẫn đường chỉ số đi qua xu hướng tổng hợp giá, tạo ra tín hiệu mua và bán. Nếu trên ELI đi qua DSP, tạo ra tín hiệu mua; Nếu dưới ELI đi qua DSP, tạo ra tín hiệu bán.
Ưu điểm lớn nhất của chiến lược này là sử dụng các chỉ số dẫn đầu của Ellers để đoán trước các bước chuyển động của giá, có thể tạo vị trí mở trước khi giá bắt đầu đảo ngược, do đó có thể có được không gian lợi nhuận cao hơn.
Ngoài ra, chiến lược này kết hợp với giá giảm xu hướng để đánh giá tín hiệu giao dịch, có thể lọc thông tin tần số thấp không liên quan trong giá, cho phép chiến lược tập trung nhiều hơn vào quy luật định kỳ của giá và không bị nhiễu bởi tiếng ồn thị trường ngắn hạn.
Rủi ro chính của chiến lược này nằm ở khả năng các chỉ số có tín hiệu nhận diện sai của các chỉ số do Els dẫn đến tổn thất khi mở vị trí trước. Sự nhạy cảm của các chỉ số có thể được tối ưu hóa bằng cách điều chỉnh các tham số của chỉ số.
Ngoài ra, các nhà giao dịch cần lưu ý rằng chiến lược này chỉ áp dụng cho các giống có định kỳ rõ ràng, hiệu quả sẽ giảm giá cho các giống có biến động giá hỗn loạn hơn.
Có thể xác nhận bằng cách kết hợp với các chỉ số khác hoặc điều chỉnh chiến lược quản lý cổ phiếu để kiểm soát rủi ro. Ví dụ: thiết lập đường dừng lỗ hoặc giảm quy mô giao dịch đơn lẻ.
Chiến lược này sử dụng các chỉ số dẫn đầu của Ellers để đánh giá tính chu kỳ của giá, thiết lập vị trí trước khi giá bắt đầu một chu kỳ mới, và là một chiến lược theo xu hướng điển hình. Chiến lược này có hiệu quả tốt đối với các giống có tính chu kỳ rõ ràng, nhưng cũng có một số rủi ro tín hiệu giả.
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 23/03/2017
// This Indicator plots a single
// Daily DSP (Detrended Synthetic Price) and a Daily ELI (Ehlers Leading
// Indicator) using intraday data.
// Detrended Synthetic Price is a function that is in phase with the dominant
// cycle of real price data. This one is computed by subtracting a 3 pole Butterworth
// filter from a 2 Pole Butterworth filter. Ehlers Leading Indicator gives an advanced
// indication of a cyclic turning point. It is computed by subtracting the simple
// moving average of the detrended synthetic price from the detrended synthetic price.
// Buy and Sell signals arise when the ELI indicator crosses over or under the detrended
// synthetic price.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading
////////////////////////////////////////////////////////////
strategy(title="D_ELI (Ehlers Leading Indicator)", shorttitle="D_ELI (Ehlers Leading Indicator)")
Length = input(7, minval=1)
reverse = input(false, title="Trade reverse")
hline(0, color=red, linestyle=line)
xHL2 = request.security(syminfo.tickerid, 'D', hl2)
xEMA1 = ema(xHL2, Length)
xEMA2 = ema(xHL2, 2 * Length)
xEMA1_EMA2 = xEMA1 - xEMA2
xResultEMA = ema(xEMA1_EMA2, Length)
nRes = xEMA1_EMA2 - xResultEMA
pos = iff(nRes > 0, 1,
iff(nRes < 0, -1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(request.security(syminfo.tickerid, "D", xEMA1_EMA2), color=blue, title="D_DSP")
plot(request.security(syminfo.tickerid, "D", nRes), color=green, title="D_ELI")