[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 177

 
badbadboy:

Lo necesito para que el EA pueda empezar a calcularse a sí mismo.
¿Tienes un EA que sólo abre posiciones? Cada copia (versión) debe tener su propio mago y cada uno sólo controlará sus propias posiciones.
 

Ayuda a la comprensión:

La tarea consiste en contar individualmente las órdenes de compra/venta perdedoras. Código:

int w = OrdersHistoryTotal()-1;
   if (OrderSelect(w, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      {
         if (OrderType()==OP_BUY) i = i + 1;
         if (OrderType()==OP_SELL) y = y + 1;
         Print("i, y", i, " ", y);
         Print("OrderProfit()", OrderProfit());
      }
   }


El código en sí es un fragmento de un EA. El Asesor Experto está funcionando y generando pérdidas constantemente. Hay muchas órdenes perdidas (las imprimo en otro lugar), todas ellas registradas. Pero en este fragmento de código, el Asesor Experto no entra en el

if (OrderProfit() < 0)


¿Qué estoy haciendo mal?

 
borilunad:
¿Tiene un EA que sólo abre posiciones? Cada copia (versión) debe tener su propio mago y cada uno sólo controlará sus propias posiciones.

Lo tengo. ¡Muchas gracias!
 
belozad:

Ayuda a la comprensión:

La tarea consiste en contar individualmente las órdenes de compra/venta perdedoras. Código:

int w = OrdersHistoryTotal()-1;
   if (OrderSelect(w, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      {
         if (OrderType()==OP_BUY) i = i + 1;
         if (OrderType()==OP_SELL) y = y + 1;
         Print("i, y", i, " ", y);
         Print("OrderProfit()", OrderProfit());
      }
   }


El código en sí es un fragmento de un EA. El EA está funcionando y generando pérdidas constantemente. Hay un montón de órdenes perdidas (las imprimo en otro lugar), todas ellas registradas. Pero en este fragmento de código, el Asesor Experto no entra en el

if (OrderProfit() < 0)


¿Qué estoy haciendo mal?

Prueba con

int w = OrdersHistoryTotal();
int BUY=0;
int SELL=0;

for (i=0; i<w; i++)
 {
   if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      { 
         if (OrderType()==OP_BUY) BUY++;
         if (OrderType()==OP_SELL) SELL++;
      }
   }
}
 Print("  BUY = ",BUY);
 Print("  SELL = ",SELL);       
 

Me estoy volviendo loco, ¿qué le pasa a mi mql4?

¿Por qué el software realiza la siguiente condición en cada ciclo? ¡Está escrito que la "i" sólo debe imprimirse cuando se cierra un nuevo pedido!

  w = OrdersHistoryTotal();
   if (i!=w)
   {
      i = w;
      Print ("i :", i);
   }

 
belozad:

Me estoy volviendo loco, ¿qué le pasa a mi mql4?

¿Por qué el programa ejecuta la siguiente condición en cada ciclo? ¡Está escrito para imprimir "i" sólo cuando se cierra una nueva orden!

  w = OrdersHistoryTotal();
   if (i!=w)
   {
      i = w;
      Print ("i :", i);
   }



Si i no es una variable estática, se imprimirá en cada tick.
 
badbadboy:

Si i no es una variable estática seguirá imprimiendo en cada tick.

¡Ooh, me preguntaba por qué tengo varias piezas en mi programa trabajando por el culo! =)

Entonces, ¿todas las variables de trabajo cuyos valores utilizo en diferentes ticks deben ser declaradas estáticas?

 
belozad:

¡Ooh, me preguntaba por qué tengo unos cuantos programas informáticos trabajando por el culo! =)

Entonces, ¿todas las variables de trabajo cuyos valores utilizo en diferentes instantes tienen que ser declaradas estáticas?


Es difícil de decir. Mira las propiedades de las variables y luego piensa qué declarar y cómo hacerlo.
 

La función OrderModify() no permite modificar los comentarios. ¿Hay alguna otra forma de hacerlo?

 
pasha5282:

La función OrderModify() no permite modificar los comentarios. ¿Hay alguna otra forma de hacerlo?


Sólo desde la terminal.