Esta estratégia combina indicadores de média móvel e super tendência para seguir a tendência.
Calcular a média móvel ponderada MA Usar o volume como peso para calcular o preço médio ponderado durante um período.
Calcular a média móvel do Hull com base na MA. A média móvel do Hull é mais sensível às alterações de preços.
Calcule o indicador de super tendência. Super tendência combina ATR para identificar mudanças de tendência. Calcula as bandas superior e inferior.
Quando a distância entre as faixas acima da faixa superior, vá longo.
Gravar indicadores auxiliares como aberto, fechado, alto e baixo para observar visualmente os movimentos de preços.
Tomar decisões de negociação com base em cruzamento de indicadores.
A estratégia combina a média móvel e a super tendência, permitindo uma detecção de tendência mais precisa.
A média móvel do casco é mais sensível às alterações de preços, ajudando a reversão oportuna da tendência spot.
Super tendência ajusta dinamicamente as faixas superior e inferior para se adaptar à volatilidade do mercado.
Os indicadores auxiliares mostram visualmente os movimentos dos preços para auxiliar a tomada de decisões com sinais de indicador.
A estratégia permite a otimização de parâmetros no período de média móvel, super multiplicador de tendência, etc.
Os Whipsaws podem gerar sinais falsos durante os mercados de gama, causando negociações desnecessárias.
O acompanhamento de múltiplos indicadores pode tornar a estratégia relativamente complexa de implementar.
Os parâmetros devem ser adequadamente ajustados às características dos diferentes produtos.
Para limitar as perdas em posições individuais, é necessário um stop loss rigoroso.
A alta frequência do comércio exige o controlo do impacto das comissões.
Teste diferentes médias móveis para encontrar uma mais sensível ao mercado.
Teste diferentes super multiplicadores de tendência para captar mudanças de tendência no tempo.
Incorporar o índice de volatilidade para reduzir o tamanho da posição quando a volatilidade aumentar.
Adicionar condições de ruptura para evitar sinais falsos durante períodos de alcance.
Otimizar a estratégia de stop loss para torná-la mais adaptável às condições do mercado.
Esta estratégia julga a direção da tendência usando a média móvel e a super tendência para seguir a tendência. A vantagem é a verificação mútua entre os indicadores para uma detecção de tendência mais precisa. Mas os sinais falsos devem ser observados. A estratégia pode ser melhorada através da otimização de parâmetros e controle de risco.
/*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)