Alexey Viktorov: Lea la documentación y se aclarará. Es bueno que lo hayas hecho tú mismo.
Sí, ya había leído sobre algo así, así que decidí probarlo, pero no está clara la lógica que hay detrás... y no pude encontrar la respuesta en la documentación, por cierto.
-Aleks-: Ya había leído sobre algo así, así que decidí probarlo, pero no está clara la lógica que hay detrás... Y no he podido encontrar la respuesta en la documentación, por cierto.
Esta es una peculiaridad no sólo en MCL, en C++ y otros lenguajes de programación también - la división de dos enteros o variables de tipo (int) dará un resultado truncado a un entero. En tu caso 4/5=0.
Puedes escribir 4,0/5 o (doble)4/5 - entonces el resultado es un número real.
Esto no es sólo una característica de ICL, en C++ y otros lenguajes de programación es lo mismo - dividir dos enteros o variables de tipo (int) dará un resultado truncado a un entero. En tu caso 4/5=0.
Puedes escribir 4,0/5 o (doble)4/5 - entonces el resultado es un número real.
Lo entiendo, pero no entiendo la lógica de la solución, es decir, la necesidad.
Lo entiendo, pero no comprendo la lógica de la solución, es decir, la necesidad.
Pues no argumentas "por qué 2*2=4 en aritmética, cuál es la lógica de la solución". Lo tomas como un axioma y lo utilizas. Así ocurre con la división de dos enteros.
Pues no se argumenta "por qué 2*2=4 en aritmética, cuál es la lógica de la solución". Lo tomas como un axioma y lo utilizas. Lo mismo ocurre con la división de dos números enteros.
La línea es una línea de tendencia. He cambiado las propiedades por un rayo. No sirvió de nada. Si quisiera que saliera el precio independientemente de la posición de la barra cero (arriba, abajo).
Este código tampoco funciona.
int inicio() {
double pr=ObjectGetValueByShift("línea",0);
Si (Oferta==pr){
Alerta (pr);}
return(0);}
¿Está bien escrito el nombre de la línea?
Prueba este script, y muestra lo que dice en los registros.
voidOnStart()
{
double pr;
int obj_total=ObjectsTotal();
string name;
int i;
for(i=0;i<obj_total;i++)
{
name=ObjectName(i);
if(ObjectType(name)!=OBJ_TREND) continue;
PrintFormat("Объект %d: Имя объекта - %s",i,name);
pr=ObjectGetValueByShift(name,0);
PrintFormat("Объект %d: Цена - %.5f",i,pr);
}
}
El script detecta el objeto y escribe el nombre correctamente. Pero el precio es absolutamente de izquierdas. Está marcado en la foto con una línea horizontal. Da estos precios independientemente de que las barras hayan cruzado la línea o no.
La línea tiene tendencia. Se han cambiado las propiedades a rayo. No ayudó. Lo ideal es que el precio se muestre independientemente de la posición de la barra cero (arriba, abajo).
Este código tampoco funciona.
int inicio() {
double pr=ObjectGetValueByShift("línea",0);
Si (Oferta==pr){
Alerta (pr);}
return(0);}
La oferta puede saltar fácilmente su línea, no está obligada a detenerse en cada punto (es decir, no obtendrá la igualdad exacta).
cambiar la condición a por ejemplo si ((MathMin(Close[1],Open[0])<=pr && Bid>=pr) || (MathMax(Close[1],Open[0])>=pr && Bid<=pr)) o similar...
La oferta puede saltar fácilmente su línea, no está obligada a detenerse en cada punto (es decir, no se producirá la igualdad exacta)
cambiar la condición a por ejemplo si ((MathMin(Close[1],Open[0])<=pr && Bid>=pr) || (MathMax(Close[1],Open[0])>=pr && Bid<=pr)) o similar...
¡Gracias! He captado la idea.
¿Y si la situación es diferente? Hay líneas horizontales con diferentes nombres en el gráfico. Es necesario que el script calcule qué línea corresponde a qué precio.
Por favor, ayuda - No puedo entender por qué obtengo cero al calcular la matriz VesMass en valores i>0 ?
Resulta que no hay que escribir 4 y 5, sino 4.0 y 5.0 - cuál es la lógica - no me queda claro...
Lea la documentación y se aclarará. Es bueno que lo hayas hecho tú mismo.
Ya había leído sobre algo así, así que decidí probarlo, pero no está clara la lógica que hay detrás... Y no he podido encontrar la respuesta en la documentación, por cierto.
Puedes escribir 4,0/5 o (doble)4/5 - entonces el resultado es un número real.Esta es una peculiaridad no sólo en MCL, en C++ y otros lenguajes de programación también - la división de dos enteros o variables de tipo (int) dará un resultado truncado a un entero. En tu caso 4/5=0.
Puedes escribir 4,0/5 o (doble)4/5 - entonces el resultado es un número real.Esto no es sólo una característica de ICL, en C++ y otros lenguajes de programación es lo mismo - dividir dos enteros o variables de tipo (int) dará un resultado truncado a un entero. En tu caso 4/5=0.
Lo entiendo, pero no entiendo la lógica de la solución, es decir, la necesidad.
Lo entiendo, pero no comprendo la lógica de la solución, es decir, la necesidad.
Pues no argumentas "por qué 2*2=4 en aritmética, cuál es la lógica de la solución". Lo tomas como un axioma y lo utilizas. Así ocurre con la división de dos enteros.
Pues no se argumenta "por qué 2*2=4 en aritmética, cuál es la lógica de la solución". Lo tomas como un axioma y lo utilizas. Lo mismo ocurre con la división de dos números enteros.
Lo comprobaré con la adición...
La línea es una línea de tendencia. He cambiado las propiedades por un rayo. No sirvió de nada. Si quisiera que saliera el precio independientemente de la posición de la barra cero (arriba, abajo).
Este código tampoco funciona.
int inicio() {
double pr=ObjectGetValueByShift("línea",0);
Si (Oferta==pr){
Alerta (pr);}
return(0);}
¿Está bien escrito el nombre de la línea?
Prueba este script, y muestra lo que dice en los registros.
}
El script detecta el objeto y escribe el nombre correctamente. Pero el precio es absolutamente de izquierdas. Está marcado en la foto con una línea horizontal. Da estos precios independientemente de que las barras hayan cruzado la línea o no.
La línea tiene tendencia. Se han cambiado las propiedades a rayo. No ayudó. Lo ideal es que el precio se muestre independientemente de la posición de la barra cero (arriba, abajo).
Este código tampoco funciona.
int inicio() {
double pr=ObjectGetValueByShift("línea",0);
Si (Oferta==pr){
Alerta (pr);}
return(0);}
La oferta puede saltar fácilmente su línea, no está obligada a detenerse en cada punto (es decir, no obtendrá la igualdad exacta).
cambiar la condición a por ejemplo si ((MathMin(Close[1],Open[0])<=pr && Bid>=pr) || (MathMax(Close[1],Open[0])>=pr && Bid<=pr)) o similar...
La oferta puede saltar fácilmente su línea, no está obligada a detenerse en cada punto (es decir, no se producirá la igualdad exacta)
cambiar la condición a por ejemplo si ((MathMin(Close[1],Open[0])<=pr && Bid>=pr) || (MathMax(Close[1],Open[0])>=pr && Bid<=pr)) o similar...
¡Gracias! He captado la idea.
¿Y si la situación es diferente? Hay líneas horizontales con diferentes nombres en el gráfico. Es necesario que el script calcule qué línea corresponde a qué precio.