Estrategia de seguimiento de tendencias basada en medias móviles y supertendencias


Fecha de creación: 2023-11-14 16:23:42 Última modificación: 2023-11-14 16:23:42
Copiar: 0 Número de Visitas: 733
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias basada en medias móviles y supertendencias

Descripción general

Esta estrategia combina el indicador de línea media y el indicador de tendencia superior para realizar operaciones de seguimiento de la tendencia. Haga más cuando la tendencia es superior y no haga nada cuando la tendencia es inferior.

Principio de estrategia

  1. Calcula el promedio móvil ponderado MA. Utilizando el volumen de transacciones como peso, calcula el precio promedio ponderado durante un período determinado.

  2. Calcula el promedio móvil de Hull basado en MA. El promedio móvil de Hull es más sensible a los cambios de precio.

  3. El indicador de hipertrend, combinado con el ATR, puede detectar cambios en la tendencia de los precios.

  4. Cuando el precio de cierre supera el uptrend, haga más; cuando el precio de cierre cae el downtrend, haga un gap.

  5. Trazar indicadores auxiliares, como el precio de apertura, el precio de cierre, el precio más alto y el precio más bajo, para observar el cambio de precios de manera más intuitiva.

  6. Tomar decisiones de compra y venta basadas en indicadores cruzados.

Análisis de las ventajas

  1. La estrategia combina un indicador de línea media y un indicador de tendencia de supervivencia para capturar con mayor precisión los cambios de tendencia.

  2. La línea media de Hull es más sensible a los cambios de precios, lo que ayuda a detectar los cambios de tendencia a tiempo.

  3. El indicador de tendencia puede ajustar dinámicamente su posición para adaptarse a las fluctuaciones del mercado.

  4. Los indicadores auxiliares muestran de forma intuitiva los movimientos de los precios, combinados con las señales de los indicadores para tomar decisiones.

  5. El espacio para optimizar los parámetros de la estrategia es amplio, se pueden ajustar los parámetros como el ciclo promedio, el multiplicador de tendencia excesiva.

Análisis de riesgos

  1. En la consolidación de la situación, puede haber falsas señales que conduzcan a transacciones innecesarias.

  2. La implementación de estrategias de seguimiento de varios indicadores es relativamente compleja.

  3. Se requiere ajustar los parámetros adecuadamente para que los parámetros indicadores se ajusten a las características de las diferentes variedades.

  4. Se requiere un control estricto del stop loss para evitar pérdidas individuales excesivas.

  5. Es probable que haya más transacciones, por lo que es necesario controlar el impacto de las comisiones.

Dirección de optimización

  1. Se pueden probar los parámetros de diferentes medias y elegir un indicador de medias más sensible al mercado.

  2. Se pueden probar diferentes multiplicadores de tendencias súper, seleccionando valores que capturen los cambios de tendencia en el tiempo.

  3. Se puede combinar con un indicador de volatilidad para reducir la posición cuando la volatilidad aumenta.

  4. Se puede agregar una condición de ruptura para evitar falsas señales en la recopilación.

  5. Se pueden optimizar las estrategias de stop loss para que se ajusten mejor a las características del mercado.

Resumir

Esta estrategia combina al mismo tiempo el indicador de la línea media y el indicador de la tendencia de la tendencia para determinar la dirección de la tendencia y para seguir la tendencia. La ventaja es que los indicadores pueden verificarse entre sí y determinar la tendencia con mayor precisión. Sin embargo, se debe estar atento a la interferencia de señales falsas.

Código Fuente de la Estrategia
/*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)