Erros, bugs, perguntas - página 1432

 
Alexey Kozitsyn:

A função OrderGetTicket() devolverá o bilhete da encomenda cujo índice lhe é passado.

Para a segunda pergunta, OrderGetTicket() devolve o bilhete e selecciona a ordem para trabalhar com ele.

Obrigado, Capitão O. E como é definida a ordem dos índices na lista de todas as encomendas?

OrderGetTicket devolve o bilhete de encomenda com o número aprovado na lista, e não o número da encomenda actualmente seleccionada sobre a qual eu estava a perguntar.

 
Ilya Malev:

Obrigado, Capitão O. E como é determinada a ordem dos índices na lista de todas as encomendas?

OrderGetTicket devolve o bilhete de encomenda com o número aprovado na lista, e não o número da encomenda actualmente seleccionada sobre a qual eu estava a perguntar.

Tanto quanto me lembro, o mais antigo (primeiro) = 0 etc. Vê isto, é um trabalho de 5 minutos.

Esta é a ordem que seleccionou. Como foi seleccionada? Por número ou por bilhete?

Em suma, há duas formas: por número e por bilhete. Até agora, na minha prática, não tem havido situações em que isto não seja suficiente.

 
Alexey Kozitsyn:

Verifique, demorará apenas cinco minutos.

Claro que posso verificá-lo eu próprio. Não escreveria aqui se isso resolvesse o problema. É necessária uma confirmação dos criadores, porque o resultado da verificação pode ser situacional ou arbitrariamente alterado no futuro.

>> Asua encomenda foi seleccionada. Como foi seleccionada? Por número ou por bilhete?

É uma pergunta adicional no MT4, não me importava como era seleccionado, mas precisava de saber o seu bilhete para fazer algo com ele fora da função que o seleccionou. Em MT5 parece que terá de ser resolvido de forma programática, bem como muitas outras coisas.

Alexey Kozitsyn:

Até agora não houve situações na minha prática em que não fosse suficiente.

Há muitas destas situações na minha prática. Acontece sempre que se pretende poupar no tamanho do código em termos de parâmetros passados ao chamar funções que lidam com ordens.
 

Não só isso, a propósito: imagine uma situação em que está a trabalhar com a encomenda que acabou de seleccionar, mas precisa de chamar uma função para obter informações de outras encomendas.

Quando esta função é chamada, terá de seleccionar a encomenda de novo, porque esta função modifica a selecção actual, obtendo alguma informação de outras encomendas.

Seria lógico em todas essas funções lembrar a selecção da ordem actual antes de as executar e seleccioná-la novamente antes de voltar, de modo a que a selecção da ordem actual não mude quando tais funções são chamadas, o que pode ajudar a evitar alguns erros lógicos difíceis de encontrar no código. Mas no MT5 isto simplesmente não é possível porque não existe um análogo da função OrderTicket e temos de inventar um invólucro de programa sob a forma de uma classe especial para a selecção de encomendas e obtenção do seu bilhete.

 
Ilya Malev:

Não só isso, a propósito: imagine uma situação em que está a trabalhar com uma encomenda que acabou de seleccionar, mas precisa de chamar uma função para obter informações de outras encomendas.

Quando esta função é chamada, terá de seleccionar a encomenda de novo, porque esta função modifica a selecção actual, obtendo alguma informação de outras encomendas.

Seria lógico em todas essas funções lembrar a selecção da ordem actual antes de as executar e seleccioná-la novamente antes de voltar, de modo a que a selecção da ordem actual não mude quando tais funções são chamadas, o que pode ajudar a evitar alguns erros lógicos difíceis de encontrar no código. Mas no MT5 isto simplesmente não é possível porque não existe um análogo da função OrderTicket e temos de inventar um invólucro de programa sob a forma de uma classe especial para a selecção de encomendas e obtenção do seu bilhete.

Não vejo nenhum problema. Seleccionámos a encomenda. Lembramo-nos do seu bilhete. Precisamos de outra ordem - encontrámos outra ordem. Nós processamo-lo. Precisamos de voltar à encomenda anterior, usamos OrderSelect(). E é tudo.
 
Alexey Kozitsyn:
Não vejo qual é o problema. Escolheu uma encomenda. Lembrou-se do seu bilhete. Preciso de outra encomenda - encontrei outra encomenda. Nós processamo-lo. Precisamos de voltar à encomenda anterior, usamos OrderSelect(). E é tudo.
Se o problema é algo que não pode ser contornado e feito de outra forma, então não há problema. Mas também não existe um análogo da função OrderTicket da MQL4 que seja útil.
 
Ilya Malev:
Se o problema é algo que não pode ser contornado e feito de outra forma, então não há problema. Mas também não existe um análogo da útil função OrderTicket da MQL4.
Se precisar realmente dele, sabe onde pedir. No entanto, é pouco provável que aí seja feliz.
 
MT4, construir 910. Sem retrocompatibilidade com construções anteriores. Dou um ficheiro indicador compilado a uma pessoa na 910ª construção e ela não pode lançá-lo na 902ª construção com um erro:

tem uma versão mais recente não suportada, por favor actualize o seu terminal cliente


É assim que vai ser agora?

 
Artyom Trishkin:
MT4, construir 910. Sem retrocompatibilidade com construções anteriores. Dou um ficheiro indicador compilado a uma pessoa na 910ª construção e ela não pode lançá-lo na 902ª construção com um erro:

tem uma versão mais recente não suportada, por favor actualize o seu terminal cliente


É assim que vai ser agora?

Foi o mesmo no MT5 quando introduziram as carraças.
 
Artyom Trishkin:
MT4, construir 910. Sem retrocompatibilidade com construções anteriores. Dou um ficheiro indicador compilado a uma pessoa na 910ª construção e ela não pode lançá-lo na 902ª construção com um erro:

tem uma versão mais recente não suportada, por favor actualize o seu terminal cliente


É assim que vai ser agora?

Sim, é assim que deve funcionar. Houve alterações no compilador em 910 build, respectivamente, o ex4 gerado pelo compilador actualizado não pode funcionar nas versões anteriores do terminal.