Discussão do artigo "Biblioteca para criação simples e rápida de programas para MetaTrader (Parte XXVII): trabalho com ordens de negociação - posicionamento de ordens pendentes"
Quase 4 megabytes de código, e o esquema da biblioteca e os métodos personalizados não são fornecidos... Você está escrevendo para si mesmo?
Olhe pelos olhos dos seus usuários. Como é para eles entender tudo isso sem pontos de referência.
- www.mql5.com
Outra pergunta: até que ponto é "razoável" definir uma ordem pendente após uma interrupção da Internet, sem entrevistar novamente o usuário? Se o usuário levar uma hora para voltar a ter acesso à Internet e a situação tiver mudado drasticamente, vale a pena definir a ordem automaticamente? Não é melhor deixar uma mensagem dizendo que o pedido não foi definido devido à falta de Internet e que o usuário decidirá se ele deve ser definido novamente ou não?
O artigo não descreve o princípio, e por que exatamente?
Especificamente nesse artigo, não há nenhuma palavra sobre o motivo pelo qual se decide enviar uma ordem pendente imediatamente após a conexão com a Internet, sem repetidas sondagens do usuário.
Há um aviso de que as solicitações pendentes apresentadas no artigo não podem ser usadas em negociações reais. Ou seja, trata-se de um teste de conceito e nada mais.
Não há explicação para a definição de uma ordem depois de reconectar a Internet sem sondar o usuário.
E você realmente precisa de vários artigos para testar um mecanismo simples de uma solicitação de negociação pendente? Além disso, é mais fácil e mais correto sondar o usuário novamente e isso é tudo.
Especificamente neste artigo, não há nenhuma palavra sobre o motivo pelo qual se decide enviar uma ordem pendente imediatamente após a conexão com a Internet, sem questionar novamente o usuário.
Há um aviso de que as solicitações pendentes apresentadas no artigo não podem ser usadas em negociações reais. Ou seja, trata-se de um teste de conceito e nada mais.
Não há explicação para a definição de uma ordem após a reconexão à Internet sem consultar o usuário.
E você realmente precisa de vários artigos para testar um mecanismo simples de uma solicitação de negociação pendente? Além disso, é mais fácil e mais correto sondar o usuário novamente e isso é tudo.
Não se esqueça de que este é apenas um artigo escrito para aqueles que querem entender algo. É apenas uma pequena parte da lição de programação, não um Expert Advisor pronto. O artigo descreve e mostra no código como e o que fazer para alcançar o resultado desejado. Se precisar fazer uma enquete com o usuário em seu Expert Advisor, ninguém o proíbe de fazer isso.
Especificamente neste artigo, não há nenhuma palavra sobre o motivo pelo qual se decide enviar uma ordem pendente imediatamente após a conexão com a Internet, sem questionar novamente o usuário.
Há um aviso de que as solicitações pendentes apresentadas no artigo não podem ser usadas em negociações reais. Ou seja, trata-se de um teste de conceito e nada mais.
Não há explicação para a definição de uma ordem após a reconexão à Internet sem consultar o usuário.
E você realmente precisa de vários artigos para testar um mecanismo simples de uma solicitação de negociação pendente? Além disso, é mais fácil e mais correto consultar o usuário novamente, e isso é tudo.
Não se esqueça de que este é apenas um artigo escrito para aqueles que querem entender alguma coisa. É apenas uma pequena parte da lição de programação, não um Expert Advisor pronto. O artigo descreve e mostra no código como e o que fazer para alcançar o resultado desejado. Se precisar fazer uma enquete com o usuário em seu Expert Advisor, ninguém o proíbe de fazer isso.
1. Cuidando daqueles que querem entender, seria bom fazer um esquema de biblioteca para facilitar a orientação sobre o material.
2. Cada alteração feita pelo autor nas funções de negociação não é motivo para imprimi-las em todos os artigos. O material está inchado. As mesmas funções de negociação são trocadas de artigo para artigo com pequenas alterações. Agora haverá códigos de solicitações pendentes? Isso não esclarece, mas confunde o leitor.
3. Haverá 30 artigos em breve, e o autor adverte contra o uso da biblioteca. Para que ela serve então? Para ensinar como escrever uma biblioteca cujo uso é indesejável?
1. Para aqueles que querem entender, seria bom fazer um diagrama da biblioteca para facilitar a navegação pelo material.
2. Cada alteração feita pelo autor nas funções de negociação não é motivo para imprimi-las em todos os artigos. O material está inchado. As mesmas funções de negociação são trocadas de artigo para artigo com pequenas alterações. Agora haverá códigos de solicitações pendentes? Isso não esclarece, mas confunde o leitor.
3. Haverá 30 artigos em breve, e o autor adverte contra o uso da biblioteca. Para que serve então? Para ensinar como escrever uma biblioteca cujo uso é indesejável?
Você come carne moída crua? Aqui, para que você não a coma, e um aviso é dado - neste e no último artigo, estamos preparando o material e depurando o conceito.
Achei que os artigos deveriam ter soluções completas. E o que há para depurar?
Se a comunicação com o servidor foi interrompida, registre os dados do pedido e defina o sinalizador para verificar novamente a comunicação com o servidor. Verificamos novamente em um loop até que a conexão seja estabelecida. Após o restabelecimento da comunicação, perguntamos ao usuário se ele deseja definir o pedido que falhou. Em caso afirmativo, enviamos a ordem de volta, removemos o sinalizador e excluímos os dados da ordem da lista de ordens com falha. Em geral, todo o conceito.
- 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 Biblioteca para criação simples e rápida de programas para MetaTrader (Parte XXVII): trabalho com ordens de negociação - posicionamento de ordens pendentes foi publicado:
Neste artigo continuaremos a tratar do trabalho com ordens de negociação, implementaremos o posicionamento de ordens pendentes, corrigiremos erros encontrados no funcionamento da classe de negociação.
No último artigo começamos a implementar ordens de negociação pendentes e criamos a primeira ordem pendente para abrir uma posição quando na classe de negociação após o envio da solicitação ao servidor era recebido um erro. Hoje, continuaremos a desenvolver a classe de negociação, nomeadamente o trabalho com ordens pendentes, e implementaremos a criação de uma ordem pendente se houver erros ao configurar ordens pendentes.
Ao testar a classe de negociação, apareceram alguns inconvenientes relativamente ao design. Em particular, durante a inicialização de objetos, no construtor da classe, aos objetos de negociação dos símbolos eram atribuídos valores padrão hard-coded que podiam não ser suportados pela especificação do símbolo. Isto causava erros vindos do servidor ao tentar colocar ordens pendentes: o servidor gerava o erro 'tipo de expiração de ordem não suportado' e não o depurava, o que tornava impossível posicionar ordens pendentes. Ao enviar ordens de negociação com valores padrão, à ordem também eram enviados alguns dados não suportados que não eram depurados em lado nenhum. Para contornar essa situação, era necessário diretamente na ordem de negociação especificar os dados corretos, que correspondiam à especificação do símbolo, com base no qual devia ser realizada a operação de negociação.
Isso é inconveniente, pois, em vez de a própria biblioteca depurar automaticamente os valores, é preciso conhecer obrigatoriamente a especificação do símbolo e a inserção manual de valores diretamente no código do programa. Por isso, faremos pequenas correções na lógica de funcionamento da classe de negociação. Assim, no EA no manipulador OnInit(), a escolha de valores corretos fará com que os objetos de negociação dos símbolos sejam inicializados automaticamente. Por padrão, aos métodos de negociação da classe de negociação serão transferidos os valores -1, para os tipos 'preenchimento e expiração de ordens', o que indicará que os valores padrão predefinidos usados estão corretos. Se do programa ao método de negociação for transferido um valor diferente, o valor diferente em questão será usado e, se for incorreto, será depurado quando forem depurados erros na classe de negociação.Autor: Artyom Trishkin