Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 8

 
gyfto:

Desde mi punto de vista, creo que Close[] se puede pasar en el bucle de Bars-1 a 0, y se puede recoger este array en dll y trabajar con él allí. Todavía no lo he probado, pero está en camino.

No es necesario pasar el propio array. Basta con pasarle un puntero y su tamaño.

https://docs.mql4.com/ru/array/ArrayCopySeries

https://docs.mql4.com/ru/array/ArrayCopyRates

 

Chicos, por favor denme una condición simple "si elprecio actual>precio de apertura de la barra entonces ejecuta la acción". Todavía no he trabajado con barras. Y mi cerebro no puede llegar a las 4:49

 
oDin48:

Chicos, por favor denme una condición simple "si el precio actual>precio de la barra abierta, entonces ejecuten la acción". Todavía no he trabajado con barras. Y mi cerebro no puede llegar a las 4:49



if(Close[0]>Open[0])
    {
  //Ваше действие
    }
 
Hola a todos .... cómo se puede acortar la siguiente expresión: if(a>b && a>c && a>d)
 

¡Saludos!

No sé dónde preguntar mejor, pero decidí no crear un nuevo tema después de todo. He intentado encontrar un Asesor Experto en CodeBase y parece que hay bastantes, pero como no soy experto en mql, me he dado cuenta de que no podré asignar las funciones que necesito. ¿Pueden aconsejarme, si existe un EA sencillo que pueda llevar un registro de las órdenes ya abiertas (y reabiertas) y si una de ellas se cierra (por stop loss primero), se cree una nueva orden pendiente con los parámetros de la orden cerrada (precio, take profit, stop)?

Y una pregunta más. Tenemos el indicador i-SignalOfTrade. Dado que los terminales móviles no proporcionan notificaciones sonoras de los eventos, este indicador puede ser muy útil. Pero tiene algunas funciones adicionales que no pueden ser desactivadas si usted opera por sí mismo - le notifica sobre eventos tales como la creación y modificación de órdenes pendientes, etc. Es decir, notificación de acciones que ya conoce. Os agradecería que me ayudarais a desactivarlos (o quizás haya otro indicador similar), necesito dejar sólo la notificación de activación de orden pendiente, toma y parada de activación.

 
i999i:
Hola a todos, .... cómo se puede acortar la siguiente expresión : if(a>b && a>c && a>d)

Se podría escribir if((b-a)*(c-a)*(d-a)>0), pero no necesariamente más rápido. El AND lógico es una multiplicación binaria, es sólo otra notación de la misma expresión, la única diferencia es el tamaño de los tipos de variables. a>b es una variable booleana, 4 bytes, mientras que b-a, si son dobles, entonces la diferencia será doble (8 bytes), y esta multiplicación es al menos 2 veces más larga.

Zhunko:

No es necesario pasar el propio array. Basta con pasarle un puntero y su tamaño.


Un consejo inestimable.

gifto:

a>b es una variable booleana, 4 bytes

Déjeme explicarle. Puedes reescribir tu expresión como if((a>b)*(a>c)*(a>d)==1), porque las expresiones entre paréntesis toman valores 0 o 1 (y a su vez están definidas en define en el precompilador como false y true).
 
gyfto:

Se podría escribir if((b-a)*(c-a)*(d-a)>0), pero no necesariamente más rápido. El AND lógico es una multiplicación binaria, es sólo otra notación de la misma expresión, la única diferencia es el tamaño de los tipos de variables. a>b es una variable booleana, 4 bytes, y b-a, si son dobles, entonces la diferencia será doble (8 bytes), y esta multiplicación es al menos 2 veces más larga.


Un consejo inestimable.


gifto:

Puedes escribir if((b-a)*(c-a)*(d-a)>0), pero no es seguro que funcione más rápido. El AND lógico es una multiplicación binaria, es sólo otra notación de la misma expresión, la única diferencia es el tamaño de los tipos de variables. a>b es una variable booleana, 4 bytes, y b-a, si son dobles, entonces la diferencia será doble (8 bytes), y esta multiplicación es al menos 2 veces más larga.


Un consejo inestimable.

gracias por el consejo .... ¿hay alguna otra forma de calcular el menor y el mayor valor de a,b,c?
 
i999i:

Gracias por el consejo .... ¿hay alguna otra manera de calcular los valores más pequeños y más grandes de a,b,c?


MathMax(MathMax(a,b),c) y viceversa MathMin. Si son cuatro valores, entonces int max = MathMax(MathMax(x1, x2), MathMax(x3, x4)). Si los valores son una carga de carro, forme un array a través de ArrayMaximum también.
 
gyfto:

MathMax(MathMax(a,b),c) y viceversa MathMin. Si son cuatro valores, entonces int max = MathMax(MathMax(x1, x2), MathMax(x3, x4)). Si necesita formar un array a través de ArrayMaximum también.
.

tendrás que usar ArrayMaximum, hay docenas de valores ....a ArrayMaximum será más rápido que esto - a>b && a>c && a>d
 
i999i:

gracias por el consejo .... ¿hay alguna otra manera de calcular los valores más pequeños y más grandes de a,b,c?


Primero, dime por qué lo necesitas. Necesitas saber la razón. ¿Es sólo por diversión e interés, o hay algún propósito detrás?