СуперТренд и стратегия DEMA

Автор:Чао Чжан, Дата: 2023-12-08 16:42:14
Тэги:

img

Обзор

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

Логика стратегии

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

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

В частности, логика торговых сигналов выглядит следующим образом:

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

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

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

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

Риски стратегии

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

Управление рисками:

  • Оптимизируйте параметры DEMA и SuperTrend.
  • Используйте ордеры стоп-лосса для ограничения потерь.
  • Добавить механизмы подтверждения в ключевых точках, чтобы избежать ложных сигналов.

Области улучшения

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

  1. Оптимизация параметров SuperTrend. Испытать различные комбинации периодов ATR, чтобы найти оптимальные параметры.

  2. Оптимизация параметров DEMA, проверка различных значений для определения оптимальных настроек.

  3. Добавить механизм остановки потери. Настроить остановку потери на основе значений ATR, чтобы предотвратить чрезмерные остановки.

  4. Добавьте фильтры сигналов. Увеличьте подтверждение от других индикаторов в ключевых точках, чтобы предотвратить ложные сигналы. Например, добавьте подтверждение объема в точках обратного тренда.

  5. Улучшить размер позиций. Динамически корректировать размеры на основе волатильности рынка и рисков.

Заключение

Эта стратегия сочетает в себе сильные стороны индикаторов SuperTrend и DEMA для реализации количественной торговой стратегии, основанной на следовании тренду и фильтрации сигналов.


/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Krish\'s Supertrend Strategy', overlay=true)

// Supertrend Settings
Periods = input(title='ATR Period', defval=10)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
changeATR = input(title='Change ATR Calculation Method ?', defval=true)
showsignals = input(title='Show Buy/Sell Signals ?', defval=true)
highlighting = input(title='Highlighter On/Off ?', defval=true)

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='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1

plotshape(buySignal ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal and showsignals ? up : na, title='Buy', text='Buy', 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='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1

plotshape(sellSignal ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal and showsignals ? dn : na, title='Sell', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))

// DEMA Settings
dema_length = 200
dema = ta.ema(close, dema_length)

// Long and Short Conditions
longCondition = buySignal and close > dema
shortCondition = sellSignal and close < dema

// Strategy Entry and Exit
strategy.entry('Long', strategy.long, when=longCondition)
strategy.entry('Short', strategy.short, when=shortCondition)

strategy.close('Long', when=ta.change(trend) or close < dema)
strategy.close('Short', when=ta.change(trend) or close > dema)

// Plotting
mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? trend == 1 ? color.green : color.white : color.white
shortFillColor = highlighting ? trend == -1 ? color.red : color.white : color.white

fill(mPlot, upPlot, title='UpTrend Highlighter', color=longFillColor, transp=90)
fill(mPlot, dnPlot, title='DownTrend Highlighter', color=shortFillColor, transp=90)

// Alerts (using plotshape for alerts in strategies)
plotshape(buySignal, title='SuperTrend Buy', color=color.new(color.green, 0), style=shape.triangleup, size=size.small)
plotshape(sellSignal, title='SuperTrend Sell', color=color.new(color.red, 0), style=shape.triangledown, size=size.small)
changeCond = trend != trend[1]
plotshape(changeCond, title='SuperTrend Direction Change', color=color.new(color.yellow, 0), style=shape.triangleup, size=size.small)




Больше