Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 674

 
Leo59:

Não consigo obter algo para imprimir() no diário de bordo do testador. Como é que se faz?

Aqui está o código do OnInit() do Expert Advisor:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   SymbolSelect("EURJPY",true);
   Print(__FUNCTION__,", ",TimeToString(TimeCurrent()));
   SymbolSelect("USDJPY",true);
//---
   return(INIT_SUCCEEDED);
  }


Depois estabeleço um ponto de parada (passo 1) e faço o teste sobre o histórico (passo 2):

OnInit()

e no testador recebo o resultado:

2016.11.23 13:02:24.191 2016.06.13 00:00:00   OnInit, 2016.06.13 00:00
 

Vladimir Karputov:

Em seguida, estabeleço um ponto de parada (passo 1) e faço um teste de história (passo 2):

Estranhamente, este botão azul, para o qual aponta com o número "2", não está activo para mim. Poderá ser porque estou no MT4 ?
 
Mas, no entanto, se tal coisa for escrita:


Existem restrições ao funcionamento de algumas funções no testador de estratégias do terminal do cliente.

Funções Print() e PrintFormat()

Para aumentar o desempenho na optimização dos parâmetros EA, as funçõesPrint() ePrintFormat() não são executadas. A excepção é a utilização destas funções dentro do manipuladorOnInit(). Isto permite-nos facilitar a pesquisa de causas de erro quando ocorrem erros.


porque é que aimpressão() funciona dentro do manipuladorOnInit() não funciona como habitualmente ?

E em geral, sobre outras funções definidas pelo utilizador no init() no modo de optimização ?
 
Leo59:
Estranhamente, o meu botão azul, para o qual aponta com "2", não está activo. Poderá ser porque estou no MT4 ?

Sim, é por isso que posso testar livremente qualquer EA na HISTÓRIA, ou seja, escolher um período de tempo, digamos de 2016.06.20 a 2016.11.11 e discretamente, passo a passo, depurar e observar mudanças nas variáveis, enquanto não se pode fazer isso.

Então vale a pena continuar sentado num terminal antigo cujo apoio terminou? Ou talvez devesse usar o moderno MetaTrader 5? De facto, MetaTrader 5 já tem hedging:A plataforma de negociação MetaTrader 5 tem hedging.

 
Vladimir Karputov:

Sim, é por isso que posso testar livremente qualquer EA na HISTÓRIA, ou seja, escolher um período de tempo, digamos de 2016.06.20 a 2016.11.11 e discretamente, passo a passo, depurar e observar mudanças nas variáveis, enquanto não se pode fazer isso.

Então vale a pena continuar sentado num terminal antigo cujo apoio terminou? Ou talvez devesse usar o moderno MetaTrader 5? Afinal, o MetaTrader 5 já tem cobertura:A plataforma de negociação MetaTrader 5 tem cobertura.

Porque é que posso efectuar a depuração em MT4 e observar as mudanças de variáveis passo a passo? O que é que estou a fazer mal?
 
Artyom Trishkin:
Porque posso depurar no MT4, e calmamente, passo a passo, depurar e ver as variáveis mudarem? O que é que estou a fazer mal?
O que está a fazer mal: ler muito rapidamente ou saltar deliberadamente o texto.
 
Caro!!!!

Pergunta substantiva:

porque é que a funçãoPrint() dentro do manipuladorOnInit() não funciona como habitualmente? E em geral, o que dizer de outras funções personalizadas no init() no modo de optimização ?

 
Leo59:
Caro!!!!

Pergunta substantiva:

porque é que a funçãoPrint() dentro do manipuladorOnInit() não funciona como habitualmente? E em geral, o que dizer de outras funções definidas pelo utilizador no init() no modo de optimização ?

Tudo é explicado acima. Funcionou e funciona. Mostrei-vos um exemplo.

Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos

Perguntas de principiantes

Vladimir Karputov, 2016.11.23 12:07

Aqui está o código de OnInit() da EA:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   SymbolSelect("EURJPY",true);
   Print(__FUNCTION__,", ",TimeToString(TimeCurrent()));
   SymbolSelect("USDJPY",true);
//---
   return(INIT_SUCCEEDED);
  }


Coloco ainda um ponto de ruptura (passo 1) e começo a testar a história (passo 2):

OnInit()

E no testador recebo o resultado:

2016.11.23 13:02:24.191 2016.06.13 00:00:00   OnInit, 2016.06.13 00:00

 
Vladimir Karputov:

O acima exposto já foi explicado. Funcionou e funciona. E eu dei-vos um exemplo.


Vladimir, no seu exemplo com ponto de parada e teste de funcionamento do MetaEditor, e não do testador no terminal, não é padrão.

Permitam-me que me repita:

1. Porquê a funçãoPrint() dentro doOnInit() não funciona como habitualmente?

2. Como é que os outros utilizadores funcionam no init() em modo de optimização ?

 
Leo59:
Vladimir, no seu exemplo com o ponto de ruptura e o início dos testes a partir do MetaEditor, e não a partir do testador no terminal não é padrão.

Mais uma vez:

1. Porque é que a funçãoPrint() dentro do manipuladorOnInit() não funciona como habitualmente?

2. Como é que os outros utilizadores funcionam no init() em modo de optimização ?

Tenho a sensação de que nunca ligou o terminal.

Aqui está o código do OnInit() do Expert Advisor:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   SymbolSelect("EURJPY",true);
   Print(__FUNCTION__,", ",TimeToString(TimeCurrent()));
   SymbolSelect("USDJPY",true);
//---
   return(INIT_SUCCEEDED);
  }

Passo a passo. Passo Um - iniciar o testador a partir do terminal (uma única passagem), testando o histórico, com visualização:

Passo 1

No testador de estratégias, obtemos os seguintes resultados:

Passo 2