Discussão do artigo "Operações de negociação Estruturas das solicitações e das resposta, descrição e registro"
Artigo publicado Transações comerciais. Estruturas de solicitação e resposta, descrição e saída de registro:
Autor: Artyom Trishkin
Obrigado, Artyom, por concentrar todas as informações necessárias em um único artigo! Eu o adicionei aos meus favoritos.
Saudações, Vladimir.
Obrigado pelo artigo interessante. Mas é uma pena que tenha sido dada muito pouca atenção à função OrderCheck()
Espero que haja um artigo separado dedicado a essa função útil...
Obrigado pelo artigo interessante. Mas é uma pena que pouca atenção tenha sido dada à função OrderCheck()
Espero que haja um artigo separado dedicado a essa função útil...
Em algumas versões antigas do MT5, descobri que a OrderCheck() às vezes rejeitava solicitações que, na verdade, eram executadas com bastante sucesso. Eu desisti e não quero testar esses erros novamente em robôs de combate, mesmo que eles tenham sido corrigidos.
Obrigado pelo artigo interessante. Mas é uma pena que pouca atenção tenha sido dada à função OrderCheck()
Espero que haja um artigo separado dedicado a essa função útil...
Eu estava escrevendo uma "ajuda estendida" - muitas informações de referência. E tudo sobre o OrderCheck é lacônico e organizado. E não há excessos nele mesmo. Eu descrevi o que, o que e como os campos são preenchidos. Eles não são preenchidos em todos os casos. A resposta da função com o código é quase sempre "OK", porque estou acostumado a preencher a solicitação de negociação corretamente. Se você considerar a situação de "quase", é porque foram inseridos dados incorretos de propósito para verificar o trabalho. Ou seja, não tenho ideia do que descrever aqui, nem mesmo para um artigo.
Eu estava escrevendo uma "ajuda estendida", com muitas informações básicas. Mas tudo sobre o OrderCheck parece ser conciso e organizado. E não há excessos nele mesmo. Eu descrevi o que, o que e como os campos são preenchidos. Eles não são preenchidos em todos os casos. A resposta da função com o código é quase sempre "OK", porque estou acostumado a preencher a solicitação de negociação corretamente. Se você considerar a situação de "quase", é porque foram inseridos dados incorretos de propósito para verificar o trabalho. Ou seja, não tenho ideia do que descrever ali, nem mesmo para um artigo.
Pelo menos poucas pessoas leram cuidadosamente a estrutura do MqlTradeCheckResult
struct MqlTradeCheckResult { uint retcode; // Código de resposta double balance; // Saldo após a transação double equity; // Patrimônio líquido após a transação double profit; // Lucro flutuante double margin; // Requisitos de margem double margin_free; // Margem livre double margin_level; // Nível de margem string comment; // Comentário sobre o código de resposta (descrição do erro) };
E, na maioria das vezes, elas dizem que essa função se destina exclusivamente a isso, como está escrito na documentação
A função OrderCheck() verifica a suficiência de fundos para a operação de negociação necessária.
Mas vale a pena prestar atenção aos campos da estrutura "Balance after ..." e "Equity after ...". Não estou falando de "Requisitos de margem". Esses parâmetros são muito úteis. Por exemplo, se depois de fazer uma operação restarem "quarenta copeques" de patrimônio líquido na conta... É necessário fazer essa operação, mesmo que haja fundos suficientes e os outros parâmetros da ordem estejam em ordem? É claro que é possível obter esse valor por outro método, mas, em minha opinião, é muito mais favorável obter vários parâmetros úteis por meio de uma função.
E, de acordo com minha experiência de uso, o código de resposta corrige os preços incorretos de SL e/ou TP no caso de uma verificação bem-sucedida. E não apenas eles. É sobre isso que eu gostaria de obter um artigo. Sobre quais outros códigos funcionam...
Infelizmente, o OrderCheck() não informa um erro.
| 10018 | TRADE_RETCODE_MARKET_CLOSED | O mercado está fechado. |
Então, talvez os desenvolvedores finalmente prestem atenção a esse problema...
Pelo menos poucas pessoas leram cuidadosamente a estrutura do MqlTradeCheckResult
E, na maioria das vezes, elas dizem que essa função se destina exclusivamente, como está escrito na documentação
Mas vale a pena prestar atenção aos campos da estrutura "Balance after ..." e "Equity after ...". Não estou falando de "Requisitos de margem" de forma alguma. Esses parâmetros são muito úteis. Por exemplo, se restarem "quarenta copeques" de patrimônio líquido na conta depois de fazer uma operação... É necessário fazer essa operação, mesmo que haja fundos suficientes e outros parâmetros da ordem estejam em ordem? É claro que é possível obter esse valor por outro método, mas, em minha opinião, é muito mais favorável obter vários parâmetros úteis por meio de uma função.
E, de acordo com minha experiência de uso, o código de resposta corrige os preços incorretos de SL e/ou TP no caso de uma verificação bem-sucedida. E não apenas eles. É sobre isso que eu gostaria de obter um artigo. Sobre quais outros códigos funcionam...
Infelizmente, o OrderCheck() não informa um erro
| 10018 | TRADE_RETCODE_MARKET_CLOSED | Mercado fechado |
Então, talvez os desenvolvedores finalmente prestem atenção a esse problema....
Não entendo de que SL e TP você está falando? Eles não estão nos campos da estrutura...
E sobre o patrimônio líquido, o saldo após a transação... Bem..., sabe, eu estava pensando em dizer que é útil saber isso e que esses dados devem ser analisados antes de enviar uma ordem para o servidor. Mas eu não disse isso? Ou será que eu deveria ter deixado claro que você não deveria abrir uma posição se não tiver o suficiente para um bun mais tarde) ... . Mas, veja, eu pensei, e acho que está claro. É por isso que acabei de escrever que você pode analisar os campos preenchidos dessa estrutura. E sobre o fato de que "Market closed" não é retornado, eu não escrevi (embora quisesse) simplesmente porque esqueci). E pensei que esses eram códigos de retorno do servidor de negociação. Eles são para todos os casos da vida. Aparentemente, esse código não é para esse caso. Ele retorna normalmente no OrderSend. Embora sim, para verificar se o mercado está fechado, você precisa enviar uma ordem - uma solução fraca. Mas o que existe.
Não entendo de que SL e TP você está falando? Eles não estão nos campos de estrutura...
Estou falando dos códigos
| 10014 | TRADE_RETCODE_INVALID_VOLUME | Volume incorreto na consulta |
| 10015 | TRADE_RETCODE_INVALID_PRICE | Preço incorreto na solicitação |
| 10016 | TRADE_RETCODE_INVALID_STOPS | Paradas incorretas na solicitação |
Esses códigos são retornados para a estrutura MqlTradeCheckResult e são perfeitamente analisados.
Em outras palavras, se você não quiser escrever, ou se Rashid não for bem-vindo, eu não insisto.
Estou falando dos códigos
| 10014 | TRADE_RETCODE_INVALID_VOLUME | Volume incorreto na solicitação |
| 10015 | TRADE_RETCODE_INVALID_PRICE | Preço incorreto na solicitação |
| 10016 | TRADE_RETCODE_INVALID_STOPS | Paradas incorretas na solicitação |
Esses códigos são retornados para a estrutura MqlTradeCheckResult e são perfeitamente analisados.
Em outras palavras, se você não quiser escrever ou se Rashid não lhe der as boas-vindas, eu não insisto.
Bem, o que você pode escrever aqui, exceto "Você pode analisar códigos de resposta"? Bem, uma pessoa recebeu esse código - é claro que as paradas estão erradas. Portanto, ele deve ser processado programaticamente para que não haja paradas incorretas. A análise dos códigos de resposta também é uma análise. Assim como os campos de estrutura. Ou seja, tudo o que foi dito - analise e tire conclusões. Ou você acha que precisa descrever cada resposta do servidor e quais ações devem ser tomadas nesse caso? Bem, isso está implementado na biblioteca, que ainda não terminei de escrever, mas a negociação é feita lá há muito tempo. Com análise completa e realização de ajustes. Por que se repetir?
Bem, o que você pode escrever aqui, exceto "Você pode analisar os códigos de resposta".... Bem, uma pessoa recebeu esse código - está claro que as paradas não estão corretas. Portanto, ele deve ser processado programaticamente para que não haja paradas incorretas. A análise dos códigos de resposta também é uma análise. Assim como os campos de estrutura. Ou seja, tudo o que foi dito - analisar e tirar conclusões. Ou você acha que precisa descrever cada resposta do servidor e quais ações devem ser tomadas nesse caso? Bem, isso está implementado na biblioteca, que ainda não terminei de escrever, mas a negociação é feita lá há muito tempo. Com análise completa e realização de ajustes. Por que se repetir?
Para obter e analisar o código de retorno, você deve pelo menos entender o que é essa função e compreender sua utilidade. É exatamente disso que estou falando. O artigo fornecerá uma compreensão ampliada da função, não apenas uma descrição da documentação.
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Alexey Viktorov, 2023.08.03 13:40
Pelo menos poucas pessoas leem atentamente a estrutura do MqlTradeCheckResult
struct MqlTradeCheckResult { uint retcode; // Código de resposta double balance; // Saldo após a transação double equity; // Patrimônio líquido após a transação double profit; // Lucro flutuante double margin; // Requisitos de margem double margin_free; // Margem livre double margin_level; // Nível de margem string comment; // Comentário sobre o código de resposta (descrição do erro) };
E , na maioria das vezes, elas dizem que essa função se destina exclusivamente, como está escrito na documentação
A função OrderCheck() verifica a suficiência de fundos para aoperação de negociaçãonecessária.
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Alexey Viktorov, 2023.08.03 19:55
Se você não quiser escrever, ou se o Rashid não quiser, eu não insisto.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Operações de negociação Estruturas das solicitações e das resposta, descrição e registro foi publicado:
Neste artigo, veremos como trabalhar com as estruturas das solicitações de negociação, criar a solicitação, verificá-la antes de enviá-la ao servidor, gerar a resposta do servidor quanto a ela e usar a estrutura das transações. Além disso, criaremos funções simples e convenientes para enviar ordens para o servidor e, com base em tudo o que foi mencionado acima, criar um Expert Advisor que informe sobre as transações.
Autor: Artyom Trishkin