Эта стратегия основана на идеях мастера технического анализа Джона Элерса, использующего лидирующий индикатор Элерса для оценки исторического цикла цен и генерации сигналов купли и продажи.
Стратегия сначала рассчитывает Сниженную синтетическую цену (DSP), которая получается путем вычитания значения фильтра Butterworth 3-го порядка из фильтра Butterworth 2-го порядка, чтобы получить функцию, которая находится в фазе с доминирующим циклом данных о реальных ценах.
Затем он вычисляет ведущий индикатор Ehlers (ELI), который получается путем вычитания простой скользящей средней цены синтетической цены с отрывом от самой цены синтетической цены с отрывом, и может дать предварительные указания на циклическую переломную точку.
Наконец, когда линия ELI пересекает DSP, генерируются сигналы покупки и продажи. Если ELI пересекает DSP, генерируется сигнал покупки. Если ELI пересекает DSP, генерируется сигнал продажи.
Наибольшее преимущество этой стратегии заключается в использовании лидирующего индикатора Ehlers для предварительного определения поворотных точек в ценовых тенденциях.
Кроме того, объединение ценовой тенденции для генерации торговых сигналов отфильтровывает несущественную низкочастотную информацию о ценах, что делает стратегию более ориентированной на циклические модели цен, не нарушая краткосрочный шум на рынке.
Основным риском этой стратегии является возможность неправильной идентификации сигналов ELI, что приводит к преждевременному вхождению и потерям.Это может быть оптимизировано путем корректировки параметров индикатора для тонкой настройки чувствительности индикатора.
Трейдеры также должны иметь в виду, что эта стратегия применяется только к продуктам с очевидными циклическими моделями. Она будет менее эффективной для продуктов с хаотическими ценовыми движениями. До использования этой стратегии рекомендуется правильная оценка цикличности продукта.
Риски могут управляться путем подтверждения сигналов с помощью других индикаторов или корректировки размеров позиций и стратегий стоп-лосса. Например, установка ордеров стоп-лосса, сокращение размеров позиций и т.д.
Эта стратегия определяет цикличность цен с использованием лидирующего индикатора Ehlers, входя в позиции рано перед началом новых циклов, что делает ее типичной тенденцией после стратегии.
/*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")