
A estratégia é um sistema de negociação automatizado baseado no indicador SuperTrend, que combina RSI (índice de força relativa), volume de negociação e ATR (intervalo real médio) para tomar decisões de negociação. Ele identifica a direção da tendência do mercado e, ao mesmo tempo, usa vários filtros para garantir a qualidade das negociações.
A lógica central da estratégia gira em torno dos seguintes componentes principais:
Julgar tendências: Utilizando o indicador SuperTrend como base para construir uma linha de trajetória ascendente e descendente. Quando o preço se move para cima, o mercado é considerado em uma tendência ascendente; quando ele se move para baixo, ele é considerado em uma tendência descendente.
Confirmação de transaçãoA estratégia exige que o volume de transações atuais seja superior a um determinado múltiplo do valor médio do volume de transações de 20 ciclos (que pode ser ajustado com o parâmetro volumeMultiplier). Isso garante que as transações sejam feitas apenas quando há liquidez suficiente.
Verificação da resistência do enxofre: Calcule o tamanho da entidade de alumínio atual (o valor absoluto da diferença entre o preço de fechamento e o preço de abertura) e compare com o valor do ATR. A movimentação de preços só é considerada forte o suficiente quando o alumínio atinge uma proporção específica do ATR (o controle do parâmetro bodyPctOfATR).
Filtragem RSI: Use o indicador RSI para evitar transações em áreas de sobrecompra ou sobrevenda. O sinal de compra requer RSI abaixo do nível de sobrecompra ((default 70), o sinal de venda requer RSI acima do nível de sobrevenda ((default 30).
Paragem automáticaO Stop Loss de cada transação é definido como uma distância ATR, enquanto o Stop Loss é definido como um múltiplo do Stop Loss (controlado pelo parâmetro RiskRewardRatio), permitindo uma gestão de risco dinâmica baseada na volatilidade real do mercado.
A estratégia cria condições de compra e venda através de um julgamento integrado dos cinco aspectos acima:
Analisando a implementação da estratégia em código, podemos concluir as seguintes vantagens significativas:
Mecanismo de confirmação multidimensionalO mecanismo de confirmação multidimensional pode evitar muitas negociações desnecessárias, especialmente em mercados altamente voláteis.
Gestão de risco adaptativaA configuração dinâmica de stop loss e stop loss baseada no ATR permite que a estratégia ajuste automaticamente os parâmetros de risco de acordo com a volatilidade em diferentes fases do mercado, evitando o problema de inadequação causado por stop loss fixo.
Integração de gestão de fundosA estratégia possui funções de gerenciamento de fundos embutidas, que permitem ajustar a quantidade de fundos para cada transação de acordo com o tamanho da conta e as preferências de risco, através dos parâmetros de capitalPerTrade, permitindo a integração do controle de risco com a estratégia de negociação.
Alta automatização de transaçõesA partir do sinal de entrada, a distribuição de fundos e o stop loss são automatizados, reduzindo a pressão psicológica e a probabilidade de erros nas operações manuais.
Sistema de alerta perfeitoA estratégia configura alertas detalhados em formato JSON, contendo informações cruciais, como direção de negociação, quantidade de capital, stop loss e preço de parada, para facilitar a integração com sistemas externos ou notificar o usuário.
Embora a estratégia tenha sido concebida de forma multidisciplinar, existem os seguintes riscos potenciais:
Sensibilidade do parâmetroO desempenho da estratégia é altamente dependente da configuração de parâmetros, como o ciclo ATR, o limiar RSI, a multiplicação do volume de negociação, etc. Os parâmetros inadequados podem levar a excesso de negociação ou perda de oportunidades importantes. A solução é encontrar a combinação ideal de parâmetros por meio de testes de retorno em diferentes condições de mercado.
Atraso na mudança de tendênciaO SuperTrend, como indicador de acompanhamento de tendências, geralmente tem um atraso nos pontos de tendência, o que pode levar a uma entrada tardia ou a um grande stop loss. Isso pode ser reduzido reduzindo o ciclo ATR ou ajustando o múltiplo ATR.
Risco de mercado extremoEm caso de brecha ou crash no mercado, o stop-loss predeterminado pode não ser efetivamente executado, resultando em perdas acima do esperado. Recomenda-se o uso de outras medidas de controle de risco, como controle de posição geral ou limite de perda máxima.
Eficiência financeiraA distribuição de fundos fixos pode levar à ineficiência na utilização dos fundos. Pode-se considerar a realização de ajustes de posição dinâmicos com base na volatilidade ou no valor líquido da conta.
Limitação de um único período de tempoA estratégia atual baseia-se apenas em sinais de um único período de tempo, e a falta de confirmação de múltiplos períodos de tempo pode gerar sinais errados em certas condições de mercado.
A estratégia pode ser otimizada de acordo com os riscos e restrições acima mencionados:
Integração de análise de multi-quadros de tempoA introdução de confirmação de tendências em prazos mais elevados, com negociação apenas na direção da tendência principal, pode aumentar significativamente a estabilidade da estratégia. Isso pode ser feito através da função de segurança do TradingView, que permite o acesso a dados em prazos mais longos.
Parâmetros dinâmicos se adaptam: Pode ajustar automaticamente os parâmetros de multiplicação do ATR e o RSI, de acordo com a volatilidade do mercado, para que a estratégia se adapte melhor a diferentes condições de mercado. Por exemplo, aumentar o múltiplo do ATR em mercados de alta volatilidade e reduzir a falsa ruptura.
Algoritmos de gestão de fundos optimizadosIntrodução de uma gestão dinâmica de fundos baseada na fórmula de Kelly ou no modelo de risco de proporção fixa, que ajuste automaticamente a distribuição de fundos em cada transação de acordo com a taxa de ganho e perda histórica, aumentando a estabilidade dos ganhos a longo prazo.
Aumentar a identificação do estado do mercado: adicionar a lógica de julgamento sobre o estado do mercado (trend, equilíbrio, alta volatilidade, baixa volatilidade), aplicar diferentes regras de negociação ou parâmetros em diferentes estados de mercado, melhorar a adaptabilidade.
Integração de modelos de aprendizagem de máquinaO uso de algoritmos de aprendizagem de máquina pode ser considerado para prever o melhor momento de entrada ou combinação de parâmetros, especialmente quando se determina parâmetros-chave como a multiplicação do ATR e o valor de queda do volume de transação. A aprendizagem de máquina pode fornecer uma capacidade de adaptação mais precisa.
A estratégia de controle de risco dinâmico SuperTrend-ATR-RSI é um sistema de negociação quantitativa que combina o acompanhamento de tendências com o gerenciamento de risco dinâmico. Identificar as tendências do mercado através do indicador SuperTrend e combinar mecanismos de filtragem múltiplos, como RSI, volume de negociação e intensidade de queda, aumenta consideravelmente a qualidade do sinal de negociação. O principal benefício da estratégia está em sua estrutura de gerenciamento de risco adaptável, que permite que o controle de risco ajuste automaticamente à volatilidade do mercado por meio de configurações de stop loss e stop loss baseadas no ATR.
A estratégia é adequada para ambientes de mercado com grande volatilidade e tendências evidentes, especialmente durante a fase de formação de tendências de médio e longo prazo. No entanto, os usuários devem prestar atenção à otimização de parâmetros e à correspondência do ambiente de mercado na aplicação prática e considerar as direções de otimização propostas neste artigo, como análise de múltiplos quadros temporais, ajuste de parâmetros dinâmicos e métodos avançados de gerenciamento de fundos, para melhorar ainda mais a robustez e adaptabilidade da estratégia.
Com um parâmetro de configuração razoável e uma validação de retrospectiva suficiente, a estratégia tem o potencial de se tornar uma ferramenta de negociação automatizada confiável, oferecendo aos investidores uma solução sistematizada de execução de negociações e controle de risco.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-04-20 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"TRX_USD"}]
*/
//@version=5
strategy("Supertrend Hombrok Bot", overlay=true, default_qty_type=strategy.cash, default_qty_value=1000)
// INPUTS
atrPeriod = input.int(10, title="ATR Period")
atrMult = input.float(3.0, title="ATR Multiplier")
rsiPeriod = input.int(14, title="RSI Period")
rsiOverbought = input.int(70, title="RSI Overbought")
rsiOversold = input.int(30, title="RSI Oversold")
volumeMultiplier = input.float(1.2, title="Volume Multiplier")
bodyPctOfATR = input.float(0.3, title="Candle Body % of ATR (min strength)")
riskRewardRatio = input.float(2.0, title="R:R (Take Profit / Stop Loss)")
capitalPerTrade = input.float(10, title="Capital por operação ($)")
// ATR e Supertrend
atr = ta.atr(atrPeriod)
upperBand = hl2 - (atrMult * atr)
lowerBand = hl2 + (atrMult * atr)
prevUpper = nz(upperBand[1], upperBand)
prevLower = nz(lowerBand[1], lowerBand)
trendUp = close[1] > prevUpper ? math.max(upperBand, prevUpper) : upperBand
trendDown = close[1] < prevLower ? math.min(lowerBand, prevLower) : lowerBand
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > trendDown ? 1 : trend == 1 and close < trendUp ? -1 : trend
isUpTrend = trend == 1
isDownTrend = trend == -1
// Filtros
volAverage = ta.sma(volume, 20)
volOk = volume > volAverage * volumeMultiplier
bodySize = math.abs(close - open)
bodyOk = bodySize > (atr * bodyPctOfATR)
rsi = ta.rsi(close, rsiPeriod)
rsiBuyOk = rsi < rsiOverbought
rsiSellOk = rsi > rsiOversold
// Condições
buyCond = isUpTrend and volOk and bodyOk and rsiBuyOk
sellCond = isDownTrend and volOk and bodyOk and rsiSellOk
// TP e SL
longSL = close - atr
longTP = close + (atr * riskRewardRatio)
shortSL = close + atr
shortTP = close - (atr * riskRewardRatio)
// Estratégia de entrada e saída
if buyCond
strategy.entry("Compra", strategy.long, qty=capitalPerTrade / close)
strategy.exit("TP/SL Compra", from_entry="Compra", stop=longSL, limit=longTP)
if sellCond
strategy.entry("Venda", strategy.short, qty=capitalPerTrade / close)
strategy.exit("TP/SL Venda", from_entry="Venda", stop=shortSL, limit=shortTP)
// ALERTAS + LABELS
alertLong = '{"side":"buy", "capital":' + str.tostring(capitalPerTrade) + ', "sl":' + str.tostring(longSL) + ', "tp":' + str.tostring(longTP) + '}'
alertShort = '{"side":"sell", "capital":' + str.tostring(capitalPerTrade) + ', "sl":' + str.tostring(shortSL) + ', "tp":' + str.tostring(shortTP) + '}'
if buyCond
label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white)
alert(alertLong, alert.freq_once_per_bar_close)
if sellCond
label.new(bar_index, high, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white)
alert(alertShort, alert.freq_once_per_bar_close)
// VISUAL
plotshape(buyCond, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellCond, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
plot(trend == 1 ? trendUp : na, title="Trend Up", color=color.green, linewidth=1)
plot(trend == -1 ? trendDown : na, title="Trend Down", color=color.red, linewidth=1)