Стратегия следования за трендом с несколькими таймфреймами


Дата создания: 2024-01-15 11:35:47 Последнее изменение: 2024-01-15 11:35:47
Копировать: 0 Количество просмотров: 556
1
Подписаться
1617
Подписчики

Стратегия следования за трендом с несколькими таймфреймами

Обзор

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

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

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

Когда цена пробивает верхний канал, генерируется сигнал покупки; когда цена пробивает нижний канал, генерируется сигнал продажи. Канал будет корректироваться в соответствии с последней ценовой динамикой, что позволяет отслеживать тенденцию.

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

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

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

Стратегический риск

  • Слишком радикальное отслеживание может увеличить риск потерь
  • Неправильно настроенные параметры канала, меньше или больше ошибочных сигналов
  • Требуется большой навык программирования для корректировки параметров

Методы оптимизации:

  • Сокращение коэффициента ATR, чтобы снизить трассировку
  • Оптимизируйте параметры, чтобы найти оптимальную комбинацию параметров
  • Увеличение стратегии по сдерживанию убытков и снижение убытков в отдельности

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

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

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

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

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

//@version=5
strategy('超级趋势精简优化版', 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.close('BUY',comment = '卖出')
buy1 = ta.barssince(buySignal)
sell1 = ta.barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na