Стратегия перехода к адаптации к тренду ATR

Автор:Чао Чжан, Дата: 2023-10-31 15:58:46
Тэги:

自适应ATR趋势突破策略

Обзор

Эта стратегия - стратегия прорыва тренда, основанная на показателе ATR. Ее основная идея заключается в том, чтобы совершить операцию прорыва тренда, когда цена превышает определенный кратный ATR. Стратегия также включает в себя подтверждение тренда и функции ограничения торговли с использованием диапазона дат.

Принцип

Стратегия использует индикатор ATR для определения величины колебаний цены. ATR представляет собой средний реальный диапазон колебаний, который измеряет средний диапазон колебаний цен в течение определенного периода времени. В стратегии параметр length рассчитывает цикл ATR, параметр numATRs - кратность ATR с прорывом.

Когда рост цены прорывает верхние нумАТРы в размере ATR, выполняется многооперация; когда цена падает и прорывает нижние нумАТРы в размере ATR, выполняется пустая операция.

Кроме того, политика включает в себя переменные BOOL, требующие длинных позиций ("needlong") и длинных позиций ("needshort"), и может контролировать только длительные позиции или только длительные позиции. Политика также устанавливает диапазон дат, где сделки совершаются только между указанными датами, что обеспечивает ограничение времени.

Стратегия использует переменную size для определения позиции и вычисляет количество одиночных рук в зависимости от положения позиции.

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

  • Автоматическая адаптация к рыночным колебаниям с помощью индикатора ATR без необходимости ручного настройки стоп-лосс
  • Гибкий выбор: делать больше или только больше/ничего
  • Можно установить диапазон дат для торговли, чтобы избежать важных моментов времени
  • Гибкие настройки смены, оплата в процентах от аккаунта

Риски и решения

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

Оптимизировать мышление

  • Можно рассмотреть возможность включения трендовых показателей, таких как движущаяся средняя, для фильтрации шумных сделок, вызванных нетенденционными прорывами.
  • Можно тестировать различные параметры цикла ATR, чтобы выбрать оптимальную комбинацию параметров
  • Можно рассмотреть возможность использования в сочетании с другими стратегиями, чтобы использовать их преимущества и улучшить стабильность стратегии.

Подведение итогов

Общая идея этой стратегии ясна и понятна. Использование индикатора ATR для автоматической адаптации к волатильности рынка является общепринятой стратегией отслеживания трендов. Благодаря оптимизации параметров и комбинации других стратегий можно еще больше улучшить эффективность и стабильность стратегии.


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Volty Strategy v1.0", shorttitle = "Volty 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100)

//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 = "Lot, %")
length = input(5)
numATRs = input(0.75)
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")

//Indicator
atrs = sma(tr, length) * numATRs

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if (not na(close[length])) and needlong
    strategy.entry("L", strategy.long, lot, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if (not na(close[length])) and needlong == false
    strategy.entry("L", strategy.long, 0, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if (not na(close[length])) and needshort
    strategy.entry("S", strategy.short, lot, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if (not na(close[length])) and needshort == false
    strategy.entry("S", strategy.short, 0, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

Больше информации