Тенденция после стратегии на основе скользящей средней и супер-тенденции

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

img

Обзор

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

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

  1. Для расчета средневзвешенной цены за определенный период используйте объем в качестве веса.

  2. Вычислить скользящую среднюю стоимость Hull на основе MA.

  3. Вычислить индикатор супер-тенденции. Супер-тенденция объединяет ATR для определения изменений тренда. Он вычисляет верхние и нижние полосы.

  4. Когда ближайшие перерывы выше верхней полосы, идите на длинный.

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

  6. Принимать торговые решения на основе перекрестных показателей.

Анализ преимуществ

  1. Стратегия сочетает в себе как скользящую среднюю, так и супер-тенд, что позволяет более точно определять тренд.

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

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

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

  5. Стратегия позволяет оптимизировать параметры на скользящий средний период, супер тренд мультипликатор и т.д.

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

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

  2. Отслеживание нескольких показателей может сделать стратегию относительно сложной для реализации.

  3. Параметры должны быть надлежащим образом адаптированы к характеристикам различных продуктов.

  4. Для ограничения потерь на одиночных позициях требуется строгий режим стоп-лосса.

  5. Высокая частота торговли требует контроля воздействия от комиссий.

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

  1. Проверьте различные скользящие средние, чтобы найти более чувствительные к рынку.

  2. Проверьте различные супер трендовые мультипликаторы, чтобы зафиксировать изменения тренда во времени.

  3. Включить индекс волатильности для уменьшения размера позиции при повышении волатильности.

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

  5. Оптимизировать стратегию стоп-лосса, чтобы сделать ее более адаптивной к рыночным условиям.

Резюме

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


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © rajukpatel

//@version=5
strategy('My RK Strategy with Alert', shorttitle='My RK Strategy with Alert', overlay=true )
src5 = input(close)

tf = input(1440)
len5 = timeframe.isintraday and timeframe.multiplier >= 1 ? tf / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7

ma = ta.ema(src5 * volume, len5) / ta.ema(volume, len5)


//script taken from https://www.tradingview.com/script/kChCRRZI-Hull-Moving-Average/

src1 = ma

p(src1, len5) =>
    n = 0.0
    s = 0.0
    for i = 0 to len5 - 1 by 1
        w = (len5 - i) * len5
        n += w
        s += src5[i] * w
        s
    s / n

hm = 2.0 * p(src1, math.floor(len5 / 3)) - p(src1, len5)
vhma = p(hm, math.floor(math.sqrt(len5)))
lineColor = vhma > vhma[1] ? color.lime : color.red
plot(vhma, title='VHMA', color=lineColor, linewidth=3)
hColor = true
vis = true
hu = hColor ? vhma > vhma[2] ? #00ff00 : #ff0000 : #ff9800

vl = vhma[0]
ll = vhma[1]
m1 = plot(vl, color=hu, linewidth=1, transp=60)
m2 = plot(vis ? ll : na, color=hu, linewidth=2, transp=80)

fill(m1, m2, color=hu, transp=70)
//

b = timeframe.isintraday and timeframe.multiplier >= 1 ? 60 / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7



//
res5 = input.timeframe('D')

o = request.security(syminfo.tickerid, res5, open, barmerge.gaps_off, barmerge.lookahead_on)
c = request.security(syminfo.tickerid, res5, close, barmerge.gaps_off, barmerge.lookahead_on)
hz = request.security(syminfo.tickerid, res5, high, barmerge.gaps_off, barmerge.lookahead_on)
l = request.security(syminfo.tickerid, res5, low, barmerge.gaps_off, barmerge.lookahead_on)



col = c >= o ? color.lime : color.red

ppo = plot(b ? o >= c ? hz : l : o, color=col, title='Open', style=plot.style_stepline, transp=100)
ppc = plot(b ? o <= c ? hz : l : c, color=col, title='Close', style=plot.style_stepline, transp=100)

plot(b and hz > c ? hz : na, color=col, title='High', style=plot.style_circles, linewidth=2, transp=60)
plot(b and l < c ? l : na, color=col, title='Low', style=plot.style_circles, linewidth=2, transp=60)

fill(ppo, ppc, col, transp=90)

//
// INPUTS //
st_mult = input.float(1, title='SuperTrend Multiplier', minval=0, maxval=100, step=0.01)
st_period = input.int(50, title='SuperTrend Period', minval=1)

// CALCULATIONS //
up_lev = l - st_mult * ta.atr(st_period)
dn_lev = hz + st_mult * ta.atr(st_period)

up_trend = 0.0
up_trend := c[1] > up_trend[1] ? math.max(up_lev, up_trend[1]) : up_lev

down_trend = 0.0
down_trend := c[1] < down_trend[1] ? math.min(dn_lev, down_trend[1]) : dn_lev

// Calculate trend var
trend = 0
trend := c > down_trend[1] ? 1 : c < up_trend[1] ? -1 : nz(trend[1], 1)

// Calculate SuperTrend Line
st_line = trend == 1 ? up_trend : down_trend

// Plotting
//plot(st_line[1], color = trend == 1 ? color.green : color.red , style = plot.style_cross, linewidth = 2, title = "SuperTrend")
buy = ta.crossover(c, st_line)
sell = ta.crossunder(c, st_line)
signal = input(false)

/////////////// Plotting /////////////// 
plotshape(signal and buy, style=shape.triangleup, size=size.normal, location=location.belowbar, color=color.new(color.lime, 0))
plotshape(signal and sell, style=shape.triangledown, size=size.normal, location=location.abovebar, color=color.new(color.red, 0))


if buy
    strategy.entry('My Long Entry Id', strategy.long)

if sell
    strategy.entry('My Short Entry Id', strategy.short)



Больше