[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 189

 

Necesito saber el fractal más pequeño y el más grande de los últimos n compases, ¿qué pasa aquí? ¡Por favor, ayuda!

   for (ii = 0; ii = n; ii++)
      {
         i = iFractals(NULL, 0, MODE_LOWER, ii);
         if (i < StopLos_L) StopLos_L = i;
         i = iFractals(NULL, 0, MODE_UPPER, ii);
         if (i > StopLos_H) StopLos_H = i;
      }

 
solnce600:

Decidí tomar lo que me pareció una ruta más sencilla.

No eliminar la orden pendiente - sino colocar una orden pendiente sólo si una vela de cinco minutos no ha terminado

Es decir, la orden pendiente debe colocarse sólo cuando se cumplan dos condiciones. Si se cumple la primera condición

- Lo he comprobado, el orden está establecido.

Por supuesto que lo es porque esta condición es SIEMPRE verdadera, simplemente no puede ser falsa. Simplemente no puede ser falso, ya que significa que la barra de cero existe en absoluto.

Cómo debemos definir la segunda condición, es decir, que la orden pendiente se establezca sólo si no han transcurrido 5 minutos. if (---------- && ?????????)

Por favor, indique claramente la condición con palabras. Todavía no está claro si quiere colocar la orden pendiente al comienzo de una nueva vela o qué?
 
belozad:

Necesito saber el fractal más pequeño y el más grande de los últimos n compases, ¿qué pasa aquí? ¡Por favor, ayuda!

   for (ii = 0; ii = n; ii++)
      {
         i = iFractals(NULL, 0, MODE_LOWER, ii);
         if (i < StopLos_L) StopLos_L = i;
         i = iFractals(NULL, 0, MODE_UPPER, ii);
         if (i > StopLos_H) StopLos_H = i;
      }



¿cómo se declara la variable i, podemos echar un vistazo?
 
alsu:

la variable i como se declaró, ¿puedo echar un vistazo?


int ii;

double i;

 
belozad:


Debería funcionar así:

   int ii;
   double i;
   double StopLos_L,StopLos_H;

   for (ii = 0; ii <= n; ii++)
      {
         i = iFractals(NULL, 0, MODE_LOWER, ii);
         if (i < StopLos_L || ii==0) StopLos_L = i;
         i = iFractals(NULL, 0, MODE_UPPER, ii);
         if (i > StopLos_H || ii==0) StopLos_H = i;
      } 
 
alsu:

Debería funcionar así:


Maldita sea, es obvio.
ii <=n


alsu - muchas, muchas gracias =)

 
artmedia70:
Puede

¿Pueden decirme si es posible pintar el cuerpo de una vela deseada en un EA?
Donde puedo ver como hacer esto, realmente lo necesito.
 
beginner:
¿Pueden decirme si es posible pintar el cuerpo de la vela deseada en el EA?
Donde puedo ver como hacer esto, realmente lo necesito.

https://www.mql5.com/ru/code/7835 Sólo es un indicador. Hay que utilizar objetos en el EA
 
alsu:

Por supuesto que sí, porque esta condición es SIEMPRE verdadera, simplemente no puede ser falsa. Ya que significa que la barra de cero existe en absoluto.

Por favor, indique claramente la condición con palabras. Todavía no está claro, ¿quieres colocar la orden pendiente al inicio de una nueva vela o qué?

Gracias, lo siento, estoy un poco confundido. En este caso no debería colocar una orden pendiente sino una orden de mercado a Open[0]+30 pips.

Pero sólo debemos establecer la orden de mercado desde el inicio de la formación de una vela cero hasta la siguiente.

Es decir, no poner una orden de mercado en 5 minutos, según mi idea, equivale a la cancelación de una orden pendiente si no se abre en 5 minutos.

¿Cómo debo escribir la segunda condición?

¿Y he fijado correctamente el precio de apertura de la orden de mercado?

Gracias.

 int start()

  {
 double Price=Open[0]+300*Point;        
 double SL=Price-300*Point;     
 double TP=Price+150*Point;
 if (Time[0]&& ???????)                         
 int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP );
 
solnce600:

Gracias, lo siento, estoy un poco confundido. En este caso no debería poner una orden pendiente, sino una orden de mercado a Open[0]+30 pips.

Pero sólo debemos establecer la orden de mercado desde la fecha de formación de una vela cero hasta la siguiente.

Es decir, no poner una orden de mercado en 5 minutos, según mi idea, equivale a la cancelación de una orden pendiente si no se abre en 5 minutos.

¿Cómo debo escribir la segunda condición?

¿Y he fijado correctamente el precio de apertura de la orden de mercado?

Gracias.


Bien, ya lo tengo. Si el precio de la barra actual alcanza Open[0] + 30, abrimos. Si la barra ha terminado, Open[0] ha cambiado y el nivel de apertura se desplaza en consecuencia. Sólo debería haber una operación en el mercado, ¿no?

Entonces es así:

int start()

{

 double Price=Open[0]+300*Point;        
 double SL=NormalizeDouble (Price-300*Point, Digits);         
 double TP=NormalizeDouble (Price+150*Point, Digits);    
 
 if (OrdesTotal()==0 && Close[0]>=Price)                         
    int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );

}

No es necesario hacer un seguimiento de la nueva barra, porque cuando se forme, el sistema añadirá automáticamente un nuevo valor a Open[0] y esto significa que el nuevo nivel se calculará correctamente. Por favor, tenga en cuenta que la operación de COMPRA se abre al precio Ask actual, mientras que se cierra (TP y SL) al precio Bid. Además, los valores de los precios deben ser normalizados.

Razón de la queja: