Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 854
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
Estou a brincar com o CTrade::PositionClose(const ulong ticket,const ulong deviation=ULONG_MAX) e percebo que não está exactamente organizado no interior. Trata-se de 2 códigos de retorno - bool e ResultRetcode(). RetCode nem sempre é zerado internamente antes de retornar falso, por isso se PositionClose der falso, RetCode pode muito bem retornar TRADE_RETCODE_DONE. Seria bom que os programadores sincronizassem estes 2 valores de retorno.
Código + exemplo + registos.
COrderInfo::OrderType() retorna sempre 0.
Para o verificar, pode colocar manualmente qualquer encomenda pendente (BuyStop, SellStop, ...),
depois introduzi-lo no guião.
Talvez algo com a tabela de funções virtuais? Na depuração, eu só chego ao virtual int CObject::Type()
PS. Eu próprio já o descobri. COrderInfo tem 2 métodos semelhantes: Type() e OrderType().
Código + exemplo + registos.
Veja a que situação me refiro.
Não vejo nenhum SetResultRetcode e SetResultComment métodos no CTrade para os reiniciar antes de cada nova operação.
Tenho de herdar a minha turma, onde acrescento um único método
Veja a que situação me refiro.
Não vejo nenhum SetResultRetcode e SetResultComment métodos no CTrade para os reiniciar antes de cada nova operação.
Para quê? Funções completamente desnecessárias.
Primeiro: dispara no ar - envia uma ordem comercial sem verificar primeiro - sem verificar o que a operação devolveu. Veja a referência:PositionClose é do tipo bool.
Em segundo lugar, vejamos a cadeia de fecho da posição: quando a posição não é encontrada (não pode ser seleccionada pelo bilhete especificado), "falso" é devolvido.
Nesse caso, as estruturas não são limpas em lado nenhum - porque não faz sentido - afinal, a posição não podia ser seleccionada antes, daí não haver informação nas estruturas.
Qual é o objectivo? Funções completamente desnecessárias.
Primeiro: dispara no ar - envia uma ordem comercial sem verificar primeiro - sem verificar o que a operação devolveu. Vejamos a referência:PositionClose é do tipo bool.
Em segundo lugar, vejamos a cadeia de fecho da posição: quando a posição não é encontrada (não pode ser seleccionada pelo bilhete especificado), "falso" é devolvido.
Ao mesmo tempo, as estruturas não são desobstruídas em lado nenhum, uma vez que não faz sentido - afinal, a posição não podia ser seleccionada antes, daí não haver informação nas estruturas.
1) Podemos também dizer que ResetLastError() é uma função absolutamente desnecessária.
2) Há uma verificação para o resultado devolvido. Imagine, por analogia, que chama alguma função WinAPI, retorna um erro, e GetLastError() (análogo de ResultRetcode) retorna qualquer último código.
Se eu acrescentar alguma verificação antes de chamar PositionClose (o que farei), não substitui qualquer outra verificação antes de qualquer outra chamada, quando o RetCode não muda.
O meu consultor especializado escreve informações no diário de bordo. Tudo o que preciso é escrever em log sã ResultRetcode e ResultComment se alguma chamada devolvida for falsa.
1) Poderíamos também dizer que ResetLastError() é completamente desnecessário.
2) Há uma verificação do resultado da devolução. Imagine, por analogia, que chama alguma função WinAPI, retorna um erro, e GetLastError() (análogo de ResultRetcode) retorna qualquer último código.
Se eu acrescentar alguma verificação antes de chamar PositionClose (o que farei), não substitui qualquer outra verificação antes de qualquer outra chamada quando o RetCode não muda.
O meu consultor especializado escreve informações no diário de bordo. Tudo o que preciso de fazer é escrever sã ResultRetcode e ResultComment no registo, se alguma chamada devolvida for falsa.
Leia na ajuda de classe CTrade quando precisar deverificar o resultado da execução do pedido de troca (código de retorno do servidor de troca) chamando o métodoResultRetcode().
Ler na ajuda de classe CTrade quandoverificar o resultado da execução do pedido de troca (código de retorno do servidor de troca) chamando o métodoResultRetcode().
Pode afirmar que
1) Se o PositionClose devolve falsos, então o Retcode nunca é preenchido?
2) Se PositionClose retorna verdadeiro, então o Retcode é sempre povoado?
Ordem -> comércio -> posição. Tirar o preço de abertura da posição.
Pode mostrar uma imagem de como esta Ordem -> comércio -> posição, está abaixo de onde os ofícios estão escritos para não permitir a cópia lá
Pode mostrar uma imagem de como esta Ordem -> comércio -> posição, está no fundo onde as trocas são escritas para não o deixar copiar.
Por favor, ou reescreva a sua pergunta ou ponha sinais de pontuação, ou melhor ainda acrescente numa imagem o quê, onde e quem. Caso contrário, acontece que vejo cartas familiares, mas não consigo compreender o significado e o seu ponto de vista.