Documentação

Aplicações

Last updated on 21. 3. 2024 by Mark Fric

Teste de novo indicador no SQ X vs dados da MT

Teste de novo indicador no SQ X vs dados da MT

we just created (or we are in the process of developing) our new indicator. How do we know that we implemented it correctly?

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.

 

Note – this article was a part of Envelopes indicator example, so it refers to the Envelopes indicator. But the description of Indicators testing is valid for any indicator implementation.

 

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 to export indicator values from MetaTrader |
//|                Output to: /{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;

   // change the file name below
   string fileName = "Envelopes_14_0_0_0_0.1_upper.csv";

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

      // here is the indicator value 
      value = iEnvelopes(NULL, 0 , 14 , 0 , 0 , 0 , 0.1 , 1 , 1); // upper value
      //value = iEnvelopes(NULL, 0 , 14 , 0 , 0 , 0 , 0.1 , 2 , 1); // lower value
      
      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

Assine
Notificação de
0 Comentários
Feedbacks em linha
Ver todos os comentários

Postos relacionados