OnTradeTransaction - página 6

 
prostotrader:

Puede que no recuerdes nada en absoluto

Estoy de acuerdo en que esto funcionaría (en el caso de un vertido completo)
void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result )
{
  if ((Trans.type == TRADE_TRANSACTION_DEAL_ADD) && (Trans.position > 0) && !PositionSelectByTicket(Trans.position))
    Print("Position #" + (string)Trans.position + " - triggered SL/TP.");
}

Pero la conversación parece ampliarse un poco más.
 
Andrey Dik:

Estás muy desatento, yo no soyel que inicia el tema.

También deberías mostrarme un código como este:

//——————————————————————————————————————————————————————————————————————————————
void  OnTradeTransaction (const MqlTradeTransaction &trans,   // структура торговой транзакции
                          const MqlTradeRequest     &request, // структура запроса
                          const MqlTradeResult      &result)  // структура ответа
{
  
}  

Si no te gusta, puedes usar a Joba. ¿Es así?

He dedicado bastante tiempo a responder a su pregunta.

Si su pregunta no fuera tan "abstracta", quizás la respuesta sería más concreta.

A saber:

1. FORTS o FOREX

2. ¿Qué tipo de red se utiliza o de cobertura?

3. si se utilizan otras órdenes durante la vida del puesto

La pregunta es la misma que la respuesta.

 
fxsaber:
Estoy de acuerdo en que esto funcionaría (en el caso de un llenado completo)
void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result )
{
  if ((Trans.type == TRADE_TRANSACTION_DEAL_ADD) && (Trans.position > 0) && !PositionSelectByTicket(Trans.position))
    Print("Position #" + (string)Trans.position + " - triggered SL/TP.");
}

Pero la conversación parece ampliarse un poco más.

No recuerdo que se pueda ajustar el volumen para ST/TP.

Si no es así (voy a comprobarlo ahora), la posición se cerrará COMPLETA o SL o TP

 
prostotrader:

No recuerdo haber esperado a que ST/TP pusiera el volumen, si no es así,

entonces la posición se cerrará FULL o SL o TP

La liquidez puede no ser suficiente.
 
fxsaber:
La liquidez puede no ser suficiente.
Sí, y el Broker puede cortar la corriente :)....
 
prostotrader:
Sí, y el corredor puede apagar la energía :)....
Coge un instrumento poco líquido y ya está.
 
fxsaber:
Coge un instrumento poco líquido y ya está.

Por eso recomendé el uso de órdenes pendientes

Añadido por

Depende mucho del mercado y del instrumento...

 
<br/ translate="no">

Para identificar con precisión a qué orden se respondió en el evento OnTradeTransaction, todos los eventos que no sean el de la primera orden se firman con un ticket.

El primer evento está firmado por el ticket y request_id. El request_id lo obtiene el usuario justo después de enviar el pedido desde la función OrderSendAsinc. Así se vincula una iteración específica de OrderSendAsinc con los resultados obtenidos en OnTradeTransaction.

El ticket en OrderSendAsync podría ni siquiera existir, y lo más probable es que no lo haga si estamos disparando órdenes a cien por segundo (retcode 10008 en el mejor de los casos, y ya está).

 
dmipec:

El ticket en OrderSendAsync puede o no estar ahí y lo más probable es que no lo esté si las órdenes se disparan a unos cuantos miles de unidades por segundo (retcode 10008 en el mejor de los casos y todo).

Bueno, no diez, sólo 30 por segundo en un inicio de sesión estándar.

Si lo ha escrito correctamente, la orden o las órdenes estarán definitivamente allí.

 
Vasiliy Sokolov:

En lugar de analizar los acontecimientos, debe analizar el entorno comercial y sólo si el entorno comercial ha cambiado debe tomar las decisiones necesarias. OnTransaction sólo puede utilizarse en casos muy limitados, y normalmente es mejor prescindir de él en su trabajo. Mira MetaTrader 4, no tiene OnTransaction y todo el mundo prescinde de él.

Estoy de acuerdo. Pero desgraciadamente en MT5, a diferencia de MT4, el entorno de negociación puede no corresponder a la realidad. Por ejemplo, cuando una orden pendiente se ejecuta durante varios milisegundos, es posible que no se encuentre en ninguna parte. Y ni siquiera OnTradeTransaction ayudará aquí.