Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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:
Pode também especificar campos mágicos e de comentários.
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?
...
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.
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.
2. analisarretcode (MqlTradeResult). A variável tem o valorTRADE_RETCODE_DONE.
Esta situação garante a execução efectiva de uma encomenda no servidor?
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?
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?
Posso perguntar-lhe quais as ligações que utiliza pessoalmente?
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.