Esta estratégia combina indicadores de impulso e indicadores de rastreamento bidirecionais para capturar sinais de ruptura em tendências fortes para rastreamento de tendências.
O indicador HiLo Activator calcula o preço do ponto médio usando o ponto médio do mais alto e do mais baixo. Quando os preços quebram acima do ponto médio, um sinal de compra é gerado. Quando os preços quebram abaixo do ponto médio, um sinal de venda é gerado.
O índice direcional médio (ADX) é usado para medir a força da tendência. Quanto maior o valor do ADX, mais forte a tendência.
Os indicadores direcionais DI+ e DI- representam, respectivamente, a força da tendência ascendente e da tendência descendente.
Os sinais de compra são gerados quando os preços ultrapassam o ponto médio, o ADX é superior ao limiar e o DI+ é superior ao limiar.
Esta estratégia combina as vantagens dos indicadores de impulso e de tendência para captar breakouts precoces e seguir as tendências de perto.
Em comparação com o uso de indicadores de momento sozinhos, esta estratégia adiciona avaliação de força de tendência para filtrar sinais e melhorar a lucratividade.
Em geral, a estratégia pode acompanhar as tendências sem problemas, entrar e sair em tempo hábil e evitar ficar preso em consolidações, reduzindo simultaneamente as perdas decorrentes de inversões de tendência.
Esta estratégia tem alguns riscos de reversão temporária dos preços gerando sinais errados.
Para reduzir os riscos, ajuste os parâmetros do HiLo Activator para aumentar a faixa de fuga.
Os usuários também devem notar diferenças entre produtos e ambientes de mercado.
As principais formas de otimizar esta estratégia incluem:
Ajuste o período do HiLo Activator e os níveis de gatilho para equilibrar os riscos e o tempo.
Ajustar o período e o limiar do ADX para equilibrar a qualidade e a frequência do sinal.
Estabelecer limiares separados para DI+ e DI- para acomodar as diferenças entre tendências ascendentes e descendentes.
Adicionar estratégias de stop loss com níveis de stop loss para controlar a perda de uma única negociação.
Combinar com outros indicadores auxiliares para melhorar a estabilidade geral.
Esta estratégia considera tanto o impulso quanto os indicadores de tendência para gerar sinais durante tendências fortes. Tem a vantagem de seguir as tendências de forma suave e próxima, adequada para capturar oportunidades de tendência precoces. Também tem habilidades razoáveis de controle de risco para reduzir perdas de sinais errados e whipssaws. Com ajuste de parâmetros e adições de stop loss, ele pode alcançar um desempenho constante. Como uma estratégia de rastreamento de tendências versátil que se encaixa em diferentes produtos e mercados, merece boa atenção e aplicação dos traders quant.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("HiLo Activator with ADX", shorttitle="HASB_ADX", overlay=true) // Parameters for the HiLo Activator length_ha = input(14, title="HiLo Activator Period") offset_ha = input(0, title="Offset") trigger_ha = input(1, title="Trigger for Buy/Sell") // Parameters for ADX adx_length = input(14, title="ADX Period", minval=1) adx_threshold = input(25, title="ADX Threshold") di_threshold = input(50, title="DI Threshold") // Parameter for choosing the number of candles for backtest backtest_candles = input(1000, title="Number of Candles for Backtest", minval=1) // Function to get backtest data getBacktestData() => var float data = na if bar_index >= backtest_candles data := security(syminfo.tickerid, "D", close[backtest_candles]) data // HiLo Activator calculations ha = (highest(high, length_ha) + lowest(low, length_ha)) / 2 // ADX calculations trh = high - high[1] trl = low[1] - low tr = max(trh, trl) atr = sma(tr, adx_length) plus_dm = high - high[1] > low[1] - low ? max(high - high[1], 0) : 0 minus_dm = low[1] - low > high - high[1] ? max(low[1] - low, 0) : 0 smoothed_plus_dm = sma(plus_dm, adx_length) smoothed_minus_dm = sma(minus_dm, adx_length) di_plus = 100 * (smoothed_plus_dm / atr) di_minus = 100 * (smoothed_minus_dm / atr) dx = 100 * abs(di_plus - di_minus) / (di_plus + di_minus) adx = sma(dx, adx_length) // Buy and Sell signals based on HiLo Activator and ADX signalLong = crossover(close, ha) and adx > adx_threshold and di_plus > di_threshold signalShort = crossunder(close, ha) and adx > adx_threshold and di_minus > di_threshold // Plot HiLo Activator and ADX plot(ha, color=color.blue, title="HiLo Activator") plot(offset_ha, color=color.red, style=plot.style_histogram, title="Offset") plot(adx, color=color.purple, title="ADX") // Backtest strategy strategy.entry("Buy", strategy.long, when = signalLong) strategy.entry("Sell", strategy.short, when = signalShort) strategy.close("Buy", when = signalShort) strategy.close("Sell", when = signalLong) // Accuracy percentage var accuracy = 0.0 var totalTrades = 0 var winningTrades = 0 if (signalLong or signalShort) totalTrades := totalTrades + 1 if (signalLong and (not na(signalLong[1]) and (not signalLong[1]))) winningTrades := winningTrades + 1 if (signalShort and (not na(signalShort[1]) and (not signalShort[1]))) winningTrades := winningTrades + 1 accuracy := totalTrades > 0 ? (winningTrades / totalTrades) * 100 : 0 // Plot accuracy percentage on the chart plot(accuracy, title="Accuracy Percentage", color=color.purple, style=plot.style_histogram)