Erros, bugs, perguntas - página 2106

 
Andrey Khatimlianskii:

Um timeout indica que a resposta do servidor não foi recebida dentro de um prazo razoável. Mas não o resultado da encomenda.


Olá.

Obrigado.

Neste caso: quando o tempo acaba - é preciso esperar que um novo bilhete apareça na história das trocas, se um novo bilhete aparecer - então a troca ou ordem está aberta.

A propósito, isto só acontece na MQL5 VPS

Não é um problema num servidor doméstico.

Vou pensar no assunto...


Vou pensar no assunto.

Пользовательский интерфейс - Начало работы - MetaTrader 5
Пользовательский интерфейс - Начало работы - MetaTrader 5
  • www.metatrader5.com
Интерфейс платформы предоставляет доступ ко всем инструментам, необходимым для торговли на финансовых рынках. Он включает в себя различные меню, панели инструментов и служебные окна. Главное меню В главном меню собраны практически все команды и функции, которые можно выполнять в торговой платформе. Оно позволяет работать с графиками...
 
Vladislav Andruschenko:

Neste caso: quando se sai - é preciso esperar que um novo bilhete apareça na história do comércio, se aparecer um novo bilhete - então o comércio ou a ordem está aberta.

Se uma ordem de comércio foi enviada via OrderSend síncrona, então não há maneira de sair da execução OrderSend. Tudo se parece com um bug de terminal VPS.
 
fxsaber:
Se uma ordem de comércio foi enviada através de uma OrderSend sincronizada, então não há maneira de sair da execução OrderSend. Tudo se parece com um bug de terminal VPS.


através dele.

O problema pode, em princípio, ser resolvido, após receber um erro de timeout para executar a função de procura de novos bilhetes na história.

Caso contrário, a EA apenas envia um novo pedido e novamente recebe um erro de timeout, sem receber um bilhete.

Obrigado.

 
Vladislav Andruschenko:

O problema pode, em princípio, ser resolvido, após receber um erro de timeout, executar a função de recuperação de novos bilhetes na história.

Tem de o escrever em SD. Caso contrário, após cada EncomendaEnviar irá esperar três minutos por um tempo limite, obtendo os riscos comerciais correspondentes.

 
fxsaber:

É preciso escrever para o CD. Caso contrário, após cada EncomendaEnviar irá esperar três minutos por um tempo limite e obter os riscos comerciais correspondentes.


E assim o fiz.

Este erro acontece 1 em 1000, e até agora só aconteceu em VPS da MQL...
 
Vladislav Andruschenko:

em conformidade, o Expert Advisor recebe o erro 10012 e tenta colocar a encomenda novamente.

Eu privaria a EA do estatuto de Vendedor durante um ano para tal código no Mercado
 
A100:
Eu privar-vos-ia do estatuto de Vendedor durante um ano para tal código no Mercado.

Esta é a primeira vez que encontro tal erro.

Não tenho tal erro no meu código. nenhum bilhete significa que uma troca não foi aberta. significa que a EA está a tentar abrir uma troca novamente.
 
Vladislav Andruschenko:

O problema pode, em princípio, ser resolvido, após receber um erro de timeout, executar a função para tentar novos bilhetes na história.

A história não tem nada a ver com isso. OrderSend envia a encomenda, e esta aparece no Terminal com o status ORDER_STATE_STARTED.

Mas isto não significa que a OrderSend tenha terminado a execução. A OrderSend continuará a ser executada até que o estado da encomenda seja alterado.

Portanto, se vir um tempo limite, é 99% certo que o estado da encomenda é ORDER_STATE_STARTED(eu vejo-o, mas não está claro quando tirei a imagem do ecrã).

Além disso, o mesmo timeout pode acontecer sem o seu OrderSend - quando o servidor MT5 faz ele próprio o OrderSend (TP/SL/MC/Expiration). Mas não o verá no Terminal.

 
Vladislav Andruschenko:
Não tenho tal erro no meu código. nenhum bilhete - significa que o comércio não abriu. significa que o Conselheiro Especialista está a tentar abrir novamente o comércio.

Esta é uma lógica incorrecta. Depois de OrderSend falhar e OrderSend ser bem sucedida, o actual ambiente comercial tem de ser completamente relido. Esta regra deve estar sempre em vigor.

Sobre os códigos de retorno. Não os analiso nos meus EAs. Penso que a lógica comercial não deve depender deles.

 
fxsaber:

Esta é uma lógica incorrecta. Depois de OrderSend falhar e OrderSend ser bem sucedida, o actual ambiente comercial tem de ser lido completamente de novo. Esta regra deve estar sempre em vigor.


Concordo. deve ser alterado.

Razão: