Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1853

 
Vitaly Muzichenko #:

Ela fecha sem interrupção.

Após fechar um, verificar o que a função OrderClose retornou, se verdadeiro - continuar, se falso - lidar com erro, erro crítico - sair, não crítico (escorregamento) - continuar.

Se o negócio não for uma cozinha completa, 15-20 EAs fecham rapidamente, em torno de 2-3 segundos, caso contrário, até 15 segundos. Editar, houve casos de até 2 minutos.

Se for mt5, ele fecha quase instantaneamente.

Se houver algum erro, você ainda precisará enviar um pedido para encerrar este pedido após um certo intervalo. Porque se ficar pendente para sempre, já será um mau robô. Com tal ordem (posição), é possível até mesmo perder o depósito, se você o segurar por um longo tempo.

 
Mihail Matkovskij #:

Se houver algum erro, você ainda precisará enviar um pedido para encerrar essa ordem após um certo intervalo. Se ele ficar lá para sempre, será um robô ruim. Devido a esta ordem (posição), o depósito pode até mesmo ser perdido se for mantido por um longo tempo.

Precisamos lidar com isso de forma adequada. Se for crítico, não vale a pena bater no servidor.

 
Vitaly Muzichenko #:

Tem que ser tratado adequadamente. Se for crítico, não vale a pena bater no servidor.

É claro que não adianta. Mas após um certo intervalo, você deve tentar fechar esta ordem (posição). A razão é esta. Em primeiro lugar, a posição aberta não pode ficar ali indefinidamente. Em segundo lugar, a posição em si não pode ser fechada para sempre. Mais cedo ou mais tarde, o servidor aceitará um pedido de fechamento da ordem(para sair da posição). E se você não fizer nada, o resultado será como mencionei acima. O depósito pode entrar em levantamento severo ou perder seu valor.

 
Mihail Matkovskij #:

É claro que não adianta. Mas após um certo intervalo ainda vale a pena tentar fechar esta ordem (posição). Porque. Em primeiro lugar, a posição aberta não pode ficar pendurada para sempre. Em segundo lugar, a posição em si não pode ser fechada para sempre. Mais cedo ou mais tarde, o servidor aceitará um pedido de fechamento da ordem(para sair da posição). E se você não fizer nada, o resultado será como mencionei acima. O depósito pode cair em um grande levantamento ou pode ser esgotado.

Foi pulado recentemente, a empresa de corretagem desativou o auto-negociação no servidor. Foi há 1 minuto e depois foi cortado.

Ainda vamos tentar fechá-lo?

 
Vitaly Muzichenko #:

Foi mencionado recentemente que o CD desativou a capacidade de comércio automático no servidor. Foi há 1 minuto e depois eles o desligaram.

Ainda vamos tentar fechar?

A mensagem é correta quando há erros críticos nas posições de fechamento.

 
Vitaly Muzichenko #:

Foi mencionado recentemente que o CD desativou a capacidade de comércio automático no servidor. Foi há 1 minuto e depois eles o desligaram.

Ainda vai tentar desligá-lo?

Bem, então podemos chamar

AccountInfoInteger(ACCOUNT_TRADE_EXPERT)

E também

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)

И

TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)

Só por precaução. E não fazer nada com o resultado correspondente de qualquer ou todas as funções. E lidar com os erros resultantes do fechamento sem sucesso de acordo.

Em qualquer caso, garantiremos que o robô não será comercializado enquanto pelo menos uma das funções o proibir.

Документация по MQL5: Программы MQL5 / Разрешение на торговлю
Документация по MQL5: Программы MQL5 / Разрешение на торговлю
  • www.mql5.com
Разрешение на торговлю - Программы MQL5 - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Mihail Matkovskij #:

E tratar os erros como resultado de um fechamento falhado de acordo.

Só não sei, se a OrderSend for chamada e o servidor tiver desativado o comércio, aOrderSend retornará o pedido falso ou o pedido será enviado primeiro ao servidor e então ele retornará uma resposta? Se este último, então a OrderSend retornará verdadeiro. E então você definitivamente precisa adicionar uma função () para bloquear chamadas de funçãoOrderSend. E se o primeiro, então o pedido não será sequer enviado para a fila, porque a OrderSend retornou falso. Faz sentido?

 
Mihail Matkovskij #:

Só não sei, se a OrderSend for chamada e o servidor tiver desativado o comércio, aOrderSend retornará o pedido falso ou o pedido será enviado primeiro ao servidor e então ele retornará uma resposta? Se este último, então a OrderSend retornará verdadeiro. E então você definitivamente precisa adicionar uma função () para bloquear chamadas de funçãoOrderSend. E se o primeiro, então o pedido não será sequer enviado para a fila, porque a OrderSend retornou falso. Faz sentido?

OrderSend devolve um bilhete quando bem sucedido :)

Provavelmente irei ao ramo dos novatos

 
Vitaly Muzichenko #:

OrderSend devolve um bilhete sobre o sucesso :)

Provavelmente irei para o ramo de novatos

A OrderSend in MQL4 devolve um bilhete. E na MQL5 é um bool. Estou acostumado a considerar as ficçõesMQL5.Eu esqueci um pouco da MQL4 (porque estou acostumado a portar aplicações da MQL5 para a MQL4). Na MQL5, o bool OrderSend abre e fecha posições, assim como cria/apaga pedidos. A MQL5 tem funções para pedidos, acordos e posições. Na MQL4, int OrderSend é para entrada, e bool OrderClose é para saída. Há também o bool OrderDelete para pedidos pendentes. E naMQL4 somente as ordens são divididas em ordens de mercado e ordens pendentes. Você me fez lembrar qual é a diferença entre estes dois idiomas. :)

Portanto, não se pode saber tudo. E é muito fácil ficar confuso.

 
Tretyakov Rostyslav #:

Se ocorrer uma condição de fechamento

//-------------------------------------------------------------------+  Команда на закрытие сетки ордеров
   if((CountTrade(0) > 1 && CalculiteProfit() >= 0 && OrderGroupCloseSignal()==0)||(CountTrade(1) > 1 && CalculiteProfit() >= 0 && OrderGroupCloseSignal()==1))
     {
      flag_close=1;
     }

Aqui a condição é CalculiteProfit() >= 0. Neste caso, podemos calcular a que preço o lucro necessário será para estas posições e definir ali o lucro ou stop loss, dependendo dos preços e posições. E como as posições de Compra e Venda são fechadas a preços diferentes, isto só é apropriado se as posições forem do mesmo tipo.

Razão: