Auto-aprendizagem da linguagem MQL5 a partir do zero - página 65
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
Olá, Valery! Muito obrigado, sua versão "...se as posições com nosso magik e em nosso símbolo são iguais a zero, verificamos o tempo e abrimos uma posição..." acabou sendo a mais fácil e eficaz. Adicionei-o à condição de verificar o tempo && PositionTotal()==0 e apenas uma posição com a quantidade necessária é aberta!
Atenciosamente, Vladimir.
Infelizmente, MKL não tem comando, o que retorna o número de posições sobre o símbolo. TotalPosition retorna todas as posições sobre a conta em todos os símbolos. Portanto, para obter posições sobre o símbolo, você precisa pesquisar todas as posições e comparar a posição do símbolo na nossa.
Também. A lógica na primeira vez, abri-la e verificar a presença de nossa posição, trilhar nem sempre é o ideal. Às vezes é melhor verificar primeiro se a posição é aberta com nosso assistente e se é, verificamos a hora de fechamento, ou então arrastá-la, ou então verificamos a hora de abertura.
O objetivo é reduzir o número de ações da EA.
Infelizmente, não há nenhum comando na MKL que devolva o número de posições sobre um símbolo. TotalPositions retorna todas as posições em todos os símbolos. Portanto, para obter posições sobre um símbolo, você precisa pesquisar todas as posições e comparar a posição do símbolo com a nossa.
Também. A lógica na primeira vez, abri-la e verificar a presença de nossa posição, trilhar nem sempre é o ideal. Às vezes é melhor verificar primeiro se a posição é aberta com nosso assistente e se é, verificamos a hora de fechamento, ou então arrastá-la, ou então verificamos a hora de abertura.
O objetivo é reduzir o número de ações da EA.
Tudo está claro, Valery! Estou tentando implementar suas dicas.
Atenciosamente, Vladimir.
Se as posições com nossa Magik e em nosso símbolo são zero, verificamos o tempo e abrimos uma posição, se for 1, não abrimos uma posição, verificamos o tempo de fechamento e arrasto, se for mais de 1, alertamos e não trabalhamos. Podemos usar o piggyback ou se quisermos verificá-lo com o iff.
Olá, Valery! Tentei escrever o código sem a enumeração das posições. Eu o escrevi, verifiquei, tudo funciona.
Atenciosamente, Vladimir.Olá Valery! Tentei escrever o código sem a enumeração das posições. Eu o escrevi, verifiquei, tudo funciona.
Cumprimentos, Vladimir.Tudo bem para começar, mas apenas para começar. As condições são muito rígidas. Se não há posições em nosso símbolo e nenhuma posição com nosso magik em todos os símbolos, então parece normal. Na vida real você pode ter 2 janelas abertas em um símbolo e outro pode ter uma posição. Você pode simplesmente usar Magik para explicar, por exemplo, como trishkin, os 3 primeiros dígitos - código do símbolo e os 2 seguintes - código do script/advisor. E o primeiro passo é codificar manualmente, ou gerar um magik adicionando linhas dependendo do símbolo da janela e do código do script e depois converter a linha em um número.
A maneira clássica é procurar por todos os pedidos ou posições.
Mas isto é demais para o início.
É por isso que é bom começar.
Não há problema em começar, mas apenas em começar. As condições são muito rígidas. Se não há posições em nosso símbolo e nenhuma posição com nosso magik em todos os instrumentos, então parece normal. Na vida real você pode ter 2 janelas abertas em um símbolo, e outro pode ter uma posição. Você pode simplesmente usar Magik para explicar, por exemplo, como trishkin, os 3 primeiros dígitos - código do símbolo e os 2 seguintes - código do script/advisor. E o primeiro passo é codificar manualmente, ou gerar um magik adicionando linhas dependendo do símbolo da janela e do código do script e depois converter a linha em um número.
A maneira clássica é procurar por todos os pedidos ou posições.
Mas isto é demais para o início.
É por isso que não há problema em começar com isso.
Obrigado, Valeriy! Pesquisar todas as posições é um dos próximos passos no auto-estudo que certamente farei.
Cumprimentos, Vladimir.
Por alguma razão, todos os pedidos ou posições são considerados uma superação clássica.
Infelizmente, esta é uma tradição na comunidade MQL, todos os EAs são desenvolvidos levando em conta uma perda repentina de conexão e/ou falta de energia de um PC.
por um lado, esta é uma boa metodologia, mas por outro lado impõe grandes restrições ao estilo de escrita do código EA - a EA só trabalha com os mestres da ordem. Por exemplo, se você precisar escrever um martingale, a EA buscará na história a última ordem com seus mestres e analisará o lucro/perda e decidirá se aumenta ou não o novo lote
... em geral desde a criação da MT - todos estão esperando que a internet desapareça e a estratégia em si não é mais tão importante ))
Infelizmente, esta é uma tradição na comunidade MQL, todos os EAs são desenvolvidos com uma súbita perda de conexão e/ou falta de energia do PC em mente.
Por um lado, esta é uma boa metodologia, mas por outro lado impõe grandes restrições ao estilo de escrita do código EA - a EA só trabalha com os mestres da ordem. Por exemplo, se você precisar escrever um martingale, a EA buscará na história a última ordem com seus mestres e analisará o lucro/perda e decidirá se aumenta ou não o novo lote
... em geral desde a criação da MT - todos estão esperando que a Internet desapareça, e a estratégia em si não é mais tão importante ))
Olá Igor, obrigado por compartilhar esta informação muito útil.
Atenciosamente, Vladimir.
Infelizmente, esta é uma tradição na comunidade MQL, todos os EAs são desenvolvidos com uma súbita perda de conexão e/ou falta de energia do PC em mente.
Por um lado, esta é uma boa metodologia, mas por outro lado impõe grandes restrições ao estilo de escrita do código EA - a EA só trabalha com os mestres da ordem. Por exemplo, se você precisar escrever um martingale, a EA buscará na história a última ordem com seus mestres e analisará o lucro/perda e decidirá se aumenta ou não o novo lote
... Em geral desde a criação da MT - todos estão esperando que a internet desapareça e a estratégia em si não é mais tão importante ))
A proteção contra incêndios, inundações e tolices deve ser sempre!) Normalmente me limito a parar em caso de perda de conexão com DT.
Bom dia e bom humor para todos!
Eu continuo estudando a linguagem de programação MQL5. Comecei um estudo detalhado do para operador de laço, que de acordo com a Referência MQL5, e passo a citar:
O para operador de laço
Executa o operador até que a expressão a ser verificada se torne falsa. A expressão é verificada antes de cada iteração
Vou à descrição do para operador de laço e lá li isso:
O operador executa um operador? OK. Eu pego e corro para o operador de laço para tentar todas as posições em aberto e depois digito a declaração com as condições que eu preciso:
e então nada acontece. A posição Comprar não é aberta. Como faço para entender isso? Devo estar fazendo algo errado, ou não entendo o termo da declaração corretamente?
Prezado Perito! Por favor, me aconselhe, mas não em palavras, não em um código corrigido, caso contrário, nunca aprenderei a linguagem de programação MQL5.
Atenciosamente, Vladimir.Bom dia e bom humor para todos!
Eu continuo estudando a linguagem de programação MQL5. Comecei um estudo detalhado do para operador de laço, que de acordo com a Referência MQL5, e passo a citar:
O para operador de laço
Executa o operador até que a expressão a ser verificada se torne falsa. A expressão é verificada antes de cada iteração
Vou à descrição do para operador de laço e lá li isso:
O operador executa um operador? OK. Eu pego e corro para o operador de laço para tentar todas as posições abertas e depois digito a declaração com as condições que eu preciso:
e nada acontece. A posição Comprar não é aberta. Como faço para entender isso? Devo estar fazendo algo errado ou não entendo de todo o propósito do operador de laço corretamente?
Caros especialistas! Estou pedindo que me dêem algum feedback, mas não em palavras, senão nunca aprenderei a linguagem de programação MQL5.
Atenciosamente, Vladimir.O operador de laço e os operadores em um corpo de laço. Não é bem uma língua russa clássica.
Tudo é bom, é claro, mas onde está o iterador i no corpo do loop? E para obter o personagem de posição e seu símbolo mágico, ele deve ser selecionado primeiro. A descrição da posição é uma estrutura (na MQL5 tudo é uma estrutura, ordens, tempo e negócios), e é preenchida através de seleção, pelo iterador que não é um bilhete de posição, mas um número de posição. E devemos lembrar que a estrutura de descrição da posição é sempre a última escolha.