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
Tenho-o implementado da mesma forma, apenas através de funções.
Vejo. O seu código é semelhante ao do MK - entre OrderCheck e OrderSend existe uma camada de manipulação de erros pelo utilizador.
Tenho-o implementado desta forma, apenas através de funções.
OrderCheck está implícito e necessariamente verificado dentro de OrderSend.
Assim, se a encomenda não for preenchida correctamente, a resposta será devolvida imediatamente sem a enviar de volta para o servidor.
Veja o que o manual diz sobre isto:
Primeira selecção: vemos que a função é para transacções comerciais e nenhuma menção de cheques.
Bem, se eu disser que há verificações, então é verdade.
Nenhuma encomenda sai do terminal sem verificações rigorosas.
Segundo destaque: vemos que as verificações são efectuadas no servidor e os programadores recomendam a utilização de OrderCheck() para verificar o pedido antes de o enviar para o servidor. Mais uma vez, não há menção de que OrderSend() efectua qualquer validação.
Recomendamos especificamente que os comerciantes tenham a oportunidade de descobrir antecipadamente se a encomenda é preenchida correctamente, e tomar as medidas apropriadas.
Quem quiser - pode pré-verificar. Quem não o desejar, verificaremos e devolveremos respostas semelhantes para eles de qualquer forma.
O único local onde é mencionado que a verificação antes do envio do pedido é "Em caso de verificação básica bem sucedida das estruturas (verificação pontual) ....". Mas a verificação de indicações e verificação dos valores dos campos da estrutura de pedidos para erros não é a mesma coisa. E a recomendação dos criadores de utilizar a função OrderCheck() é uma prova indirecta de que OrderSend() não efectua uma verdadeira verificação de erros antes de enviar um pedido ao servidor. Caso contrário, porque devemos fazer "oiled": OrderSend() verifica primeiro, e depois a mesma verificação deve ser efectuada por OrderCheck() novamente?
Assim, a partir da referência segue-se sem ambiguidade que a verificação é realizada apenas no servidor!
Ninguém perderá um fluxo errado ou excessivo de pedidos para o servidor.
A lógica básica é suficiente para compreender isto. E vamos expandir a documentação.
Não o tem. Todos os erros são tratados pela lógica empresarial.
Eu tenho um. A lógica empresarial trata de eventos relacionados com a lógica empresarial (por exemplo, falha na colocação de encomendas), mas todo o resto (por exemplo, atraso na resposta do servidor) - um modelo universal, com base no qual qualquer perito pode ser implementado.
Mas o MT5 é muitas vezes mais complicado em termos de tratamento de códigos de retorno + assíncrono.
É disso que estamos a falar, como já escrevi anteriormente, e não há nenhuma informação sobre este assunto. E há anos que os MKs tentam de todas as formas dissociar-se da sua provisão. Isto é o que escrevi - os revendedores beneficiam de um produto onde há pontos que levam a fugas, ou seja, para a MQ é um factor de aumento das vendas. Infelizmente, encontramo-nos num mercado onde os concorrentes (nós e MQ), não os companheiros.
Está a pedir o impossível de um invólucro. A biblioteca padrão não é lógica empresarial. É um invólucro "sobre" as funções do terminal. Um invólucro sobre o recheio do rebuçado.
Então, há pouco sentido numa tal estruturação.
Tal como a função Imprimir não pode garantir espaço livre no disco. E erros de registo. É necessário utilizar outras funções para o tratamento de erros e elas são específicas para cada caso.
Nem mesmo o invólucro certo pode garantir tudo, mas pode muitas coisas relacionadas com funções relacionadas.
Já foi escrito mais do que uma vez sobre assuntos específicos. Se a MQ não for capaz de fornecer uma solução pronta, deixe-os pelo menos fazer um manual sobre manipulação de erros e códigos de retorno. Desbloqueado de todas as maneiras possíveis. Na documentação para 4 isto estava em parte presente (por exemplo, esperar 30 segundos em tal caso), em parte os utilizadores identificaram por experiência o tratamento de situações não documentadas. Para 5 não há absolutamente nada. E como existe, ninguém o utilizará.
Bem, se é assim que MQ responde porque a infra-estrutura comercial simplesmente criada não o permite em princípio, então o que posso dizer - é um fracasso completo de todo o projecto MT5, dado que há uma massa incrível de outros cardumes também.
Se quiser, pode percorrer cada código de retorno e ver as principais situações possíveis.
Fá-lo-ei de bom grado com um Expert Advisor MQL5 tão experiente como você. Aguardaremos pelo tempo e necessidade. Graças a Deus ainda tenho 4, o que é muito mais confortável em muitos aspectos.
-Alexey-:
uma solução já feita, pelo menos um guia para o tratamento de erros e códigos de retorno
que código causa problemas de processamento?
Código
Identificador
Descrição
10004
TRADE_RETCODE_REQUOTE
Requote
10006
TRADE_RETCODE_REJECT
Pedido rejeitado
10007
TRADE_RETCODE_CANCEL
Pedido cancelado pelo comerciante
10008
TRADE_RETCODE_PLACED
Encomenda efectuada
10009
TRADE_RETCODE_DONE
Ordem executada
10010
TRADE_RETCODE_DONE_PARTIAL
Requisição parcialmente executada
10011
TRADE_RETCODE_ERROR
Pedido de erro de processamento
10012
TRADE_RETCODE_TIMEOUT
Pedido cancelado devido à expiração do tempo
10013
TRADE_RETCODE_INVALID
Pedido incorrecto
10014
TRADE_RETCODE_INVALID_VOLUME_INVALID
Volume incorrecto no pedido
10015
TRADE_RETCODE_INVALID_PRICE
Preço incorrecto no pedido
10016
TRADE_RETCODE_INVALID_STOPS
Paragens incorrectas no pedido
10017
TRADE_RETCODE_TRADE_DISABLED
Comércio proibido
10018
TRADE_RETCODE_MARKET_CLOSED
O mercado está fechado
10019
TRADE_RETCODE_NO_MONEY
Insuficiência de fundos para a execução do pedido
10020
TROCA_DE_PREÇO_DE_CÓDIGO_PREÇO
Preços alterados
10021
TRADE_RETCODE_PRICE_OFF
Sem orçamento para processar o pedido
10022
TRADE_RETCODE_INVALID_EXPIRATION
Data de expiração inválida no pedido
10023
TRADE_RETCODE_ORDER_CHANGE
Estado do pedido alterado
10024
TRADE_RETCODE_TOO_MANY_REQUESTS
Pedidos demasiado frequentes
10025
TRADE_RETCODE_NO_CHANGES
Nenhuma alteração no pedido
10026
TRADE_RETCODE_SERVER_DISABLES_AT
Auto-trading negado pelo servidor
10027
TRADE_RETCODE_CLIENT_DISABLES_AT
Autotrading proibido pelo terminal do cliente
10028
TRADE_RETCODE_LOCKED
Pedido bloqueado para processamento
10029
TRADE_RETCODE_FROZEN
Ordem ou posição congelada
10030
TRADE_RETCODE_INVALID_FILL
O tipo de ordem de saldo não suportado é indicado
10031
TRADE_RETCODE_CONNECTION
Sem ligação ao servidor comercial
10032
SÓ_REALIDADE_COMERCIAL
A operação é permitida apenas para contas reais
10033
TRADE_RETCODE_LIMIT_ORDERS
Limite do número de ordens pendentes alcançadas
10034
TRADE_RETCODE_LIMIT_VOLUME_LIMIT_VOLUME ALCANÇADO
Atingido o limite de volume de encomendas e posições para este símbolo
Por exemplo, 10004. Onde está escrito o que fazer? E havia pelo menos algo na documentação quádrupla:
Можно без задержки обновить данные при помощи функции RefreshRates и повторить попытку. Если ошибка не исчезает, необходимо прекратить все попытки торговых операций и изменить логику программы.
que código levanta questões de processamento?
10006 (que razão é rejeitada, que outras razões poderiam existir que não estão indicadas nos outros códigos?)
10011, 10013, 10028
10006 (que razão é rejeitada, que outras razões poderiam existir que não estão indicadas nos outros códigos?)
10011, 10013, 10028
Colegas, já fartos de procurar a verdade. O tema é semelhante ao que eu preciso, por isso estou a escrever aqui, por favor ajudem-me!
Coloco a encomenda com execução imediata, enquanto está pendurada, verifico o preço a cada tique e, se for possível, rastreio-a. Mas por alguma razão, recebo sempre o erro 10013. Procurei em todos os fóruns possíveis e acrescentei quase todas as linhas da ordem inicial (embora a descrição diga que apenas o símbolo, acção e sl e tp são suficientes para este tipo de acção. Nada funciona! Aqui está o código.