Tengo una pregunta similar para todos y especialmente para fxsaber. Parece una pregunta primitiva, pero no encuentro la respuesta. Aquí https://www.mql5.com/ru/forum/6343/page939 me dijeron "Intenta buscarlo. fxsaber ha estado trabajando en este problema durante un tiempo. Lo que funcionó, no lo sé, no me interesa". Así que decidí preguntarle.
La cuestión es la siguiente. He abierto una posición y quiero imprimir el contenido de MqlTradeResult:
retcode, order y volume se imprimen, pero deal y price son siempre ceros. Por favor, díganme qué estoy haciendo mal y cómo puedo acceder (al menos, imprimirlo primero) al contenido de la estructura de resultados.
¿Qué te parece esto?
//+------------------------------------------------------------------+MqlTradeRequest request={0};
MqlTradeResult result={0};
//---
request.action = TRADE_ACTION_DEAL; // type of trade operation
request.symbol = Pair1; // symbol
request.volume = lots; // volume of lot
request.type = oper; // order type
request.price = priceOpen; // price for opening
request.deviation= Slippage; // allowed deviation from the price
request.magic = magic;
//---if(OrderSend(request,result))
{
Print ("retcode = " +IntegerToString (result.retcode) + "; ");
Print ("deal = " +IntegerToString (result.deal) + "; ");
Print ("order = " +IntegerToString (result.order) + "; ");
Print ("volume = " +DoubleToString (result.volume) + "; ");
Print ("price = " +DoubleToString (result.price) + "; ");
}
else
{
// Здесь действия при ошибке открытия
}
//+------------------------------------------------------------------+
Abro una posición y quiero imprimir el contenido de MqlTradeResult así:
retcode, order y volume se imprimen pero deal y price son siempre ceros. Por favor, indíqueme qué estoy haciendo mal y cómo puedo acceder (al menos imprimirlo primero) al contenido de la estructura de resultados.
Pues entonces no está nada claro, pensaba que estaba haciendo algo mal, y si hay ceros ahí, ¿para qué sirve el resultado? Veo una orden abierta, obtengo result.retcode 10009 y result.price = 0 ? ¿Puede explicar el significado de resultado si no contiene un resultado?
Esta es una característica de MT5 en la que el resultado es sólo una orden (ticket y sin precio) pero no una operación. Tienes varias opciones
Averigua por ti mismo cómo funcionan las cosas.
Utilice desarrollos de nivel superior ya preparados (el nivel inferior está oculto) en los que se saltan casi todos los escollos.
Gracias.
En MQL4 no había una estructura de resultados y recibíamos un ticket y seleccionábamos la orden adecuada y solicitábamos los datos necesarios. MQL5 tiene la estructura de resultados que contiene muchos datos necesarios, y sería ilógico no utilizarla.
1. Antes de hacer una pregunta en el foro, traté de "averiguar por mí mismo cómo funciona todo" y lo que veo - en la estructura de resultados:
structMqlTradeResult
{
uint retcode; // Operation return codeulong deal; // Deal ticket, if it is performedulong order; // Order ticket, if it is placeddouble volume; // Deal volume, confirmed by brokerdouble price; // Deal price, confirmed by brokerdouble bid; // Current Bid pricedouble ask; // Current Ask pricestring comment; // Broker comment to operation (by default it is filled by description of trade server return code)uint request_id; // Request ID set by the terminal during the dispatchuint retcode_external; // Return code of an external trading system
};
present double price; // Precio de la transacción, confirmado por el corredor.
En el código de ejemplo del desarrollador
//--- send the requestif(!OrderSend(request,result))
PrintFormat("OrderSend error %d",GetLastError()); // if unable to send the request, output the error code//--- information about the operationPrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
sale result.deal, es decir, se supone que tiene sentido y no siempre se representa por cero en la estructura de resultados. Se podrían dar otros ejemplos que indiquen que tanto result.price como result.deal se pueden obtener de MqlTradeResul, que es lo que he intentado hacer.
En ningún lugar he visto información de que "Esta es una característica de MT5 donde el resultado es sólo una orden (ticket y sin precio), pero no una operación". ¿Podría decirme en qué información se basa para llegar a esta conclusión?
2. Si conoces algún "desarrollo de nivel superior ya preparado (el nivel inferior está oculto)", que permita obtener los parámetros de una posición inmediatamente después de su apertura (aparece el código 10009), sin necesidad de selección previa por ticket, por favor, ponme un ejemplo o dame un enlace a él.
En MQL4 no existía una estructura de resultados y seleccionábamos la orden adecuada y solicitábamos los datos necesarios. MQL5 tiene la estructura de resultados con muchos datos necesarios y sería ilógico no utilizarla.
1. Antes de hacer una pregunta en el foro, he intentado "averiguar por mí mismo cómo funciona todo" y lo que he visto es que el resultado de la estructura:
Hay un precio doble; // Precio de la transacción, confirmado por el corredor.
En el código de ejemplo del desarrollador
sale result.deal, es decir, se supone que tiene sentido y no siempre se representa por cero en la estructura de resultados. Hay otros ejemplos que indican que tanto result.price como result.deal se pueden obtener de MqlTradeResul, que es lo que he intentado hacer.
En ningún sitio he visto información de que "se trata de una característica de MT5 en la que el resultado es sólo una orden (ticket y sin precio) pero no una operación". ¿Podría decirme en qué información se basa para llegar a esta conclusión?
2. Si conoce algún "desarrollo de nivel superior listo (el nivel inferior está oculto)" que permita obtener los parámetros de una posición inmediatamente después de abrirla (aparece el código 10009), sin necesidad de una selección previa por ticket, por favor, ponga un ejemplo o dé un enlace a él.
Una solicitud de negociación da lugar a un rechazo o a una orden de mercado. Esto no es una operación, ni una posición generada por una operación.
Se envía al servidor una orden de apertura de una posición (orden = orden)
Si la orden es aceptada, se devuelve el resultado de aceptar la orden y ponerla en la cola.
Si la orden se ha ejecutado, aparece la operación, el resultado de la ejecución de la orden.
La operación dará lugar a una nueva posición, o a un aumento/disminución del tamaño de la posición existente, o al cierre de la posición, o a una refinanciación. O una nueva posición (en una cuenta de cobertura).
Una solicitud de negociación tiene como resultado un rechazo o una orden de mercado. Esto no es una operación, ni una posición generada por una operación.
Se envía al servidor una orden de apertura de una posición (orden = orden)
Si la orden es aceptada, se devuelve el resultado de aceptar la orden y ponerla en la cola.
Si la orden se ha ejecutado, aparecerá una operación como resultado de la ejecución de la orden.
El resultado de una operación será una nueva posición, o un aumento/disminución del tamaño de una posición existente, o el cierre de una posición, o una refinanciación. O una nueva posición (en caso de una cuenta de cobertura)
Gracias - por favor, dígame: - ¿Después de qué paso crees que aparece la estructura de resultado de la solicitud de comercio (MqlTradeResult), de los que has enumerado?
- Según la descripción de MQL5: " Estructura del resultado de la solicitud de negociación (MqlTradeResult) Como respuesta a una solicitud de comercio, el servidor de comercio devuelve datos que contienen el resultado del procesamiento de la solicitud de comercio como una estructura especial predefinida MqlTradeResult". y "10009 TRADE_RETCODE_DONE Orden ejecutada".
Es decir, el código de retorno del servidor de comercio 10009 significa que la solicitud de OrderSend se ejecutó con éxito, es decir, si solicito datos de MqlTradeResult, después de recibir el código 10009, ¿cómo puedo explicar que result.price = 0?
Algotrader18: Gracias: - ¿Después de qué paso, de los enumerados por usted, aparece la estructura del resultado de la solicitud de comercio (MqlTradeResult)?
- Según la descripción de MQL5: " Estructura del resultado de la solicitud de negociación (MqlTradeResult) Como respuesta a una solicitud de comercio, el servidor de comercio devuelve datos que contienen el resultado del procesamiento de la solicitud de comercio como una estructura especial predefinida MqlTradeResult". y "10009 TRADE_RETCODE_DONE Orden ejecutada".
Por lo tanto, el código de retorno del servidor de comercio 10009 significa que la solicitud OrderSend se ejecutó con éxito, es decir, si solicito datos de MqlTradeResult, después de recibir el código 10009, ¿cómo puedo explicar que result.price = 0?
10009 TRADE_RETCODE_DONE - usted mismo lo ha descrito - la orden se ejecuta. Esto es simplemente el hecho de que la orden se ha puesto en cola en el servidor para su ejecución.
Además, si esta orden se ejecuta (después de todo, puede ser rechazada por el servidor), entonces hay una operación - este es el resultado de la operación con el precio de apertura.
Se llama en los Asesores Expertos cuando se produce un evento TradeTransaction. La función está destinada a procesar los resultados de la ejecución de las solicitudes de operaciones.
voidOnTradeTransaction( ) const MqlTradeTransaction&trans,// estructura de una transacción comercial const MqlTradeRequest&request,// estructura de la solicitud const MqlTradeResult& result// estructura de la respuesta );
При обрабокте транзакций типа TRADE_TRANSACTION_REQUEST для получения дополнительной информации необходимо анализировать второй и третий параметры функции OnTradeTransaction() – Отправка торгового запроса на покупку приводит к цепи торговых транзакций, которые совершаются на торговом счете: 1) запрос принимается на обработку, 2) далее для...
En ningún lugar he visto la información de que "Esta es una característica de MT5 donde el resultado es sólo una orden (ticket y sin precio) pero no una operación". Por favor, dígame en base a qué información ha llegado a esta conclusión.
Experiencia propia.
2. Si conoce algún "desarrollo de nivel superior ya preparado (el nivel inferior está oculto)", que permita obtener los parámetros de una posición inmediatamente después de su apertura (aparece el código 10009), sin necesidad de selección previa por ticket, por favor, ponga un ejemplo o dé un enlace a él.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
¡Buenas tardes!
Tengo una pregunta similar para todos y especialmente para fxsaber.
Parece una pregunta primitiva, pero no encuentro la respuesta.
Aquí https://www.mql5.com/ru/forum/6343/page939 me dijeron "Intenta buscarlo. fxsaber ha estado trabajando en este problema durante un tiempo. Lo que funcionó, no lo sé, no me interesa". Así que decidí preguntarle.
La cuestión es la siguiente. He abierto una posición y quiero imprimir el contenido de MqlTradeResult:
retcode, order y volume se imprimen, pero deal y price son siempre ceros.
Por favor, díganme qué estoy haciendo mal y cómo puedo acceder (al menos, imprimirlo primero) al contenido de la estructura de resultados.
¿Qué te parece esto?
Abro una posición y quiero imprimir el contenido de MqlTradeResult así:
retcode, order y volume se imprimen pero deal y price son siempre ceros.
Por favor, indíqueme qué estoy haciendo mal y cómo puedo acceder (al menos imprimirlo primero) al contenido de la estructura de resultados.
Los ceros se escriben en el resultado.
¿Qué te parece esto?
Los ceros y se prescriben en el resultado.
Veo una orden abierta, obtengo result.retcode 10009 y result.price = 0 ?
¿Puede explicar el significado de resultado si no contiene un resultado?
Por favor, explique qué sentido tiene si no contiene el resultado.
Esta es una característica de MT5 en la que el resultado es sólo una orden (ticket y sin precio) pero no una operación. Tienes varias opciones
Esta es una característica de MT5 en la que el resultado es sólo una orden (ticket y sin precio) pero no una operación. Tienes varias opciones
En MQL4 no había una estructura de resultados y recibíamos un ticket y seleccionábamos la orden adecuada y solicitábamos los datos necesarios. MQL5 tiene la estructura de resultados que contiene muchos datos necesarios, y sería ilógico no utilizarla.
1. Antes de hacer una pregunta en el foro, traté de "averiguar por mí mismo cómo funciona todo" y lo que veo - en la estructura de resultados:
sale result.deal, es decir, se supone que tiene sentido y no siempre se representa por cero en la estructura de resultados. Se podrían dar otros ejemplos que indiquen que tanto result.price como result.deal se pueden obtener de MqlTradeResul, que es lo que he intentado hacer.present double price; // Precio de la transacción, confirmado por el corredor.
En el código de ejemplo del desarrollador
En ningún lugar he visto información de que "Esta es una característica de MT5 donde el resultado es sólo una orden (ticket y sin precio), pero no una operación". ¿Podría decirme en qué información se basa para llegar a esta conclusión?
2. Si conoces algún "desarrollo de nivel superior ya preparado (el nivel inferior está oculto)", que permita obtener los parámetros de una posición inmediatamente después de su apertura (aparece el código 10009), sin necesidad de selección previa por ticket, por favor, ponme un ejemplo o dame un enlace a él.
Gracias.
En MQL4 no existía una estructura de resultados y seleccionábamos la orden adecuada y solicitábamos los datos necesarios. MQL5 tiene la estructura de resultados con muchos datos necesarios y sería ilógico no utilizarla.
1. Antes de hacer una pregunta en el foro, he intentado "averiguar por mí mismo cómo funciona todo" y lo que he visto es que el resultado de la estructura:
sale result.deal, es decir, se supone que tiene sentido y no siempre se representa por cero en la estructura de resultados. Hay otros ejemplos que indican que tanto result.price como result.deal se pueden obtener de MqlTradeResul, que es lo que he intentado hacer.Hay un precio doble; // Precio de la transacción, confirmado por el corredor.
En el código de ejemplo del desarrollador
En ningún sitio he visto información de que "se trata de una característica de MT5 en la que el resultado es sólo una orden (ticket y sin precio) pero no una operación". ¿Podría decirme en qué información se basa para llegar a esta conclusión?
2. Si conoce algún "desarrollo de nivel superior listo (el nivel inferior está oculto)" que permita obtener los parámetros de una posición inmediatamente después de abrirla (aparece el código 10009), sin necesidad de una selección previa por ticket, por favor, ponga un ejemplo o dé un enlace a él.
Una solicitud de negociación da lugar a un rechazo o a una orden de mercado. Esto no es una operación, ni una posición generada por una operación.
Una solicitud de negociación tiene como resultado un rechazo o una orden de mercado. Esto no es una operación, ni una posición generada por una operación.
- ¿Después de qué paso crees que aparece la estructura de resultado de la solicitud de comercio (MqlTradeResult), de los que has enumerado?
- Según la descripción de MQL5:
" Estructura del resultado de la solicitud de negociación (MqlTradeResult)
Como respuesta a una solicitud de comercio, el servidor de comercio devuelve datos que contienen el resultado del procesamiento de la solicitud de comercio como una estructura especial predefinida MqlTradeResult". y "10009 TRADE_RETCODE_DONE Orden ejecutada".
Es decir, el código de retorno del servidor de comercio 10009 significa que la solicitud de OrderSend se ejecutó con éxito, es decir, si solicito datos de MqlTradeResult, después de recibir el código 10009, ¿cómo puedo explicar que result.price = 0?
Gracias:
- ¿Después de qué paso, de los enumerados por usted, aparece la estructura del resultado de la solicitud de comercio (MqlTradeResult)?
- Según la descripción de MQL5:
" Estructura del resultado de la solicitud de negociación (MqlTradeResult)
Como respuesta a una solicitud de comercio, el servidor de comercio devuelve datos que contienen el resultado del procesamiento de la solicitud de comercio como una estructura especial predefinida MqlTradeResult". y "10009 TRADE_RETCODE_DONE Orden ejecutada".
Por lo tanto, el código de retorno del servidor de comercio 10009 significa que la solicitud OrderSend se ejecutó con éxito, es decir, si solicito datos de MqlTradeResult, después de recibir el código 10009, ¿cómo puedo explicar que result.price = 0?
10009 TRADE_RETCODE_DONE - usted mismo lo ha descrito - la orden se ejecuta. Esto es simplemente el hecho de que la orden se ha puesto en cola en el servidor para su ejecución.
Además, si esta orden se ejecuta (después de todo, puede ser rechazada por el servidor), entonces hay una operación - este es el resultado de la operación con el precio de apertura.
Leer sobre
OnTradeTransaction
Se llama en los Asesores Expertos cuando se produce un evento TradeTransaction. La función está destinada a procesar los resultados de la ejecución de las solicitudes de operaciones.
voidOnTradeTransaction( )
const MqlTradeTransaction&trans,// estructura de una transacción comercial
const MqlTradeRequest&request,// estructura de la solicitud
const MqlTradeResult& result// estructura de la respuesta
);
En ningún lugar he visto la información de que "Esta es una característica de MT5 donde el resultado es sólo una orden (ticket y sin precio) pero no una operación". Por favor, dígame en base a qué información ha llegado a esta conclusión.
Experiencia propia.
2. Si conoce algún "desarrollo de nivel superior ya preparado (el nivel inferior está oculto)", que permita obtener los parámetros de una posición inmediatamente después de su apertura (aparece el código 10009), sin necesidad de selección previa por ticket, por favor, ponga un ejemplo o dé un enlace a él.
Hay otra opción, pero es "avanzada".