Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1482
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á, Alexey, a variável pos_total=PositionsTotal() estava definida apenas em nível global. Agora eu a movi para dentro da função e descobri que esse era o problema. Tudo funcionou. Qual é o problema? Não estou entendendo a piada!!!
Agora, para fins de experiência, movi o pos_total para o nível global novamente e ele parou de funcionar, mas quando o coloquei dentro da função, ele funcionou como deveria! Apenas alguns milagres, bem, pelo menos para mim!!!! )))
Acontece que uma variável em nível global não pode ser inicializada por uma função? É isso mesmo?
Atenciosamente, Vladimir.
Às vezes é possível, mas não todas as variáveis. Nesse caso, quando você executa o EA, ele ainda não vê as posições abertas e a variável é igual a zero....
Na verdade, ontem fiz experimentos com amostragem de posições e cheguei à conclusão de que PositionsTotal() é necessária apenas para determinar o número de posições. E esse número é necessário apenas para limitar o loop.
Aqui está um loop desse tipo
funciona mesmo que você obtenha uma lista de ordens ou negócios do histórico antes dele. Um dia desses, verificarei se a seleção de ordens pendentes interferirá nele.
E, no seu caso, é mais fácil escrever sem um loop
se você precisar da última posição...
Nesse caso, quando você inicia o EA, ele ainda não vê as posições abertas e a variável é igual a zero ...
Eu concordaria com você, mas aqui está o problema - quando coloquei a variável pos_total no nível global, o EA não viu as posições abertas durante todo o período de teste, embora mais de 50 posições tenham sido abertas durante esse período. Não estou entendendo! Será que essa opção não funciona?
Atenciosamente, Vladimir.
No seu caso, é mais fácil escrever sem um loop
se você precisar da última posição...
Concordo, se eu não tivesse várias posições abertas em um símbolo diferente e em direções diferentes. Quero dizer, comprar e vender. Mas, de qualquer forma, obrigado pela dica!
Abraços, Vladimir.
Concordo, se não houvesse várias posições abertas em um símbolo diferente e em direções diferentes. Quero dizer, comprar e vender. Mas, de qualquer forma, obrigado pela dica!
Abraços, Vladimir.
Não faz diferença quantas posições estão abertas e se elas vão para o norte ou para o norte, ou para o lado oposto ou em todas as direções ao mesmo tempo... A última será PositionsTotal()-1.
Não faz diferença quantas posições estão abertas e se elas estão abertas para o norte, para o norte ou em todas as direções ao mesmo tempo... A última será PositionsTotal()-1.
Oi, Alexei, eu estava um pouco confuso. Você está certo como sempre!!! )))
Abraços, Vladimir.
Na verdade, ontem fiz um experimento com a amostragem de posições e cheguei à conclusão de que PositionsTotal() é necessário apenas para determinar o número de posições. E esse número é necessário apenas para limitar o loop.
Aqui está um loop desse tipo
funciona mesmo se você obtiver uma lista de ordens ou negócios do histórico antes dele. No outro dia, verificarei se a seleção de ordens pendentes interferirá.
Há também uma sutileza aqui.
Se a lista for realmente grande e ordenada por algum critério, pode ser mais vantajoso procurar o elemento necessário não pesquisando todos os elementos no loop, mas por meio da divisão, e aqui o conhecimento do número total de elementos na lista pode ser muito útil.
Há uma sutileza aqui também.
Se a lista for realmente grande e estiver ordenada por algum critério, pode ser mais vantajoso procurar o elemento necessário não percorrendo todos os elementos, mas por meio da divisão, e aqui o conhecimento do número total de elementos na lista pode ser muito útil.
Eu não disse que a função é completamente inútil. Mas, em alguns casos, você pode e deve passar sem ela. Afinal de contas, toda função é tempo. Você pode digitar um pouco de cada vez até obter brakes....
Oi, Alexei, eu fui burro. Você está certo como sempre!!! )))
Abraços, Vladimir.
Estou certo, mas não especifiquei que a função, como você a escreveu, não funcionará corretamente se várias negociações forem abertas em símbolos diferentes.
Já que você verifica apenas a última, e ela (a última) pode ser aberta em outro símbolo.
Certo, mas eu não especifiquei que a função, da forma como você a escreveu, não funcionará corretamente se várias negociações forem abertas em símbolos diferentes.
Já que você verifica apenas a última, e ela (a última) pode ser aberta em outro símbolo.
Olá Alexandre, já pensei sobre esse tópico, mas ainda não comecei a fazer a pergunta aqui, porque não cheguei ao local no código em que haverá diferentes posições de símbolo. Obrigado pela dica! )) Agora estou perplexo em um ponto, mas não quero trazê-lo aqui para análise pública, pois há um desejo incessante de "terminá-lo" com meus próprios esforços.
A propósito, notei que todos os meus chamados "tropeços" estão em coisas tão pequenas que não consigo ver. Veja o especificador sobre o qual Artem Trishkin me falou. É uma coisa tão pequena, e aqui eu me pergunto por que o script não funciona. Ou o mesmo link &. Perdi muito tempo com isso. Em geral, ainda preciso aprender, aprender e aprender, e em russo - ler, ler e ler a documentação.
Saudações, Vladimir.
Tenho uma conta de compensação.