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

 
ALXIMIKS:

+ He leído en algún sitio que es útil comprobar también el OrderClosetime de los tickets abiertos al seleccionar (lo tienen = 0).
Esto es para la selección por billete. Aquí es la selección por índice.
 

¡Hola!

Como siempre necesito ayuda, no puedo averiguar cómo seleccionar correctamente las órdenes pendientes por número mágico. Puede alguien enviarme el código para ver cómo hacerlo por ejemplo. Gracias de antemano).

 
zaqwsx123:

¡Hola!

Como siempre, necesito ayuda, no consigo averiguar cómo seleccionar correctamente las órdenes pendientes por número mágico. Puede alguien enviarme el código para ver cómo hacerlo por ejemplo. Gracias de antemano).


ALXIMIKS 11.09.2013 21:36 #

void DeletePendingOrders()
{
    int NumberOfTry,
        err,
        ticket;

   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() > 1)
      {
         ticket = OrderTicket();
         NumberOfTry=0;

         while (NumberOfTry < 5)
         {
            while (!IsTradeAllowed()) Sleep(5000);
      
            if (OrderDelete(ticket, Red))
                breake;
            else
                err = GetLastError();
      
            if (err > 0)
            { 
              Print(NumberOfTry," #",ticket," Error modifing order: (", err , ") ");
              Sleep(5000);  NumberOfTry++;
            }
         }
      }
   }
}

alguien pidió una vez ayuda con este código, es un ejemplo de cómo eliminar todas las órdenes pendientes

No sé si el código será siempre adecuado en el probador, no diré nada del real

 
ALXIMIKS:

alguien pidió una vez ayuda con este código, aquí hay un ejemplo de cómo eliminar todas las órdenes pendientes

No sé si el código será siempre adecuado en el probador.

No entiendo, si no estás seguro del código, ¿por qué lo enseñas a quien te pregunta? La respuesta debe ser siempre correcta, no "tal vez funcione, he cometido algunos errores ahí"...
 
zaqwsx123:

¡Hola!

Como siempre, necesito ayuda, no consigo averiguar cómo seleccionar correctamente las órdenes pendientes por número mágico. Puede alguien enviarme el código para ver cómo hacerlo por ejemplo. Gracias de antemano)

Selecciona cualquier orden abierta en último lugar y devuelve su ticket. Si no hay tal orden, devuelve -1 :

//-----------------------------------------------------------------------------+
int GetTicketLastOpenOrder(string sy, int op, int mn) {
   int   i, j=-1, t=0, k=OrdersTotal()-1;
   for (i=k; i>=0; i--) {                       // цикл от конца к началу
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderMagicNumber()!=mn)   continue;// если магик не тот - переходим к следующему
         if (OrderSymbol()!=sy)        continue;// если символ не тот - переходим к следующему
         if (OrderType()!=op)          continue;// если тип не тот - переходим к следующему
         if (t<OrderOpenTime()) {   // выбран нужный, ...
            t=OrderOpenTime();      // ... ищем последний ...
            j=i;                    // ... открытый ордер
            }
         }
      else Print("FUNC GetTicketLastOpenOrder() ошибка выбора ордера "+GetLastError());
      }
   if (OrderSelect(j,SELECT_BY_POS)) return(OrderTicket()); // если найден ордер, вернём его тикет
   return(-1);                                              // иначе - возвращаем -1
}
//-----------------------------------------------------------------------------+
 
artmedia70:
Hombre, no entiendo, si no estás seguro en el código, ¿por qué se lo enseñas a la persona que hace la pregunta? La respuesta debe ser siempre correcta, no "tal vez funcione, he cometido algunos errores ahí"...

Bueno, esa es la forma que tiene el hombre de imponerse.

Aquí ya ha demostrado su arrogancia.

 
PapaYozh:

Bueno, esa es la forma que tiene el hombre de imponerse.

Ya ha mostrado su arrogancia aquí.

Bueno... algunos golpean a sus esposas, otros hablan en foros, otros hacen revoluciones... Las personas son diferentes. A cada uno lo suyo.
 
artmedia70:
Bueno... alguien pega a su mujer, alguien parlotea en foros, alguien hace revoluciones .... Las personas son diferentes. A cada uno lo suyo.

Si una persona hace una pregunta por la noche, cuya respuesta no es tan complicada, pero debido a mi inexperiencia, por puro principio, no puedo responder por la corrección del 100% del código,

¿es mejor que espere 8 horas para recibir una respuesta de un profesional?

O podrían ayudarme rápidamente a conseguir un código correcto (si un desarrollador no está desesperado...).

Yo elegí la segunda opción, y creo que está justificada, piensa lo que quieras y sé feliz.

 
ALXIMIKS:
artmedia70:
Bueno... algunos pegan a sus esposas, otros parlotean en foros, otros hacen revoluciones... Las personas son diferentes. A cada uno lo suyo.

Si una persona hace una pregunta por la noche, cuya respuesta no es tan complicada, pero debido a mi inexperiencia, por puro principio, no puedo responder por la corrección del 100% del código,

¿es mejor que espere ocho horas para recibir una respuesta de un profesional?

Por supuesto, un novato es mejor que espere hasta la mañana para buscar errores en el código de otra persona que dormir bien y obtener una respuesta competente.

Lo que quiero decir es que cuando respondas a un principiante, piensa en que puede que no tenga mucha experiencia.

 

Existe una biblioteca hoz_LoggingToAnywhere@Library.mq4, que se llama desde el archivo de cabecera hoz_Base@Include.mqh

Al compilar la biblioteca hoz_LoggingToAnywhere@Library.mq4 lo veo en el registro:

'StringConcatenate' - incompatible types        D:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\include\hoz_Base@Include.mqh (75, 12)

Voy allí... Y ahí lo veo:

   //---- Контролируем возможные ошибки
   fPrint (StringConcatenate ("fInitBase() => ", fErrorToString (bi_Err)));

Llamar a esta función fPrint desde otras librerías no hace que se culpe a nadie, pero desde el archivo de cabecera... sí. ¿Por qué? Ya se ha copiado personaje a personaje...