[¡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 248

 
Bicus:

¿Qué es eso? Está pasando por todos los órdenes de la historia, ¿no? Está claro que el cuerpo del bucle puede limitarse de alguna manera por fechas, etc.

Lo que quería decir en mi pregunta es si hay algún truco para almacenar sólo los últimos pedidos cerrados en el historial del probador, es decir, como se hace en el historial real.

En la historia real funciona de la misma manera. Se buscan todos los pedidos del historial de la cuenta.

La historia no está corregida. Es el mismo para esta cuenta y sólo se puede actualizar con nuevos eventos.

 
artmedia70:

Parece que ya es aburrido... Es elemental, Watson:

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
if (ObjectFind("MyPriceLine")<0) ObjectCreate("MyPriceLine", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine", OBJPROP_PRICE1, Ask+20*Point);
return(0);
}

//+------------------------------------------------------------------+
Gracias por la esperada respuesta. No puedo entender, ¿cómo me ayudará a resolver mi problema? ¿Cómo hago para que las líneas se dibujen por encima y por debajo de Ask y del mismo EA al mismo tiempo?
 
globad:
Gracias por la respuesta tan esperada. No veo cómo esto me ayudará a resolver mi problema. ¿Cómo hago para que las líneas se dibujen por encima y por debajo de Ask y del mismo EA al mismo tiempo?
Dale a las líneas nombres diferentes .
 
Vovo4ka:

Chicos ayuda, la condición es la siguiente: tres velas alcistas, a continuación, hay una "toma de posesión" .... Abrí una posición para vender de manera similar a comprar ... aquí está el código donde el error es?

¿dónde está el error?
 
sergeev:
¿Cuál es el problema?

no funciona así....... no abre posiciones.... aunque veo por el historial que debería abrir, pero no abre posiciones... solo se queda en silencio y sin errores
 
¿Cómo hago para que una operación no se abra más que, por ejemplo, una por hora?
 
artmedia70:
Dale a las líneas nombres diferentes .

¿De alguna manera...?

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int start()
{
if (ObjectFind("MyPriceLine1")<0) ObjectCreate("MyPriceLine1", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine1", OBJPROP_PRICE1, Ask+20*Point);
if (ObjectFind("MyPriceLine2")>0) ObjectCreate("MyPriceLine2", OBJ_HLINE, 0, 0, Ask-20*Point) ;
ObjectSet("MyPriceLine2", OBJPROP_PRICE1, Ask-20*Point);
return(0);
}
//+------------------------------------------------------------------+
 
Vovo4ka:
Chicos, ¿cómo hago para que una operación no se abra más que, digamos, una vez por hora?

Por ejemplo, así:

//+----------------------------------------------------------------------------+
datetime SecondsAfterOpenLastPos(string sy, int op, int mn) 
{
   datetime t;
   int      i, k=OrdersTotal();

   if (sy=="0") sy=Symbol();
   for (i=0; i<k; i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()!=sy)        continue;
         if (OrderType()!=op)          continue; 
         if (OrderMagicNumber()!=mn)   continue; 
         if (t<OrderOpenTime()) t=OrderOpenTime();
         }
      }
  return(TimeCurrent()-t);
}
//+----------------------------------------------------------------------------+

Llama así:

if (SecondsAfterOpenLastPos(NULL, OP_SELL, Magic)>=(Period()*3)*60) {
   // --- код, если прошло три минуты и более с момента открытия ... 
   // ... последней позиции Sell  с магиком Magic  на текущем символе ---
   }
Espero que pueda convertir los minutos en horas... :)
 
globad:

¿De alguna manera...?

No preguntes, comprueba con un probador... :)
 
globad:

¿De alguna manera...?

if (ObjectFind("MyPriceLine1")<0) ObjectCreate("MyPriceLine1", OBJ_HLINE, 0,0, Ask+20*Point);
                                     ObjectSet("MyPriceLine1", OBJPROP_PRICE1, Ask+20*Point);
if (ObjectFind("MyPriceLine2")>0) ObjectCreate("MyPriceLine2", OBJ_HLINE, 0,0, Ask-20*Point);
                                     ObjectSet("MyPriceLine2", OBJPROP_PRICE1, Ask-20*Point); 
ObjectFind devuelve -1 si la línea aún no ha sido creada, es decir, también debe escribir ObjectFind("MiLíneaDePrecios2")<0 en el segundo if
Razón de la queja: