Стратегия обратного теста Фишеровской трансформации рассчитывает преобразование Фишера цен, чтобы определить точки переворота цен и генерировать соответствующие торговые сигналы. Стратегия обрабатывает цены с использованием формулы преобразования Фишера для удаления негауссианских особенностей распределения цен, в результате чего получается стандартизированный индикатор с приблизительным распределением Гауссиана. Стратегия определяет перевороты цен на основе точек перелома кривой преобразования Фишера и производит длинные и короткие сигналы.
Ядром этой стратегии является обработка цен с использованием формулы преобразования Фишера для устранения негауссианских особенностей естественного распределения цен.
y = 0,5 * ln (((1+x) /(1-x))
Здесь x - обработанная цена, полученная сначала путем поиска самых высоких и самых низких цен за последние периоды длины с использованием самых высоких и самых низких функций, а затем нормализации следующим образом:
x = (цена - минимальная) / ((максимальная - минимальная) - 0,5
Цены, обрабатываемые таким образом, приближаются к распределению Гаусса. x затем заменяется в формулу преобразования Фишера, чтобы получить кривую преобразования Фишера.
Когда кривая преобразования Фишера превращается из положительной в отрицательную, генерируется сигнал продажи.
Трансформация Фишера устраняет негауссианские особенности цен, что приводит к более нормальным ценам и меньшему количеству ложных сигналов.
Захватывает точки переворота цен, избегая погони за вершинами и дном
Гибкое регулирование параметров для настройки обратной чувствительности
Настраиваемая направленность, адаптируется к различным рыночным условиям
Простая логика, понятная и понятная
Неправильные настройки параметров могут пропустить повороты или генерировать ложные сигналы
Сдвиг в режиме реального времени может помешать идеальному исполнению сигнала
Трудно определить повороты, когда цены волатильны
Трудно реализовать в режиме реального времени с необходимостью подтверждения отмены
Решения:
Оптимизировать параметры путем настройки длины
Упростите критерии входа, чтобы обеспечить заполнение.
Фильтрация ложных сигналов, сочетающих другие показатели
Строго соблюдать правила и управлять рисками
Оптимизировать параметр длины для поиска лучшей комбинации
Добавить фильтры, чтобы избежать ложных сигналов, например, скользящих средних, показателей волатильности и т.д.
Включение стоп-лосса в контроль потери на одну сделку
Добавить механизм повторного входа для отслеживания продолжающихся тенденций
Стратегия обратного теста Fisher Transform идентифицирует точки обратного движения цены, удаляя негауссианские ценовые особенности. Это легко реализуемая стратегия среднего обратного движения. Ее преимущества заключаются в гибких параметрах для захвата поворотов, в то время как ее основная слабость заключается в сложности реального внедрения с необходимостью строгих правил входа.
/*backtest start: 2023-11-26 00:00:00 end: 2023-12-03 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version = 2 //////////////////////////////////////////////////////////// // Copyright by HPotter v2.0 22/12/2016 // Market prices do not have a Gaussian probability density function // as many traders think. Their probability curve is not bell-shaped. // But trader can create a nearly Gaussian PDF for prices by normalizing // them or creating a normalized indicator such as the relative strength // index and applying the Fisher transform. Such a transformed output // creates the peak swings as relatively rare events. // Fisher transform formula is: y = 0.5 * ln ((1+x)/(1-x)) // The sharp turning points of these peak swings clearly and unambiguously // identify price reversals in a timely manner. // // For signal used zero. // 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="Fisher Transform Indicator by Ehlers Backtest", shorttitle="Fisher Transform Indicator by Ehlers") Length = input(10, minval=1) reverse = input(false, title="Trade reverse") hline(0, color=blue) xHL2 = hl2 xMaxH = highest(xHL2, Length) xMinL = lowest(xHL2,Length) nValue1 = 0.33 * 2 * ((xHL2 - xMinL) / (xMaxH - xMinL) - 0.5) + 0.67 * nz(nValue1[1]) nValue2 = iff(nValue1 > .99, .999, iff(nValue1 < -.99, -.999, nValue1)) nFish = 0.5 * log((1 + nValue2) / (1 - nValue2)) + 0.5 * nz(nFish[1]) pos = iff(nFish > 0, 1, iff(nFish < 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(nFish, color=green, title="Fisher") plot(nz(nFish[1]), color=red, title="Trigger")