ORDER_POSITION_ID - página 2

 
Se necesita más contexto (código). ¿De dónde viene este billete y a qué equivale antes de que se ejecute este código?
 
Rosh:

Tal vez esto se deba a que ORDER_POSITION_ID se solicita inmediatamente después de la ejecución de la orden, cuando el servidor de operaciones aún no ha tenido tiempo de enviar información sobre la transacción.

Leer el artículo Eventos comerciales en MetaTrader 5


He dado un fragmento de código como ejemplo, pero en realidad la función para obtener el ID se parece a esto:

//+------------------------------------------------------------------+
//| Get order position ID function                                   |
//+------------------------------------------------------------------+
long GetOrderPosId( const ulong ticket )
{
  long pos_id = 0;
  
  if ( OrderSelect( ticket ) )
  {
    string pos_symbol = OrderGetString( ORDER_SYMBOL );
    
    if ( PositionSelect( pos_symbol ) )
    {
      return( long( OrderGetInteger( ORDER_POSITION_ID ) ) );
    }
  }
  
  return( pos_id );
}

P/S Rosh, por favor no me mandes a leer artículos.

Créanme, he leído mucho, y el hecho de preguntar mucho

Preguntas, es porque hay mucha ambigüedad en la documentación.

 
marketeer:
Necesitamos más contexto (código). ¿De dónde viene este billete y a qué equivale antes de que se ejecute este código?

Si se selecciona la orden, ¿cuál cree que era el billete?

Y el billete fue retirado de Internet como respuesta a la orden aceptada por el servidor de comercio.

 
Mikalas:

Si se selecciona la orden, ¿cuál cree que era el billete?

Y el billete fue retirado de Internet como respuesta a la orden aceptada por el servidor de comercio.

¿Y cómo crees que sabemos qué y de dónde lo sacas? Sigues mostrando un código que no dice nada sobre el contenido del ticket, sobre cómo se ha ejecutado la petición, y no utilizas, por ejemplo, debug print u otros medios para comprobar que la variable no contiene un número de la izquierda (para empezar, entonces request.action es igual a qué?). Un bicho puede colarse en cualquier parte.
 
marketeer:
¿Cómo crees que sabemos lo que recibes y de dónde viene? Sigues mostrando un código que no dice nada sobre el contenido del ticket, sobre cómo se ha ejecutado la petición, y no utilizas, por ejemplo, debug print u otros medios para asegurarte de que la variable no es un número de la izquierda (para empezar, entonces request.action es igual a qué?). Un bicho puede colarse en cualquier parte.
Gracias, entiendo su punto de vista.
 
Mikalas:
Gracias, entiendo su punto de vista.
De nada. No entiendo su punto. Ya se le ha insinuado la ejecución asíncrona de la solicitud y la recepción del ticket. Hasta que no muestre el código cómo y cuándo procesa estas cosas, la pregunta resulta estar dirigida a los telépatas.
 
marketeer:
De nada. Y no entiendo su punto. Ya se le ha insinuado la ejecución asíncrona de la solicitud y la recepción del ticket. Hasta que no muestre el código, cómo y cuándo procesa estas cosas, la pregunta resulta estar dirigida a los telépatas.

Déjeme explicarle.

A partir del código anterior, todo es obvio.

No importa el billete (el pedido se hace solo). Fíjese bien (orden por ticket y posición por símbolo de orden abierta parcialmente ejecutada por esta orden).

Además de la impresión, también hay una ejecución paso a paso del programa y

cuando llegue a

return( long( OrderGetInteger( ORDER_POSITION_ID ) ) );

Devuelve "0".

La pregunta no es si puedo o no puedo programar en MQL5 (así como trazar el programa), sino

La cuestión es si en la documentación dice una cosa y en la aplicación otra (el service Desk no dice nada, como siempre).

O puede que haya interpretado correctamente la descripción dada en la documentación sobreORDER_POSITION_ID

(leer mis 3 posts).

 
Mikalas:

Déjeme explicarle.

A partir del código anterior, todo es obvio.

No importa el billete (el pedido se hace solo). Fíjate bien (orden por ticket y posición por símbolo de orden abierta parcialmente ejecutada por esta orden).

Además de la impresión, también hay una ejecución paso a paso del programa y

cuando llegue a

Devuelve "0".

La pregunta no es si puedo o no puedo programar en MQL5 (así como trazar el programa), sino

La cuestión es si en la documentación dice una cosa y en la realidad aparece otra (el service Desk calla como siempre).

O puede que haya interpretado correctamente la descripción dada en la documentación sobreORDER_POSITION_ID

(Lee mis 3 posts).

Otra vez 25. Es IMPORTANTE qué pedido y cómo lo haces. Tal vez, por ejemplo (hipotéticamente, porque todo sigue siendo un misterio), tienes un péndulo, entonces ¿cuál puede ser la posición ID?

El código anterior no tiene ningún sentido.

 
marketeer:

25 de nuevo. Es IMPORTANTE qué pedido y cómo lo haces. Tal vez usted tiene, por ejemplo (hipotéticamente, porque todo es todavía un misterio), un péndulo, entonces ¿cuál puede ser la posición ID?

El código anterior no tiene ningún sentido.

Lo siento, pero hablamos idiomas "diferentes", o lees al otro lado de la línea.

La orden pendiente es UNA y la posición ha sido parcialmente abierta por estaorden que sigue vigente,

Al trazar el programa, consigodevolver( long( OrderGetInteger( ORDER_POSITION_ID ) ) );

 
Mikalas:

Lo siento, pero tú y yo estamos hablando en idiomas "diferentes", o estás leyendo al otro lado de la línea.

La orden pendiente es UNA y la posición ha sido parcialmente abierta por estaorden, que sigue vigente,

Al trazar el programa, consigodevolver( long( OrderGetInteger( ORDER_POSITION_ID ) ) );

Usted observa esta orden parcialmente ejecutada. ¿Dónde está? ¿En la lista de operaciones o en las órdenes ejecutadas?