Esta estrategia combina indicadores de media móvil y súper tendencia para seguir la tendencia.
Calcular la media móvil ponderada MA. Utilice el volumen como peso para calcular el precio promedio ponderado durante un período.
Calcular la media móvil de Hull basada en el MA. La media móvil de Hull es más sensible a los cambios de precios.
Calcular el indicador de súper tendencia. Súper tendencia combina ATR para identificar los cambios de tendencia. Calcula las bandas superior e inferior.
Cuando se acerque a las brechas por encima de la banda superior, vaya largo.
Trace indicadores auxiliares como abiertos, cerrados, altos y bajos para observar visualmente los movimientos de precios.
Tomar decisiones comerciales basadas en los cruces de indicadores.
La estrategia combina tanto la media móvil como la súper tendencia, lo que permite una detección de tendencia más precisa.
El promedio móvil del casco es más sensible a los cambios de precios, lo que ayuda a la inversión oportuna de la tendencia spot.
Super tendencia ajusta dinámicamente las bandas superior e inferior para adaptarse a la volatilidad del mercado.
Los indicadores auxiliares muestran visualmente los movimientos de precios para ayudar a la toma de decisiones con señales de indicadores.
La estrategia permite la optimización de parámetros en el período promedio móvil, súper multiplicador de tendencia, etc.
Las whipssaws pueden generar señales falsas durante los mercados de rango, causando operaciones innecesarias.
El seguimiento de múltiples indicadores puede hacer que la estrategia sea relativamente compleja de implementar.
Los parámetros deben ajustarse adecuadamente para adaptarse a las características de los diferentes productos.
Se requiere un stop loss estricto para limitar las pérdidas en posiciones individuales.
La alta frecuencia de comercio requiere un control de impacto de las comisiones.
Prueba diferentes promedios móviles para encontrar uno más sensible al mercado.
Prueba diferentes súper multiplicadores de tendencia para detectar los cambios de tendencia en el tiempo.
Incorporar el índice de volatilidad para reducir el tamaño de la posición cuando aumente la volatilidad.
Añadir condiciones de ruptura para evitar señales falsas durante los períodos de alcance limitado.
Optimizar la estrategia de stop loss para adaptarla mejor a las condiciones del mercado.
Esta estrategia juzga la dirección de la tendencia utilizando tanto la media móvil como la súper tendencia para seguir la tendencia. La ventaja es la verificación mutua entre indicadores para una detección de tendencia más precisa. Pero se deben tener en cuenta las señales falsas. La estrategia se puede mejorar aún más a través de la optimización de parámetros y el control de riesgos.
/*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)