
A estratégia de negociação diária de brecha de valor justo dinâmico é um sistema de negociação quantitativa baseado na teoria da estrutura de mercado, que se concentra na identificação e negociação de brechas de valor justo no preço (Fair Value Gap, abreviado FVG). A estratégia usa três formas de linha para detectar desequilíbrios de oferta e demanda no comportamento dos preços e, ao fazer a entrada de negociação nessas áreas, quando o preço retorna. A estratégia usa uma relação de risco e retorno fixa para gerenciar o risco e estabelece um mecanismo de liquidação forçada em um horário específico do dia para evitar riscos durante a noite.
O princípio central de uma estratégia de negociação de brechas de justo valor baseia-se em “áreas não transacionadas” ou “brechas” deixadas por preços que se movem rapidamente. Essas áreas representam graves desequilíbrios de oferta e demanda, geralmente “preenchidos” ou “retestados” no futuro.
Mecanismo de detecção de fugasA estratégia usa o modelo de três fios para identificar dois tipos de FVG:
Logística de entrada de retornoA estratégia não é entrar imediatamente na formação do FVG, mas esperar que o preço volte a estas áreas:
Gestão de Riscos:
Paridade no fim do diaEstratégia: Automaticamente liquidar todas as suas posições e limpar todos os arquivos de FVG para o próximo dia de negociação às 15:15 (horário padrão da Índia) todos os dias.
Transações de sobreposiçãoA estratégia permite um máximo de 5 operações de sobreposição, o que significa que você pode manter várias posições na mesma direção, aumentando assim os ganhos em mercados de forte tendência.
O método utiliza a teoria da discontinuidade na estrutura do mercado e do comportamento dos preços para tentar capturar o comportamento previsível dos preços ao preencher essas áreas de desequilíbrio.
A estratégia, após uma análise mais profunda do código, mostra várias vantagens:
Critérios de negociação objetivosA estratégia utiliza condições matemáticas claramente definidas para identificar os FVG e os pontos de entrada, eliminando o julgamento subjetivo e aumentando a disciplina e a consistência das transações.
Transações baseadas na estrutura do mercadoA estratégia de focar em áreas de mercado onde a oferta e a demanda estão realmente desequilibradas, ao invés de depender de sinais de indicadores tradicionais, que tendem a ficar para trás do comportamento dos preços.
Mecanismos de controlo de riscos:
Potencial de receita compostaA estratégia pode aumentar significativamente a receita em mercados de forte tendência, ao mesmo tempo em que controla o risco de cada posição por meio de stop loss.
AdaptabilidadeA estratégia não depende de níveis de preços fixos, mas sim de identificação dinâmica de áreas-chave nas condições atuais do mercado, tornando-as adaptáveis a diferentes ambientes e instrumentos de mercado.
Eficiência de programaçãoO código usa uma matriz para armazenar a informação do FVG e gerenciar eficazmente várias oportunidades de negociação em potencial, garantindo que o sistema possa rastrear e responder a vários níveis de preços.
Ajuda visualEstratégia: mostra intuitivamente a região do FVG no gráfico (verde para o FVG otimista, vermelho para o FVG pessimista), para ajudar os comerciantes a entender o processo de decisão do sistema.
Apesar de ter uma base teórica sólida e vários benefícios, há alguns fatores de risco a serem considerados:
Risco de Falso BreakoutNo mercado de liquidação, o preço pode tocar várias vezes na fronteira FVG sem formar uma tendência contínua, resultando em várias paradas de perda. A solução pode incluir o acréscimo de filtros de mercado ou indicadores de confirmação de tendência.
Risco de sobreposição de transações: Permitir até 5 posições simultâneas pode levar a uma exposição excessiva na direção errada, especialmente quando a tendência se inverte de repente. Recomenda-se a implementação de restrições de risco globais, como que o risco máximo de todas as posições não exceda uma porcentagem específica da conta.
Limites da taxa de retorno do risco fixoO uso de uma relação de risco-retorno de 1:2 fixa pode não ser adequado para todas as condições de mercado. Em mercados de baixa volatilidade, tal objetivo pode ser difícil de alcançar; em mercados de alta volatilidade, pode-se sair prematuramente de negociações lucrativas. Considere a meta de lucro ajustada com base na volatilidade do mercado.
Falta de filtragem do mercadoA estratégia gera sinais em todas as condições de mercado, sem considerar a tendência geral ou oscilação. Em um ambiente de forte tendência, a resistência de negociação pode levar a perdas contínuas. A adição de filtros de tendência pode melhorar significativamente a performance.
Falta de confirmação de volumeA estratégia baseia-se apenas no comportamento do preço, sem considerar a confirmação do volume de transação, o que pode levar a falsos sinais em áreas de baixo volume de transação. A integração da análise do volume de transação pode melhorar a qualidade do sinal.
Problemas potenciais com o desligamento por tempo fixo: O cancelamento em um determinado horário do dia pode levar a um cancelamento prematuro em uma posição vantajosa ou a perder melhores oportunidades de cancelamento em uma posição desfavorável. Considere as condições de cancelamento combinadas com ações de preço.
Dependendo da hipótese de retrocesso históricoA estratégia assume que o comportamento de futuros FVGs será semelhante aos padrões observados no passado. A dinâmica do mercado pode mudar e enfraquecer a eficácia desses padrões. É muito importante otimizar periodicamente os parâmetros e verificar as hipóteses.
Com base em uma análise aprofundada do código, aqui estão algumas possíveis direções de otimização:
Filtragem da estrutura de mercado:
Ajuste de volatilidade:
Confirmação de transação:
Adaptação do tamanho da posição:
Análise de Multi-Framas de Tempo:
Transações de sobreposição inteligente:
Aprendizagem de máquina:
Estrutura de avaliação estatística:
A estratégia de negociação intradiária de brecha de valor justo dinâmico oferece uma maneira sistematizada de identificar e negociar áreas de desequilíbrio de oferta e demanda no mercado. Utilizando o modelo FVG de três eixos e regras de entrada de retracção claras, a estratégia possui solidez teórica e operacionalidade prática.
A principal vantagem da estratégia reside na sua objetividade e na sua abordagem baseada na estrutura do mercado, permitindo-lhe manter a relevância em diferentes cenários de mercado. No entanto, a eficácia da estratégia pode ser significativamente aumentada pela implementação de orientações de otimização das recomendações, especialmente com a adição de filtros de cenários de mercado, ajustes baseados na volatilidade e confirmação de volume de transações.
É importante notar que nenhuma estratégia de negociação, por mais perfeita que seja, garante o sucesso. A negociação bem-sucedida requer não apenas uma estratégia sólida, mas também rigorosa disciplina de execução, gestão adequada de fundos e uma compreensão profunda do mercado.
/*backtest
start: 2024-03-26 00:00:00
end: 2025-03-25 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Intraday FVG", overlay=true, pyramiding=5, max_bars_back=500, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent)
// 2. FVG Detection (Three-Candle Pattern)
var bullFVGHigh = array.new_float()
var bullFVGLow = array.new_float()
var bullFVGIndex = array.new_int()
var bearFVGHigh = array.new_float()
var bearFVGLow = array.new_float()
var bearFVGIndex = array.new_int()
detectFVG() =>
// Bullish FVG: Current low > prior high AND next high < current low
bullCondition = low > high[2] and close[1] > high[2]
// Bearish FVG: Current high < prior low AND next low > current high
bearCondition = high < low[2] and close[1] < low[2]
if bullCondition
// log.info("bull condition met: {0} {0} {0}", high[2], close[1], low)
array.push(bullFVGHigh, low)
array.push(bullFVGLow, low[2])
array.push(bullFVGIndex, bar_index)
if bearCondition
// log.info("bear condition met: {0} {0} {0}", low[2], close[1], high)
array.push(bearFVGHigh, high[2])
array.push(bearFVGLow, high)
array.push(bearFVGIndex, bar_index)
detectFVG()
// 3. Retest Execution Logic
checkRetests(arrayHigh, arrayLow, barIndex, direction) =>
// log.info("{0} : {1}", bar_index, time)
i = array.size(arrayHigh) - 1
while i >= 0
// log.info("barIndex : {0}" , array.get(barIndex, i))
// log.info("bar_index : {0}" , bar_index)
if array.get(barIndex, i) < bar_index
fvgHigh = array.get(arrayHigh, i)
fvgLow = array.get(arrayLow, i)
// log.info("visting : {0} : {1} : {2} : {3} ", array.get(barIndex, i), bar_index, fvgHigh, fvgLow)
if direction == "long" and low <= fvgHigh
// log.info("entering long")
sl = array.get(arrayLow, i) // Previous candle's low
entry = close
tp = entry + (entry - sl)*2
strategy.entry("L"+str.tostring(array.get(barIndex, i)), strategy.long)
strategy.exit("XL"+str.tostring(array.get(barIndex, i)), "L"+str.tostring(array.get(barIndex, i)), stop=sl, limit=tp)
array.remove(arrayHigh, i)
array.remove(arrayLow, i)
array.remove(barIndex, i)
if direction == "short" and high >= fvgLow
// log.info("entering short")
sl = array.get(arrayHigh, i) // Previous candle's low
entry = close
tp = entry - (sl - entry)*2
strategy.entry("S"+str.tostring(array.get(barIndex, i)), strategy.short)
strategy.exit("XS"+str.tostring(array.get(barIndex, i)), "S"+str.tostring(array.get(barIndex, i)), stop=sl, limit=tp)
array.remove(arrayHigh, i)
array.remove(arrayLow, i)
array.remove(barIndex, i)
i := i - 1
checkRetests(bullFVGHigh, bullFVGLow, bullFVGIndex, "long")
checkRetests(bearFVGHigh, bearFVGLow, bearFVGIndex,"short")
// 5. Daily Exit at 3:15 PM IST
exitTime = hour == 15 and minute >= 15
if exitTime
strategy.close_all()
array.clear(bullFVGHigh)
array.clear(bullFVGLow)
array.clear(bearFVGHigh)
array.clear(bearFVGLow)
array.clear(bullFVGIndex)
array.clear(bearFVGIndex)