Стратегия отслеживания экстремального реверсия отслеживает экстремальные точки диапазона колебаний цен и делает обратные длинные/короткие позиции в экстремальных точках для отслеживания тенденций.
Стратегия основывается главным образом на следующих принципах:
Использовать функцию безопасности для получения высоких и низких цен различных циклов K-линий, чтобы обнаружить, равны ли они предыдущим, чтобы судить, достигнуты ли новые крайние точки.
При обнаружении новых экстремальных точек, если в настоящее время рынок находится в состоянии бычьего роста, выберите короткую позицию, а если в настоящее время рынок находится в состоянии медвежьего роста, выберите длинную позицию.
Установите точку остановки потери как новую крайнюю точку, сформированную после длинной/короткой позиции, чтобы отслеживать тенденции с остановкой потери.
Установите эффективный временной диапазон стратегии, настроив начальный год, месяц и дату для внесения корректировок для различных периодов времени.
Основными преимуществами этой стратегии являются:
Эффективно улавливать крайние точки изменения цен и делать позиции для отмены тенденций.
Конфигурировать управление временем и рисками для контроля времени использования и капитала стратегии для снижения рисков.
Использование новых экстремальных точек в качестве точек остановки потери для динамической корректировки позиций остановки потери на основе нового диапазона колебаний цен.
Простая и понятная логика стратегии для легкого понимания, отладки и оптимизации.
Эта стратегия также сопряжена с некоторыми рисками:
В определении крайних точек может возникнуть ошибка, вызывающая ошибки в длинных/коротких позициях.
Позиция стоп-лосса близка к точке входа, что увеличивает вероятность того, что будет задействован стоп-лосс.
Не учитываются пирамидальные позиции вдоль трендов и обратные позиции, менее прибыльные на трендовых рынках.
Конфигурация валюты и временного диапазона довольно жесткая, не может производить динамические корректировки.
Стратегия может быть оптимизирована в следующих аспектах:
Оптимизируйте логику крайней точки с помощью большего количества фильтров, чтобы избежать ошибок.
Добавить плавающий механизм стоп-лосса на основе изменений цены и волатильности для корректировки расстояния стоп-лосса.
Внедрить модули пирамидизации и обратной позиции, основанные на тенденциях и волатильности для повышения прибыльности.
Создать механизм оптимизации параметров для автоматического тестирования и настройки параметров.
Включить модели машинного обучения для принятия стратегических решений.
Стратегия отслеживания экстремальных реверсий работает путем захвата экстремальных цен и отслеживания тенденций, адаптируемых и прибыльных.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 6h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Extremum Strategy v1.0", shorttitle = "Extremum str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") tf = input('W', title = 'Timeframe for extremums') fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Levels highm = request.security(syminfo.tickerid, tf, high[1]) lowm = request.security(syminfo.tickerid, tf, low[1]) upcolorm = highm == highm[1] ? lime : na dncolorm = lowm == lowm[1] ? red : na plot(highm, color = upcolorm, linewidth = 3) plot(lowm, color = dncolorm, linewidth = 3) //Signals size = strategy.position_size up = size > 0 ? highm * 1000000 : highm != highm[1] ? highm : up[1] dn = size < 0 ? 0 : lowm != lowm[1] ? lowm : dn[1] exit = true //Trading lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1] if highm > 0 and high[1] < highm and highm == highm[1] strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = up) if lowm > 0 and low[1] > lowm and lowm == lowm[1] strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dn) if exit strategy.close_all()