Estratégia de acompanhamento de tendências com base em média móvel e supertendência


Data de criação: 2023-11-14 16:23:42 última modificação: 2023-11-14 16:23:42
cópia: 0 Cliques: 733
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências com base em média móvel e supertendência

Visão geral

Esta estratégia combina um indicador de linha média e um indicador de tendência superior para realizar operações de acompanhamento de tendências. Faça mais quando a tendência for alta e faça zero quando a tendência for baixa.

Princípio da estratégia

  1. Calcule a média móvel ponderada MA. Utilize o volume de transações como um peso para calcular o preço médio ponderado em um determinado período.

  2. A média móvel de Hull é calculada com base na MA. A média móvel de Hull é mais sensível às mudanças de preço.

  3. Calcular o indicador de tendência ultra. O indicador de tendência ultra, combinado com o ATR, pode detectar mudanças na tendência de preços.

  4. Quando o preço de fechamento excede a trajetória superior, faça mais; Quando o preço de fechamento cai para baixo, faça um vazio.

  5. Gravação de indicadores auxiliares, como preço de abertura, preço de fechamento, preço máximo, preço mínimo, para observar as mudanças de preços de forma mais intuitiva.

  6. Tomar decisões de compra e venda com base em indicadores cruzados.

Análise de vantagens

  1. A estratégia combina um indicador de linha média e um indicador de tendência superior para capturar mudanças de tendência com maior precisão.

  2. A linha média de Hull é mais sensível às mudanças de preços, o que ajuda a detectar mudanças de tendência em tempo hábil.

  3. O indicador de tendência ultra pode ajustar dinamicamente a trajectória para cima e para baixo, adaptando-se à flutuação do mercado.

  4. Os indicadores auxiliares mostram as mudanças de preços de forma intuitiva, combinando os sinais dos indicadores para fazer o julgamento.

  5. Os parâmetros de otimização da estratégia são amplos e podem ser ajustados para o período médio da linha, o multiplicador de tendência e outros parâmetros.

Análise de Riscos

  1. O que pode ser um falso sinal de correção de tendências, que pode levar a transações desnecessárias.

  2. A necessidade de monitorar vários indicadores ao mesmo tempo e a estratégia de implementação são relativamente complexas.

  3. Os parâmetros precisam ser adequadamente ajustados para que os parâmetros indicadores correspondam às características de diferentes variedades.

  4. O que é necessário é um controle rigoroso do stop loss para evitar perdas individuais excessivas.

  5. O número de transações pode ser maior, e é necessário controlar o impacto das taxas.

Direção de otimização

  1. Para testar os parâmetros de diferentes linhas médias, escolha um indicador de linha média mais sensível ao mercado.

  2. É possível testar diferentes multiplicadores de tendências, selecionando valores capazes de capturar mudanças de tendência em tempo hábil.

  3. Pode ser combinado com um indicador de volatilidade para reduzir a posição quando a volatilidade aumenta.

  4. Pode-se adicionar condições de ruptura para evitar falsos sinais na compilação.

  5. Pode-se otimizar a estratégia de stop loss para que a parada de perdas seja mais adequada às características do mercado.

Resumir

Esta estratégia combina o indicador de equilíbrio e o indicador de tendência para determinar a direção da tendência e para acompanhar a tendência. A vantagem é que os indicadores podem ser verificados entre si e determinar a tendência com mais precisão.

Código-fonte da estratégia
/*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)