Preocupado com o erro, não há operações comerciais - página 7

 

Razoável, Artyom. Não há realmente nenhum erro de impressão neste código rudimentar. Definitivamente, vou adicioná-lo e verificá-lo novamente. Mas nisso, a EA principal tem mensagens para cada erro.

E na segunda pergunta, quando o validador estabeleceo lote mínimo de 0,2 no ambiente informativo e tenta abrir um comércio com um depósito inicial de US$1. É evidente que nenhum cheque ou impressão será aprovado neste teste. É garantido terminar com o erro 134 se nada for verificado como no código acima. Ou "no trade" se você verificar tudo e não enviar a ordem de abertura para o servidor.

Qual é a saída para este círculo vicioso?

Por que não há negócios no NZDUSD SEMPRE? Verifiquei os dois EAs. Enviei-a ao meu colega para verificá-la por causa da pureza do experimento. Ele também não tinha negócios. Não importava se o teste era bem-sucedido ou não. Não há restrições para a negociação deste par, como você pode ver pelo código.

Não sou só eu e minha EA. Nenhuma negociação no NZDUSD por qualquer pessoa que tenha postado relatório de validador neste e nos fios vizinhos.
 
Andrey Kaunov:

Razoável, Artyom. Não há realmente nenhum erro de impressão neste código rudimentar. Definitivamente, vou adicioná-lo e verificá-lo novamente. Mas nisso, a EA principal tem mensagens para cada erro.

E na segunda pergunta, quando o validador estabeleceo lote mínimo de 0,2 no ambiente informativo e tenta abrir um comércio com um depósito inicial de US$1. É evidente que nenhum cheque ou impressão será aprovado neste teste. É garantido terminar com o erro 134 se nada for verificado como no código acima. Ou "no trade" se você verificar tudo e não enviar a ordem de abertura para o servidor.

Qual é a saída para este círculo vicioso?

Por que não há negócios no NZDUSD SEMPRE? Verifiquei os dois EAs. Enviei-a ao meu colega para verificá-la por causa da pureza do experimento. Ele também não tinha negócios. Não importava se o teste era bem-sucedido ou não. Não há restrições para a negociação deste par, como você pode ver pelo código.

Não sou só eu e minha EA. Nenhuma negociação no NZDUSD por qualquer pessoa que tenha postado o relatório de validador neste e nos fios vizinhos.

Você mesmo o disse:

verifique tudo e não envie um pedido para o servidor.

Você mesmo tem que fazer isso em vez de esperar pelo inevitável erro do servidor. E certifique-se de informar ao log sobre a impossibilidade de enviar o pedido ao servidor por tal e tal motivo.

 
Artyom Trishkin:

...

Você mesmo tem que fazer isso, não esperar pelo inevitável erro do servidor. E certifique-se de informar ao diário de bordo que o pedido não pode ser enviado ao servidor por tal e tal motivo.

É assim que eu não passo o cheque, Artyom. E após uma hora de verificação, recebo um relatório que já pode ser emoldurado:

E quanto à segunda pergunta, sobre o NZDUSD? Talvez seja só isso? Há sempre negócios no EURUSD, mas o validador parece tropeçar no NZDUSD. Às vezes ele escorrega mais, depois passa no teste:

Mas, na maioria dos casos, ele congela e gera um erro de validação. Verifique este NZDUSD, eu acho que é o problema.

 
Andrey Kaunov:

Então eu não passo no teste, Artyom. E depois de uma hora de verificação, recebo um relatório que já posso enquadrar:

isso é mais do que suficiente para consertar tudo em terra.

os relatórios de erro do validador costumavam ser muito mais modestos

execute o testador de estratégia no NZDUSD H1 e veja o que você obtém no registro

o mesmo com GBPUSD M30

 

Renat, isto é o que, naquele código rudimentar, pode não funcionar. Em meu testador, ele funciona em qualquer par. Aqui eu o atualizei um pouco. Verifique você mesmo, talvez eu esteja perdendo algo...

#property version   "1.00"
#property strict

int test_ticket[2]={0,0};
double   gl_lots,
         gl_ask,
         gl_bid;
string   gl_comm;         
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit() {
//---

//---
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {
//---

}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick() {
   gl_lots=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   gl_ask=NormalizeDouble(Ask,_Digits);
   gl_bid=NormalizeDouble(Bid,_Digits);
   gl_comm="test";
//---
   if(AccountFreeMarginCheck(_Symbol,OP_BUY,gl_lots)<=0 || GetLastError()==134) {
      printf("Not enough money for the minimum lot: %.4f",gl_lots); 
      ExpertRemove();
   }
   if(test_ticket[1]<8 && test_ticket[0]==0) {
      test_ticket[0]=OrderSend((StringCompare(_Symbol,"NZDUSD")==0?"NZDUSD":_Symbol),OP_BUY,gl_lots,gl_ask,30,0.0,0.0,gl_comm,33333,0,clrNONE);
      if(test_ticket[0]>0) test_ticket[1]++;
   }   
   if(test_ticket[0]>0)
      if(OrderSelect(test_ticket[0],SELECT_BY_TICKET)) {
         if(OrderCloseTime()==0 && OrderOpenTime()+300<TimeCurrent())
            if(OrderClose(test_ticket[0],OrderLots(),gl_bid,30,clrNONE)) {
               printf("Test order closed, ticket #%d",test_ticket[0]);
               test_ticket[0]=0;
            }   
      }
}
//+------------------------------------------------------------------+

Eu ainda não tenho negócios no NZDUSD, apesar de todos os meus medos:

Mas agora o validador não vai mostrar erro 134 e não vai mostrar que eu testei com 0,2 lotes a $1 depósito inicial

 
Andrey Kaunov:

Renat, isto é o que, naquele código rudimentar, pode não funcionar. Em meu testador, ele funciona em qualquer par. Por isso, atualizei um pouco:

E ainda não há negócios no NZDUSD, pelo amor de Deus:

Execute-o em um testador normal, pode haver erros no registro
 

Qual é o objetivo, Renat. Aí está.



 
Andrey Kaunov:

Renat, isto é o que, naquele código rudimentar, pode não funcionar. Em meu testador, ele funciona em qualquer par. Aqui eu o atualizei um pouco. Verifique você mesmo, talvez eu esteja perdendo algo...

Eu ainda não tenho negócios no NZDUSD, apesar de todos os meus medos:

Mas agora o validador não mostrará erro 134 e não mostrará que eu o testei com 0,2 lotes no depósito inicial de US$1.

O Expert Advisor não pode ser descarregado.

 
Artyom Trishkin:

O especialista não pode ser descarregado.

Artyom, foi exatamente o mesmo sem descarregar. Não se trata do Expert, trata-se do NZDUSD. Preste atenção à essência, não às especificidades!!!

Descarregamento para não obter o erro de exceder o tamanho do arquivo de registro.
 
Andrey Kaunov:

Artyom, era exatamente o mesmo sem o upload. Não se trata da EA, trata-se do NZDUSD. Preste atenção à essência, não às especificidades!!!

O validador passa através dos parâmetros. Quando a primeira combinação é encontrada sem nenhuma negociação, ela descarrega o Expert Advisor. É isso aí. Mais testes são inúteis.

A essência da questão é que você não permite que o validador trabalhe com o Consultor Especialista.

Os testes são aprovados, mesmo que não haja comércio em alguns dos símbolos. O principal é que se uma operação comercial não puder ser realizada, o Consultor Especialista emitirá uma entrada de registro sobre ela e continuará trabalhando.
Você vê, você está fazendo um programa para as pessoas, não um validador. Por que você precisa de um programa em seu mercado que não lide com erros, mas simplesmente os apague do gráfico? Você mesmo compraria um milagre assim?

Razão: