Introdução: O “Moedor de Carne”
Você precisa instalar um Filtro Anti-Violino no seu código hoje mesmo. Se você fez o dever de casa do post anterior, provavelmente descobriu uma verdade inconveniente: o robô de Média Móvel ganha muito dinheiro na tendência, mas devolve quase tudo quando o mercado fica lateral.
No jargão do trading, chamamos isso de Violinada. É exatamente aqui que o Filtro Anti-Violino entra em ação para proteger seu capital. O preço sobe, seu robô compra. O preço cai logo em seguida, seu robô vende. Você perde na compra, perde na venda e paga corretagem duas vezes.
Um robô profissional não opera sempre. Ele sabe a hora de ficar de fora. Hoje, vamos instalar dois “sensores” no seu código para impedir que ele opere no “Moedor de Carne”.
Arma 1: O Horário de Ouro (Time Filter)
A primeira regra do Filtro Anti-Violino é simples: só opere quando tem gente operando. Robôs de tendência precisam de volume e volatilidade. Operar na hora do almoço (12:00 – 13:00) ou no final do pregão (após as 17:00) costuma ser pedir para perder dinheiro.
No NTSL, vamos usar a função Time para dizer ao robô: “Só trabalhe se for depois das 09:10 e antes das 16:50”.
Arma 2: O ADX (O Velocímetro do Mercado)
O ADX (Average Directional Index) é um indicador peculiar. Ele não diz se o mercado vai subir ou cair. Ele diz se o mercado tem FORÇA.
- ADX abaixo de 20: O mercado está “dormindo” (Lateral). Perigo! ⛔
- ADX acima de 25: O mercado “acordou” (Tendência). Hora de operar! ✅
Vamos combinar essas duas armas no seu código agora.
O Código com Filtro Anti-Violino (Versão 2.0)
Apague o código antigo e cole este novo. Note as partes destacadas com comentários.
Input
PeriodoMedia(9);
PeriodoADX(14);
NivelADX(25); // So opera se o ADX for maior que 25
HorarioInicio(0910);
HorarioFim(1150);
Var
MinhaMedia : Float;
MeuADX : Float;
EstaNoHorario : Boolean;
TemForca : Boolean;
Begin
// 1. Calculos
MinhaMedia := MediaExp(PeriodoMedia, Close);
MeuADX := ADX(PeriodoADX, 10); // O 10 é o tipo de media do ADX (Wilder)
// 2. Definindo os Filtros (Regras de Protecao)
// Regra de Horario: Verdadeiro se Hora atual >= 09:10 E <= 11:50
if (Time >= HorarioInicio) and (Time <= HorarioFim) then
EstaNoHorario := true
else
EstaNoHorario := false;
// Regra de Forca: Verdadeiro se ADX > 25
if (MeuADX > NivelADX) then
TemForca := true
else
TemForca := false;
// 3. Plotagem Visual (Para voce conferir)
Plot(MinhaMedia);
SetPlotColor(1, clAqua);
// Dica: Se o mercado estiver ruim, a media fica Cinza
if (TemForca = false) then SetPlotColor(1, clGray);
// 4. Estrategia de Execucao BLINDADA
// Para COMPRAR, precisa de 3 "Sins":
// 1. Preço acima da media? SIM.
// 2. Está no horario? SIM.
// 3. O ADX mostra força? SIM.
if (Close > MinhaMedia) and (EstaNoHorario) and (TemForca) then
BuyAtMarket;
// Para VENDER:
if (Close < MinhaMedia) and (EstaNoHorario) and (TemForca) then
SellShortAtMarket;
// 5. Encerramento Forçado (Day Trade)
// Se der 17:00, fecha tudo para nao dormir posicionado
if (Time >= 1700) then
ClosePosition;
End;O Teste de Fogo
Agora que o Filtro Anti-Violino está ativo, rode o Backtest novamente no mesmo ativo (WIN ou WDO) e no mesmo tempo gráfico que você usou no post anterior.


Compare os resultados:
- Número de Operações: Deve ter caído drasticamente (o robô parou de operar à toa).
- Taxa de Acerto: Provavelmente subiu.
- Drawdown: Deve ter diminuído. O robô protegeu seu capital nos dias ruins.
Você acabou de aprender o segredo dos Quants: “Não operar” também é uma posição. E muitas vezes, é a mais lucrativa.

O Filtro Anti-Violino funcionou e seu robô parou de perder dinheiro na lateralidade? Poste o print do seu Backtest no nosso Instagram marcando @AcademiaB3. Se tiver dúvida, entre em contato conosco

