Scanner de Condições (cs)
Para instalar:
- Copie o conteúdo das quatro pastas (Indicadores, Include, Templates, Perfis) para as pastas equivalentes da sua instalação.
- Não se preocupe, não há nada ali que possa te prejudicar - são apenas indicadores, etc.
- Saia e entre novamente no programa MetaQuotes.
Para demonstrar o que o scanner pode fazer:

O exemplo acima consiste em:
- Um indicador no gráfico com 4 plots.
- Um indicador em janela separada mostrando a EMA do RSI.
- Um indicador em janela separada mostrando onde as condições que sugerem trades long ou short ocorreram historicamente.
- Um indicador de painel mostrando onde as mesmas condições acabaram de ocorrer ou estão ocorrendo atualmente em uma gama de pares e períodos.
O código comum a todos os scans:
- Utils.mqh contém algumas funções utilitárias que podem ser usadas em qualquer indicador, advisor, etc.
- cs_Chart.mqh contém quase todo o código que vai para o indicador do gráfico atual.
- cs_Panel.mqh contém quase todo o código que vai para o indicador de exibição do painel.
O código específico da estratégia PP (Power Pro):
- csPP_0.mq4 exibe os indicadores relevantes do "gráfico".
- csPP_1.mq4 exibe os indicadores relevantes de "janela separada".
- csPP_Chart.mq4 é o indicador que mostra o que aconteceu historicamente no gráfico atual.
- csPP_Panel.mq4 é o indicador que mostra a situação atual em todos os pares e períodos que você está interessado.
- csPP_GetBarFlag.mqh é o código "incluído" tanto no indicador de Gráfico quanto no de Painel. É a parte que decide se há uma condição de interesse em uma barra específica.
Incluí outro exemplo menos complexo (identificador=MAX).
O código específico da estratégia MAX (crossover de médias móveis):
- csMAX_0.mq4 é um indicador personalizado que exibe duas médias móveis. É totalmente autossuficiente.
- Não há equivalente csMAX_1 porque, ao contrário do PP, não há necessidade de uma exibição em janela separada.
- csMAX_Chart.mq4, csMAX_Panel.mq4 e csMAX_GetBarFlag.mqh fazem o equivalente ao que foi feito para a estratégia PP.
O código cujos IDs começam com csXXXX:
Como eu abordo a codificação de uma nova condição:
Decido um identificador de estratégia (ex: PB para pinbars).
Configuro minha janela como acima, sob "Para demonstrar o que o scanner pode fazer", removendo quaisquer indicadores existentes.
Se meu novo scan depende de indicadores no gráfico, eu os construo usando csXXXX_0.mq4 como padrão. Lembro de 'salvar como...' csPB_0.mq4 e aplico meu indicador personalizado ao gráfico da esquerda.
Se precisar de um indicador em janela separada, eu o construo também. Lembro de 'salvar como...' csPB_1.mq4 e aplico ao gráfico da esquerda.
Eu construo indicadores personalizados ao invés de usar indicadores padrão, para que eu possa referenciá-los em outros lugares usando a função iCustom. Dessa forma, se eu mudar de ideia sobre os parâmetros básicos da minha estratégia (ex: método da média móvel), só preciso alterar meus indicadores personalizados. Se eu usar indicadores padrão, teria que alterá-los e depois ir fuçando no código para acomodar essa mudança de ideia.
Eu pego csXXXX_Chart.mq4, substituo todas as instâncias de 'XXXX' pelo meu identificador de estratégia 'PB' e salvo o código como csPB_Chart.mq4. Ele não compilará ainda porque há algum código "include" que ainda precisa ser escrito.
Agora para fornecer o código "include".
Se as condições que quero testar são fáceis, uso o arquivo "include" csXXXX_GetBarFlag.mqh, codifico o que quero e 'salvo como...' csPB_GetBarFlag.mqh. Mas se a codificação for complicada, volto ao csPB_Chart.mq4 que criei anteriormente, comento a linha de código que agora lê "#include <csPB_GetBarFlag.mqh>" e construo o código que quero diretamente dentro do csPB_Chart.mq4. Quando tudo estiver limpo, movo/colo o código que encontra a condição para o arquivo "include" 'csPB_GetBarFlag.mqh' e descomento a declaração #include no arquivo 'csPB_Chart.mq4'.
A partir desse ponto, o arquivo 'csPB_Chart.mq4' pode ser compilado e aplicado ao gráfico da esquerda.
Neste momento, salvo o template para o gráfico da esquerda como csPB-CHART.tpl. Isso incorpora quaisquer indicadores personalizados no gráfico, indicadores personalizados em janela separada e o plot de resultados conforme se aplicam ao gráfico atual.
Eu carrego o arquivo 'csXXXX_Panel.mq4', substituo todas as instâncias de "XXXX" por "PB", então 'salvo como...' "csPB_Panel.mq4". Este último arquivo é compilado e aplicado ao gráfico da direita. Pode ser um pouco lento para rodar quando aplicado pela primeira vez, mas não consome muitos recursos durante a execução.
Eu armazenei csPB_panel.tpl como um template para o gráfico da direita.
Geralmente, costumo armazenar csPB como um perfil.
Alguns aspectos do software:
O código foi escrito como indicadores, então, quando um painel está exibido e você deseja olhar para um par e período específicos, basta escolher o par na janela de Market Watch, arrastar e soltar no espaço do gráfico atual e mudar o período conforme necessário. O template cuida do resto.
Para reduzir a sobrecarga do computador, fiz duas coisas.
Primeiro, ao lidar com arrays de séries temporais, geralmente só retrocedo 200 barras.
Em segundo lugar, o software de exibição do painel não testa as condições do usuário a cada tick. Ele usa um mecanismo de timer, de modo que os testes são aplicados à barra[0] apenas se a barra[0] estiver 90% formada, caso contrário, o teste é aplicado à barra[1]. Se a barra[1] estiver em foco (ou seja, barra[0] estiver menos de 90% formada), ela é testada uma vez e uma mudança para o tempo da barra[0] é calculada. Para cada tick subsequente que aparecer até que o tempo da mudança seja alcançado, nada acontece. Não estou 100% certo de que isso está codificado corretamente ainda, mas parece funcionar bem.
Publicações relacionadas
- Calendário Econômico: Monitoramento e Cache para Testes de Estratégia no MetaTrader 5
- Buffers Horários para Coleta de Dados no MetaTrader 5
- Informações da Conta: Indicador Essencial para MetaTrader 4
- i-Sessions: O Indicador Essencial para MetaTrader 5
- Índice de Preferência do Investidor: Um Guia Prático para Traders