Стратегия следования за трендом Super ATR


Дата создания: 2024-02-19 11:41:20 Последнее изменение: 2024-02-19 11:41:20
Копировать: 0 Количество просмотров: 669
1
Подписаться
1617
Подписчики

Стратегия следования за трендом Super ATR

Обзор

Супер ATR - это стратегия отслеживания трендов, основанная на показателях ATR. Она использует показатели ATR для измерения волатильности рынка и осуществляет отслеживание трендов с использованием нескольких кратных ATR в качестве линии остановки.

Стратегический принцип

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

Затем умножьте на ATR-значение по множественному числу, чтобы рассчитать путь вверх и вниз по рельсу:close - Multiplier * ATR; расчетная подвеска:close + Multiplier * ATR❚ Это составляет канал трендов, основанный на показателях ATR ❚

Затем мы оцениваем, пробилась ли текущая цена вверх или вниз по каналу. Если цена пробилась вверх, то она вошла в нисходящую тенденцию; если цена пробилась вниз, то она вошла в восходящую тенденцию.

Кроме того, в стратегии установлены временные окна для торговли только в течение определенного периода времени на определенные даты.

Стратегические преимущества

Эта стратегия отслеживания трендов, основанная на индикаторных каналах, имеет следующие преимущества:

  1. Используйте индикатор ATR для автоматической корректировки стоп-позиции, чтобы эффективно контролировать риск
  2. ATR учитывает волатильность цен на акции, а остановка - более разумная
  3. Достижение точности входа в игру благодаря использованию прорыва в канале.
  4. Разрешение на корректировку метода расчета ATR, увеличение гибкости стратегии
  5. Установка временного окна для торговли, чтобы избежать неудачи в крупных событиях

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

Анализ рисков

В этой стратегии также есть некоторые риски, в частности:

  1. При резких изменениях на рынке показатели ATR могут не реагировать на изменения рынка, что приводит к чрезмерному ослаблению стоп-ложа
  2. В случае разногласий между участниками, цены могут колебаться внутри каналов, увеличивая риск для торговли.
  3. Фиксированная множительная настройка может не подходить для всех сортов и требует корректировки для разных сортов
  4. setWindow ограничивает возможности для торговли, и если вы не настроите его правильно, вы можете пропустить лучшие возможности для торговли.

Для того, чтобы контролировать эти риски, мы можем предпринять следующие шаги:

  1. В сочетании с другими показателями для оценки состояния рынка, избегайте зависимости от одного показателя ATR
  2. Увеличение условий фильтрации для предотвращения неэффективного прорыва, вводящего риск сделки
  3. Выбор подходящего множителя в зависимости от исторических особенностей разных сортов
  4. Оптимизировать и тестировать параметры setWindow, чтобы убедиться, что их настройки разумны

Направление оптимизации

Однако есть еще много возможностей для оптимизации этой стратегии:

  1. Внедрение алгоритмов машинного обучения для динамической оптимизации умножения
  2. Оптимизируйте диапазон каналов, используя множественный рычаг, который может быть объединен с эмоциональными показателями.
  3. Увеличение объема торгов или подтверждение колебаний, чтобы избежать недействительного прорыва
  4. Backtest с использованием высокотехнологичных временных стратегий

Благодаря этим оптимизациям можно еще больше повысить стабильность и доходность стратегии.

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

В целом, эта стратегия является очень практичной стратегией отслеживания тенденций. Она использует показатели ATR для создания адаптивного канала и для оценки времени покупки и продажи с помощью прорыва канала.

Исходный код стратегии
/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('B厂长 @超级趋势精简优化版', overlay=true)
Periods = input(title='ATR周期', defval=10)
src = input(hl2, title='价格数据源')
Multiplier = input.float(title='ATR 乘数', step=0.1, defval=3.0)
changeATR = input(title='更改ATR计算方法', defval=true,tooltip = '默认为art否则sma(ta.tr,ATR周期)')
showsignals = input(title='显示买入/卖出信号', defval=false)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title='上涨趋势', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal and showsignals ? up : na, title='买点', text='买点', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))
dnPlot = plot(trend == 1 ? na : dn, title='下跌趋势', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal and showsignals ? dn : na, title='卖点', text='卖点', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))
FromMonth = input.int(defval=9, title='From Month', minval=1, maxval=12)
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31)
FromYear = input.int(defval=2018, title='From Year', minval=999)
ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12)
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31)
ToYear = input.int(defval=9999, title='To Year', minval=999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() =>
    time >= start and time <= finish ? true : false
longCondition = buySignal
if longCondition and window()
    strategy.entry('BUY', strategy.long, comment = '做多')
shortCondition = sellSignal
if shortCondition and window()
    strategy.entry('SAL', strategy.short, comment = '做空')

buy1 = ta.barssince(buySignal)
sell1 = ta.barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na