[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 346

[Deleted]  
desculpas
[Deleted]  
Stepan241 >> :

No início do roteiro você escreve

#property show_inputs

Lote duplo externo=0,1

Depois disso, quando o roteiro for anexado à janela do símbolo, aparecerá uma caixa de diálogo.

Eu entendo. Mas não é disso que eu preciso. Com estes comandos, aparecerá uma caixa de diálogo - com configurações gerais da EA e configurações atuais do script, e eu perguntei se havia uma função que pudesse ser usada para sair SOMENTE com as configurações do script de uma só vez.

[Deleted]  
Você pode me dizer como fazer para que todas as ordens abertas fechem no horário especificado?
 
JackaLrus писал(а) >>

Eu entendo. Mas não é disso que eu preciso. Com estes comandos aparecerá uma caixa de diálogo - com configurações gerais da EA e configurações de script atuais, e eu perguntei se não existe tal função, que poderia ser usada para sair SOMENTE com configurações de script de uma só vez.

Somente MetaEditor então.

 
vik-777 >> :
Você poderia aconselhar como fechar todas as ordens abertas em um determinado momento?

se (HourTime[0]=12)_CloseAllOrder

Veja a função _CloseAllOrder na página anterior ou na página anterior

[Deleted]  
Stepan241 >> :

se (HourTime[0]=12)_CloseAllOrder

para a própria função _CloseAllOrder, ver última página ou a página anterior

Obrigado, a função é muito útil

 

Caros Especialistas,

Por favor, informe qual é a razão deste resultado:

resumo:

int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}

imprime "c=3 q=2"

pergunta: como conseguir dois de três?

a coisa é, se eu substituir 0,3 por 0,4 ou qualquer outra fração, ele resolve o problema como pretendido

por exemplo

int start()
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}

"c=3 q=2 v=4 w=4"

Pergunta: como conseguir dois de três?

tentar compilar, talvez meu computador não possa contar (só bobagem...)

 
mukata >> :

Caros Especialistas,

Por favor, informe qual é a razão deste resultado:

resumo:

int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}

imprime "c=3 q=2"

pergunta: como conseguir dois de três?

a coisa é, se eu substituir 0,3 por 0,4 ou qualquer outra fração, ele resolve o problema como pretendido

por exemplo

int start()
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}

"c=3 q=2 v=4 w=4"

Pergunta: como conseguir dois de três?

Tente compilá-lo, talvez meu computador não saiba calcular (é bobagem...)


Não é bobagem, apenas um erro de arredondamento comum quando se trabalha com números reais.

No primeiro caso, por exemplo, c igual a 2,999999999, a saída é arredondada, ou seja, 3, mas ao atribuir a um tipo inteiro a parte fracionária é descartada.

 
splxgf >> :

Isto não é um disparate, erros de arredondamento comuns quando se trata de números reais.

No primeiro caso, por exemplo, c é igual a 2,9999999999999.

como 2.9999999999 pode ser 2.9999? 0,3/0,1=3 exatamente, não é como se eu estivesse dividindo 1 por 3 e deveria ser 0,33333...

mas quando se atribui a um tipo inteiro, a parte fracionária é descartada.

A um tipo inteiro é atribuído um valor c, c obviamente igual a três, sem nenhuma parte fracionada. Não há nada a descartar...

A resposta é 100% errada.

alguma outra opção?

 
mukata >> :


Eu não vejo como 2.9999 pode ser 2.9999? 0,3/0,1=3 mesmo, não é como se eu estivesse dividindo 1 por 3 e deveria ser 0,33333...


Isto só parece ser exato, enquanto o último pedaço pode assumir valores diferentes. I.e. 2.9999, 3 ou 3.00000001


Para se livrar de tais mal-entendidos, a MQL tem a função NormalizeDouble()