Automatização e filtragem na análise técnica — ferramentas, fluxo de trabalho e armadilhas
Um screener deve aplicar a mesma regra a toda a lista de instrumentos registrada. A pergunta essencial após uma pesquisa é, por isso: um resultado vazio significa ausência de configuração ou ausência de dados? Este capítulo leva você da definição de uma configuração até pseudocódigo completo, registro de alertas e teste fora da amostra utilizada para selecionar parâmetros. Separamos a identificação de um candidato do envio de uma ordem. A automatização pode poupar trabalho, mas também repetir um erro rápida e consistentemente.

- Um screener seleciona candidatos. O seu valor pode estar numa revisão mais curta mantendo a cobertura da lista. Para avaliar o efeito nos resultados financeiros, precisa também de uma regra fixada de entrada, saída e custos.
- Um alerta tem um escopo definido. Não substitui a pesquisa de condições fora desse escopo. A redução do tempo de tela é mensurável; não pressupomos melhoria automática da disciplina ou dos resultados.
- Um backtest é um modelo. Um testador pode incorporar spreads históricos, comissões e slippage admitido. Não consegue reproduzir todos os preços disponíveis nem a resposta futura da corretora, incluindo uma recotação. O ajuste de um modelo ao histórico não prova uma vantagem futura.
- Os níveis de automatização são uma convenção descritiva. Um alerta, um filtro e um sistema que executa ordens têm responsabilidades diferentes. A execução completa exige também tratamento de erros, duplicados e estado da conta; um sinal, por si só, é insuficiente.
1. Por que automatizar — e o que automatiza exatamente
As oito moedas USD, EUR, GBP, JPY, CHF, AUD, NZD e CAD formam 8 × 7 / 2 = 28 pares não ordenados. É um universo selecionado, não todo o mercado Forex nem uma medição dos instrumentos «mais acompanhados». Uma corretora pode oferecer outra lista. Registre símbolos, sentido da cotação e versão da lista antes de pesquisar. Avaliamos filtros de médias móveis, osciladores e zonas S/R com o mesmo contrato de dados.
Um filtro aplica uma condição registrada a uma lista. O resultado reúne candidatos e um relatório de cobertura. Uma decisão manual ou automática posterior pode rejeitar um candidato; mantenha esse resultado separado.
Um screener faz uma revisão repetível sem escolher gráficos favoritos, mas apenas dentro da sua configuração. Uma lista de 28 pares nos ajustes não prova que todos receberam dados atuais. O relatório tem também de conter um registro para o par sem sinal e para o par que não pôde ser avaliado.
RSI abaixo de 30 é o resultado de uma condição, e não uma instrução de compra. Se price action ou análise contextual adicional determina a entrada, registre também as rejeições. Caso contrário, o teste do screener abrangerá apenas operações convenientemente selecionadas.
2. Espectro da automatização: do alerta ao algoritmo
Os cinco níveis abaixo organizam o escopo das funções. São uma convenção do curso, e não uma classificação do percurso ótimo para a maioria dos negociadores. Um nível superior exige controles adicionais, mas não é necessariamente melhor para uma tarefa específica.
| Nível | O que faz a máquina | O que faz o negociador | Exemplos |
|---|---|---|---|
| 1. Alerta de preço | Notifica quando o preço atinge um nível | Analisa, decide, executa | Alerta em EUR/USD = 1,0700 |
| 2. Alerta de indicador | Notifica quando um indicador satisfaz uma condição | Analisa o contexto, decide | RSI(14) < 30 em D1 |
| 3. Screener | Filtra a lista de instrumentos por critérios | Revê resultados, analisa, decide | TradingView Screener |
| 4. Sistema semiautomático | Gera sinal + parâmetros sugeridos | Aprova ou rejeita, gere a posição | Indicador personalizado + alerta Pine Script |
| 5. Automatização completa | Analisa, abre, gere, fecha | Monitora, intervém em emergências | Expert Advisor (EA) em MT4/MT5 |
Um filtro ou alerta pronto nem sempre exige programação. Continua a exigir configuração, fonte de dados e teste operacional. A execução semiautomática e automática introduz outro problema: uma condição corretamente identificada pode receber execução diferente ou nenhuma execução.
Este artigo concentra-se nos níveis 1 a 4. A automatização completa (EA) surge sobretudo no contexto das armadilhas — porque é aí que se chega quando se recorre a um robô demasiado cedo.
3. Critérios de filtragem na prática
Comece pela observação que deseja encontrar e depois transforme-a em condições. Um filtro seletivo só é útil se encontra os casos pretendidos e informa o que não conseguiu avaliar. A quantidade de resultados, por si só, não revela sua qualidade.
Lista para tornar uma regra objetiva
Antes de qualquer condição chegar ao scanner, precisa passar da linguagem da intuição para a da máquina. Todos os elementos abaixo que não definir explicitamente serão definidos pelo scanner — geralmente de forma diferente da que presume:
| Elemento | Pergunta de controle |
|---|---|
| Universo | Que instrumentos pesquiso (uma lista fechada, não «tudo»)? |
| Fonte de dados | De quem é o feed e que preços utiliza (Bid, Ask, mid)? O mesmo em que negoceio? |
| Período gráfico e momento de avaliação | Que velas — apenas fechadas? Quando se calcula exatamente a condição? |
| Indicador e implementação | Que parâmetros e de quem é a implementação (RSI de Wilder ≠ RSI numa SMA)? |
| Operador e limiar | Um cruzamento do limiar ou um estado abaixo/acima dele? Com que tolerância? |
| Frequência da pesquisa | Uma vez por vela fechada, uma vez por dia a hora fixa ou continuamente? |
| Dados em falta | O que faz a regra com uma vela em falta, um gap, uma mudança de símbolo? |
| Eliminação de duplicados | Quantos alertas se a condição se mantém durante seis velas seguidas — seis ou um? |
| Condição de reposição | O que invalida o sinal e permite que a regra dispare novamente? |
Três medidas separadas. Duração da pesquisa e cobertura dos dados medem comodidade e confiabilidade. Concordância com um padrão de referência identificado independentemente mede a detecção da condição. Resultados financeiros exigem toda a estratégia, incluindo candidatos rejeitados, preços de resposta e custos. Atingir TP não é, por si só, a definição de resultado «correto» do screener, e ausência de melhoria da taxa de acerto não nega a poupança de tempo. Compare com a variante não filtrada na mesma amostra reservada previamente.
Filtros de tendência
- Preço em relação a EMA/SMA. Preço acima de uma EMA 200 ascendente em D1 pode definir um filtro direcional. Rejeita candidatos que não cumpram esta condição, e não todas as operações «contra a tendência» segundo qualquer definição de mercado. Preço igual à média ou inclinação plana exige decisão explícita.
- Cruzamento de médias móveis. A condição EMA 50 anteriormente ≤ EMA 200 e agora > EMA 200 detecta uma transição. Não é uma taxa de câmbio cruzada nem prova de alteração da direção futura do preço. Os dois valores têm de vir de velas completas da mesma série.
- ADX acima de um limiar. Exemplos de limiares de convenção estabelecida: ADX(14) > 25 é tratado como mercado em tendência, < 20 como consolidação — lembrando que o ADX mede a força do movimento, não a direção. Útil sobretudo como filtro negativo: abaixo do limiar, uma regra de tendência rejeita o instrumento segundo o parâmetro escolhido.
Filtros de momentum e osciladores
- RSI em zonas extremas. Exemplos de limiares para o RSI(14) são 30 e 70. A frequência depende do instrumento, período gráfico, período e método de inicialização. Sobrevenda não é sinal de compra autônomo, nem sobrecompra sinal de venda. Sem pesquisa, não atribuímos maior valor informativo aos extremos D1 do que aos H1.
- Divergência. É preciso definir swings, emparelhamento dos extremos de preço e oscilador e momento de confirmação. Com essas definições, até um padrão complexo pode ser calculado. Uma avaliação manual de divergência «em várias ondas» sem regras deixa seleção discricionária difícil de reproduzir justamente num teste.
- Histograma MACD — mudança de sinal. O histograma cruza zero de baixo para cima — nesta implementação, significa mudança da relação entre a linha MACD e a linha de sinal, e não prova de mudança da direção do preço. Fácil de programar, frequentemente utilizado como filtro preliminar para análise posterior.
Filtros de preço e estrutura
- Proximidade de S/R. Defina zona e tolerância na mesma unidade do preço. Um alerta em uma zona marcada manualmente pode simplificar a revisão, mas a eficácia precisa ser testada; não decorre da facilidade de configuração.
- Rutura da amplitude de N velas. Por exemplo, fechamento de uma vela concluída > máximo mais alto das 20 velas completas anteriores. A vela testada é excluída da janela do máximo; igualdade não é rompimento na variante estrita. É uma convenção Donchian, e não uma promessa automática de lucro.
- Fibonacci. Defina extremos de swing confirmados e tolerância em torno de uma retração. A confirmação atrasada é descrita no artigo 5.11. Calcular um nível não prova que o preço reagirá nele.
Analise um candle antes de ler o contrato completo
Use o suporte S=1.1000 e o ATR fixado A=0.0040. A zona é [1.0992;1.1008]; a invalidação exige C < 1.0980; a reativação exige C ≥ 1.1040 e L > 1.1008. Considere satisfeitas as condições de EMA indicadas sempre que um sinal for testado.
- Dados ausentes ou inválidos: registre esse estado e suspenda novos alertas.
- Um fechamento abaixo do limite de invalidação encerra esse contexto.
- Se estiver desarmado, teste o rearmamento para o próximo candle. Não emita alerta neste candle.
- Se estiver armado, uma interseção da amplitude com a zona e C > S podem gerar um candidato se o filtro de EMA for satisfeito.
A sequência abaixo fornece os números. São entradas de modelo, não uma reconstrução do histórico de mercado. O contrato posterior acrescenta controles que preservam esse significado quando dados ou solicitações se repetem.
Reproduza o estado do alerta sem ver o próximo candle
Mantenha S, A fixado, a ordem das ramificações e o contexto. As seis primeiras decisões usam a sequência publicada, incluindo a repetição da solicitação. A lacuna final é um caso separado. Escolha antes de revelar a verificação; as respostas ficam acessíveis sem escrever notas.
Etapa 1. Armado. L=1.1007,H=1.1015,C=1.1010.
A nota é opcional. Guarde uma cópia se o armazenamento do navegador não estiver disponível.
Verificar esta etapa e revelar a próxima
SIGNAL. A amplitude intersecta a zona, C > S e o filtro de EMA pressuposto é satisfeito. Desarme esse contexto.
Etapa 1 — repetição da solicitação. A mesma chave e o mesmo hash de entrada chegam novamente.
A nota é opcional. Guarde uma cópia se o armazenamento do navegador não estiver disponível.
Verificar esta etapa e revelar a próxima
Retorne o SIGNAL já registrado. Não o avalie com o estado agora desarmado nem envie outra notificação.
Etapa 2. Desarmado. L=1.1010,H=1.1042,C=1.1040.
A nota é opcional. Guarde uma cópia se o armazenamento do navegador não estiver disponível.
Verificar esta etapa e revelar a próxima
REARM para o próximo candle. C é igual ao limite permitido e L está acima de 1.1008. Nenhum alerta agora.
Etapa 3. Armado. L=1.1007,H=1.1025,C=1.1010; o filtro de EMA é satisfeito.
A nota é opcional. Guarde uma cópia se o armazenamento do navegador não estiver disponível.
Verificar esta etapa e revelar a próxima
SIGNAL para esta nova chave de candle; depois, desarme.
Etapa 4. Desarmado. L=1.0975,H=1.1014,C=1.0980.
A nota é opcional. Guarde uma cópia se o armazenamento do navegador não estiver disponível.
Verificar esta etapa e revelar a próxima
DISARMED. A igualdade não satisfaz C < 1.0980. A reativação também não é satisfeita.
Etapa 5. Desarmado. L=1.0974,H=1.0982,C=1.0979.
A nota é opcional. Guarde uma cópia se o armazenamento do navegador não estiver disponível.
Verificar esta etapa e revelar a próxima
INVALIDATED. Descarte o centro antigo; é necessário um novo fractal confirmado.
Etapa: lacuna independente. Um erro de dados impede a avaliação; não há um registro completo.
A nota é opcional. Guarde uma cópia se o armazenamento do navegador não estiver disponível.
Verificar esta etapa e revelar a próxima
NO_DATA. Não invente NO_SIGNAL nem deduza reativação ou invalidação dentro da lacuna. Suspenda os alertas até reconstruir o contexto.
Ler a sequência resolvida completa
O mesmo nível, estados sucessivos do alerta
Percorramos a regra sem alterar limiares após ver o resultado. O suporte S = 1,1000 vem de um fractal confirmado antes do primeiro dia testado. ATR A = 0,0040, ou 40 pips, fixado nesse momento, define a zona [1,0992; 1,1008], invalidação em C < 1,0980 e rearmamento em C ≥ 1,1040 e L > 1,1008. São parâmetros de modelo, e não valores recomendados para EUR/USD. O centro do fractal e A mantêm-se ao longo do exemplo.
| Passo | L / H / C | Estado anterior | Resultado |
|---|---|---|---|
| 1 | 1,1007 / 1,1015 / 1,1010 | Armado | A amplitude intersecta a zona, C > S: alerta e desarme |
| 1 — repetição | Mesma chave e hash de entrada do passo 1 | Registro SIGNAL existente | Devolver o resultado anterior; sem nova avaliação, alteração de estado ou notificação |
| 2 | 1,1010 / 1,1042 / 1,1040 | Desarmado | C iguala o limiar de rearmamento, L fica acima da zona: armar para o passo seguinte, sem alerta |
| 3 | 1,1007 / 1,1025 / 1,1010 | Armado | Novo teste: segundo alerta, outro fim de vela e chave |
| 4 | 1,0975 / 1,1014 / 1,0980 | Desarmado | A igualdade não invalida na regra estrita; sem rearmamento nem alerta |
| 5 | 1,0974 / 1,0982 / 1,0979 | Desarmado | C < 1,0980: contexto invalidado |
Nos passos 1 e 3, o filtro EMA declarado é satisfeito: o fechamento está acima da EMA e a EMA atual acima do seu valor de há 20 velas. A tabela não reconstrói 500 velas de aquecimento; estas duas condições são entradas de um modelo lógico, e não leituras de mercado documentadas. Repetir o passo 1 precisa devolver o mesmo SIGNAL; não pode ser recalculado com o estado agora desarmado e substituído por DISARMED. Numa revisão, reconstruímos separadamente o estado anterior a essa vela e os estados dependentes posteriores, conservando a execução original. O passo 2 não pode armar e emitir alerta ao mesmo tempo, porque o seu estado no início da avaliação era desarmado. A ordem dos ramos faz parte da definição, não é um detalhe técnico.
Após o passo 5, o fractal antigo continua arquivado como invalidado. A pesquisa do dia seguinte não pode renomeá-lo «suporte mais recente» e criar novo alerta a partir do mesmo centro. É preciso um novo fractal confirmado. A expiração após 60 velas é um estado separado: ocorre mesmo sem cruzar o nível de invalidação. Se faltam dados entre passos, não sabemos se houve rearmamento ou invalidação na lacuna; relate a interrupção e suspenda novos alertas até reconstruir o contexto.
Uma revisão de High/Low pode alterar a qualificação do fractal. Conserve a cópia original, o resultado então disponível e a correção posterior associada. Avaliar «como funcionou a regra nos dados finais» e «o que poderia efetivamente ter enviado nesse momento» são duas experiências diferentes. Pode executar ambas, mas não misturar registros. O CSV de estados anexo fornece material para verificar uma implementação sem colocar ordens.
Da intuição à condição — a regra completa e o que se perde na tradução
Intuição: «comprar reações no suporte em uma tendência de alta em D1». A mesma ideia escrita para um scanner a poder executar:
A versão completa tem quatro tarefas: obter um retrato dos dados com versão; fixar o contexto; avaliar o candle a partir do estado original; registrar o resultado e entregar uma notificação sem duplicação. Leia as ramificações em ordem. Uma repetição da solicitação não é um novo candle, e uma correção não é um alerta original.
Ler o contrato completo de dados, estados e entrega
PSEUDOCÓDIGO: CANDIDATO A «TESTE DO SUPORTE», NÃO UMA ORDEM
Configuração fixada: versão, 28 pares, feed BID, D1, calendário,
EMA: α=2/201, inicializada com a SMA dos primeiros 200 C; ATR(14) de Wilder:
inicialização = média dos primeiros 14 TR com C anterior, depois α=1/14;
aquecimento de pelo menos 500 velas completas é uma escolha do modelo, não garantia de convergência.
Estado do símbolo: nível S, ATR A, intervalo de identificação, armado/desarmado.
No início de t, registre uma cópia imutável do contexto com dados conhecidos antes de start_t:
registra entradas para t sem alterar o estado armado de trabalho; uma repetição usa esta cópia.
O estado anterior a t e o arquivo de centros vêm da última vela processada anteriormente.
selecione o último fractal inferior estrito com 2 velas de cada lado,
confirmado e recebido antes de start_t, com idade não superior a 60 velas;
mínimos iguais não formam fractal estrito; nenhum = NO_LEVEL.
Identifique novo contexto pelo feed e centro do fractal. Conserve centros invalidados
no registro; não recrie contexto a partir do mesmo centro.
Para novo contexto A := ATR conhecido antes de start_t; mantenha-o inalterado
até expiração, invalidação ou novo centro confirmado.
Após 60 velas desde o centro, registre EXPIRED; não emita alerta.
Se A ≤ 0 ou falta o seu valor: NO_VALUE, sem sinal.
Registre zona [S − 0.2A; S + 0.2A] e invalidação C < S − 0.5A.
Um novo fractal confirmado cria novo contexto, armado antes do teste.
Após o fim de t, para CADA símbolo no universo completo:
Key := (version, feed, symbol, D1, end_UTC).
Obtenha OHLC t completo e known_at, e a cópia de contexto guardada antes de start_t.
O hash de entrada abrange OHLC, histórico de indicadores, contexto, configuração e versões dos dados.
Se esta chave e hash existem: devolva o resultado anterior sem avaliação nem alteração de estado.
Se a chave existe, mas o hash difere: acrescente revisão e execute uma reprodução separada
desde o estado fixado anterior a t; não avalie t com estado já alterado por t.
Corrigir o histórico anterior a t exige reprodução desde a primeira entrada alterada.
Conserve resultado/known_at originais; marque o resultado reproduzido como correção posterior.
Não envie a correção como novo alerta original; termine o símbolo.
Na primeira avaliação, utilize cópia do estado anterior a t e a cópia do contexto;
valide L ≤ min(O,C) ≤ max(O,C) ≤ H.
Verifique continuidade de sessão, feed, componente, incrementos de preço e aquecimento.
Erro de dados: registre NO_DATA; conserve o estado; não emita alerta.
Se C_t < S − 0.5A: registre INVALIDATED, remova contexto; termine o símbolo.
Se o estado estava desarmado:
se C_t ≥ S + A AND L_t > S + 0.2A: arme para a vela SEGUINTE;
registre REARM ou DISARMED; não emita alerta na mesma vela.
Se o estado estava armado:
trend := C_t > EMA200_t AND EMA200_t > EMA200_(t−20).
test := H_t ≥ S − 0.2A AND L_t ≤ S + 0.2A AND C_t > S.
signal := trend AND test.
Registre SIGNAL ou NO_SIGNAL com os operandos completos.
Num sinal, desarme o contexto; novo alerta só após um REARM futuro.
Cada ramo terminal registra resultado, entradas, estado antes e estado depois de t.
Grave registro e estado uma vez em uma transação única com chave única;
em um conflito de repetição, devolva o registro existente sem segunda mutação.
Identifique a notificação por esta chave, incluindo ao retomar a entrega.
Processe os fins das velas cronologicamente; uma falha de dados bloqueia alertas posteriores
até reconstruir o contexto; não pode ser convertida em NO_SIGNAL.
Após pesquisar, relate esperados/avaliados/em falta/candidatos, incluindo quando candidatos = 0.
O alerta inclui end_t, known_at, version, S, A e condições; sem função de execução.A tradução torna as escolhas explícitas. Suporte significa um fractal confirmado, a zona é ±0.2 × ATR fixado e o teste exige a interseção da amplitude e o fechamento registrados. O contexto W1 e a qualidade discricionária do candle ficam fora dessa regra. Rearmar um alerta e invalidar o suporte continuam sendo eventos separados. Outra definição exige outra versão.
Contexto macroeconômico e filtros de custos — o que nenhum screener mostra sozinho
Um filtro de calendário, spread ou rollover é uma regra separada. Uma janela de 30 ou 60 minutos não tem aqui otimalidade estabelecida. Registre que eventos abrange, de onde vieram as datas e se bloqueia novos candidatos, novas ordens ou também altera o tratamento de posições existentes.
- Filtro de calendário. Um procedimento de exemplo pode rejeitar novos candidatos duas horas antes de um evento selecionado. É um parâmetro a testar, não uma exigência universal. Verifique a data com o editor e distinga hora agendada de publicação efetiva; «Alto impacto» é a classificação do fornecedor do calendário.
- Filtro de spread. O limiar é explícito, com unidade e base de comparação. Duas vezes um nível medido previamente para o par e hora pode bloquear uma nova instrução. Não explica por que o spread alargou nem protege uma posição existente.
- Filtro ATR. ATR > 1,2 × a média dos N valores anteriores descreve a ultrapassagem de um limiar selecionado. Uma leitura abaixo do limiar não significa automaticamente «mercado pouco líquido». Alterar SL, TP e volume exige uma regra registrada; não decorre necessariamente apenas do ATR.
Mantenha a avaliação posterior de padrões, contexto e risco como regras separadas. Se uma delas alterar a decisão de agir, mantenha suas entradas e o motivo da rejeição.
Os filtros podem devolver números diferentes de resultados em regimes diferentes. Se alterna entre conjuntos de tendência e de amplitude, a regra de alternância precisa ser registrada antes do teste e utilizar dados então disponíveis. Selecionar retrospectivamente o melhor filtro para cada segmento histórico é outra otimização. Uma semana vazia com dados completos é resultado válido, e não motivo para afrouxar limiares durante o processo.
node reproduce-real-examples.cjs nessa pasta. Ler as instruções ou consultar os valores esperados. O verificador testa 50 asserções e grava as verificações em ./reproduced. Todos os arquivos-fonte necessários estão incluídos; os exemplos relacionados de H1/H4 e de três símbolos usam o mesmo verificador.Seleção H1 real: um pavio rejeitado e um novo candidato
Um experimento separado e mais simples abrange EURUSD, GBPUSD e USDJPY da mesma exportação ICMarketsSC-Demo. Cada H1 completa é avaliada após terminar, pelo Bid. As horas mantêm o horário original do MT5, sem deslocamento verificado. O limite R é a máxima do pivô estrito mais recente, com duas máximas inferiores à esquerda e duas à direita; a igualdade não gera pivô. O centro i só se torna conhecido após o fechamento de i+2 e só é usado a partir do próximo candle. A tolerância é zero.
Um candidato exige ambas as condições: Ct > R e Ct−1 ≤ R. Cada pivô gera no máximo um candidato, e a chave inclui versão da regra, fonte, símbolo, H1 e início do candle avaliado. Uma repetição da solicitação retorna o resultado registrado. O nível expira após 24 candles posteriores ao centro; qualquer interrupção do intervalo horário reinicia o contexto e exige um novo pivô contíguo. Não deduzimos a causa da interrupção. É um filtro de candidatos, não uma estratégia de entrada e saída.
EUR/USD: o pivô das 21:00 de 13 de outubro tem máxima = 1,12037. Seus dois candles H1 à direita terminam às 00:00 de 14 de outubro; portanto, R não pode ser conhecido antes. H1 [03:00, 04:00) tem H = 1.12044, mas C = 1,12034: o rompimento apenas pelo pavio é rejeitado, sem inventar uma história de “armadilha”. Somente H1 [04:00, 05:00) fecha em 1,12064, enquanto o C anterior continua ≤ R. Um candidato surge após receber esse fechamento, nunca antes das 05:00.
| Símbolo | R | C | Resultado da seleção |
|---|---|---|---|
| EURUSD | 1,12037 | 1,12064 | Novo candidato |
| GBPUSD | 1,32593 | 1,32669 | Este pivô já foi informado — sem repetição |
| USDJPY | 158,466 | 158,392 | Rejeitado: C ≤ R |
Todos os 3 de 3 símbolos foram avaliados; um novo candidato não significa uma operação. Rejeições e todos os resultados anteriores desde 1 de outubro também são registrados. Selecionamos o primeiro candidato EURUSD após essa data com um rompimento rejeitado do mesmo R nas 12 H1 anteriores, não por um lucro posterior. A exportação não contém horários de recebimento ao vivo, Ask, execuções ou histórico completo de revisões. Mostramos a ordem causal em dados fixados, não as notificações realmente enviadas na época.
Para verificar: candles H1 usados no gráfico, estados sucessivos do exemplo, o registro completo de três símbolos, metadados e SHA-256 e o script de reprodução. As verificações de prefixos comparam um resultado calculado apenas com o histórico até aquele ponto com a mesma parte da reprodução completa. Acrescentar candles futuros não pode alterar um resultado anterior.
4. TradingView — screener, alertas, Pine Script
Screener integrado
O TradingView fornece filtros cambiais e alertas, mas o escopo exato depende da ferramenta e plano atuais. Verifique colunas, período e fonte. «Volume» no FX à vista não é um registro centralizado de transações: pode significar o número de atualizações de um feed específico. Duas fontes podem produzir resultados diferentes; a comparação continua possível, mas exige dados e método identificados.
Para uma primeira implementação, use um único objetivo: encontrar candidatos sobrevendidos dentro deste filtro de tendência de baixa D1. Avalie candles completos e disponíveis do universo e da fonte registrados. A regra é C < EMA(200) AND RSI(14) < 35 AND ADX(14) > 20. A igualdade não satisfaz nenhuma comparação estrita. A implementação e a inicialização dos indicadores seguem o contrato de dados declarado. O resultado são candidatos para análise; não se prescreve uma posição vendida nem comprada.
| Linha do modelo | Fechamento / EMA200 | RSI14 / ADX14 | Resultado |
|---|---|---|---|
| A | 1,0900 / 1,1000 | 32 / 24 | Candidato: as três comparações são satisfeitas |
| B | 1,1100 / 1,1000 | 32 / 24 | Rejeitado: o fechamento não está abaixo da EMA |
| C | 1,0900 / 1,1000 | 68 / 24 | Rejeitado: o RSI não está abaixo de 35 |
Essas entradas verificam a lógica sem reconstruir o histórico dos indicadores. Um retorno de cinco sessões seria uma condição separada: 100 × (C_t / C_(t−5) − 1) tem sinal; seu valor absoluto não. Especifique sinal, limite e série antes de acrescentá-lo. Informe os casos esperados, avaliados, ausentes e candidatos, em vez de prometer uma quantidade diária típica.
Alertas no TradingView
Um alerta notifica uma condição: pode exigir fechamento ou resposta dentro do candle. Em ambos os casos, registre hora dos dados, da detecção e do recebimento da mensagem. Não pressupomos que todos os outros algoritmos já negociaram nem que todas as notificações tenham o mesmo atraso.
Os limites de alertas dependem do plano do TradingView vigente, do tipo de alerta e da duração. Verifique esses pontos antes de escolher um universo. Limites de alertas ativos e de símbolos avaliados são restrições separadas.
Pine Script — indicadores e estratégias personalizados
Pine Script permite criar indicadores, alertas e estratégias simuladas. Comece por uma condição pequena que possa verificar à mão e confira seu comportamento em candles completos e em formação. A documentação oficial define o modelo de execução.
- Um indicador próprio pode combinar RSI, uma zona de Fibonacci confirmada e uma relação entre EMAs. Cada entrada precisa de cálculo, fonte e horário de disponibilidade; uma seta desenhada não fornece essas definições.
- Um alerta baseado em um indicador personalizado — o script gera automaticamente um alerta quando as condições convergem. Recebe uma notificação no telefone e abre um gráfico pronto a analisar.
- Um backtest de estratégia — Pine Script tem um módulo integrado
strategy()que permite testar lógica em dados históricos. Os resultados aparecem na aba «Strategy Tester»: curva de capital, drawdown, taxa de acerto e fator de lucro.
Pine Script calcula indicadores, alertas e ordens simuladas no emulador do TradingView. Integração nativa de corretora para tratar ordens não significa que um script de estratégia envie operações próprias à corretora. Execução automática após um webhook exige uma camada separada corretamente configurada. Tem de identificar duplicados, confirmações e erros. O ambiente depende de dados e requisitos; sem medição, não estabelecemos nenhuma plataforma como garantia de slippage menor.
Um evento RSI em pseudocódigo. Isto descreve lógica, não código pronto para colar nem um sistema de envio de ordens. A implementação precisa conservar o contrato de completude e tempos e a regra de inicialização especificada no artigo 5.8.
PSEUDOCÓDIGO — APENAS ALERTAS, SEM ORDENS
Configuração: versão da regra, universo, feed BID, período D1,
limites diários, implementações RSI(14) e EMA(200), pelo menos 500 velas históricas.
Após cada fim D1 esperado, para CADA símbolo:
Verifique completude, OHLC, continuidade do calendário e momento de disponibilidade.
Se faltam dados: registre NO_DATA; conserve o estado do limiar; termine o símbolo.
Calcule RSI e EMA com o mesmo método declarado em duas velas D1 completas consecutivas.
Se o resultado é indefinido: registre NO_VALUE; termine o símbolo.
Event := RSI anterior ≥ 30 AND novo RSI < 30 AND novo C < nova EMA.
Key := (version, feed, symbol, D1, end_UTC).
Registre o resultado mesmo quando event = FALSE, com hora e hash dos dados.
Se event e a chave ainda não foi enviada: registre um alerta e envie a notificação.
Reexecutar com a mesma chave não envia novo alerta.
Correção do histórico: acrescente versão de correção; não substitua a decisão original.
Se há lacuna de dados entre velas: não simule um cruzamento contínuo.
O evento seguinte exige um novo par de velas completas consecutivas.
RSI = 30 na vela anterior permite a transição, enquanto igualdade na vela atual não a satisfaz. É uma escolha explícita de operadores. Outra vela ainda abaixo de 30 não é uma nova transição. Separadamente, eliminamos duplicados de um resultado idêntico após reexecutar a pesquisa. Uma lacuna de dados não permite inventar o RSI em falta nem aceitar um cruzamento não observado.
Detecção e resposta. Close fica disponível quando a vela é concluída e recebida. Seguem-se alerta, decisão e eventual tentativa de execução. O emulador predefinido do TradingView executa uma nova ordem não antes do tick seguinte; oferece também opções para modelar execução no fechamento. Essa opção não prova que o preço fosse atingível após receber o alerta. Utilizar um fechamento HTF futuro antes do fim do intervalo é antecipação, independentemente do nome da definição. A cronologia é mostrada no artigo 5.11.
5. MT4/MT5 — scanners, indicadores, EA
MetaTrader permite indicadores locais e Expert Advisors em MQL4/MQL5. Um EA pode enviar e gerenciar ordens se a plataforma, a conta e o provedor permitirem. Um filtro que apenas informa condições tem uma responsabilidade mais restrita.
Indicadores e scanners personalizados
Um painel pode informar estado da tendência, RSI e distância de uma média móvel para símbolos do Market Watch. Verifique regra, versão, cobertura e tratamento dos dados da ferramenta. Um nome de produto ou uma avaliação não resolve essas questões.
Um filtro local MT4/MT5 precisa manter o processo da plataforma em execução, em um computador ou VPS. Os alertas do TradingView usam sua infraestrutura de servidores. Verifique atualização dos dados, erros do serviço e recebimento de mensagens nos dois ambientes; notificação e detecção são tarefas separadas.
Expert Advisors — automatização completa
Os EA são programas que podem negociar autonomamente. As possibilidades são enormes — desde um simples «comprar quando a EMA 50 cruza acima da EMA 200» até sistemas complexos com gestão dinâmica da posição, trailing stops e análise de vários períodos.
Avaliar um EA pronto exige regras documentadas, histórico de alterações, dados, custos e resultados que incluam períodos fracos. Uma curva suave, por si só, não estabelece fraude nem ajuste excessivo, mas sem esta informação não os exclui. O resto do capítulo mostra o que verificar.
MT5 e MT4
O MT5 tem um testador de vários símbolos, enquanto o testador padrão MT4 trabalha em um símbolo selecionado. Isto importa para estratégias de carteira, mas não determina qualidade dos dados ou do modelo de execução. Verifique instrumentos suportados, modos de teste e condições da corretora específica; o nome da plataforma, por si só, não avalia a execução.
6. Fluxo de trabalho: da pesquisa à lista de observação
O processo abaixo separa pesquisa, verificação e resposta. É um exemplo organizacional para swing trading, e não resultados de um estudo de eficácia. Cada etapa deixa registro, incluindo rejeições.
- W1 após a conclusão da semana. Reveja o contexto e as zonas S/R confirmadas anteriormente. A avaliação pode ser manual ou automatizada se formalmente definida. Registre momento de identificação e limites das zonas; não os desloque depois para se ajustarem ao resultado.
- Seleção D1 após o fechamento especificado. Avalie cada símbolo pela regra fixada. Analise os candidatos com o contexto semanal registrado; mantenha rejeições manuais e estados de dados ausentes.
- Lista de observação e exposição. O número de pares depende da capacidade de revisão, e não de uma faixa «ideal» de 2–5. Posições compradas em EUR/USD e GBP/USD e uma posição vendida em USD/CHF compartilham exposição vendida em USD, mas têm outras moedas diferentes; não são uma posição idêntica. Meça correlação em rendimentos alinhados, especificando período e janela. O DXY duplica parcialmente estas taxas. O COT tem datas separadas de posições e publicação. O dimensionamento da posição pertence apenas ao plano da operação.
- Alertas e espera. Nos pares da lista, configure alertas: de preço (atinge uma zona), de indicador (RSI entra em uma zona extrema) ou de objetos desenhados (toque em uma linha de tendência). Você espera pela notificação sem precisar observar o gráfico continuamente.
- Alerta → análise → decisão. Examine o candidato registrado e as condições separadas de ativação, risco e execução. Uma notificação não autoriza uma ordem por si só. Registre por que nenhuma ação é tomada.
Registre tempo e cobertura reais da revisão. Um alerta não garante avaliação contextual correta nem lista completa. Uma alteração de dados após intervenção ou anúncio pode mudar o resultado da regra; verificar essa alteração exige novo registro, em vez de substituir a leitura anterior.
O número de candidatos deve adequar-se à capacidade de revisão. Trate um resultado vazio como ausência de configurações só após verificar cobertura do universo e atualidade dos dados. Falha, vela incompleta e histórico insuficiente têm estados separados. «Hoje não» é interpretação, não mensagem de diagnóstico.
7. Segunda-feira de manhã — como é filtrar 28 pares
Revisão ilustrativa de segunda-feira: a fonte utiliza dias que terminam às 17:00 America/New_York e cinco velas D1 completas em uma semana normal. A avaliação utiliza o último D1 completo recebido. Com UTC, uma vela curta de domingo pode já existir na segunda-feira, pelo que não pressupomos universalmente ausência de novo D1 no fim de semana.
8:15. No screener TradingView, filtros D1 (dados do fechamento da sessão de sexta-feira): RSI(14) < 35, preço abaixo da EMA 200, ADX(14) > 20. Objetivo: pares em sobrevenda dentro de uma tendência de baixa.
O filtro do modelo devolve quatro pares com dados completos para os 28. A revisão utiliza a mesma fonte, fim D1 e inicialização dos indicadores:
- AUD/USD. RSI hipotético de 28 e preço abaixo da EMA 200 satisfazem o filtro. Com uma zona W1 registrada previamente, o candidato avança para análise adicional; proximidade de suporte, por si só, não é instrução de compra.
- NZD/USD. O filtro é satisfeito, mas uma regra adicional exige proximidade de uma zona W1, aqui ausente. Registro: rejeitado na validação, e não «falso sinal» classificado após uma perda.
- EUR/GBP. No modelo, o scanner indica ADX 21 e um segundo feed 18 contra um limiar > 20. Não é uma medição coerente única. Registre fontes e suspenda a comparação até verificar OHLC, limites diários e inicialização. Não atribua toda a diferença de três pontos ADX apenas ao feed sem recalcular.
- GBP/CHF. RSI hipotético 31 e ADX 27 satisfazem o filtro. Proximidade de retração de 61,8% exige swing conhecido previamente e tolerância especificada; um alerta de preço e RSI continuam a ser condições separadas.
Modelo: 4/28 = 14,2857% dos instrumentos passam o filtro e 2/28 = 7,1429% ficam na lista de observação. O tempo de trabalho não foi medido. Com dois conjuntos de dados em falta, o relatório correto diria «4 candidatos entre 26 avaliados, cobertura 26/28 = 92,8571%», e não «4 de 28»; os resultados dos dois em falta são desconhecidos.
8. Alertas — acompanhar sem vigiar
Um alerta separa a espera por uma condição da revisão de um gráfico. O efeito no tempo de trabalho pode calcular-se. Isto não estabelece garantia de menos operações impulsivas; a notificação continua a exigir seguir o plano.
Ordem de mercado e ordem limitada — uma regra breve
Uma ordem de mercado não garante preço nem execução em todas as condições. Uma ordem limitada restringe o preço segundo as regras do produto, mas pode ficar por executar. Sem dados, não pressupomos que uma limitada «ganha geralmente» em D1. A escolha do tipo de ordem e ativação Bid/Ask são abordadas no artigo 2.7.
Tipos de alertas
- Preço. «Notifique-me quando EUR/USD atingir 1,0700.» Configura-os em níveis S/R, retrações Fibonacci e zonas de interesse. Sem programação.
- Indicador. «RSI(14) < 30 em D1» ou «o histograma MACD mudou de sinal». No TradingView: clique no indicador → Create Alert. No MT4/MT5: através de indicador personalizado com função de alerta (atenção — um alerta MT4 exige plataforma aberta ou VPS, porque executa localmente).
- Num objeto desenhado. O TradingView permite alertas em linhas de tendência e zonas desenhadas — o preço toca na linha semanal e recebe uma notificação no telefone. Combina análise desenhada manualmente com notificação automática.
- Uma condição composta. Um alerta de várias condições: «preço abaixo da EMA 200 AND RSI < 35 AND ADX > 25». Exige Pine Script ou MQL, mas configura-o uma vez.
Como combinar alertas na prática
Baseados em zonas + baseados em indicadores. No fim de semana, desenha zonas em W1/D1 e configura alertas de preço. Em paralelo, configura alertas de indicadores (RSI < 30) nos pares da lista. Quando ambos disparam aproximadamente ao mesmo tempo, tem uma condição mais seletiva, embora não necessariamente confirmação independente: ambos os critérios são calculados do mesmo preço. A abordagem por zonas combina bem com a análise de suporte e resistência e a de indicadores com estratégias baseadas em osciladores.
Reduza repetições desnecessárias e condições expiradas. O número de alertas ativos depende do processo de revisão: pode pesquisar todo o universo e enviar apenas eventos novos sem duplicação. Não precisa de omitir instrumentos para reduzir notificações.
Um estado como RSI < 30 pode continuar verdadeiro por vários candles. RSI anterior ≥ 30 e RSI atual < 30 é um evento de transição. Avalie a condição escolhida uma vez por candle completo especificado e elimine depois o processamento duplicado desse candle. São controles separados.
Alinhe fonte, lado do preço, limites diários e inicialização dos indicadores antes de comparar filtros. OHLC diferentes podem alterar resultados nos limites. Rótulos de fuso do servidor, por si só, não estabelecem a magnitude nem a direção de uma diferença. A lição 5.11 explica a correspondência temporal.
No modelo hipotético, a zona W1 [1,0680; 1,0720] foi definida antes do teste. Separadamente, foi definido um cruzamento RSI(14) abaixo de 30 num D1 completo. A condição conjunta exige uma janela temporal especificada, como ambos os eventos no mesmo dia, em vez de qualquer «hora semelhante» escolhida retrospectivamente. Após a satisfação, revê-se um H4 completo segundo a regra da formação. É um filtro mais seletivo, mas ambos os sinais derivam do preço e não são automaticamente independentes.
9. Backtesting — o que testar e como interpretar resultados
Um backtest aplica um modelo a entradas históricas. Pode revelar regras inconsistentes e estimar resultados sob premissas declaradas. Não estabelece os preços exatos disponíveis após uma decisão ao vivo nem garante resultados em novas observações.
O que vale a pena testar
Um teste histórico exige regras reproduzíveis e dados disponíveis em cada momento. Até uma desigualdade simples é incompleta sem fonte, período gráfico, inicialização e preço de resposta.
- Condições de indicadores. RSI(14) < 30 só se torna reproduzível após fixar fonte, limites, cálculo e momento de avaliação.
- Regras de saída e SL/TP. Um SL fixo de 50 pips, TP de 100 pips. Ou trailing stop de 2× ATR. Mensurável e comparável.
- Comparar variantes. Meça o mesmo procedimento com outro limite ou regra de stop. Registre todas as variantes examinadas e mantenha dados que não tenham sido usados para escolhê-las.
Tudo o que exige avaliação humana presta-se mal a backtesting:
- Price action. A geometria da vela, uma zona e o momento de confirmação podem ser definidos numericamente. Um «parece convincente» discricionário exige protocolo de avaliação separado e registrado; não pressupomos uma vantagem comprovada do olhar sobre a regra.
- Contexto estrutural. Identificar manualmente a onda 2 exige regras, versão da identificação e momento de criação. Reidentificar depois não pode melhorar um resultado de teste anterior.
- Decisões discricionárias. Podem registrar-se rejeições de candidatos prospectivamente. Sem esse registro, não sabemos se a discricionariedade melhorou o resultado ou se foram selecionados apenas casos bem-sucedidos. Não há base para afirmar que apenas o contexto invisível ao algoritmo explica a rentabilidade.
Qualidade dos dados — um tema pouco discutido
Um resultado de backtest só é tão confiável quanto os dados em que assenta. No Forex, é um problema sério. O mercado é descentralizado — os dados da corretora podem diferir dos de outra (spreads diferentes, pequenas diferenças OHLC). Dados OHLC perdem a informação sobre o movimento dentro da vela: se SL e TP forem apertados, não se sabe qual veio primeiro — o toque no SL ou no TP.
O modo «Every tick based on real ticks» do MT5 utiliza ticks disponíveis, mas não garante que existam em todo o lado. MetaQuotes descreve a geração de ticks onde faltam dados e a rejeição de ticks incoerentes com dados de minuto. Verifique o relatório de dados. Spread histórico é separado do atraso de execução. Um spread «atual» fixo utilizado em outro modo é um cenário, e não sempre uma estimativa inferior: o spread atual pode ser alto ou baixo face ao histórico testado.
Bid/Ask, mid e preços do fornecedor. Não infira o tipo de preço por uma API ser gratuita. Os metadados têm de especificar Bid, Ask, mid, transação ou outra série. Em um modelo longo calculado em relação ao mid, o custo do spread em pips é (spread de entrada + spread de saída)/2. Com ambos iguais a 1 pip e 200 idas e voltas, a diferença é 200 pips antes de custos adicionais. Com Ask de entrada e Bid de saída reais, essa diferença já está nos preços. Dukascopy e TrueFX são fontes de exemplo a verificar; o nome do fornecedor não dispensa verificar colunas, cobertura e lacunas.
Fechamento de vela e movimento dentro do candle definem regras diferentes. Um toque pode ocorrer e desaparecer antes do fim do candle. Um evento baseado em fechamento espera a conclusão e o recebimento. OHLC não reconstrói toda a ordem dos movimentos no intervalo, portanto não comprova uma suposta vantagem percentual de nenhuma das regras.
O financiamento tem sinal e unidade. O swap pode ser negativo ou positivo conforme produto e lado da posição; não inferimos o sinal para curta USD/MXN ou longa USD/TRY apenas dos nomes das moedas. O teste precisa de especificações históricas e multiplicadores dos dias, não apenas da tabela atual. Por exemplo, resultado de preço de +80 USD, comissões de −7 USD e financiamento de −18 USD dão +55 USD; com financiamento de +18 USD, o resultado é +91 USD. Spread incorporado nos preços reais não é cobrado outra vez. Unidades e conversões detalhadas são descritas no artigo 2.8.
Uma vela, dois resultados possíveis
O modelo longo já está aberto com execução em 1,1000. Os OHLC Bid da vela seguinte: O = 1,1000, H = 1,1030, L = 1,0980, C = 1,1010. TP = 1,1020, SL comum = 1,0990; admita execução sem gaps exatamente no nível, sem custos adicionais. A trajetória O→H→L→C atinge primeiro TP: +20 pips. O→L→H→C atinge primeiro SL: −10 pips. Ambas têm OHLC idênticos.
Em um nocional de 10.000 EUR, os resultados são +20 ou −10 USD. Não são dois resultados possíveis da mesma operação real: mostram duas trajetórias coerentes com dados incompletos. Os preços de execução de entrada e saída já incluem o lado de mercado, pelo que não acrescentamos spread outra vez. Um testador que presume uma ordem a partir de OHLC escolhe uma convenção; o relatório precisa a divulgar. Um período inferior ou ticks podem resolver mais casos, mas dados em falta continuam em falta.
Mid e execução — dois cálculos da mesma ida e volta
Modelo EUR/USD: mid de entrada 1,1000, spread de entrada 2 pips, logo Ask 1,1001; execução longa 1,1002. Mid de saída 1,1020, spread de saída 4 pips, logo Bid 1,1018; execução de venda 1,1017. Nocional 10.000 EUR. O lucro mid é 20 USD. As metades dos spreads custam 1 + 2 = 3 USD; slippage face a Ask/Bid é 1 + 1 = 2 USD. O resultado pelos preços executados é (1,1017 − 1,1002) × 10.000 = 15 USD — coerente com 20 − 3 − 2.
Comissão de ida e volta de 2 USD e financiamento com sinal de −1 USD dão 12 USD líquidos. Em uma conversão comum admitida de 4,00 PLN/USD, são 48 PLN; um registro real deve utilizar taxas de câmbio e momentos de registro dos montantes individuais. Não calculamos 15 − 3 − 2 novamente. O CSV separa a referência dos preços efetivos.
Como interpretar os resultados
As principais métricas de backtesting:
| Métrica | O que indica | A que prestar atenção |
|---|---|---|
| Fator de lucro (PF) | Soma dos resultados LÍQUIDOS positivos / valor absoluto da soma dos negativos | Zero não entra em nenhuma soma. Sem perdas, a razão é indefinida, não prova de vantagem infinita. PF 1,5 não é limiar universal. |
| Drawdown máximo | Maior queda do capital face a um máximo anterior | Em moeda ou porcentagem do máximo; depende da frequência de amostragem. Apenas resultados de operações fechadas podem omitir risco de posições abertas. |
| Taxa de acerto | Proporção de resultados positivos em uma amostra definida | 30% dos resultados em +3R e 70% em −1R dão +0,2R brutos por operação. Um custo de 0,25R por ida e volta muda o valor esperado para −0,05R. R:R e taxa de acerto, por si só, não provam rentabilidade futura. |
| Número de operações | Dimensão da amostra e diversidade efetiva | 100 operações no mesmo movimento USD ≠ 100 observações independentes. Examine concentrações, regimes e incerteza; não há mínimo mágico. |
| Índice de Sharpe | Rendimento excedente médio face a uma referência / desvio-padrão dos rendimentos | Importam frequência, referência, anualização e dependência temporal. > 1 ou > 2 não é teste de qualidade nem prova de ajuste excessivo. |
Exemplo: um backtest mal realizado e como o corrigir
Modelo de otimização: limiar RSI de 10 a 30 em passos de 1, SL de 30 a 80 pips em passos de 1 e TP de 80 a 200 pips em passos de 1. A grade contém 21 × 51 × 121 = 129.591 combinações, e não algumas dezenas. Conte também tentativas abandonadas e alterações manuais da regra. Um melhor PF de exemplo de 2,8 nos dados 2020–2025 é resultado de seleção nesse conjunto, e não prova de vantagem da combinação escolhida RSI 22 / SL 43 / TP 167.
Um pico de desempenho acentuado em uma combinação é sinal para verificar sensibilidade. Não prova ajuste excessivo, por si só: custos, amostra pequena e mudança de regime podem importar. Relate a grade inteira e a regra de seleção, não apenas o melhor ponto.
Após selecionar parâmetros em todo o período 2020–2025, não pode renomear 2024–2025 como amostra reservada. Precisa de observações futuras novas ou de outro plano especificado previamente. Treino, validação e teste têm funções separadas; após utilizar o teste, não volte a otimizar nele.
Diferenças entre teste e operação podem vir do modelo de custos, dados, execução ou condições em mudança. Nem toda a experiência real mais fraca prova ajuste excessivo, nem todo o backtest é otimista por definição. A comparação exige as mesmas regras e um diário de sinais, ordens e execuções reais.
Um teste prospectivo verifica o funcionamento em novas observações. A duração não estabelece representatividade: alguns meses podem cobrir poucos eventos e um único regime. Uma conta de demonstração permite verificar lógica e disponibilidade, mas a execução pode não coincidir com a real. Decomponha um resultado pior em diferenças de dados, execução, custos e distribuição dos próprios eventos.
Reordenar resultados fechados, por exemplo 1.000 permutações de 150 operações, mostra trajetórias de capital condicionais para a mesma amostra e regras fixas de dimensionamento. Não cria choques novos nem mudança de distribuição, e pode remover dependência temporal. Com risco percentual ou posições simultâneas, é preciso conservar a sua estrutura. O percentil 95 dessa simulação não é um limite garantido do drawdown futuro. Uma ferramenta para este exercício é o simulador Monte Carlo.
10. Python na filtragem e nos backtests
Python pode apoiar o seu próprio registro de dados e testes. Custo e dificuldade dependem da qualidade da fonte, escopo e manutenção. Um scanner próprio exige tratamento de erros, versões de dependências e monitoramento; este artigo apresenta um contrato lógico, e não código de produção ou promessa de sistema barato pronto a utilizar.
Um ambiente próprio permite controlar várias partes do processo:
- Integração de fontes. APIs de corretoras e bibliotecas de dados oferecem instrumentos e metadados diferentes. Verifique acesso, cobertura e revisões antes de combinar suas séries.
- Análise estatística. As bibliotecas calculam testes e distribuições. Ainda é necessário escolher corretamente a pergunta, a distribuição de referência, as premissas de dependência e a família de tentativas.
- Flexibilidade de backtesting. As bibliotecas backtrader e vectorbt permitem testar estratégias de carteira (muitos pares simultâneos), alocação dinâmica de capital e estratégias com correlações entre instrumentos. Pine Script e MQL têm limitações aqui.
- Um fluxo conectado. Obtenção, seleção e notificações podem compartilhar um registro. A execução exige uma camada separada de instruções e confirmações, com seu próprio tratamento de repetições de solicitações.
- Análise de sentimento. Alguns negociadores experimentam análise automática do sentimento de notícias e relatórios econômicos, integrando o sinal no fluxo de filtragem. Existem ferramentas (de scripts simples a API de modelos de linguagem), mas na prática de varejo continua mais próxima de uma experiência do que de uma solução acabada.
Um fluxo em pseudocódigo — dados, pesquisa e arquivo. Não contém tokens API nem funções de execução de ordens. A mesma lógica pode ser implementada em qualquer ambiente.
PSEUDOCÓDIGO DO FLUXO — SEM FUNÇÃO DE ENVIO DE ORDENS
Carregue a configuração fixada e a lista de símbolos completa com versão.
Determine os fins de vela esperados pelo calendário da fonte, não pelo relógio do computador.
Para cada símbolo, obtenha dados com component, start, end, complete,
received_at, revision e identificador da fonte.
Conserve uma cópia imutável dos dados e a soma de verificação.
Valide OHLC, unidade de preço, continuidade da sessão e aquecimento dos indicadores.
Em caso de erro, registre NO_DATA com a causa; não crie NO_SIGNAL.
Em uma cópia válida, calcule a regra completa dos critérios.
Registre um resultado para cada símbolo, incluindo os que não satisfazem a condição.
Elimine alertas duplicados por versão, feed, símbolo, período e end_UTC.
Em uma correção, acrescente novo registro associado à cópia anterior.
Resuma: esperados, avaliados, em falta, candidatos e duração da pesquisa.
Arquive a decisão manual e a sua hora separadamente, sem substituir o resultado do filtro.
Relate falha do processo e símbolos em falta, mesmo com zero candidatos.
Antes de escolher uma fonte, verifique licença, cobertura de instrumentos, lado do preço, marcas temporais, completude, revisões e Bid/Ask disponíveis. Não aplicamos uma designação única a todos os dados Yahoo ou API gratuitas. Uma biblioteca de leitura de dados não melhora automaticamente a qualidade nem fornece preços de execução.
Repetir um pedido de dados é uma operação diferente de repetir o envio de uma ordem. Uma pesquisa pode recriar a mesma chave em segurança e devolver o resultado anterior. A camada de execução exige identificador de instrução separado e verificação de estado antes de repetir; fica fora do screener aqui apresentado.
11. Armadilhas da automatização
A automação repete um processo especificado. Meça se economiza tempo de análise, preserva a cobertura ou altera erros operacionais. Ela também pode repetir um erro consistentemente; as verificações seguintes facilitam sua identificação.
| Armadilha | Mecanismo | Como limitar |
|---|---|---|
| Modelo mid | Para duas execuções, a diferença é metade do spread de entrada mais metade do de saída | Verificar o tipo de preço; não acrescentar novamente spread a execuções Ask/Bid reais |
| Spread fixo | Cenário admitido que pode ser demasiado baixo ou alto | Histórico Bid/Ask e relatório de dados em falta; só o modo «real ticks» não garante completude |
| Slippage e comissão omitidos | Resultado líquido inferior ao bruto, sobretudo em períodos menores | Modelar slippage prudentemente; contar comissão em R |
| Antecipação | O sinal utiliza dados indisponíveis na decisão (fechamento de vela em formação, swing do futuro) | Entradas disponíveis na decisão, incluindo atrasos de confirmação e entrega; resposta em uma cotação disponível posteriormente |
| Ajuste excessivo | Parâmetros ajustados ao ruído de um histórico específico | Poucos parâmetros; fora da amostra; walk-forward |
| Tentativas múltiplas | Escolher a melhor variante aumenta o risco de descoberta falsa | Registrar todas as tentativas, utilizar correção adequada e teste não utilizado antes |
| Viés de sobrevivência | Só vê os sistemas que sobreviveram | Avaliar o processo, não resultados pré-selecionados |
| Redesenho do histórico | O indicador redesenha histórico fechado | Testar prospectivamente o indicador; evitar ferramentas como ZigZag nas regras |
| Swap omitido | O custo de manter posição consome resultados de swing | Incluir pontos de swap; testar em dados com custos |
Ajuste excessivo (ajuste ao passado)
Ajuste excessivo significa ajustar escolhas a propriedades de uma amostra específica que não persistem fora dela. Não é sinônimo de toda a perda no primeiro dia. Sensibilidade dos parâmetros, número de tentativas e novas observações ajudam a avaliar o problema.
Sinais de alerta de ajuste excessivo:[5]
- A estratégia tem muitos parâmetros livres face ao número de operações e histórico disponível.
- Uma pequena alteração de parâmetro (RSI 14 → RSI 15) muda drasticamente os resultados — a chamada fragilidade.
- Um backtest dá excelentes resultados em um período e perda em outro.
- Um PF ou Sharpe elevado exige avaliar incerteza, número de variantes examinadas e dependência entre resultados. Nem amostra abaixo de 100 nem acima de 500 operações, por si só, determina a existência de vantagem. Verifique também duração da observação, grandes perdas raras e desempenho em dados não utilizados na escolha da regra.
Testar fora da amostra só tem sentido se essa amostra não participou na seleção da regra. Em testes walk-forward, o ajuste em uma janela anterior é seguido de avaliação em outra posterior; todos os limiares, atualizações e agregação dos resultados são registrados previamente. Exigir resultado positivo em todas as janelas não é uma regra estatística universal.
Exploração repetida dos dados (data snooping)
Com 50 testes independentes de hipóteses nulas verdadeiras a um nível de 5%, a probabilidade de pelo menos uma rejeição falsa é 1 − 0,95^50 = 92,3055%, e o número esperado é 2,5. É risco elevado, não certeza. Variantes nos mesmos dados são geralmente dependentes, pelo que o cálculo de independência não pode ser tratado como a sua probabilidade medida.
Registre a família de tentativas antes de escolher um vencedor. Com 50 testes e nível de família de 5%, Bonferroni dá limiar de 0,05/50 = 0,001 para cada valor-p válido. Controla o risco de pelo menos uma rejeição falsa sem exigir testes independentes. FDR responde a outra pergunta; o exemplo abaixo mostra a distinção. Nenhuma correção de valores-p estabelece a rentabilidade de uma estratégia.
Bonferroni, FDR e o limite da inferência
Modelo de cinco testes válidos em uma família definida previamente: valores-p ordenados 0,0004; 0,008; 0,019; 0,021; 0,070. Bonferroni com α = 0,05 dá 0,01 e rejeita os dois primeiros. O procedimento Benjamini–Hochberg com q = 0,05 compara valores com i × q / 5: 0,01; 0,02; 0,03; 0,04; 0,05. O maior índice que satisfaz é 4, pelo que rejeita os quatro primeiros.
FWER controla a probabilidade de pelo menos uma rejeição falsa; FDR controla a proporção esperada de rejeições falsas entre todas as rejeições, sendo essa proporção zero quando não há nenhuma. O BH clássico exige pressupostos de dependência adequados, como independência ou dependência positiva especificada; não o aplicamos sem verificar a variantes FX arbitrariamente correlacionadas. q = 5% não significa que cada estratégia selecionada tenha probabilidade de 95% de funcionar. O artigo dos autores (1995) e a documentação do método descrevem o escopo dos procedimentos. Um teste válido exige pergunta, dados, distribuição de referência e estatística especificados previamente; os valores-p aqui são entradas hipotéticas.
A divisão da amostra inclui o tempo das etiquetas
Em um plano hipotético fixado antes da análise, o treino cobre 2018–2022, a validação 2023 e o teste não visto 2024–2025. Se uma etiqueta tem horizonte até cinco sessões, uma observação de treino do fim de dezembro de 2022 cujo resultado se determina em janeiro de 2023 não pertence ao treino que termina em 31 de dezembro. Remova etiquetas que atravessam o limite ou desloque o corte segundo os fins efetivos. Separar apenas datas de entrada é insuficiente.
Preços históricos anteriores ao limite podem aquecer um indicador no início do teste se eram então conhecidos. Um transformador de escala, limiares ou seleção de instrumentos não pode ser ajustado no segmento futuro. A validação serve para selecionar, o teste para avaliação única; quando muda uma regra com base no teste, ele já está consumido. Walk-forward exige os mesmos princípios em cada janela e método de atualização registrado previamente. Calibrar probabilidades também exige segmento separado: oito eventos em dez previsões de 0,8 em um grupo pequeno não provam calibração universal nem rentabilidade.
Precisão, sensibilidade e custos da omissão
Modelo com 100 casos identificados independentemente: o padrão de referência é positivo em 20 e negativo em 80. O screener emite 15 alertas: 12 correspondem à referência e 3 são falsos; falha 8 positivos. Precisão = 12/15 = 80%, sensibilidade = 12/20 = 60%, especificidade = 77/80 = 96,25%. O desempenho financeiro não decorre destas três medidas. As etiquetas de referência têm de ser independentes do filtro; não classificamos como positivo todo o lucro posterior selecionado manualmente.
Se a referência utiliza um resultado futuro, a etiqueta só está disponível no fim do horizonte. Não pode influenciar um sinal anterior nem entrar prematuramente no treino. Baixe os modelos recalculados; todos os números deste bloco são hipotéticos.
Viés de sobrevivência nos EA prontos
Olhar apenas para sistemas ainda vendidos e publicados omite tentativas retiradas. A comparação exige população conhecida e registro de versões falhadas. Não conhecemos o número de «milhares» de EA retirados nem resultados de exemplo de influenciadores — não utilizamos estes números como prova.
A ilusão de controle
A automatização exige monitorar estado do processo, atualidade dos dados e erros não tratados. Funcionar à noite, por si só, não determina slippage nem número de perdas. Os alarmes devem relatar dados em falta ou pesquisa parada, além de configurações satisfeitas.
A caixa negra
A ausência de documentação dificulta determinar se resultados alterados vêm dos dados, regra ou execução. Um sistema pode deixar de ter o desempenho esperado; precisa de condição de paragem e procedimento de avaliação. «Funcionou até agora» é insuficiente.
Indicadores que redesenham o histórico
Distinga leitura variável em uma vela aberta, confirmação atrasada de swing, correção de dados e reescrita de sinal anterior. Conserve uma cópia do valor com a hora de avaliação e compare-a com o histórico posterior. O nome ZigZag não determina todas as utilizações de um indicador; o problema é utilizar um ponto antes da confirmação ou ocultar alterações.
Empresas de prop trading e automatização
As regras das empresas de prop trading são contratuais e variam entre programas e fases. Não afirmamos que muitas proíbam toda a automatização. Por exemplo, a FTMO descreve permitir algoritmos e EA sujeitos às restrições do programa. Verifique regras atuais, natureza da conta (incluindo simuladas), limites e práticas proibidas; aceitar um screener não significa aceitar automaticamente qualquer método de execução.
12. O que não automatizar no início
Antes de automatizar a execução, tem também de descrever atividades para além do próprio sinal. A lista abaixo identifica tarefas que exigem regra e teste separados; não pressupomos que a execução manual seja sempre mais eficaz.
- Gestão da posição. Defina dimensionamento, alterações do stop e fechamentos parciais antes de automatizá-los. A prática pode revelar decisões pouco claras, mas a execução manual não comprova que uma regra seja superior.
- Calendário macroeconômico. Um screener pode considerar o NFP se recebeu calendário e regra de bloqueio corretos. Não prevê o spread nem o conteúdo de um anúncio ainda não publicado. Não ter calendário é uma limitação explícita, não uma propriedade de todos os sistemas automáticos.
- Seleção do universo. Defina e versione a lista antes do teste. Excluir pares de mau desempenho após examinar resultados é outra tentativa de seleção. Meça características dos pares em dados especificados em vez de lhes atribuir propriedades fixas.
- Fins de semana e pausas. Um filtro de spread pode suspender novas ordens, mas não limita a perda por gap de uma posição existente. Reduzir exposição nocional reduz a sensibilidade ao preço; um stop comum não garante preço. Uma cobertura por opções exige contrato e conta separados, não apenas a designação «hedge». O risco de pausas é abordado no artigo 4.4.
- Estado da conta. Verifique produto, modo hedging/netting, margem para nova instrução e regras de fechamento por garantia insuficiente. A ordem de liquidação depende do fornecedor; não pressupomos fechamento universal da maior perda. Margem e proteção do cliente são abordadas separadamente no artigo 2.6. A capacidade de aceitar uma ordem em um momento não garante manter a posição mais tarde.
Automatize atividades repetíveis claramente definidas e conserve o seu rasto. Pesquisa, alertas, decisões e execução são etapas sucessivas com erros e limites separados. Repetir uma regra mais depressa não melhora a qualidade; apenas permite implementação e teste consistentes.
13. Ferramentas — comparação
| Ferramenta | Linguagem de scripts | Filtragem | Alertas | Backtesting | Execução automática | Custo (indicativo) |
|---|---|---|---|---|---|---|
| TradingView — plano básico | Pine Script | Filtros da plataforma | Segundo o plano atual | Emulador de estratégias | O script de estratégia, por si só, não envia ordens nativas à corretora | Verificar plano e dados |
| TradingView — planos pagos | Pine Script | O escopo depende da ferramenta | Segundo o plano atual | Emulador de estratégias | Um webhook exige camada de execução separada; integração de corretora não transforma automaticamente um script em um EA | Preços atuais |
| MT4 | MQL4 | Indicadores personalizados | Sim (janela, notificação no telefone, email) | Strategy Tester (1 símbolo) | Expert Advisors | 0 USD (da corretora) |
| MT5 | MQL5 | Indicadores personalizados | Sim (janela, notificação no telefone, email) | Strategy Tester (várias moedas) | Expert Advisors | 0 USD (da corretora) |
| cTrader | C# / ferramentas da plataforma | Segundo a configuração | Segundo a configuração | Testes cBot | cBot — lógica de execução separada | Condições da plataforma e fornecedor |
| Ambiente próprio | Por exemplo, Python | Regra definida pelo autor | Infraestrutura própria | Modelo do autor / bibliotecas | Camada API separada | Dados, manutenção e infraestrutura |
A tabela descreve o escopo das funções, e não uma classificação de qualidade. Licença das ferramentas, acesso a dados, VPS e custos de transação são parcelas separadas. Verifique limites e preços dos planos na documentação atual.
- Período principal: D1 — é onde pesquisa e analisa. Retira o contexto de W1.
- Lista de observação: escolha um universo com versão que possa analisar e monitorar. A quantidade que chega à lista ativa é um resultado da regra, não uma meta a ser forçada.
- Dois filtros. Por exemplo, EMA 200 e RSI 14 como transformações de preço explicitamente definidas. Os limiares são convenções a avaliar, não remoção comprovada da maioria do ruído.
- 1 tipo de alerta para começar: alertas de preço em zonas S/R do gráfico semanal. Acrescentará os de indicadores depois.
- Comece por um processo auditável. Um filtro e uma regra de alerta podem ser um primeiro exercício viável. Acrescente execução depois de especificar suas regras de estado da conta e tratamento de erros.
- Prática do processo e teste prospectivo. Dois ou três meses em uma conta de demonstração podem servir como período de prática admitido para funcionamento, registro e cumprimento das regras; não são mínimo suficiente de validação. Número e período das observações dependem da frequência dos eventos, dependência e variabilidade dos resultados. A demonstração não reproduz automaticamente condições de execução reais, e a passagem de um tempo escolhido não garante representatividade nem rentabilidade.
Volume da posição — fora do escopo deste artigo
Selecionar uma configuração sem o volume adequado é metade do trabalho — mas as fórmulas, o tratamento de custos no orçamento de risco e exemplos numéricos desenvolvidos pertencem à seção 9. A calculadora de volume da posição interativa e o simulador Monte Carlo estão na seção de Ferramentas.
Uma regra fixa em dados reais: fechamento fora da amplitude ou apenas pavio?
Um candle pode superar uma máxima anterior e fechar acima dela ou voltar à amplitude. Essa distinção descreve variações posteriores de preço diferentes nestes registros? Fixamos uma comparação antes de calcular seu resumo. Esta é uma descrição retrospectiva do histórico de um único provedor. Alguns períodos já haviam aparecido em nossos exemplos didáticos; nem o horário do plano nem a divisão por data criam uma amostra de teste nunca vista.
A entrada contém 6000 registros Bid H1 inalterados para cada um de EUR/USD, GBP/USD e USD/JPY de ICMarketsSC-Demo / MT5. Nas datas candidatas, o registro contém 17995 linhas e 3140 candidatos de um único lado. O intervalo de bloqueio seleciona 1086; 1039 têm um resultado contínuo de seis registros e 47 cruzam uma lacuna futura de horários. Esses 47 continuam contabilizados, em vez de serem descartados sem aviso.
| Direção · categoria | Disponíveis / selecionados | Média | Mediana | Fração > 0 |
|---|---|---|---|---|
| ALTA · fechamento | 271 / 280 | -0,0689 | -0,1433 | 0,4613 |
| ALTA · pavio | 258 / 273 | 0,2077 | 0,0577 | 0,5078 |
| BAIXA · fechamento | 226 / 236 | 0,0934 | -0,1256 | 0,4823 |
| BAIXA · pavio | 284 / 297 | -0,0152 | -0,2569 | 0,4472 |
Uma variação com sinal positivo segue a direção do rompimento; uma negativa vai contra ela. Média, mediana e fração acima de zero respondem a perguntas diferentes. Em BAIXA · fechamento, a média é positiva, mas a mediana é negativa e menos da metade das observações é positiva. Nenhum desses números é uma taxa de acerto após custos.
Regra exata e limites da comparação
Para o candidato t, fixe a maior máxima e a menor mínima dos 20 registros H1 completos anteriores. Exija continuidade horária de t−21 até t; o registro mais antigo fornece o fechamento anterior para True Range. Um rompimento dos dois limites é excluído primeiro. Caso contrário, classifique um fechamento estritamente fora como CLOSE, ou um rompimento pela máxima/mínima com fechamento dentro, incluindo igualdade, como WICK. A igualdade do extremo, por si só, não é rompimento.
Tome o primeiro candidato de cada símbolo e bloqueie os seis índices seguintes, independentemente da disponibilidade posterior do resultado. Só após selecionar, confira os seis registros seguintes quanto a passos horários exatos. Meça direção × (C em t+6 − C em t), em pips e dividido pela média aritmética do TR dos 20 registros anteriores. O candidato não contribui para sua amplitude de referência nem para esse denominador.
A figura agrupa eventos, portanto símbolos com mais eventos disponíveis têm maior peso. As janelas de resultado não se sobrepõem dentro de um símbolo, mas 808 pares de eventos adjacentes compartilham histórico anterior, e janelas disponíveis de pares diferentes se sobrepõem no tempo 950 vezes. Os grupos de julho usam a data do candidato; um resultado cruza esse limite. Essas dependências e lacunas estruturadas no tempo impedem uma interpretação de independência ou causalidade. Não há execuções, premissas de spread, retornos de conta ou alegações de vantagem estatística aqui.
Todas as 48 linhas de resumo (CSV) · Registro completo de classificação (CSV) · Eventos selecionados e resultados ausentes (CSV) · Método e instruções de reprodução · Fontes, plano fixado, código e resultados (ZIP).
Exercício final: separe a decisão dos próximos seis candles
Este é o primeiro EUR/USD UP_CLOSE selecionado a partir de 1 de setembro de 2026 com resultado disponível: o candle H1 que abre em 3 de setembro às 19:00. Candidatos UP_CLOSE anteriores, em 2 de setembro às 16:00 e 3 de setembro às 15:00, foram rejeitados pelo intervalo de bloqueio vigente. O caso foi escolhido por cronologia e disponibilidade, não pelo sinal ou tamanho do movimento posterior. Chame de P o candle H1 que atende à condição.
Na decisão, a amplitude dos 20 registros anteriores é 1.15826–1.16302 e seu True Range médio é 9.325 pips. P fecha em 1.16368, acima do limite superior fixado. O último candle H4 elegível abre às 16:00 e termina às 20:00, junto com o fechamento H1 de P. Ele oferece uma visão mais ampla do mesmo histórico Bid, não uma confirmação independente. Os dois registros finais ainda precisam ser recebidos após o fim dos respectivos intervalos.
Antes de revelar outro candle: registre o que atende à condição, o primeiro momento possível de avaliação e o que continua desconhecido. Neste exercício, pare de monitorar no primeiro fechamento H1 posterior igual ou inferior a 1.16302. Mantenha esse limite fixo. É uma condição analítica de encerramento; não especifica ordem, execução de stop-loss ou tamanho de posição.
Quadro 0: até o candle H1 de 2026-09-03 às 19:00
P atende a UP_CLOSE somente após receber seu registro final, nunca antes das 20:00. A trajetória posterior continua oculta. Atender à condição não fornece, por si só, Ask executável ou custos.
EUR/USD Bid H1/H4. Hora original MT5; só este prefixo visível. Contexto H4 fixo. Revelar registro 1 de 6
Quadro 1: até o candle H1 de 2026-09-03 às 20:00
O fechamento revelado é 1.16328, acima de 1.16302. A condição de encerramento não ocorreu; isso não prevê o próximo fechamento.
EUR/USD Bid H1/H4. Hora original MT5; só este prefixo visível. Contexto H4 fixo. Revelar registro 2 de 6
Quadro 2: até o candle H1 de 2026-09-03 às 21:00
O fechamento revelado é 1.16346, acima de 1.16302. A condição de encerramento não ocorreu; isso não prevê o próximo fechamento.
EUR/USD Bid H1/H4. Hora original MT5; só este prefixo visível. Contexto H4 fixo. Revelar registro 3 de 6
Quadro 3: até o candle H1 de 2026-09-03 às 22:00
O fechamento 1.16286 é igual ou inferior a 1.16302. O monitoramento termina após o fechamento deste candle das 22:00, nunca antes das 23:00. A classificação anterior UP_CLOSE continua correta.
EUR/USD Bid H1/H4. Hora original MT5; só este prefixo visível. Contexto H4 fixo. Revelar registro 4 de 6
Quadro 4: até o candle H1 de 2026-09-03 às 23:00
O fechamento agora é 1.16257. O monitoramento já terminou no candle das 22:00; o novo registro não altera quando essa condição se tornou conhecida.
EUR/USD Bid H1/H4. Hora original MT5; só este prefixo visível. Contexto H4 fixo. Revelar registro 5 de 6
Quadro 5: até o candle H1 de 2026-09-04 às 00:00
O fechamento agora é 1.16229. O monitoramento já terminou no candle das 22:00; o novo registro não altera quando essa condição se tornou conhecida.
EUR/USD Bid H1/H4. Hora original MT5; só este prefixo visível. Contexto H4 fixo. Revelar registro 6 de 6
Quadro 6: até o candle H1 de 2026-09-04 às 01:00
O sexto fechamento é 1.16232: −13.6 pips desde P, ou −544/373 (cerca de −1.4584) unidades do TR20 médio anterior. É uma variação observada do preço Bid, não uma perda de operação reconstruída.
EUR/USD Bid H1/H4. Hora original MT5; só este prefixo visível. Contexto H4 fixo.
Cada quadro ajusta sua escala pelos próprios preços visíveis; nenhum extremo futuro define os eixos iniciais. H4 permanece fixado na decisão. Os rótulos originais de abertura do MT5 são mantidos, o deslocamento da corretora não foi verificado e os horários reais de recebimento não foram medidos. Ainda seria necessária uma cotação posterior para modelar uma resposta executável.
Dados e notas de tempo do exercício final · Todos os 28 registros H1, incluindo a trajetória revelada (CSV). O registro completo e o ZIP acima mantêm as exclusões e a sequência de cálculo.
Perguntas frequentes — Automatização e filtragem na análise técnica
Preciso de saber programar para utilizar filtragem?
Não. Os screeners integrados no TradingView e painéis MT4/MT5 funcionam pelo princípio «clique nos filtros, defina limiares, obtenha uma lista». Pine Script e MQL acrescentam capacidades (condições próprias, alertas compostos), mas a filtragem básica não exige escrever código.
Vale a pena comprar um Expert Advisor (EA) pronto?
A avaliação exige regras documentadas, histórico completo de tentativas e alterações, modelo de custos e novas observações. Até um histórico de conta verificado não garante representatividade nem resultados futuros. Um backtest ou avaliação atraente, por si só, não substitui estas verificações.
Quantos alertas devo ter configurados ao mesmo tempo?
Não existe número universal. Registre capacidade de revisão e expiração das condições, reduzindo repetições pela eliminação de duplicados. Pode pesquisar todo o universo sem notificar após cada vela que continua a satisfazer o mesmo estado.
Qual a confiabilidade de um backtest no Forex?
Depende dos dados, regras e modelo de execução. OHLC não estabelece a ordem SL/TP na mesma vela. Um modo de ticks reais pode preencher lacunas com dados gerados. Um backtest não prevê resultados; um teste prospectivo verifica novas observações sujeito a limites de duração e diversidade da amostra.
TradingView ou MT4/MT5 para filtragem?
Compare fonte e limites das velas, filtros disponíveis, funcionamento dos alertas e escopo do testador. Os alertas TradingView executam no servidor; um indicador MT local exige plataforma ou VPS em funcionamento. Um script de estratégia TradingView isolado não é um sistema nativo de negociação na corretora.
Python é melhor para backtesting do que Pine Script?
Um ambiente próprio dá controle sobre dados e modelo, mas transfere para o autor a responsabilidade pela sua correção. Um testador de plataforma tem convenções e limitações definidas. A escolha não elimina antecipação, erros de unidades nem custos omitidos.
Tenho de executar o screener todos os dias?
Se a regra avalia cada fechamento D1, a pesquisa deve cobrir todos esses fechamentos. Rever apenas à segunda e quinta-feira perde condições novas dos outros dias, salvo se um sistema automático continuar a registrá-las. Separe frequência de revisão manual de frequência da pesquisa completa.
Fontes
Fontes primárias
- Robert Pardo, The Evaluation and Optimization of Trading Strategies, 2.ª ed., Wiley, 2008 — metodologia de backtesting, análise walk-forward, reconhecimento de ajuste excessivo; obra essencial para validar estratégias automáticas.
- Ernest P. Chan, Quantitative Trading: How to Build Your Own Algorithmic Trading Business, 2.ª ed., Wiley, 2021 — guia prático de construção de estratégias quantitativas: da filtragem à execução algorítmica.
- Perry J. Kaufman, Trading Systems and Methods, 6.ª ed., Wiley, 2020 — revisão enciclopédica de sistemas de negociação: filtros de tendência, filtragem, testes e otimização de estratégias.
- Andreas F. Clenow, Following the Trend, Wiley, 2013 — abordagem sistemática à negociação de tendências: filtragem de instrumentos, backtests de carteira, gestão de posições; aspectos práticos da automatização.
Leitura complementar
- David Aronson, Evidence-Based Technical Analysis, Wiley, 2007 — validação estatística de métodos de análise técnica: viés de exploração de dados, testes de significância, comparações múltiplas (data snooping); leitura essencial para quem testa estratégias.
- Marcos Lopez de Prado, Advances in Financial Machine Learning, Wiley, 2018 — leitura complementar; capítulos não lidos não são atribuídos como prova de regras.
- Alexander Elder, The New Trading for a Living, Wiley, 2014 — leitura complementar; capítulos não lidos não são atribuídos como prova de regras.
- Kathy Lien, Day Trading and Swing Trading the Currency Market, 3.ª ed., Wiley, 2016 — leitura complementar; capítulos não lidos não são atribuídos como prova de regras.
- Lukas Menkhoff, Mark P. Taylor, «A paixão obstinada dos profissionais de câmbio: análise técnica», Journal of Economic Literature, Vol. 45, n.º 4, 2007 — revisão do uso da análise técnica no Forex; contexto para discutir o papel da automatização entre profissionais de câmbio.
- Andrew W. Lo, Adaptive Markets: Financial Evolution at the Speed of Thought, Princeton University Press, 2017 — hipótese dos mercados adaptativos: por que estratégias que funcionaram no passado podem deixar de funcionar; implicações para automatização e backtesting.
Fontes institucionais e documentação
- Banco Nacional Suíço (2015), «O Banco Nacional Suíço elimina a taxa mínima de câmbio e reduz a taxa de juros para −0,75%», comunicado de imprensa, 15 de janeiro de 2015.
- FCA (2015), «Informações para clientes da Alpari (UK) Limited» — entrada da Alpari (UK) em administração especial.
- Comitê de Mercados do BIS (2017), «O evento súbito da libra de 7 de outubro de 2016», janeiro de 2017 — análise do evento: pouca liquidez, ordens, respostas algorítmicas e divergências entre plataformas.
- TradingView, Documentação Pine Script — documentação oficial da linguagem: comportamento do script na vela atual e fechada (barstate), alertas, strategy().
- MetaQuotes, Referência MQL5 — documentação oficial MQL5: indicadores, Expert Advisors, Strategy Tester.
- ESMA (2018), «A ESMA acorda proibir opções binárias e restringir CFD para proteger investidores de varejo», 27 de março de 2018 — pacote de intervenção no produto: limites de alavancagem, proteção de saldo negativo, avisos de risco; análises de supervisão indicaram que 74–89% das contas CFD de varejo tinham perdas.