Documentação

Aplicações

Última atualização em 21. 3. 2024 por Mark Fric

Teste de novo indicador no SQ X vs dados da MT

Teste de novo indicador no SQ X vs dados da MT

Acabamos de criar (ou estamos em processo de desenvolvimento) nosso novo indicador. Como saberemos se o implementamos corretamente?

Quando você criou seu novo indicador em StrategyQuant e ele foi compilado com sucesso, também deve ser verificado se ele realmente funciona da mesma forma que no MetaTrader - em outras palavras, se os valores computados por ele são os mesmos que seus valores em MT4.

 

Observação - este artigo faz parte de Exemplo de indicador de envelopesportanto, refere-se ao indicador Envelopes. Mas a descrição do teste de indicadores é válida para qualquer implementação de indicador.

 

Para isso, temos uma ferramenta de Teste de Indicadores no Editor de Código. Ela funciona simplesmente comparando os valores computados em SQ com os valores computados em MT4.

 

Em geral, ele funciona em algumas etapas simples:

  1. Use o helper script para computar e exportar dados indicadores no MetaTrader
  2. Copiar os arquivos de dados computados para o local apropriado para que o SQ possa encontrá-los
  3. Configurar e executar o teste indicador no SQ

Use o helper script para computar e exportar dados indicadores no MetaTrader

Como primeiro passo devemos preparar os dados de teste MT4 - devemos calcular o indicador em um número de barras e salvar seus valores computados em um arquivo.

Para isso fornecemos uma simples EA que você pode usar - ela está localizada em {SQ}/custom_indicators/MetaTrader4/Experts/SqIndicatorValuesExportEA.mq4

 

Adicione este EA ao seu MetaTrader, modifique-o para computar e calcular o valor de saída de seu indicador e execute-o no MT4 StrategyTester em qualquer dado - para fazer um teste ideal ele deve ser executado em pelo menos 1000 barras.

 

Como o Envelopes tem dois amortecedores de saída, temos que rodá-lo duas vezes - uma para o amortecedor superior, outra para o inferior.

Aqui está um código modificado deste roteiro de exportação de ajuda que computa o indicador Envelopes:

//+------------------------------------------------------------------+
//| SQ_IndicatorValuesExportEA.mq4 |
//| |
//| EA para exportar valores de indicadores do MetaTrader
//| Saída para: /{Data folder}/tester/files/******.csv |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2019 StrategyQuant"
#property link "https://strategyquant.com"

string currentTime = "";
string lastTime = "";

//+------------------------------------------------------------------+

int start() {
   currentTime = TimeToStr(Time[1], TIME_DATE|TIME_MINUTES|TIME_SECONDS);
   if(currentTime == lastTime) {
      return(0);
   }
   
   double value;

   // altere o nome do arquivo abaixo
   string fileName = "Envelopes_14_0_0_0_0_0.1_superior.csv";

   int handle = FileOpen(fileName, FILE_READ | FILE_WRITE, ";");
   if(handle>0) {
      FileSeek(handle,0,SEEK_END);

      // aqui está o valor do indicador
      value = iEnvelopes(NULL, 0 , 14 , 0 , 0 , 0 , 0 , 0 , 0.1 , 1 , 1); //valor superior
      //value = iEnvelopes(NULL, 0 , 14 , 0 , 0 , 0 , 0 , 0.1 , 2 , 1); //valor inferior
      
      FileWrite(handle, TimeToStr(Time[1], TIME_DATE|TIME_MINUTES|TIME_SECONDS), Open[1], High[1], Low[1], Close[1], Volume[1], value);
      FileClose(handle);
   }

   lastTime = currentTime;
   return(0);
}

ele irá calcular o inicador de Envelopes no MT4 chamando seu método interno de iEnvelopes() com parâmetros apropriados.

Observe que os parâmetros podem ser configurados - você não precisa usar parâmetros padrão. É uma boa prática incutir valores de parâmetros também no nome do arquivo de dados de saída - como no nosso caso "Envelopes_14_0_0_0_0_0.1_upper.csv", para que saibamos que ele foi gerado com estes parâmetros.

Agora podemos executar este roteiro duas vezes no MT Tester:

Quando terminar deve criar um arquivo de dados com valores indicadores computados, bem como preços Abertos, Altos, Baixos, Fechados para cada barra. O arquivo será salvo em MetaTrader4 -> {Pasta de dados}/tester/files/Your_FILE_NAME.csv


Deveríamos ver dois arquivos ali:
Envelopes_14_0_0_0_0.1_upper.csv
Envelopes_14_0_0_0_0.1_lower.csv

 

Copiar os arquivos de dados computados para o local apropriado para que o SQ possa encontrá-los


Copie estes arquivos para uma pasta
{SQ instalação}/teste/indicadores/MetaTrader4

Crie esta pasta se ela não existir, o SQ Indicaotrs Tester procura por arquivos nesta pasta.

Agora temos o arquivo de dados preparado, vamos iniciar um teste em StrategyQuant.

 

Configurar e executar o teste indicador no SQ

Co to Code Editor e clique em Test indicators on the toolbar.

Abrirá o diálogo Indicator Tester, clique em Adicionar novo teste. Adicionar indicadores de Envelopes ao teste, tanto para a saída superior quanto para a inferior.

Você o verá na tabela como segue. O último pensamento que precisamos fazer é modificar o Nome do arquivo de testes de acordo com os nomes reais dos arquivos de dados de teste criados na etapa anterior, e opcionalmente também Parâmetros de testese você usou outros que não os padrões:

Quando estiver pronto clique em Início para executar os testes.

No caso ideal, os testes serão bem sucedidos e os valores computados no SQ corresponderão aos valores computados no MT4:

Se algo falhar, haverá diferenças entre os valores de SQ e MT4. Você pode clicar na mesagem das diferenças para vê-las na lista:

Se o teste falhar, primeiro verifique se os dados de teste gerados no MT4 estavam usando os mesmos parâmetros indicadores, pode haver um erro nisso.

Se os dados de teste estiverem corretos, então há algo errado com sua implementação do SQ de seu indicador - ele funciona de forma diferente de sua contraparte MT4 e deve ser corrigido.

 

Este artigo foi útil? O artigo foi útil O artigo não foi útil

Inscrever-se
Notificar de
0 Comentários
mais antigos
mais recentes Mais votado
Feedbacks embutidos
Ver todos os comentários

Postos relacionados