Эта стратегия использует принцип фрактального прорыва индикатора Уильямса и сочетает в себе специфические K-линейные модели для разработки эффективной модели длинного и короткого открытия и закрытия.
Эта стратегия использует точки фрактала в индикаторе Уильямса для определения сигналов обратного движения.
Конкретно, в стратегии определен пользовательский индикатор под названием WMX Williams Fractals. Он использует факторные функции для определения верхнего фрактала (upFractal) и нижнего фрактала (dnFractal).
Логика верхнего фрактала такова: самая высокая цена текущей K-линии выше, чем самая высокая цена предыдущих n K-линий (n является регулируемым параметром), таким образом образуется верхний фрактал.
Логика нижнего фрактала заключается в том, что самая низкая цена текущей K-линии ниже, чем самая низкая цена предыдущих n K-линий, тем самым образуя нижний фрактал.
Получив верхний и нижний фракталы, определите, изменяются ли они, то есть от нуля к существованию или наоборот.
Затем, в сочетании с направлением K-линии, чтобы определить конкретные торговые сигналы. Когда верхний фрактал сформирован, и закрытие выше, чем открытие, перейдите на длинный. Когда нижний фрактал сформирован, и закрытие ниже, чем открытие, перейдите на короткий.
Используйте индикатор Уильямса для определения времени перехода.
Комбинировать направление K-линии для подтверждения торговых сигналов и избежать неблагоприятных регионов, не являющихся трендом.
Немногие параметры, которые должны регулировать только фрактальный период n, легко тестировать и оптимизировать.
Гибкие настройки для открытия позиций, правила размещения позиций, условия закрытия и т. д., легко применяемые в режиме реального времени.
После фрактальных форм, рынок может не полностью перевернуться, нужно сочетать с суждением о тренде.
Установка позиции стоп-лосса должна быть осторожной, чтобы не быть выбитым шумными огромными движениями волатильности.
Параметр n должен корректироваться для различных продуктов. Если период слишком большой или слишком маленький, это повлияет на результаты.
Решения:
Можно добавить такие показатели, как скользящая средняя, чтобы судить о основных тенденциях, избегать торговли против тенденций.
Использовать динамический стоп-лосс или установить разумный стоп-лосс, основанный на выводе.
Используйте анализ ходьбы вперед для оптимизации параметров и поиска оптимальных значений.
Фрактальные стратегии реверсии, как правило, формируют многократную прибыль, а затем снова обращаются вспять, чтобы сформировать убытки.
Текущий простой метод стоп-лосса не может эффективно отслеживать движения рынка. Можно попробовать более продвинутые методы стоп-лосса, такие как движущий стоп-лосс, временный стоп-лосс, динамический стоп-лосс и т. Д.
В настоящее время используется только направление K-линии. Если учесть больше информации K-линии, таких как фитили и близкое местоположение, можно разработать еще более точные торговые сигналы.
Это стратегия обратного движения, основанная на технических индикаторах. Она использует фракталы индикатора Уильямса для улавливания изменений тренда базового на ключевых поворотных точках, в сочетании с направлением K-линии для формирования торговых сигналов, направленных на достижение избыточной доходности.
По сравнению с другими стратегиями реверсии, эта стратегия имеет параметризированную конструкцию для четкой логики и легкого понимания. Она имеет гибкие корректировки параметров для удобного тестирования и может быть напрямую применена в живой торговле.
/*backtest start: 2023-11-14 00:00:00 end: 2023-12-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © WMX_Q_System_Trading //@version=4 SystemName="WMX Williams Fractals strategy V4" InitCapital = 1000000 InitPosition = 100 InitCommission = 0.075 InitPyramidMax = 10 strategy(title=SystemName, shorttitle=SystemName, overlay=true, initial_capital=InitCapital, default_qty_type=strategy.percent_of_equity, default_qty_value=InitPosition, commission_type=strategy.commission.percent, commission_value=InitCommission) //study("WMX Williams Fractals", shorttitle="WMX Fractals", format=format.price, precision=0, overlay=true) // Define "n" as the number of periods and keep a minimum value of 2 for error handling. n = input(title="Periods", defval=2, minval=2, type=input.integer) h=close l=close factorh(High)=> upFractal = ( (High[n+2] < High[n]) and (High[n+1] < High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n])) or ( (High[n+3] < High[n]) and (High[n+2] < High[n]) and (High[n+1] == High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n])) or ( (High[n+4] < High[n]) and (High[n+3] < High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n])) or ( (High[n+5] < High[n]) and (High[n+4] < High[n]) and (High[n+3] == High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n])) or ((High[n+6] < High[n]) and (High[n+5] < High[n]) and (High[n+4] == High[n]) and (High[n+3] <= High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n])) upFractal upFractal=factorh(h) factorl(Low)=> dnFractal = ( (Low[n+2] > Low[n]) and (Low[n+1] > Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n])) or ( (Low[n+3] > Low[n]) and (Low[n+2] > Low[n]) and (Low[n+1] == Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n])) or ( (Low[n+4] > Low[n]) and (Low[n+3] > Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n])) or ( (Low[n+5] > Low[n]) and (Low[n+4] > Low[n]) and (Low[n+3] == Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n])) or ((Low[n+6] > Low[n]) and (Low[n+5] > Low[n]) and (Low[n+4] == Low[n]) and (Low[n+3] >= Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n])) dnFractal=factorl(l) U=valuewhen(upFractal[0]!= upFractal[1],l[0],3) L=valuewhen(dnFractal[0]!=dnFractal[1],h[0],3) longcon=crossover(close ,L) and close>open shortcon=crossunder(close ,U) and close<open if longcon strategy.entry("Long", strategy.long, when = strategy.position_size <= 0 ) if shortcon strategy.entry("Short", strategy.short, when = strategy.position_size >= 0 )