OrderSend() perguntas - página 7

 

Os campos a serem preenchidos são diferentes de

SYMBOL_TRADE_EXECUTION_EXCHANGE

Execução de câmbio

diferem dos campos em

SYMBOL_TRADE_EXECUTION_MARKET

Execução de ordens no mercado

???

a ajuda tem um exemplo apenas para o mercado

Execução do Mercado

Uma ordem de negociação para abrir uma posição no modo Execução do Mercado (Market Execution mode). Requer a especificação de 5 campos:

  • acção
  • símbolo
  • volume
  • tipo
  • type_filling

Pode também especificar campos mágicos e de comentários.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

Li a documentação, procurei no fórum... Completamente confuso. Por favor, se não se importa, explique-me em N+1 vezes.

1. estou a enviar um pedido comercial usandoOrderSend. Esta função volta a ser verdadeira.

Analisamos oretcode (MqlTradeResult). A variável tem o valorTRADE_RETCODE_DONE.

Esta situação garante a execução efectiva da encomenda no servidor? Ou ainda há necessidade de efectuar alguns controlos na OnTrade, OnTradeTransaction? Então de que serve analisar oretcode se este não tem qualquer utilidade?

Isto é, a necessidade de OnTrade e OnTradeTransaction quando se usaOrderSendAsync() é clara para mim.

São necessários quando se utiliza a funçãoOrderSend()? Aguarda incondicionalmente a execução/rejeição da ordem no servidor antes de enviar o código subsequente ao Expert Advisor?

 
voix_kas:

...

São eles necessários quando se utilizaOrderSend()? Aguarda incondicionalmente a execução/rejeição da ordem no servidor antes de enviar a execução do código EA subsequente?

Se não estou enganado, OrderSend não espera pela execução da ordem, apenas informa que a ordem estava correcta e foi enviada para o servidor.

O valor retornado é

Se a verificação básica das estruturas (verificação ponteiro) for bem sucedida, retorna verdadeiro - não indica a execução bem sucedida da operação comercial. Para obter uma descrição mais detalhada do resultado da execução da função, analisar os campos da estrutura de resultados.
 
voix_kas: Envio um pedido comercial usandoOrderSend. Esta função volta a ser verdadeira.

2. analisarretcode (MqlTradeResult). A variável tem o valorTRADE_RETCODE_DONE.

Esta situação garante a execução efectiva de uma encomenda no servidor?

Retcode pode devolver algo que não seja RETCODE_DONE :). Mas se um servidor de comércio retorna exactamenteTRADE_RETCODE_DONE (ordem executada), então porque outra razão devo verificar? Na minha humilde opinião, nesta situação as funções da OnTrade, OnTradeTransaction iriam simplesmente duplicar o código retcode.
 
fyords:

Se não estou enganado, OrderSend não espera que a ordem seja executada, mas apenas informa que a ordem foi verdadeira e enviada para o servidor da fila.

Nesse caso, só "verdade" teria sido suficiente. Mas os criadores forneceram um retcode que é suposto armazenaro "Trade serverreturn code".

Isto é, após a função OrderSend() funcionar , vejoTRADE_RETCODE_DONE na segunda linha de códigoe tento alterar, por exemplo, uma posição recém-aberta (que logicamente deveria existir) na terceira linha de código. No entanto, PositionSelect retorna falso. A iteração é repetida. Como resultado, uma posição dupla é aberta por engano.

Como nos podemos proteger contra esta situação?

1. Ser guiado apenas por código retcode e "esquecer" sobre aOnTrade?

2. Guiado apenas pelaOnTrade e esquecer o código retcode?

 
Yedelkin:
retcode pode retornar não só RETCODE_DONE :) Mas se um servidor de comércio retorna exactamenteTRADE_RETCODE_DONE (ordem executada), então porque devo verificar outra coisa? Na minha humilde opinião, nesta situação as funções da OnTrade, OnTradeTransaction iriam simplesmente duplicar o código retcode.

A julgar pela lista de"Trading server return codes", existe apenas uma incerteza possível no modo de execução de pedidos de mercado:TRADE_RETCODE_LOCKED. E aqui, talvez, não possamos passar sem a OnTrade.

Deixe-me perguntar-lhe qual a ligação que utiliza pessoalmente?

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера - Документация по MQL5
 
voix_kas: A julgar pela lista de"Trade server return codes", existe apenas uma incerteza possível no modo de execução de pedidos de mercado:TRADE_RETCODE_LOCKED. E aqui, talvez, não possamos passar sem a OnTrade.

Posso perguntar-lhe quais as ligações que utiliza pessoalmente?

Há também o "Colocado". São eles (Colocados/Desaparecidos) que verifico do ponto de vista do envio bem sucedido de pedidos.
 
Pode citar um código específico?
 
voix_kas: Pode citar um código específico?
Não, não posso dar-lhe um código específico. Em primeiro lugar, tem sido selado nas aulas desde há um ano, e em segundo lugar, tem de o procurar...Perguntou - Que tipo de encadernador estou a usar? - Respondi com sinceridade.
 
voix_kas:

Como se pode segurar contra tal situação?

1. Usar apenas código retcode e "esquecer" sobre aOnTrade?

2. SóOnTrade e não usar retcode?

É mais fiável seguir a OnTrade, mas também pode passar sem ela - analisar a transacção concluída (ResultDeal()).

Haverá em breve um artigo sobre este mesmo assunto.