[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 346

 
disculpas
 
Stepan241 >> :

Al principio del guión se escribe

#property show_inputs

extern double Lote=0.1

Después de eso, cuando el script se adjunte a la ventana de símbolos, aparecerá un cuadro de diálogo.

Lo entiendo. Pero eso no es lo que necesito. Con estos comandos aparecerá un cuadro de diálogo - con la configuración general de EA y la configuración actual del script, y pregunté si no existe una función de este tipo, que podría utilizarse para la salida de DO SOLO con la configuración del script a la vez.

 
¿Pueden decirme cómo hacer que todas las órdenes abiertas se cierren a la hora especificada?
 
JackaLrus писал(а) >>

Lo entiendo. Pero eso no es lo que necesito. Con estos comandos aparecerá un cuadro de diálogo - con la configuración general de EA y la configuración actual del script, y pregunté si no existe una función de este tipo, que podría utilizarse para la salida de DO SOLO con la configuración del script a la vez.

Sólo el MetaEditor entonces.

 
vik-777 >> :
¿Podría indicarme cómo cerrar todas las órdenes abiertas a una hora determinada?

if (HourTime[0]=12)_CloseAllOrder

Véase la función _CloseAllOrder en la página anterior o en la anterior

 
Stepan241 >> :

if (HourTime[0]=12)_CloseAllOrder

para la función _CloseAllOrder propiamente dicha, véase la última página o la anterior

Gracias, la función es muy útil

 

Estimados expertos,

Por favor, indique cuál es la razón de este resultado:

gist:

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"

pregunta: ¿cómo consigue dos de tres?

el caso es que si sustituyo 0,3 por 0,4 o por cualquier otra fracción, se resuelve el problema como estaba previsto

por ejemplo

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"

Pregunta: ¿cómo consigue dos de tres?

intentar compilar, quizás mi ordenador no sabe contar (una tontería...)

 
mukata >> :

Estimados expertos,

Por favor, indique cuál es la razón de este resultado:

gist:

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"

pregunta: ¿cómo consigue dos de tres?

el caso es que si sustituyo 0,3 por 0,4 o por cualquier otra fracción, se resuelve el problema como estaba previsto

por ejemplo

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"

Pregunta: ¿cómo consigue dos de tres?

Intenta compilarlo, quizás mi ordenador no sabe calcular (es una tontería...)


No es una tontería, sólo un error de redondeo común cuando se trabaja con números reales.

En el primer caso, por ejemplo, c es igual a 2,999999999, la salida se redondea, es decir, 3, pero al asignar a un tipo entero se descarta la parte fraccionaria.

 
splxgf >> :

Esto no es una tontería, son errores de redondeo comunes cuando se trata de números reales.

En el primer caso, por ejemplo, c es igual a 2,999999999...

¿cómo es posible que 2,99999999 sea 2,9999? 0,3/0,1=3 exactamente, no es que esté dividiendo 1 entre 3 y deba ser 0,33333...

pero cuando se asigna a un tipo entero, se descarta la parte fraccionaria.

A un tipo entero se le asigna un valor c, c obviamente es igual a tres, sin ninguna parte fraccionaria. No hay nada que descartar...

La respuesta es 100% errónea.

¿alguna otra opción?

 
mukata >> :


No veo cómo 2.9999 puede ser 2.9999? 0,3/0,1=3 incluso, no es que esté dividiendo 1 entre 3 y deba ser 0,33333...


Esto sólo parece ser exactamente, mientras que el último bit puede tomar diferentes valores. Es decir, 2,9999, 3 o 3,00000001


Para evitar estos malentendidos, MQL dispone de la función NormalizeDouble()