
A estratégia de negociação quantitativa de breakout de uma faixa estreita de médias móveis binárias inclinadas é um sistema de negociação avançado baseado nos princípios de Oliver Velez, que combina elementos centrais da análise técnica e da dinâmica de negociação. A estratégia utiliza principalmente a relação entre as médias móveis simples (SMAs) de curto prazo (de 20 ciclos) e de longo prazo (de 200 ciclos), combinando a dinâmica dos preços, a volatilidade e a forma de queda, procurando oportunidades de negociação de breakout de alta probabilidade em áreas de faixa estreita.
A estratégia baseia-se na sinergia de vários fatores-chave:
Sistema de média móvel duplaA estratégia utiliza o SMA de 20 e o SMA de 200 ciclos para criar uma estrutura de negociação. O sistema procura sinais de negociação potenciais quando as duas linhas médias estão relativamente distantes (estado de banda estreita, diferença menor que 1,5%).
Verificação de inclinação da linha médiaA estratégia é: garantir que o mercado tenha a dinâmica necessária, calculando o ângulo do SMA de 20 ciclos, usando a função inversa, e apenas considerar a entrada quando o ângulo for maior que 30 graus.
Tipo de sinal de entrada:
Quadro de gestão de riscos:
Avaliar o estado do mercadoA estratégia para julgar o estado do mercado é calcular a distância relativa entre as duas linhas médias:
Requisitos de entrada múltiplos: estado de faixa estreita + inclinação efetiva + preço de fechamento acima do SMA20 + SMA20 acima do SMA200 + forma de pilar elefante. Requisitos de admissão a céu aberto: estado de faixa estreita + inclinação efetiva + preço de fechamento abaixo do SMA20 + SMA20 abaixo do SMA200 + forma de pilar elefante.
A estratégia tem as seguintes vantagens significativas, através de uma análise profunda do código:
Mecanismo de confirmação múltiplaA estratégia combina os fatores de confirmação de várias dimensões, como relação de equilíbrio, inclinação de equilíbrio, posição de preços e formas especiais de queda, filtrando efetivamente os sinais de baixa qualidade e melhorando a qualidade das transações.
Adaptação ao mercadoA estratégia é capaz de encontrar oportunidades nas condições de mercado mais adequadas, evitando a busca de altos e baixos em uma tendência que já se expandiu, ao distinguir os estados de banda estreita e banda larga.
Gestão de Riscos DinâmicosUtilização do ATR como uma ferramenta de medição da volatilidade, garantindo que os objetivos de stop loss e profit sejam ajustados de acordo com a dinâmica atual da volatilidade do mercado, em vez de usar um número fixo de pontos.
Estratégia de classificaçãoA estratégia de duas fases, de lucro parcial e de lucro final, garante o bloqueio de uma parte do lucro em condições favoráveis, sem perder a tendência prematuramente.
Mecanismos inteligentes de adição de posição: Oferece oportunidades de aumento de posição através de sinais de mudança de cor, permitindo o aumento de duas posições no máximo na mesma tendência, otimizando a eficiência do uso do capital.
Proteção contra danos móveisQuando o preço atinge o primeiro objetivo de lucro, o stop loss é automaticamente transferido para o ponto de equilíbrio de ganho e perda, permitindo uma negociação de “zero risco” e protegendo os lucros obtidos.
Ajuda visualA estratégia fornece instruções visuais claras e um painel de instrumentos para ajudar os comerciantes a identificar de forma intuitiva os sinais e o estado do mercado, simplificando o processo de decisão.
Indicadores de comportamento de preços e de tecnologia integradosA ideia é criar um sistema de negociação mais robusto, combinando a filosofia de comportamento de preços de Oliver Velez com indicadores tecnológicos tradicionais.
Apesar do bom desenho da estratégia, existem os seguintes riscos e desafios potenciais:
Sensibilidade do parâmetroO desempenho da estratégia depende muito da configuração de parâmetros-chave, como o ciclo SMA, o comprimento do ATR e a taxa de retorno do risco. Diferentes mercados e prazos de tempo podem exigir diferentes combinações de parâmetros, necessitando de um bom histórico de rastreamento e otimização.
Risco de Falso BreakoutBreakouts em áreas de bandas estreitas podem ser falsos breakouts, especialmente em ambientes de mercado de baixa volatilidade. Embora a estratégia de usar a “coluna do elefante” seja necessária para reduzir os falsos breakouts, eles não podem ser totalmente evitados.
Ponto de deslizamento e risco de execução: Em negociações em ativos, especialmente quando há muita volatilidade, pode haver problemas de deslizamento, o que pode levar a que o preço de entrada real não coincida com o preço ideal, afetando a estrutura geral de risco-retorno.
Desafios de gestão de fundosA utilização de fundos fixos de 10% e a permissão de duas adições de risco podem conduzir a riscos excessivos em caso de perdas consecutivas ou de fortes flutuações no mercado.
Excessiva dependência da linha médiaA estratégia baseia-se principalmente na direção da tendência de avaliação dos SMA, mas em mercados com oscilações intercalares, as linhas médias podem se cruzar com frequência, gerando muitos sinais falsos.
Falta de filtragem do mercadoA estratégia não foi adaptada para diferentes cenários de mercado (como alta ou baixa volatilidade, mercado de alta ou baixa volatilidade, mercado de alta ou baixa volatilidade, mercado de baixa ou alta volatilidade, mercado de alta ou baixa volatilidade, mercado de alta ou baixa volatilidade, mercado de baixa ou baixa volatilidade, mercado de alta ou baixa volatilidade, mercado de alta ou baixa volatilidade, mercado de baixa ou baixa volatilidade, etc.) e pode ter um desempenho ruim em certas fases do mercado.
Retirada da curva de financiamentoComo as estratégias permitem o aumento de posições, uma reversão súbita da tendência pode levar a um retiro maior de contas, especialmente quando o mercado se reverte após dois aumentos de posições.
As soluções incluem: adição de filtros de ambiente de mercado adicionais, ajuste da proporção de gestão de fundos, ajuste dinâmico dos parâmetros de acordo com as diferentes condições de mercado e consideração de adição de outros indicadores técnicos para confirmar os sinais.
Com base na análise do código, a estratégia pode ser otimizada nas seguintes direções:
Limite de banda estreita dinâmicaA estratégia atual usa um limite de 1,5% e 2% como um limite de avaliação de banda estreita e banda larga. Pode-se considerar o ajuste desses limites de acordo com a dinâmica da taxa de flutuação histórica, para que a estratégia se adapte melhor a diferentes condições de mercado.
Reforço do sistema de linha médiaPode-se considerar a adição de uma média intermédia (como o SMA de 50 ciclos) para formar um sistema de três médias, ou tentar substituir a SMA por uma média móvel indexada (EMA), aumentando a sensibilidade às mudanças de preço. Motivo de otimização: A adição de um ponto de referência intermédio pode fornecer uma visão mais abrangente do mercado, enquanto a EMA é mais sensível à reação às mudanças de preços mais recentes.
Melhorias no cálculo da inclinaçãoO cálculo da inclinação atual é relativamente simples e pode ser considerado o uso de inclinação de regressão linear ou variações de inclinação de períodos múltiplos para obter indicações de direção mais estáveis. Razões para a otimização: a computação da inclinação de um ponto é suscetível a flutuações de curto prazo e, com melhorias, pode aumentar a estabilidade do julgamento de direção.
Adição de confirmação de volumeAumentar a condição de volume de transação no sinal de entrada, como exigir que a “coluna do elefante” seja acompanhada de uma ruptura acima do volume de transação médio. Motivo da otimização: O volume de transação é um importante fator de confirmação da eficácia da mudança de preço e pode reduzir significativamente a falsa ruptura.
Dinâmica de risco-retorno: De acordo com a volatilidade do mercado ou ATR percentual de ajuste dinâmico de risco-retorno, em mercados de baixa volatilidade usar um RR mais elevado, em mercados de alta volatilidade usar uma configuração mais conservadora. Razão de otimização: O potencial de lucro é diferente em diferentes ambientes de volatilidade, o ajuste dinâmico pode otimizar o retorno esperado de cada transação.
Optimizar as condições de aquisiçãoAs condições atuais de alavancagem são mais flexíveis, e pode-se considerar a adição de confirmação de força de tendência ou alavancagem somente quando o preço retorna ao ponto de suporte / resistência crítico. Motivo de otimização: Condições de alavancagem mais rigorosas podem aumentar a taxa de sucesso de posições adicionais e reduzir o risco geral.
Filtragem do cenário de mercado: Adicionar filtros ambientais de mercado macroeconômicos, como indicadores de volatilidade (como o VIX) ou indicadores de intensidade de tendência, para reduzir ou suspender a negociação em um ambiente de mercado desfavorável. Motivo da otimização: O desempenho da estratégia em diferentes fases de mercado é muito variável e os filtros ambientais evitam a negociação em condições desfavoráveis.
Estratégias de stop loss adaptativasDesenvolver estratégias de stop-loss adaptativas baseadas na estrutura do mercado, como o uso de altos e baixos antecipados, porcentagens de volatilidade ou estrutura de preços como pontos de referência de stop-loss dinâmicos. Razões para a otimização: o stop-loss de múltiplos ATR fixos às vezes não se encaixa bem com a estrutura do mercado, e o método adaptativo pode ser mais adequado ao comportamento real dos preços.
A estratégia de negociação de quantificação de banda estreita de banda estreita de média móvel está em declínio. É um sistema de negociação integrado que combina vários elementos de análise técnica, oferecendo aos comerciantes uma forma estruturada de participação no mercado por meio de condições de entrada bem definidas, mecanismos de confirmação em vários níveis e uma estrutura de gerenciamento de risco perfeita. A estratégia é baseada em conceitos básicos de análise técnica, como SMA, ATR e comportamento de preços, mas integra esses elementos em um sistema de negociação com clareza de regras através da metodologia de Oliver Velez.
A principal vantagem da estratégia reside na sua capacidade de identificar oportunidades de ruptura de alta probabilidade em áreas de estreitas bandas de médias móveis e confirmar a eficácia dos sinais através de padrões de preços específicos, como “colunas de elefantes” e “cambios de cor”. Ao mesmo tempo, uma estrutura de gestão de risco perfeita garante segurança de fundos e proteção de lucros.
No entanto, a estratégia também enfrenta problemas de sensibilidade de parâmetros, risco de falso rompimento e desafios de gerenciamento de fundos. A solidez e a adaptabilidade da estratégia podem ser aumentadas com a otimização do limiar de banda estreita, o reforço do sistema de linha média, a melhoria do cálculo da inclinação, a adição de confirmação de volume de transação, a implementação de uma taxa de retorno de risco dinâmico, a otimização das condições de aumento de posição, a adição de filtragem do ambiente de mercado e o desenvolvimento de estratégias de suspensão de prejuízos adaptáveis.
Em geral, trata-se de uma estratégia de negociação quantitativa concebida de forma racional, lógica e clara, adequada a investidores com alguma experiência de negociação, especialmente aqueles que preferem a análise técnica e métodos de negociação sistematizados. Com a otimização de parâmetros e o gerenciamento de risco adequados, a estratégia tem o potencial de alcançar um desempenho de negociação estável em vários ambientes de mercado.
/*backtest
start: 2024-05-13 00:00:00
end: 2025-05-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Oliver Velez Advanced Strategy v2", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, pyramiding=2, calc_on_order_fills=true, calc_on_every_tick=true)
// === INPUTS ===
smaLen1 = input.int(20, title="SMA Short")
smaLen2 = input.int(200, title="SMA Long")
atrLen = input.int(14, title="ATR Length")
rr1 = input.float(2.5, title="RR for Partial Profit", step=0.1)
rr2 = input.float(4.0, title="RR for Final Profit", step=0.1)
// === INDICATORS ===
sma20 = ta.sma(close, smaLen1)
sma200 = ta.sma(close, smaLen2)
atr = ta.atr(atrLen)
angle = math.atan(sma20 - sma20[1]) * 180 / math.pi
// === STATES ===
isNarrow = math.abs(sma20 - sma200) / sma200 < 0.015
isWide = math.abs(sma20 - sma200) / sma200 >= 0.02
validSlope = angle > 30
// === CANDLE PATTERNS ===
elephant_long = close > open and (close - open) > 1.5 * atr and high > high[1]
elephant_short = close < open and (open - close) > 1.5 * atr and low < low[1]
color_change_long = close > open and close[1] < open[1]
color_change_short = close < open and close[1] > open[1]
// === LONG ENTRY ===
long_primary = isNarrow and validSlope and close > sma20 and sma20 > sma200 and elephant_long
long_add = isNarrow and color_change_long and close > sma20
long_entry_price = close
long_stop = math.min(low, close - 2 * atr)
long_risk = long_entry_price - long_stop
long_tp1 = long_entry_price + rr1 * long_risk
long_tp2 = long_entry_price + rr2 * long_risk
// === SHORT ENTRY ===
short_primary = isNarrow and validSlope and close < sma20 and sma20 < sma200 and elephant_short
short_add = isNarrow and color_change_short and close < sma20
short_entry_price = close
short_stop = math.max(high, close + 2 * atr)
short_risk = short_stop - short_entry_price
short_tp1 = short_entry_price - rr1 * short_risk
short_tp2 = short_entry_price - rr2 * short_risk
// === LONG EXECUTION ===
if (long_primary)
strategy.entry("Long Entry", strategy.long, comment="Elephant Bar Long")
strategy.exit("Long TP1", from_entry="Long Entry", limit=long_tp1, stop=long_stop)
strategy.exit("Long TP2", from_entry="Long Entry", qty_percent=50, limit=long_tp2)
if (long_add)
strategy.entry("Long Add", strategy.long, comment="Color Change Long")
strategy.exit("Add TP1", from_entry="Long Add", limit=long_tp1, stop=long_stop)
strategy.exit("Add TP2", from_entry="Long Add", qty_percent=50, limit=long_tp2)
// === SHORT EXECUTION ===
if (short_primary)
strategy.entry("Short Entry", strategy.short, comment="Elephant Bar Short")
strategy.exit("Short TP1", from_entry="Short Entry", limit=short_tp1, stop=short_stop)
strategy.exit("Short TP2", from_entry="Short Entry", qty_percent=50, limit=short_tp2)
if (short_add)
strategy.entry("Short Add", strategy.short, comment="Color Change Short")
strategy.exit("Short TP1 Add", from_entry="Short Add", limit=short_tp1, stop=short_stop)
strategy.exit("Short TP2 Add", from_entry="Short Add", qty_percent=50, limit=short_tp2)
// === BREAKEVEN CHECK ===
var float breakeven_price = na
long_breakeven_trigger = high >= long_tp1
short_breakeven_trigger = low <= short_tp1
breakeven_price := long_breakeven_trigger or short_breakeven_trigger ? close : breakeven_price
// === ALERTS ===
alertcondition(long_primary, title="Long Elephant", message="Elephant Bar Long Entry Triggered!")
alertcondition(long_add, title="Color Change Long", message="Color Change Long Entry Triggered!")
alertcondition(long_breakeven_trigger, title="Long Breakeven", message="Move SL to Breakeven for Long")
alertcondition(short_primary, title="Short Elephant", message="Elephant Bar Short Entry Triggered!")
alertcondition(short_add, title="Color Change Short", message="Color Change Short Entry Triggered!")
alertcondition(short_breakeven_trigger, title="Short Breakeven", message="Move SL to Breakeven for Short")
// === PLOTTING ===
plot(sma20, color=color.orange, title="SMA 20")
plot(sma200, color=color.blue, title="SMA 200")
bgcolor(isNarrow ? color.new(color.green, 85) : na)
plotshape(long_primary, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, text="E")
plotshape(long_add, style=shape.circle, location=location.belowbar, color=color.lime, size=size.tiny, text="A")
plotshape(short_primary, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, text="E")
plotshape(short_add, style=shape.circle, location=location.abovebar, color=color.maroon, size=size.tiny, text="A")
// === DASHBOARD ===
var label dash = na
label.delete(dash)
dash := label.new(x=bar_index, y=high, text=
"Oliver Velez Strategy\n" +
"SMA 20 Slope: " + str.tostring(angle, "#.##") + "°\n" +
"State: " + (isNarrow ? "NARROW" : "WIDE") + "\n" +
"Last Entry: " + (long_primary ? "Long E-Bar" : long_add ? "Long Add" : short_primary ? "Short E-Bar" : short_add ? "Short Add" : "None") + "\n" +
"Breakeven: " + (breakeven_price != na ? str.tostring(breakeven_price, "#.##") : "No"), style=label.style_label_left, color=color.new(color.black, 85), textcolor=color.white)