Tenho uma pergunta semelhante para todos e especialmente para o fxsaber. Parece ser uma pergunta primitiva, mas não consigo encontrar a resposta para ela. Aqui https://www.mql5.com/ru/forum/6343/page939 foi-me dito: "Tente procurá-lo. O fxsaber tem trabalhado neste problema há algum tempo. O que deu certo, eu não sei, não estou interessado". Por isso, decidi perguntar-lhe.
A questão é esta. Abri posição e quero imprimir o conteúdo da MqlTradeResult:
retcode, pedido e volume são impressos, mas o negócio e o preço são sempre zeros. Por favor, me informe o que estou fazendo de errado e como obter acesso (pelo menos, imprima-o primeiro) ao conteúdo da estrutura de resultados?
Que tal isso?
//+------------------------------------------------------------------+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 uma posição e quero imprimir o conteúdo da MqlTradeResult desta forma:
O retcode, o pedido e o volume são impressos, mas o negócio e o preço são sempre zeros. Por favor, informe o que estou fazendo de errado e como obter acesso (pelo menos imprima-o primeiro) ao conteúdo da estrutura de resultados?
Bem, então não está nada claro - eu pensei que estava fazendo algo errado, e se há zeros lá, qual é o objetivo do resultado? Vejo um pedido aberto, recebo result.retcode 10009 e result.price = 0 ? Você pode explicar o significado do resultado se ele não contiver um resultado?
Esta é uma característica da MT5 onde o resultado é apenas um pedido (bilhete e sem preço), mas não uma negociação. Você tem várias opções
Descubra por conta própria como as coisas funcionam.
Utilização de desenvolvimentos já preparados de nível superior (o nível inferior está oculto) onde quase todas as armadilhas são contornadas.
Obrigado.
Na MQL4 não havia nenhuma estrutura de resultados e recebemos um ticket e selecionamos a ordem apropriada e solicitamos os dados necessários. A MQL5 tem a estrutura de resultados que contém muitos dados necessários, e seria ilógico não usá-la.
1. Antes de fazer uma pergunta sobre o fórum, tentei "descobrir por mim mesmo como tudo funciona" e o que vejo - na estrutura 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
};
preço presente em dobro; // Preço de negociação, confirmado pelo corretor.
No código da amostra do desenvolvedor
//--- 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);
resultado.deal, ou seja, assume-se que faz sentido e nem sempre é representado por zero na estrutura de resultados. Outros exemplos podem ser dados que indicam que o resultado.preço, bem como o resultado.deal pode ser obtido da MqlTradeResul, que é o que eu tentei fazer.
Em nenhum lugar eu vi informação de que "Esta é uma característica da MT5, quando o resultado é apenas um pedido (bilhete e sem preço), mas não um acordo". Por favor, diga-me com base em quais informações você chegou a esta conclusão.
2. Se você souber de algum desenvolvimento de "nível superior já pronto (nível baixo está oculto)", que lhe permita obter os parâmetros de uma posição imediatamente após sua abertura (o código 10009 aparece), sem seleção prévia por bilhete, por favor, me dê um exemplo ou me dê um link para ele.
Na MQL4 não havia nenhuma estrutura de resultados e recebemos um ticket e selecionamos a ordem apropriada e solicitamos os dados necessários. A MQL5 tem a estrutura de resultados com muitos dados necessários e seria ilógico não utilizá-la.
1. Antes de fazer uma pergunta no fórum, eu tentei "descobrir por mim mesmo como tudo funciona" e o que eu vejo é que a estrutura resulta:
Há um preço duplo; // Preço de negócio, confirmado pelo corretor.
No código da amostra do desenvolvedor
resultado.deal, ou seja, assume-se que faz sentido e nem sempre é representado por zero na estrutura de resultados. Há outros exemplos que mostram que o resultado.preço assim como o resultado.deal podem ser obtidos da MqlTradeResul, que é o que eu tentei fazer.
Em nenhum lugar vi informação de que "esta é uma característica da MT5 onde o resultado é apenas um pedido (bilhete e sem preço), mas não um negócio". Por favor, diga-me com base em quais informações você chegou a esta conclusão.
2. Se você souber de algum desenvolvimento de "nível superior já preparado (o nível inferior está oculto)", que permita obter os parâmetros de uma posição imediatamente após sua abertura (o código 10009 aparece), sem seleção prévia por bilhete, dê um exemplo ou dê um link para ele.
Um pedido comercial resulta em uma rejeição ou em uma ordem de mercado. Isto não é um comércio, nem é uma posição gerada por um comércio.
Uma ordem comercial para abrir uma posição é enviada para o servidor (ordem = ordem)
Se o pedido for aceito, o resultado de aceitar o pedido e colocá-lo na fila é devolvido.
Se a ordem tiver sido executada, o negócio - o resultado da execução da ordem - aparece.
O resultado de uma troca será ou uma nova posição, ou o aumento/diminuição do tamanho de uma posição existente, ou o fechamento de uma posição, ou um rollover. Ou uma nova posição (em uma conta hedging).
Um pedido comercial resulta em uma rejeição ou em uma ordem de mercado. Isto não é um comércio, nem é uma posição gerada por um comércio.
Uma ordem comercial para abrir uma posição é enviada para o servidor (ordem = ordem)
Se o pedido for aceito, o resultado de aceitar o pedido e colocá-lo na fila é devolvido.
Se a ordem tiver sido executada, aparecerá uma negociação como resultado da execução da ordem.
O resultado de uma troca será ou uma nova posição, ou um aumento/diminuição no tamanho de uma posição existente, ou o fechamento de uma posição, ou um rollover. Ou uma nova posição (no caso de uma conta de cobertura)
Obrigado - por favor, me diga: - Após qual etapa você acha que aparece a Estrutura de Resultado da Solicitação de Comércio (MqlTradeResult), dentre as que você listou?
- De acordo com a descrição da MQL5: "Estrutura do resultado da solicitação de comércio (MqlTradeResult) Como resposta a uma solicitação comercial, o servidor comercial retorna dados contendo o resultado do processamento da solicitação comercial como uma estrutura especial pré-definida MqlTradeResult". e "10009 TRADE_RETCODE_DONE Order executed".
Isto é, o código de retorno do servidor comercial 10009 significa que o pedido de OrderSend foi executado com sucesso, isto é, se eu solicitar dados da MqlTradeResult, após receber o código 10009, como posso explicar esse resultado.price = 0 ?
Algotrader18: Obrigado: - após qual passo, daqueles listados por você, a estrutura da solicitação comercial (MqlTradeResult) aparece?
- De acordo com a descrição da MQL5: "Estrutura do resultado da solicitação de comércio (MqlTradeResult) Como resposta a uma solicitação comercial, o servidor comercial retorna dados contendo o resultado do processamento da solicitação comercial como uma estrutura especial pré-definida MqlTradeResult". e "10009 TRADE_RETCODE_DONE Order executed".
Portanto, o código de retorno do servidor 10009 significa que o pedido de OrderSend foi executado com sucesso, ou seja, se eu solicitar dados da MqlTradeResult, após receber o código 10009, como posso explicar esse resultado.preço = 0 ?
10009 TRADE_RETCODE_DONE - você mesmo o descreveu - a ordem foi executada. Isto é simplesmente o fato de que a ordem foi colocada em fila de espera com sucesso no servidor para execução.
Além disso, se esta ordem for executada (afinal de contas, ela pode ser rejeitada pelo servidor), então há uma negociação - este é o resultado da negociação com o preço de abertura.
É chamado em Expert Advisors quando ocorre um evento TradeTransaction. A função é destinada a processar os resultados da execução dos pedidos comerciais.
nuloOnTradeTransaction( ) const MqlTradeTransaction&trans,// estrutura de uma transação comercial const MqlTradeRequest&solicitação,// estrutura da solicitação const MqlTradeResultado& resultado// estrutura da resposta );
При обрабокте транзакций типа TRADE_TRANSACTION_REQUEST для получения дополнительной информации необходимо анализировать второй и третий параметры функции OnTradeTransaction() – Отправка торгового запроса на покупку приводит к цепи торговых транзакций, которые совершаются на торговом счете: 1) запрос принимается на обработку, 2) далее для...
Em nenhum lugar eu vi a informação de que "Esta é uma característica da MT5 onde o resultado é apenas uma ordem (bilhete e sem preço), mas não uma negociação". Por favor, diga-me com base em quais informações você chegou a esta conclusão.
Experiência própria.
2. Se você souber de algum desenvolvimento de "nível superior já pronto (nível baixo está oculto)", que lhe permita obter os parâmetros de uma posição imediatamente após sua abertura (o código 10009 aparece), sem seleção prévia por bilhete, por favor dê um exemplo ou um link para ele.
Boa tarde!
Tenho uma pergunta semelhante para todos e especialmente para o fxsaber.
Parece ser uma pergunta primitiva, mas não consigo encontrar a resposta para ela.
Aqui https://www.mql5.com/ru/forum/6343/page939 foi-me dito: "Tente procurá-lo. O fxsaber tem trabalhado neste problema há algum tempo. O que deu certo, eu não sei, não estou interessado". Por isso, decidi perguntar-lhe.
A questão é esta. Abri posição e quero imprimir o conteúdo da MqlTradeResult:
retcode, pedido e volume são impressos, mas o negócio e o preço são sempre zeros.
Por favor, me informe o que estou fazendo de errado e como obter acesso (pelo menos, imprima-o primeiro) ao conteúdo da estrutura de resultados?
Que tal isso?
Abro uma posição e quero imprimir o conteúdo da MqlTradeResult desta forma:
O retcode, o pedido e o volume são impressos, mas o negócio e o preço são sempre zeros.
Por favor, informe o que estou fazendo de errado e como obter acesso (pelo menos imprima-o primeiro) ao conteúdo da estrutura de resultados?
Os zeros são escritos em resultado.
Que tal isso?
Zeros e são prescritos no resultado.
Vejo um pedido aberto, recebo result.retcode 10009 e result.price = 0 ?
Você pode explicar o significado do resultado se ele não contiver um resultado?
Por favor, explique qual é o objetivo do resultado se ele não contém o resultado?
Esta é uma característica da MT5 onde o resultado é apenas um pedido (bilhete e sem preço), mas não uma negociação. Você tem várias opções
Esta é uma característica da MT5 onde o resultado é apenas um pedido (bilhete e sem preço), mas não uma negociação. Você tem várias opções
Na MQL4 não havia nenhuma estrutura de resultados e recebemos um ticket e selecionamos a ordem apropriada e solicitamos os dados necessários. A MQL5 tem a estrutura de resultados que contém muitos dados necessários, e seria ilógico não usá-la.
1. Antes de fazer uma pergunta sobre o fórum, tentei "descobrir por mim mesmo como tudo funciona" e o que vejo - na estrutura de resultados:
resultado.deal, ou seja, assume-se que faz sentido e nem sempre é representado por zero na estrutura de resultados. Outros exemplos podem ser dados que indicam que o resultado.preço, bem como o resultado.deal pode ser obtido da MqlTradeResul, que é o que eu tentei fazer.preço presente em dobro; // Preço de negociação, confirmado pelo corretor.
No código da amostra do desenvolvedor
Em nenhum lugar eu vi informação de que "Esta é uma característica da MT5, quando o resultado é apenas um pedido (bilhete e sem preço), mas não um acordo". Por favor, diga-me com base em quais informações você chegou a esta conclusão.
2. Se você souber de algum desenvolvimento de "nível superior já pronto (nível baixo está oculto)", que lhe permita obter os parâmetros de uma posição imediatamente após sua abertura (o código 10009 aparece), sem seleção prévia por bilhete, por favor, me dê um exemplo ou me dê um link para ele.
Obrigado.
Na MQL4 não havia nenhuma estrutura de resultados e recebemos um ticket e selecionamos a ordem apropriada e solicitamos os dados necessários. A MQL5 tem a estrutura de resultados com muitos dados necessários e seria ilógico não utilizá-la.
1. Antes de fazer uma pergunta no fórum, eu tentei "descobrir por mim mesmo como tudo funciona" e o que eu vejo é que a estrutura resulta:
resultado.deal, ou seja, assume-se que faz sentido e nem sempre é representado por zero na estrutura de resultados. Há outros exemplos que mostram que o resultado.preço assim como o resultado.deal podem ser obtidos da MqlTradeResul, que é o que eu tentei fazer.Há um preço duplo; // Preço de negócio, confirmado pelo corretor.
No código da amostra do desenvolvedor
Em nenhum lugar vi informação de que "esta é uma característica da MT5 onde o resultado é apenas um pedido (bilhete e sem preço), mas não um negócio". Por favor, diga-me com base em quais informações você chegou a esta conclusão.
2. Se você souber de algum desenvolvimento de "nível superior já preparado (o nível inferior está oculto)", que permita obter os parâmetros de uma posição imediatamente após sua abertura (o código 10009 aparece), sem seleção prévia por bilhete, dê um exemplo ou dê um link para ele.
Um pedido comercial resulta em uma rejeição ou em uma ordem de mercado. Isto não é um comércio, nem é uma posição gerada por um comércio.
Um pedido comercial resulta em uma rejeição ou em uma ordem de mercado. Isto não é um comércio, nem é uma posição gerada por um comércio.
- Após qual etapa você acha que aparece a Estrutura de Resultado da Solicitação de Comércio (MqlTradeResult), dentre as que você listou?
- De acordo com a descrição da MQL5:
"Estrutura do resultado da solicitação de comércio (MqlTradeResult)
Como resposta a uma solicitação comercial, o servidor comercial retorna dados contendo o resultado do processamento da solicitação comercial como uma estrutura especial pré-definida MqlTradeResult". e "10009 TRADE_RETCODE_DONE Order executed".
Isto é, o código de retorno do servidor comercial 10009 significa que o pedido de OrderSend foi executado com sucesso, isto é, se eu solicitar dados da MqlTradeResult, após receber o código 10009, como posso explicar esse resultado.price = 0 ?
Obrigado:
- após qual passo, daqueles listados por você, a estrutura da solicitação comercial (MqlTradeResult) aparece?
- De acordo com a descrição da MQL5:
"Estrutura do resultado da solicitação de comércio (MqlTradeResult)
Como resposta a uma solicitação comercial, o servidor comercial retorna dados contendo o resultado do processamento da solicitação comercial como uma estrutura especial pré-definida MqlTradeResult". e "10009 TRADE_RETCODE_DONE Order executed".
Portanto, o código de retorno do servidor 10009 significa que o pedido de OrderSend foi executado com sucesso, ou seja, se eu solicitar dados da MqlTradeResult, após receber o código 10009, como posso explicar esse resultado.preço = 0 ?
10009 TRADE_RETCODE_DONE - você mesmo o descreveu - a ordem foi executada. Isto é simplesmente o fato de que a ordem foi colocada em fila de espera com sucesso no servidor para execução.
Além disso, se esta ordem for executada (afinal de contas, ela pode ser rejeitada pelo servidor), então há uma negociação - este é o resultado da negociação com o preço de abertura.
Leia sobre
OnTradeTransaction
É chamado em Expert Advisors quando ocorre um evento TradeTransaction. A função é destinada a processar os resultados da execução dos pedidos comerciais.
nuloOnTradeTransaction( )
const MqlTradeTransaction&trans,// estrutura de uma transação comercial
const MqlTradeRequest&solicitação,// estrutura da solicitação
const MqlTradeResultado& resultado// estrutura da resposta
);
Em nenhum lugar eu vi a informação de que "Esta é uma característica da MT5 onde o resultado é apenas uma ordem (bilhete e sem preço), mas não uma negociação". Por favor, diga-me com base em quais informações você chegou a esta conclusão.
Experiência própria.
2. Se você souber de algum desenvolvimento de "nível superior já pronto (nível baixo está oculto)", que lhe permita obter os parâmetros de uma posição imediatamente após sua abertura (o código 10009 aparece), sem seleção prévia por bilhete, por favor dê um exemplo ou um link para ele.
Há outra opção, mas é "avançada".