
Эта стратегия, основанная на индикаторе преобразования Фишера, разработанном мастером технического анализа Джоном Эхлером, позволяет автоматически идентифицировать точки обратного тренда цены и совершать автоматические сделки на короткие и длинные позиции. Ее наибольшим преимуществом является точность и своевременность идентификации ценовых поворотов.
Эта стратегия использует формулу преобразования Фише для стандартизации цены и создания ценовой последовательности с приближенным распределением Гауса. Формула преобразования Фише: y = 0,5 * ln (((1+x) / ((1-x))). С помощью этого преобразования можно преобразовать крайние значения цены в относительно более редкие события.
В частности, этапы стратегии следующие:
Самым большим преимуществом этой стратегии является точность и своевременность ее торговых сигналов. Поскольку ценовая последовательность, создаваемая преобразованием Фишера, приблизительно соответствует распределению Гаусса, в случае возникновения ценового переворота, индикатор преобразования Фишера может быстро распознать и реагировать соответствующим образом. Это гарантирует своевременное использование возможности для переворота. Кроме того, сам индикатор преобразования Фишера Ehlers также проверен на протяжении длительного времени, и точность обратного сигнала также очень надежна.
Наибольший риск этой стратегии заключается в том, что ценовая последовательность после преобразования в Фише не всегда полностью соответствует распределению Гасса в теории рациональности. В случае аномальных колебаний на рынке, таких как трещины, скачки и т. Д., это может привести к тому, что индикатор преобразования в Фише пошлет ошибочный сигнал. В это время, если все еще будет торговаться механически, это может привести к большим убыткам.
Чтобы снизить этот риск, можно рассмотреть возможность фильтрации торговых сигналов в сочетании с другими показателями, чтобы избежать торговли во время аномалий на рынке. Или можно соответствующим образом скорректировать параметры, уменьшить частоту торгов и размер одиночных убытков.
Эта стратегия может быть оптимизирована в следующих аспектах:
Эта стратегия, основанная на Фишеровском конверсионном индикаторе, разработанном Ehlers, позволяет быстро и точно идентифицировать точку переворота цены, чтобы вовремя использовать торговые возможности. Ее наибольшим преимуществом является точность и своевременность торговых сигналов.
/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version = 2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 15/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.
//
// 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")
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 > nz(nFish[1]), 1,
iff(nFish < nz(nFish[1]), -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")