[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 123

 
KabrGvin:

Por favor, dígame cómo evitar la influencia de los fines de semana cuando no hay bares. Supongamos que los números de las barras se calculan utilizando las fórmulas:

nt i1=(Tiempo[0]-t1)/60/Periodo();

int i2=(Tiempo[0]-t2)/60/Periodo();

Y el número de barras entre i1 e i2 es igual a la diferencia entre ellos. Es decir: Número de barras = i1-i2. Pero si i1 e i2 caen entre los fines de semana, el número de compases se calculará teniendo en cuenta los compases que no existen el sábado y el domingo. ¿Cómo puedo salir de esta situación?

Saludos, Dimitri.


Gracias a todos. Yo mismo lo he resuelto.



 

¡Gente! ¿Cómo se redondea 2,643789 a un número entero? O dame un enlace si no te importa,

No lo encuentro en el libro de texto ni en la documentación, no encuentro nada en la búsqueda o estoy buscando en el lugar equivocado.

 
eddy:

alsu, rellena todo el cómo:)

y ¿por qué imprimir i?) i es igual a Bars-counted+2. ¿cómo puede ser negativo?

              for(i=Bars; i>=0; i--) Rel[i]=pr(Close[i])-pr(Close[i+1]);
     if(teni) for(i=Bars; i>=0; i--) {Rhi[i]=pr(High[i])-pr(Close[i+1]);
                                      Rlo[i]=pr(Low[i])-pr(Close[i+1]);
                                                Rlo[i]=MathMin(Rlo[i],0);
                                                Rhi[i]=MathMax(Rhi[i],0);}

Este código se ejecuta en cada tick, es decir, a la llegada de cada tick Todos los elementos de las matrices Rel,. de Bares a cero se les asigna algún valor. (Por cierto, no hay ningún elemento con el número Bars, el último índice en la matriz es Bars-1 - esto debe ser recordado)

Ahora, el no-dibujo.

Tenemos que averiguar dónde está el error. En primer lugar, sugiero que nos fijemos en los valores que toma el índice i y lo que produce la función rsi(). Como no hay depurador en ME, tenemos que usar echo, es decir, Print().

 
gheka:

¡Gente! ¿Cómo se redondea 2,643789 a un número entero?

No lo encuentro en el libro de texto ni en la documentación, no encuentro nada en la búsqueda o estoy buscando en el lugar equivocado.

https://docs.mql4.com/ru/math/MathRound

double MathRound( double valor)

La función devuelve el valor redondeado al número entero más cercano del valor numérico especificado.

Ejemplo:
double y=MathRound(2.8);
Print("Redondeando 2,8 a ",y);
y=MathRound(2.4);
Print("Redondeando -2,4 a ",y);
//Salida: Redondeo de 2,8 a 3
//redondeando -2,4 a -2

 
alsu:

..en cada garrapata Todos los elementos de Rel,... de Bares a cero se les asigna algún valor.

Ahora sobre el no-dibujo.

Tenemos que averiguar dónde está el error. En primer lugar, sugiero que nos fijemos en los valores que toma el índice i y en los resultados de la función rsi(). Como no hay depurador en ME, podemos usar echo, es decir, Print().

"Barras a cero" ya lo he arreglado) siempre estoy leyendo y arreglando cosas.

ahora sobre el no-dibujo)

¿Puede Bars-counted+2 ser negativo?

 

¿Cómo puedo modificar todas las órdenes abiertas?

Sólo modifico una orden por alguna razón

Este es mi código

 tot=OrdersTotal();
if(tot>0)
{ if(OO_11(0)==false) <---- ОО_11() он проверяет есть ли стоп
{ int k=OrdersTotal();
for(int a=0;a<=k;a++)
{ if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES))
{ if(OrderType()==OP_SELL)
{ if(OrderMagicNumber()==0)
{
int tik=OrderTicket();
OrderModify(tik,Ask,Ask+0.01000,0,0,0);
}
}
}
}
}
}
Tengo 10-50 órdenes abiertas sin mago pero sólo pone un stop loss en una orden, ¿dime qué pasa?
 
eddy:

"Barras a cero" ya lo he corregido) siempre estoy leyendo y corrigiendo cosas.

ahora sobre el no-dibujo)

¿puede Bars-counted+2 ser negativo?

Sobre la marcha, no, no puede. Pero sigue siendo más rápido comprobarlo que pensarlo. Lo ideal es poner impresiones en todas partes y ver cómo funciona el software.
 
gheka:

¿Cómo puedo modificar todas las órdenes abiertas?

Sólo modifico una orden por alguna razón

aquí está mi código

tengo 10-50 ordenes abiertas sin magic open pero me sale el stop loss solo en una orden, ¿que pasa?

1) la variable k repite la variable tot

2) a<=k es incorrecto, corrige a<k

3) ¿Qué hay en el registro sobre la modificación de órdenes?

 
alsu:

1) la variable k repite la variable tot

2) a<=k es incorrecto, corrige a<k

3) ¿Qué hay en el registro de modificación de pedidos?

No hay información en el libro de registro, sólo la apertura de pedidos y nada más, sigue sin funcionar tampoco
 
alsu:

1) la variable k repite la variable tot

2) a<=k es incorrecto, corrige a<k

3) ¿Qué hay en el registro de modificación de pedidos?

Ya funciona) gracias.