[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 82
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
Obrigado pela ajuda. Entendi a lógica de colocar a bandeira e a função de devolver o número de pedidos. Mas também estou interessado no momento em que o pedido é fechado. Parece que a condição da bandeira tenta colocar uma ordem novamente, mas a função de devolução do número de ordem diz que diminuiu 1 e inicializa a abertura de uma posição também. Corrija-me se me escapou alguma coisa.
No código que você forneceu, a condição está em um lugar (BUY=true) e até que a bandeira mude, a reabertura não acontecerá...porque a chamada de função para abrir uma posição vem deste bloco de condição...E a bandeira neste código só pode mudar depois que a EA for reiniciada, quando a variável com o valor verdadeiro será inicializada.
Ou talvez eu não entenda a pergunta:)
A bandeira neste código só pode mudar após reiniciar o Expert Advisor, quando a variável com o valor verdadeiro é inicializada.
ou eu não entendo a pergunta:)
Obrigado, você acertou. Vou implementá-lo agora.
Esta é a versão que acabou funcionando. Muito obrigado a você e ao IgorM:
string Val="";
Val = iBands(NULL,0,50,2,0,PRICE_CLOSE,MODE_LOWER,0);
string substr=StringSubstr(Val,0,1);
point_low=StrToDouble(substr);
substr=StringSubstr(Val,2,1);
point_low+=StrToDouble(substr)/10;
substr=StringSubstr(Val,3,1);
point_low+=StrToDouble(substr)/100;
substr=StringSubstr(Val,4,1);
point_low+=StrToDouble(substr)/1000;
substr=StringSubstr(Val,5,1);
point_low+=StrToDouble(substr)/10000;
substr=StringSubstr(Val,6,1);
point_low+=StrToDouble(substr)/100000;
substr=StringSubstr(Val,7,1);
point_low+=StrToDouble(substr)/1000000; //тут плюсуем 6-ю цифру после запятой.
Gente, nada ajuda! não consigo obter um valor com 5 casas decimais. tentei todas as opções que pude pensar, traduzi uma corda em um número, traduzi um substrato em um número, tirei os dígitos (exemplo acima) e estupidamente os adicionei um por um, além de 4 casas decimais ele simplesmente não adiciona e começa a arredondar para 4 casas decimais. mesmo assim, não é bom(
Será que Alerta não exibe variáveis duplas além do 4º sinal? Não sei o que pensar... algum tipo de mistério(
Escrevi dois EAs ligados entre si (eles não negociam, apenas criam gobals) e acho que posso usá-los para fazer um gráfico de volume equi semelhante ao gráfico de preço regular em mt4. Ou se alguém já tiver usado algo semelhante, por favor, compartilhe o código:)
Será que o Alerta não exibe variáveis duplas além do 4º dígito? Não sei o que pensar... algum tipo de mistério(
Sim. Ele (como Imprimir) exibe os 4 dígitos padrão se apenas um número for emitido.
Use o DoubleToStr para ser mais preciso.
Rrrrrrrrrrrrrrr. direito, o terminal em Alerta não está exibindo mais de 4 caracteres. eu troquei o duplo de volta para a linha e tirei-o para olhar para a tela - tudo está correto.
matou meio dia por este absurdo. lata, e tudo estava funcionando inicialmente(
Gente, nada ajuda! não consigo obter um valor com 5 casas decimais. tentei todas as opções que pude pensar, traduzi uma string em um número, traduzi uma substring em um número, tirei números (exemplo acima) e estupidamente os adicionei um por um, além da 4ª casa decimal ela simplesmente não adiciona e começa a arredondar para a 4ª casa decimal. mesmo assim, adicionei a 6ª casa decimal. ainda assim ela falha(
Pode ser que o Alerta não apareça além do 4º sinal da variável duplo? (A corda mostra tudo) Eu já não sei o que pensar.
Bem, como sempre, todos descansam na experiência. Nós escrevemos o roteiro:
Como podemos ver, há um cartão dll conectado ao roteiro. Ela tem apenas uma função que tira a parte fracionária do número. O arquivo dll está anexado a este post. Agora devemos aplicar o script sequencialmente a 2 pares de moedas. Coloquei-o sobre a libra e o euro-japonês. Na libra, eu tenho 4 casas decimais. Sobre o par de moedas euro-japonês - dois. Aqui está o resultado da operação do roteiro:
Na libra, você pode ver como a vírgula se move consistentemente. E você também pode ver que a última divisão deixa 4 dígitos na parte fracionária. Podemos assumir que, como meus dígitos = 4, o quinto dígito após o ponto decimal é cortado. Portanto, o eurojaponês também deve resultar em apenas 2 dígitos após o ponto decimal, uma vez que os dígitos sobre ele = 2. Entretanto, a experiência mostra que ela também rende 4 dígitos após o ponto decimal. Portanto, nossa suposição não está correta e o arredondamento pode estar ocorrendo. Vamos tentar substituir os 4 finais por 7. O resultado:
O que vemos? Os cinco resultantes agora se tornam um seis. Conseqüentemente, o arredondamento automático é realizado.
Não sei como o roteiro se comportará sobre o personagem de cinco dígitos, mas não fiquei satisfeito com o trabalho sobre os caracteres de quatro e dois dígitos - o terminal interferiu e completou sem ser solicitado a fazê-lo. Portanto, tenho que fazer perguntas aos desenvolvedores. Ou - opção 2 - fazer leituras indicadoras, colocá-las em uma string, enviar a string para uma dll, processar os dados lá conforme a necessidade e devolver a ordem de troca da dll.
Informações da ajuda (De acordo com o Alerta):
Данные типа double выводятся с 4 десятичными цифрами после точки. Для вывода чисел с большей точностью используйте функцию DoubleToStr().
Vá descobrir porque os desenvolvedores fizeram isso...
Obrigado, estudei o código, muito interessante. Tudo, como descrevi acima, acabou sendo mais simples: o terminal simplesmente não exibe mais do que o 4º dígito na janela. e todas as idéias funcionaram, apenas resolveram o problema da conversão de diferentes maneiras :)
zy. Mais uma vez estou convencido de que todos os problemas são resolvidos de forma lógica, e aqui a situação era originalmente ilógica, então estávamos procurando um engate no lugar errado :)