Стратегия отслеживания супертенда

Автор:Чао Чжан, Дата: 2023-12-26 15:58:55
Тэги:

img

Обзор

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

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

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

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

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

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

Риски

  1. Систематические риски, присущие самому запасу
  2. Индикатор супертенденции может отставать на некоторых рынках
  3. Неправильные настройки параметров ATR могут вызвать отклонения сигнала
  4. Недостаточный объем торгов может затруднить полное сокращение потерь

Основные меры по предотвращению риска:

  1. Выбирайте акции с хорошей ликвидностью и большими колебаниями
  2. Разумно оптимизировать параметры для уменьшения возможности отставания
  3. Испытания и оптимизация параметров для повышения точности сигнала
  4. Соответствующее увеличение объема транзакций для обеспечения возможности снижения потерь

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

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

Резюме

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


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

//@version=4
strategy("Supertrend TEST 2 Strategy", overlay = true, format=format.price, precision=2)

Periods = input(title="ATR Period", type=input.integer, defval=4)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=4.7)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
tp=close
sl=close

atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? 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.green)
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.green )
plotshape(buySignal and showsignals ? up : na, title="Лонг", text="Лонг", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white )
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
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.red )
plotshape(sellSignal and showsignals ? dn : na, title="Шорт", text="Шорт", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white )
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

sPeriods=input(title="ATR Period", type=input.integer, defval=8)
sMultiplier=input(title="dop ATR Multiplier", type=input.float, step=0.1, defval=1.5)
satr2 = sma(tr, sPeriods)
satr= changeATR ? atr(sPeriods) : satr2
ssup=ohlc4-(sMultiplier*satr)
ssup1 = nz(ssup[1],ssup)
ssup := close[1] > ssup1 ? max(ssup,ssup1) : ssup
sdn=ohlc4+(sMultiplier*satr)
sdn1 = nz(sdn[1], sdn)
sdn := close[1] < sdn1 ? min(sdn, sdn1) : sdn
strend = 1
strend := nz(strend[1], strend)
strend := strend == -1 and close > sdn1 ? 1 : strend == 1 and close < ssup1 ? -1 : strend
sbuySignal = strend == 1 and strend[1] == -1
ssellSignal = strend == -1 and strend[1] == 1

fPeriods=input(title="ATR Period", type=input.integer, defval=10)
fMultiplier=input(title="filter ATR Multiplier", type=input.float, step=0.1, defval=5)
fatr2 = sma(tr, fPeriods)
fatr= changeATR ? atr(fPeriods) : fatr2
fup=ohlc4-(fMultiplier*fatr)
fup1 = nz(fup[1],fup)
fup := close[1] > fup1 ? max(fup,fup1) : fup
fdn=ohlc4+(fMultiplier*fatr)
fdn1 = nz(fdn[1], fdn)
fdn := close[1] < fdn1 ? min(fdn, fdn1) : fdn
ftrend = 1
ftrend := nz(ftrend[1], ftrend)
ftrend := ftrend == -1 and close > fdn1 ? 1 : ftrend == 1 and close < fup1 ? -1 : ftrend
fbuySignal = ftrend == 1 and ftrend[1] == -1
fsellSignal = ftrend == -1 and ftrend[1] == 1
tcolor=color.new(color.gray,50)
fdnPlot = plot(ftrend == 1 ? na : fdn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=tcolor)
fupPlot = plot(ftrend == 1 ? fup : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=tcolor)



if (strategy.position_size > 0)
	tp:=tp[1]
	sl:=up
	strategy.exit("Long_TP/SL","Long",limit=tp, stop=sl)
	
if (strategy.position_size < 0)
	tp:=tp[1]
	sl:=dn
	strategy.exit("Short_TP/SL","Short",limit=tp, stop=sl)



if ((buySignal and  ftrend==1) or (sbuySignal and trend==1 and  ftrend==1)) 
	tp:=close+(close-up)*0.382
    strategy.entry("Long", strategy.long,  limit=tp, comment=tostring(round(tp)))
if ((sellSignal and ftrend==-1) or (ssellSignal and trend==-1 and  ftrend==-1)) 
	tp:=close-(dn-close)*0.382
    strategy.entry("Short", strategy.short, limit=tp, comment=tostring(round(tp)))


Больше