Chiến lược này dựa trên ý tưởng của chuyên gia phân tích kỹ thuật John Ehlers, sử dụng Chỉ số dẫn đầu Ehlers để đánh giá chu kỳ lịch sử của giá và tạo ra tín hiệu mua và bán.
Chiến lược đầu tiên tính toán Giá tổng hợp bị suy giảm (DSP), được thu được bằng cách trừ giá trị của bộ lọc Butterworth thứ 3 từ bộ lọc Butterworth thứ 2 để có được một hàm phù hợp với chu kỳ thống trị của dữ liệu giá thực.
Sau đó, nó tính toán Chỉ số dẫn đầu Ehlers (ELI), được thu được bằng cách trừ trung bình di chuyển đơn giản của giá tổng hợp bị giảm giá từ chính giá tổng hợp bị giảm giá, và có thể cung cấp chỉ báo tiên tiến về một bước ngoặt chu kỳ.
Cuối cùng, khi đường ELI băng qua DSP, các tín hiệu mua và bán được tạo ra. Nếu ELI băng qua trên DSP, một tín hiệu mua được tạo ra. Nếu ELI băng qua dưới DSP, một tín hiệu bán được tạo ra.
Ưu điểm lớn nhất của chiến lược này là sử dụng Chỉ số dẫn đầu Ehlers để đánh giá các bước ngoặt trong xu hướng giá trước thời gian. Nó cho phép nhập các vị trí trước khi giá bắt đầu đảo ngược, do đó nắm bắt tiềm năng lợi nhuận lớn hơn.
Ngoài ra, việc kết hợp giá giảm giá cho việc tạo tín hiệu giao dịch lọc thông tin tần số thấp không liên quan trong giá, làm cho chiến lược tập trung nhiều hơn vào các mô hình chu kỳ trong giá mà không bị xáo trộn bởi tiếng ồn thị trường ngắn hạn.
Nguy cơ chính của chiến lược này là khả năng nhận dạng tín hiệu không chính xác của ELI, dẫn đến nhập cảnh và mất mát sớm.
Các nhà giao dịch cũng nên lưu ý rằng chiến lược này chỉ áp dụng cho các sản phẩm có mô hình chu kỳ rõ ràng. Nó sẽ ít hiệu quả hơn đối với các sản phẩm có biến động giá hỗn loạn. Đánh giá đúng về tính chu kỳ của sản phẩm được khuyên nên trước khi sử dụng chiến lược này.
Rủi ro có thể được quản lý bằng cách xác nhận tín hiệu với các chỉ số khác, hoặc điều chỉnh kích thước vị trí và chiến lược dừng lỗ. ví dụ: đặt lệnh dừng lỗ, giảm kích thước vị trí v.v.
Chiến lược này xác định tính chu kỳ trong giá bằng cách sử dụng Chỉ số dẫn đầu Ehlers, nhập vị trí sớm trước khi các chu kỳ mới bắt đầu, làm cho nó trở thành một chiến lược theo xu hướng điển hình. Nó rất hiệu quả đối với các sản phẩm có tính chu kỳ rõ ràng, nhưng cũng mang lại một số rủi ro của tín hiệu sai. Tối ưu hóa thông qua điều chỉnh tham số và quản lý rủi ro có thể làm cho chiến lược mạnh mẽ hơn.
/*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")