
Este “Advanced Multifunctional SuperTrend Trend Tracking Strategy with Automatic Stop Loss System” é uma estratégia de negociação quantitativa baseada em indicadores SuperTrend, combinando o mecanismo de stop loss automático (TP/SL) e a lógica de otimização de entrada. O núcleo da estratégia é usar o indicador SuperTrend para identificar tendências de mercado, emitir sinais de negociação em pontos de reversão de tendência, ao mesmo tempo em que ajusta o ponto de entrada real por meio de desvios percentuais e define níveis predefinidos de stop loss para gerenciar riscos e bloquear lucros.
A estratégia baseia-se no cálculo e aplicação de indicadores SuperTrend, cujos princípios básicos são os seguintes:
Calculação da SuperTrendEm primeiro lugar, a estratégia calcula o ATR (Average True Range) para medir a volatilidade do mercado. Em seguida, a utilização do ATR e um múltiplo definido pelo usuário para determinar o upperBand e o lowerBand. O SuperTrend determina a tendência atual de acordo com a posição do preço em relação a essas trajectórias.
Identificação de tendências: Quando o preço quebra a trajetória, a tendência se transforma em queda ((-1); Quando o preço quebra a trajetória, a tendência se transforma em alta ((1) ◄ . A mudança na estratégia de acompanhar a tendência, emitir um sinal de compra quando a tendência muda de -1 para 1 e emitir um sinal de venda quando a tendência muda de 1 para -1 ◄ .
Optimização de entrada: A estratégia não entra imediatamente no ponto de reversão da tendência, mas calcula um preço de desvio. Para um sinal de compra, o ponto de entrada é definido como uma certa porcentagem abaixo do preço do sinal ((entryOffsetPerc); Para um sinal de venda, o ponto de entrada é definido como uma certa porcentagem acima do preço do sinal.
Paragem automáticaUma vez entrado, a estratégia automaticamente define os níveis de parada (TP) e parada (SL) de acordo com o preço de entrada e o parâmetro percentual definido pelo usuário. A parada de negociação multihead é definida como uma determinada porcentagem acima do preço de entrada e a parada é definida como uma determinada porcentagem abaixo do preço de entrada; o inverso é o caso das negociações em branco.
Mecanismo de acionamentoA estratégia monitora se o preço atingiu o nível de stop ou stop loss. Uma vez atingido, o negócio é liquidado e exibido no gráfico com a marca correspondente.
Otimização de entrada após a confirmação da tendênciaDiferentemente da estratégia tradicional de SuperTrend, a entrada imediata no cruzamento de linhas de tendência permite a entrada em uma posição mais favorável após a geração de um sinal, o que pode aumentar a vantagem do preço de entrada e reduzir o risco de falsas rupturas.
Gerenciamento automático de riscosA estratégia inclui um mecanismo de stop-loss para definir automaticamente condições de saída claras para cada transação, evitando o problema de que os comerciantes não conseguem sair de uma negociação desfavorável a tempo devido a emoções subjetivas.
Informações de transações visuaisA estratégia marca pontos de entrada, pontos de parada e pontos de suspensão de perda no gráfico, permitindo que os comerciantes tenham uma visão intuitiva da execução das negociações, ajudando na análise e otimização de estratégias posteriores.
Ajustabilidade dos parâmetrosA estratégia oferece vários parâmetros ajustáveis, incluindo o ciclo ATR, o ATR multiplicado, a porcentagem de stop loss e a porcentagem de desvio de entrada, permitindo que os comerciantes se ajustem a diferentes cenários de mercado e preferências de risco pessoais.
Transações bidirecionaisA estratégia permite a negociação de ativos e passivos simultaneamente, maximizando as oportunidades de mercado em tendências de alta e baixa.
Risco de ruptura de tendênciaEmbora a estratégia tenha mitigado o problema com o desvio de entrada, o mercado ainda pode sofrer de uma ruptura de tendência por um curto período de tempo, para depois retomar a tendência original, causando sinais de negociação desnecessários e perdas.
Limitação de percentual de parada fixaA estratégia usa um stop loss de porcentagem fixa, o que pode nem sempre ser o ideal. Em mercados de alta volatilidade, um stop loss de porcentagem fixa pode ser pequeno demais para causar um disparo frequente; em mercados de baixa volatilidade, um stop loss grande demais pode causar um excesso de perdas.
Desafios de optimização de parâmetrosEncontrar os melhores ATRs, multiplicadores e stop-loss ratios requer um grande número de testes e otimização de dados históricos, e os parâmetros ótimos podem precisar de ajustes com a mudança das condições de mercado.
Risco de falha de mercadoEm casos de salto de preço, o preço de parada real pode ser muito abaixo ou muito acima do nível de parada definido, resultando em perdas reais superiores às esperadas.
Risco de liquidez: Em mercados com pouca liquidez, pode não ser possível executar ordens de entrada ou saída ao preço esperado, resultando em aumento do ponto de deslizamento e diminuição do desempenho da estratégia.
Solução:
Ajustes de parâmetros de adaptaçãoA estratégia atual usa um ciclo e um multiplicador de ATR fixos, que podem ser otimizados para ajustar automaticamente esses parâmetros de acordo com a volatilidade do mercado. Por exemplo, aumentar o ciclo de ATR quando a volatilidade aumenta ou diminuir o multiplicador quando a volatilidade diminui e vice-versa, para se adaptar a diferentes condições de mercado.
Análise de Multi-Framas de TempoIntrodução de mecanismos de confirmação de múltiplos quadros temporais, executando transações somente quando a direção da tendência de quadros temporais mais elevados coincide com o sinal atual, reduzindo o risco de negociações adversas e falsas rupturas.
Definição de stop loss dinâmico: A mudança do stop loss de porcentagem fixa para um valor dinâmico baseado no ATR ou na taxa de flutuação, para que ele reflita melhor a situação atual do mercado e evite a suspensão de perdas excessivamente apertada em ambientes de alta flutuação ou a suspensão de perdas excessivamente ampla em ambientes de baixa flutuação.
Confirmação de volume de transação: Combinação de análise de volume de transação para confirmar a eficácia da tendência, por exemplo, apenas quando a ruptura de preço é acompanhada por um volume de transação suficientemente grande para confirmar o sinal, o que reduz o risco de falsa ruptura.
Mecanismo de bloqueio parcial de lucros: Adição de função de liquidação em lotes, que liquida uma parte da posição quando o preço atinge um determinado nível de lucro, bloqueando parte do lucro e dando espaço para que as posições restantes sigam a tendência, aumentando a taxa de retorno do risco geral.
Essas direções de otimização são importantes porque permitem que as estratégias se adaptem melhor às mudanças no mercado, reduzindo os falsos sinais, aumentando a estabilidade das estratégias e a lucratividade a longo prazo. Em particular, os parâmetros de auto-adaptação e as configurações de stop loss dinâmicas podem aumentar significativamente a consistência do desempenho das estratégias em diferentes ambientes de mercado.
A estratégia de acompanhamento de tendências SuperTrend multifuncional de alto nível combina as vantagens clássicas de acompanhamento de tendências com a tecnologia moderna de gerenciamento de risco, identificando tendências de mercado através de indicadores SuperTrend e aumentando a eficácia das negociações através da otimização dos pontos de entrada e do mecanismo de parada automático. Sua característica mais notável é a busca de pontos de entrada mais favoráveis após a confirmação de sinais de tendências, ao mesmo tempo em que define parâmetros claros de controle de lucro e risco para cada transação.
A força da estratégia reside na sua completa arquitetura de sistema de negociação, com regras claras desde a geração de sinais, otimização de entrada até o gerenciamento de riscos, para os comerciantes que desejam lucrar e controlar o risco em mercados de tendência. No entanto, como todas as estratégias de acompanhamento de tendências, pode gerar mais falsos sinais e negociações perdidas em mercados de turbulência.
Para melhorar ainda mais o desempenho da estratégia, os comerciantes devem considerar a inclusão de ajustamentos de parâmetros de adaptação, confirmação de múltiplos prazos e mecanismos de gerenciamento de risco dinâmico para que a estratégia se adapte melhor a diferentes ambientes de mercado. Finalmente, a estratégia fornece uma boa estrutura básica, a qual os comerciantes podem personalizar e otimizar de acordo com suas próprias necessidades e características de mercado.
/*backtest
start: 2024-04-02 00:00:00
end: 2025-04-01 00:00:00
period: 3d
basePeriod: 3d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SuperTrend STRATEGY w/ TP & SL", overlay=true)
// === Girdiler ===
atrPeriod = input.int(10, title="ATR Period")
mult = input.float(3.0, title="ATR Multiplier")
src = input.source(hl2, title="Kaynak")
tpPerc = input.float(2.5, title="Take Profit (%)")
slPerc = input.float(1.0, title="Stop Loss (%)")
entryOffsetPerc = input.float(0.2, title="Giriş Noktası Yüzdesel Geriden (%)")
// === ATR ve SuperTrend Hesabı ===
atr = ta.atr(atrPeriod)
upperBand = src - mult * atr
lowerBand = src + mult * atr
prevUpper = nz(upperBand[1], upperBand)
prevLower = nz(lowerBand[1], lowerBand)
upperBand := close[1] > prevUpper ? math.max(upperBand, prevUpper) : upperBand
lowerBand := close[1] < prevLower ? math.min(lowerBand, prevLower) : lowerBand
var trend = 1
trend := close > prevLower ? 1 : close < prevUpper ? -1 : nz(trend[1], 1)
buySignal = trend == 1 and trend[1] == -1
sellSignal = trend == -1 and trend[1] == 1
// === Giriş Noktası Takibi ===
var float lastBuyPrice = na
var float lastSellPrice = na
var int lastBuyBarIndex = na
var int lastSellBarIndex = na
var bool buyEntryPlotted = false
var bool sellEntryPlotted = false
if buySignal
lastBuyPrice := close * (1 - entryOffsetPerc / 100)
lastBuyBarIndex := bar_index
buyEntryPlotted := false
if sellSignal
lastSellPrice := close * (1 + entryOffsetPerc / 100)
lastSellBarIndex := bar_index
sellEntryPlotted := false
// === TP ve SL Hesapları ===
long_tp = lastBuyPrice * (1 + tpPerc / 100)
long_sl = lastBuyPrice * (1 - slPerc / 100)
short_tp = lastSellPrice * (1 - tpPerc / 100)
short_sl = lastSellPrice * (1 + slPerc / 100)
// === TP / SL Temasları (yalnızca işlemden sonra ilk gelen hedef) ===
hitLongTP = false
hitLongSL = false
hitShortTP = false
hitShortSL = false
// === Giriş Etiketleri ===
var label buyLabel = na
var label sellLabel = na
if not na(lastBuyPrice) and not buyEntryPlotted and close <= lastBuyPrice and bar_index > lastBuyBarIndex
buyLabel := label.new(x=bar_index, y=low, text="Giriş", style=label.style_label_up, color=color.fuchsia, textcolor=color.white)
buyEntryPlotted := true
lastBuyBarIndex := bar_index
if not na(lastSellPrice) and not sellEntryPlotted and close >= lastSellPrice and bar_index > lastSellBarIndex
sellLabel := label.new(x=bar_index, y=high, text="Giriş", style=label.style_label_down, color=color.fuchsia, textcolor=color.white)
sellEntryPlotted := true
lastSellBarIndex := bar_index
if not na(lastBuyPrice) and buyEntryPlotted and bar_index > lastBuyBarIndex
if high >= long_tp
hitLongTP := true
lastBuyPrice := na
else if low <= long_sl
hitLongSL := true
lastBuyPrice := na
if not na(lastSellPrice) and sellEntryPlotted and bar_index > lastSellBarIndex
if low <= short_tp
hitShortTP := true
lastSellPrice := na
else if high >= short_sl
hitShortSL := true
lastSellPrice := na
// === Strateji Girişleri ===
if buySignal
strategy.entry("BUY", strategy.long)
if sellSignal
strategy.entry("SELL", strategy.short)
// === SuperTrend Plot ===
upPlot = plot(trend == 1 ? upperBand : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
dnPlot = plot(trend == -1 ? lowerBand : na, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
// === TP & SL Plot ===
plotshape(hitLongTP, location=location.abovebar, style=shape.labeldown, color=color.green, text="TP", textcolor=color.white, title="TP Long")
plotshape(hitLongSL, location=location.abovebar, style=shape.labeldown, color=color.red, text="Stop", textcolor=color.white, title="SL Long")
plotshape(hitShortTP, location=location.belowbar, style=shape.labelup, color=color.green, text="TP", textcolor=color.white, title="TP Short")
plotshape(hitShortSL, location=location.belowbar, style=shape.labelup, color=color.red, text="Stop", textcolor=color.white, title="SL Short")