![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Será que seria mais fácil se eu dissesse que sim?)
Sim. Aí mesmo:
int li_LastTicket = OrderTicket();
Seu código gerará um erro de execução 4105 se não houve uma chamada OrderSelect antes de ser feita. Basta colocar uma verificação GetLastError no final de cada tick e você encontrará este erro.
Em meu código este erro não ocorrerá, pois esta função é chamada de AFTER OrderSelect(). Esta verificação é herdada do tempo em que os códigos eram escritos sem uma estrutura comum de todas as funções executáveis da EA.
Além disso, a maioria das minhas funções contém funções de tratamento de erros e eu tenho muito cuidado para evitá-las. E também há várias funções que geram um erro, como a resposta que você estava procurando:"Ordem selecionada antes, ou não?".
P.S. A propósito, lembrei-me de uma peculiaridade (que pode ser útil para alguém) de trabalhar com funções OrderSelect() de bibliotecas compiladas: selecionamos uma ordem (como - não principalmente), OrderTicket() - devolve o número da ordem selecionada. Mas se quisermos obter as propriedades desta ordem selecionada a partir da função que está localizada na biblioteca compilada, não receberemos nada. Temos que selecionar essa ordem novamente (novamente).
Eu não sei se é mais fácil ou não, mas eles me levaram desde meu primeiro ano, tal foi a época, ou eu nunca teria servido!
O bilhete e o magik não são mais identificadores? Ou é um princípio trabalhar com dois ou três pedidos ao mesmo tempo? Há matrizes, há funções que processam e atualizam essas matrizes. Ou é um princípio não ser pego no erro? Portanto, não cometam erros. Mas não lamente que as seleções excessivas de pedidos atrasem os testes. Tudo tem seu tempo e seu lugar. Ao passar de uma função para outra, tenha a priori certeza de que você terá que selecionar a ordem mais uma vez, enquanto armazena os dados de processamento da função anterior em uma matriz.
Eu gostei:)
Dimitri, mesmo sem deixar os limites de uma função, você não pode ter certeza de que o sinal de seleção do pedido não mudará.
É isso que eu quero dizer. Minhas funções não têm universalidade, cada uma está estritamente engajada em seus próprios negócios. Mesmo a compra e venda são separadas. O Slosewall não deixa a função até que todo o pedido seja executado. Portanto, deixe os números do pedido mudarem, deixe as paradas se arrastarem, mas o bilhete e o mágico ficarão.