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

 

Este problema é ainda mais interessante. Eu construí uma simples EA baseada no código do correio acima. Também abre 5 negócios, cada um no mercado por 5 minutos, e depois fecha. Aqui está o código:

#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   static int test_ticket[2]={0,0};
   if(test_ticket[1]<5 && test_ticket[0]==0) {
      test_ticket[0]=OrderSend(_Symbol,OP_BUY,SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN),NormalizeDouble(Ask,_Digits),30,0.0,0.0,"test",33333,0,clrNONE);
      if(test_ticket[0]>0) test_ticket[1]++;
   }   
   if(OrderSelect(test_ticket[0],SELECT_BY_TICKET))
      if(OrderCloseTime()==0 && OrderOpenTime()+300<TimeCurrent())
         if(OrderClose(test_ticket[0],OrderLots(),NormalizeDouble(Bid,_Digits),30,clrNONE)) {
            printf("Test order closed, ticket #%d",test_ticket[0]);
            test_ticket[0]=0;
         }   
   
  }
//+------------------------------------------------------------------+

Passou a validação na primeira tentativa, mas não há negócios no NZDUSD. Por quê?


Mesmo que o validador configure depósito insuficiente para abertura com lote mínimo, o erro 134 aparecerá como na mensagem acima. Mas não há ofícios! Por quê?

Talvez o validador esteja funcionando mal ou haja uma explicação razoável?

 
Renat Akhtyamov:

e você coloca a resposta completa do validador aqui em primeiro lugar

E o que o faz pensar que o validador atribui as passagens de acordo com o princípio que você inventou?

para abrir 5 negócios, você precisa contar o número de negócios abertos, e não se preocupar com ingressos

Renat, é isso que eu acho que as transações são, dê uma olhada mais de perto. Você pode até mesmo executar meu código no testador. Há uma matriz de dois valores: test_ticket[0] - armazena o pedido do bilhete, test_ticket[1] - número de tentativas.

Ao alterar o número de tentativas na primeira condição, você pode abrir um número diferente de negócios

if(test_ticket[1]<5 && test_ticket[0]==0) {
 

Esta é a história sobre as seguintes tentativas com diferentes números de pedidos


E aqui, em uma das próximas tentativas, o validador realmente usa o lote mínimo, que conscientemente não pode abrir com um depósito de US$1. A questão é: por que não houve nenhuma negociação nas tentativas anteriores? E por que esta corrida utiliza um lote mínimo e depósito conscientemente errados que iniciam um erro de validação?

Vladimir Karputov:

...

Em resumo, o validador tem lidado até agora com sua tarefa principal: extrair do mercado o código incompleto.

Mmm...

E não é um tiro aleatório. Aqui estão as próximas três tentativas.


 

O erro no registro "Não há dinheiro para abrir uma transação de sucesso..." indica que você enviou uma ordem comercial, mas não verificou nada (ou nem tudo) completamente de antemão. O artigo fornece um algoritmo claro para verificação.


Lembre-se - o erro "não há dinheiro para abrir tal e tal negócio ...". - é 99% do erro na lógica do Expert Advisor. Faltam cheques (ou falta total deles). Isto é um sinal de compreensão insuficiente dos princípios de codificação.


Lembre-se: no mundo real, o depósito pode ser de $1, e a alavancagem nem sempre é de 1:100, e o lote mínimo pode ser 0,01 e 0,02 e 0,30 e 1,0, e um monte de outras coisas...

 
Vladimir Karputov:

O erro no registro "Não há dinheiro para abrir uma transação de sucesso..." indica que você enviou uma ordem comercial, mas não verificou nada (ou nem tudo) completamente de antemão. O artigo fornece um algoritmo claro para verificação.


Lembre-se - o erro "não há dinheiro para abrir comércio mais ou menos...". - é 99% do erro na lógica do Expert Advisor. Faltam cheques (ou falta total deles). Isto é um sinal de compreensão insuficiente dos princípios de codificação.


Lembre-se: no mundo real, o depósito pode ser de $1, e a alavancagem nem sempre é de 1:100, e o lote mínimo pode ser 0,01 e 0,02 e 0,30 e 1,0, e um monte de outras coisas...

Vladimir, você sentiu falta do elefante. O principal erro foi.

Posso responder em seu idioma e dar-lhe uma palestra.

 
Vladimir Karputov:

O erro no registro "Não há dinheiro para abrir uma transação de sucesso..." indica que você enviou uma ordem comercial, mas não verificou nada (ou nem tudo) completamente de antemão. O artigo fornece um algoritmo claro para verificação.


Lembre-se - o erro "não há dinheiro para abrir tal e tal negócio ...". - é 99% do erro na lógica do Expert Advisor. Faltam cheques (ou falta total deles). Isto é um sinal de compreensão insuficiente dos princípios de codificação.


Lembre-se: no mundo real, o depósito pode ser de $1, e a alavancagem nem sempre é de 1:100, e o lote mínimo pode ser 0,01 e 0,02 e 0,30 e 1,0, e um monte de outras coisas...

Vladimir, não entendo se você lê posts em geral, ou apenas escolhe fotos interessantes. Leia tudo novamente com cuidado ou pelo menos algumas vezes desde o início da página. E leia o código! Não quero nem me dar ao trabalho de explicar tudo isso a você!

 
Andrey Kaunov:

Não quero nem me dar ao trabalho de explicar tudo a você!

Andrew, ninguém quer repetir o que já foi escrito e mastigado.

 
Sim, mas o problema está aí. Talvez alguém deste site forte tente analisá-lo e verificar o validador. O simples código transparente sem parâmetros não faz negócio com NZDUSD e GBPUSD check às vezes. E se acrescentarmos algumas condições e não houver comércio de ouro também, então novamente receberemos erro denenhuma operação comercial e cheque perdido.
 
Andrey Kaunov:
Sim, mas o problema está aí. Talvez alguém deste site forte tente entender tudo da mesma forma e verificar o validador. O simples código transparente sem parâmetros não funciona em absoluto para NZDUSD e GBPUSD Check algumas vezes. E se acrescentarmos algumas condições e não houver comércio de ouro também, então novamente receberemos erro denenhuma operação comercial e cheque perdido.

Não confie no validador devolvendo um código de erro da lista de erros do servidor comercial. Sempre registre você mesmo a mensagem de erro. Leia atentamente o que está escrito no artigo que você conhece sobre a incapacidade de executar a ordem e o que você precisa fazer neste caso.

É bem possível que a ausência de uma mensagem de erro no log, por exemplo, o cálculo do tamanho do lote, seja a causa de erros de validação.

 
Andrey Kaunov:

Esta é a história sobre as seguintes tentativas com diferentes números de pedidos


E aqui, em uma das próximas tentativas, o validador realmente usa o lote mínimo, que conscientemente não pode abrir com um depósito de US$1. A questão é: por que não houve nenhuma negociação nas tentativas anteriores? E por que esta execução utiliza um lote mínimo e depósito conscientemente errados que iniciam um erro de validação?

Hmmm...

E não é um tiro aleatório. Aqui estão as próximas três tentativas.


Erro ao enviar uma ordem comercial 134 ...

O testador escreveu este erro? Se sim, esta é também uma das causas dos erros de validação. Você mesmo deve calcular a possibilidade de abrir uma posição e, se isso for impossível, escrever sua própria mensagem sobre a incapacidade de negociar com os parâmetros definidos no diário, em vez de enviar uma ordem intencionalmente incorreta ao servidor, confiando no terminal e no servidor para fazer tudo por você. Com tais ordens incorretas, você pode inundar o servidor e então ser banido com segurança do comércio automático. Isto é culpa sua, não do validador.

Razão: