Otimização de Robô: Como Achar os "Números Mágicos" para Dobrar o Lucro

Otimização de Robô: Como Achar os “Números Mágicos” para Dobrar o Lucro

Introdução: O Fim do “Achismo”.

No post anterior, nós salvamos a vida do seu robô instalando um Stop Loss de 500 pontos. O resultado foi incrível: um lucro líquido de R$ 47.000,00 (no backtest com 26 contratos) e risco controlado.

Mas fica a pergunta: Por que 500 pontos? Por que usamos uma Média Móvel de 9 períodos? Por que não 21? Por que não 7?

A verdade é que eu escolhi esses números baseados na minha experiência. Mas no Trading Quant, experiência não basta. Precisamos de dados. Hoje, você vai aprender a fazer uma Otimização de Parâmetros no Profit Chart. Vamos mandar o computador testar milhares de combinações para descobrir qual configuração coloca mais dinheiro no seu bolso.

O Que é Otimização (e o Perigo do Overfitting)

Otimizar é pedir para o Profit rodar o seu robô com variações diferentes:

  • Teste a média 9, depois a 10, depois a 11… até a 50.
  • Teste o Stop de 200, 250, 300… até 1.000.

O objetivo é encontrar uma “zona de estabilidade” (Cluster). ⚠️ Cuidado: Não escolha apenas o número que deu o maior lucro isolado. Se a média 12 deu R$ 50 mil e a média 13 deu prejuízo, a média 12 é sorte (Overfitting). Procure faixas onde todos os números dão lucro.

Passo a Passo: Rodando a Otimização no Profit

Para isso funcionar, seu código precisa ter variáveis declaradas como Input (nós já fizemos isso no Código V3.0).

  1. Abra o Editor de Estratégias com o código V3.0.
  2. Clique na aba Otimização (*Disponível somente no Profit Ultra).
  3. No lado direito, você verá os parâmetros disponíveis: PeriodoMedia, StopPontos, etc.
  4. Configure os intervalos:
    • PeriodoMedia: Início: 5 | Fim: 25 | Passo: 1.
    • StopPontos: Início: 200 | Fim: 800 | Passo: 50.

Isso vai gerar centenas de backtests em segundos.

Protocolo de Otimização

> Inicializando Engine de Backtest…

> Carregando histórico de ticks (WDO/WIN)… OK.

> Aguardando calibração dos parâmetros.

O Código V3.0 (Pronto para Otimização)

Caso você não tenha salvo, aqui está o código “Caçador de Tendência” com os Inputs prontos para serem testados.

Input
  PeriodoMedia(9);     // Tente otimizar de 5 a 21
  PeriodoADX(14);      // Tente otimizar de 9 a 20
  NivelADX(25);        // Otimizar de 20 a 35
  HorarioInicio(0910);
  HorarioFim(1650);
  StopPontos(500);     // Otimizar de 200 a 800 (Passo 50)
  // NOVOS PARAMETROS DE RISCO
  AlvoPontos(300);  // Take Profit em Pontos
  StopPontos(150);  // Stop Loss em Pontos

Var
  MinhaMedia : Float;
  MeuADX     : Float;
  EstaNoHorario, TemForca, Comprou, Vendeu : Boolean;

Begin
  // 1. Calculos (Mantemos a lógica do Filtro Anti-Violino)
  MinhaMedia := MediaExp(PeriodoMedia, Close);
  MeuADX     := ADX(PeriodoADX, 10);

  EstaNoHorario := (Time >= HorarioInicio) and (Time <= HorarioFim);
  TemForca      := (MeuADX > NivelADX);

  // 2. Plotagem
  Plot(MinhaMedia);
  SetPlotColor(1, clAqua);

  // 3. ENTRADAS (Com Filtros)
  // Se nao tiver posicao aberta (BuyPosition e SellPosition = 0)
  if (BuyPosition = 0) and (SellPosition = 0) then
  begin
    // Compra
    if (Close > MinhaMedia) and (EstaNoHorario) and (TemForca) then
      BuyAtMarket;

    // Venda
    if (Close < MinhaMedia) and (EstaNoHorario) and (TemForca) then
      SellShortAtMarket;
  end;

  // 4. SAIDAS DE RISCO (Stop Loss e Take Profit)
  
  // Se estiver comprado...
  if (IsBought) then
  begin
    // Saida de Gain (Alvo)
    SellToCoverLimit(BuyPrice + AlvoPontos);
    // Saida de Loss (Stop)
    SellToCoverStop(BuyPrice - StopPontos, BuyPrice - StopPontos);
    
    // Saida pela Media (Virada de Mao - opcional)
    if (Close < MinhaMedia) then SellToCoverAtMarket;
  end;

  // Se estiver vendido...
  if (IsSold) then
  begin
    // Saida de Gain (Alvo)
    BuyToCoverLimit(SellPrice - AlvoPontos);
    // Saida de Loss (Stop)
    BuyToCoverStop(SellPrice + StopPontos, SellPrice + StopPontos);
    
    // Saida pela Media
    if (Close > MinhaMedia) then BuyToCoverAtMarket;
  end;

  // 5. Encerramento Day Trade
  if (Time >= 1700) then ClosePosition;

End;

O Dever de Casa Valioso

Rode a otimização hoje no Mini Índice (WIN). Você vai descobrir que, em alguns anos, a média de 21 períodos funciona melhor que a de 9. Em outros, um Stop de 600 pontos evita mais violinadas que o de 500.

Anote os “parâmetros campeões” e compartilhe no nosso Grupo VIP. Quem achar a melhor combinação ganha destaque na próxima live!


Entre no nosso Grupo VIP do Telegram para discutir os resultados desta Otimização.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima