Стратегия отслеживания экстремальной реверсии

Автор:Чао Чжан, Дата: 2024-02-20 15:17:41
Тэги:

img

Обзор

Стратегия отслеживания экстремального реверсия отслеживает экстремальные точки диапазона колебаний цен и делает обратные длинные/короткие позиции в экстремальных точках для отслеживания тенденций.

Принцип стратегии

Стратегия основывается главным образом на следующих принципах:

  1. Использовать функцию безопасности для получения высоких и низких цен различных циклов K-линий, чтобы обнаружить, равны ли они предыдущим, чтобы судить, достигнуты ли новые крайние точки.

  2. При обнаружении новых экстремальных точек, если в настоящее время рынок находится в состоянии бычьего роста, выберите короткую позицию, а если в настоящее время рынок находится в состоянии медвежьего роста, выберите длинную позицию.

  3. Установите точку остановки потери как новую крайнюю точку, сформированную после длинной/короткой позиции, чтобы отслеживать тенденции с остановкой потери.

  4. Установите эффективный временной диапазон стратегии, настроив начальный год, месяц и дату для внесения корректировок для различных периодов времени.

Преимущества

Основными преимуществами этой стратегии являются:

  1. Эффективно улавливать крайние точки изменения цен и делать позиции для отмены тенденций.

  2. Конфигурировать управление временем и рисками для контроля времени использования и капитала стратегии для снижения рисков.

  3. Использование новых экстремальных точек в качестве точек остановки потери для динамической корректировки позиций остановки потери на основе нового диапазона колебаний цен.

  4. Простая и понятная логика стратегии для легкого понимания, отладки и оптимизации.

Риски

Эта стратегия также сопряжена с некоторыми рисками:

  1. В определении крайних точек может возникнуть ошибка, вызывающая ошибки в длинных/коротких позициях.

  2. Позиция стоп-лосса близка к точке входа, что увеличивает вероятность того, что будет задействован стоп-лосс.

  3. Не учитываются пирамидальные позиции вдоль трендов и обратные позиции, менее прибыльные на трендовых рынках.

  4. Конфигурация валюты и временного диапазона довольно жесткая, не может производить динамические корректировки.

Руководство по оптимизации

Стратегия может быть оптимизирована в следующих аспектах:

  1. Оптимизируйте логику крайней точки с помощью большего количества фильтров, чтобы избежать ошибок.

  2. Добавить плавающий механизм стоп-лосса на основе изменений цены и волатильности для корректировки расстояния стоп-лосса.

  3. Внедрить модули пирамидизации и обратной позиции, основанные на тенденциях и волатильности для повышения прибыльности.

  4. Создать механизм оптимизации параметров для автоматического тестирования и настройки параметров.

  5. Включить модели машинного обучения для принятия стратегических решений.

Резюме

Стратегия отслеживания экстремальных реверсий работает путем захвата экстремальных цен и отслеживания тенденций, адаптируемых и прибыльных.


/*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()

Больше