Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1453

 
Aleksandr Slavskii #:

Si envía una orden de operación (orden) para realizar una operación TRADE_ACTION_DEAL, es decir, para realizar una operación al precio de mercado actual, cualquier código de retorno (m_result.retcode) distinto de 10009 indicará que la operación no se ha realizado.

Pero no es así. Ya he mostrado aquí cómo obtuve el código 10012, ticket de orden cero, pero la orden se ejecutó. Los MQ no dicen nada al respecto.

Escribí una muletilla para ello, pero será posible comprobarlo sólo después de recibir 10012 de nuevo ).

 
JRandomTrader #:

Por desgracia, no fue así. Ya he mostrado aquí cómo recibí el código 10012, cero ticket de pedido, pero el pedido se ejecutó. MQ no dice nada al respecto.

Escribí una muletilla para ello, pero será posible comprobarlo sólo después de recibir 10012 de nuevo ).

Negocio militar. ordenado, recibió una respuesta como entendido. recibió una respuesta como ejecutado, recibió la confirmación de que ejecutaron como ordenado))))) Todo es humano))))))

 
Valeriy Yastremskiy #:

asunto militar. ordenado, recibió una respuesta como entendido. recibió una respuesta como ejecutado, recibió confirmación de que ejecutaron como ordenado))))) Todo es humano)))))))))))))))))))))))))))))

Y la siguiente orden no se puede dar hasta mañana. ¿Quién necesita un oficio así?

 

señores, ministros)

¿Cómo puedo organizar la comprobación de una orden o posición colocada o ejecutada?

Si se recibe el código 10008, ¿cómo puedo seguir que la orden está colocada en la lista de órdenes o posiciones?

Con el fin de excluir la opción de que el código llegó, pero la posición o el orden no está allí.

//-------------------------------------------------------------------+
void OnTrade()
  {
//--- Фиксируем если позиция открыта
   for(int i=0; i<ArraySize(position_buff); i++)
      if(position_buff[i].timeOp>1)
         if(!match_open_orders(position_buff[i].MagicNumber,position_buff[i].type,position_buff[i].comment)) // проверяю есть ли позиция
           {
            position_buff[i].timeOp= 0;     // Фиксировать время
            Print("Метод OnTrade() по рынку не выполнен. Код возврата=",m_trade.ResultRetcode(),
                  " (",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(position_buff[i].lot));//
           }
         else
            Print("Метод OnTrade() по рынку выполнен успешно. Код возврата=",m_trade.ResultRetcode(),
                  " (",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(position_buff[i].lot));//

  }
//--- Соответствие открытых ордеров ---------------------------------+
bool match_open_orders(long magic,int type,string comment)
  {
//---
   for(int i=PositionsTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i))
        {
         long f= m_position.Magic();
         if(m_position.Comment()==comment)
            if(m_position.Type()==type)
               if(m_position.Magic()==magic)
                  return(true);
        }
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i))
        {
         long f= m_position.Magic();
         if(m_position.Comment()==comment)
            if(m_position.Type()==type)
               if(m_position.Magic()==magic)
                  return(true);
        }
   return(false);
  }
 
Mikhail Toptunov orden o posición emitida o ejecutada.

Si se recibe el código 10008, ¿cómo puedo seguir rastreando que exactamente esa orden está colocada en la lista de órdenes o posiciones?

Para excluir la opción de que el código llegó pero la posición u orden no está allí

Intente utilizar OnTradeTransaction () en lugar de OnTrade( ).

 

¿Funciona MetaTrader 5 en Windows 7,8?

 
pivomoe #:

¿Funciona MetaTrader 5 en Windows 7,8?

Funciona, pero es mejor tener un sistema operativo de 64 bits

 
Mikhail Toptunov #:

Señores ministros)

Veinticinco otra vez.

   for(int i=OrdersTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i))
        {
         long f= m_position.Magic();
         if(m_position.Comment()==comment)
            if(m_position.Type()==type)
               if(m_position.Magic()==magic)
                  return(true);
        }

Una mezcla de caballos, gente....

¿Qué demonios es esto?

Estamos pidiendo el número de órdenes abiertas, pero estamos comprobando las posiciones. Eso no va a funcionar.
 
JRandomTrader #:

Por desgracia, no fue así. Ya he mostrado aquí cómo recibí el código 10012, cero ticket de pedido, pero el pedido se ejecutó. MQ no dice nada al respecto.

Escribí una muletilla para ello, pero será posible comprobarlo sólo después de recibir 10012 de nuevo ).

Esto es una excepción a las reglas, y una persona no puede entender la diferencia entre órdenes, operaciones y posiciones. Y también lo confundes con excepciones))))))

Cuando entienda cómo funciona, será capaz de escribir un cheque para sus propias necesidades.

 
Aleksandr Slavskii #:

... y una persona no puede entender la diferencia entre órdenes, operaciones y posiciones ...

Cuando entienda cómo funciona, será capaz de escribir un cheque para sus propias necesidades.

Todo se describe en detalle aquí.

Saludos, Vladimir.