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" - página 2
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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.
Pontos de referência bons e autossuficientes são os próprios artigos. Eles não apenas têm diretrizes, mas também estão bem explicados, caso você tenha tido preguiça de lê-los.
O esquema estará no final da criação da biblioteca. Assim como os métodos de caso de usuário para acesso rápido a todos os recursos da biblioteca.
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.
Posso ver imediatamente que você não escreveu funções de negociação e não entende muito bem do que estamos falando.
Tentarei lhe dizer novamente (isso foi dito no último artigo): há alguns erros do servidor de negociação que exigem algum atraso antes de reenviar uma solicitação de negociação ao servidor.
Normalmente, sugere-se que esse atraso seja feito com a ajuda do Sleep(). Mas isso interrompe a execução do programa. Portanto, todo o programa aguardará a conclusão da pausa dentro do método de negociação antes de reenviar a solicitação de negociação ao servidor.
Isso é bom? No caso geral e mais simples, está tudo bem.
Mas um Expert Advisor pode ter várias moedas. E durante o tempo de espera, ele não fará nada além desse tempo de espera.
Isso é bom? Acho que não - o Expert Advisor deve continuar a monitorar o ambiente para todos os seus símbolos de trabalho. É exatamente isso que as solicitações pendentes proporcionam: quando ele recebe um erro do servidor que exige espera, ele cria uma solicitação pendente com o número necessário de tentativas e o tempo de espera necessário entre elas, e continua a trabalhar. Em seguida, a própria classe de negociação enviará a solicitação de negociação necessária ao servidor em tempo hábil. Ao mesmo tempo, ela verificará primeiro "se o tempo para a execução de todas as tentativas alocadas para a solicitação de negociação já terminou". Portanto, o Expert Advisor não enviará ordens desatualizadas para o servidor após cento e cinquenta horas.
E se você gosta tanto de se comunicar com o programa, as "solicitações de negociação pendentes" que propus permitem que o usuário defina uma condição quando uma ordem de negociação deve ser enviada. O usuário define a condição e segue com seus afazeres - assim que a condição ocorrer, a solicitação será acionada. Esse é um dos muitos métodos de criação de lógica de negociação para os Expert Advisors. E quando a biblioteca estiver disponível para construir um shell gráfico para seus programas, será fácil criar ferramentas para criar a lógica de negociação - insira os valores necessários, especifique o tipo de solicitação e quando ela precisa funcionar, e pronto....
Essa é a primeira coisa que me vem à mente para explicar e responder à sua pergunta "por que tudo isso é necessário" - tudo é feito não "aqui e agora", mas tijolo por tijolo, gradualmente.
É imediatamente óbvio que você não escreveu funções de negociação e não sabe realmente do que está falando.
Vou tentar lhe dizer novamente (isso foi dito no último artigo): há alguns erros do servidor de negociação que exigem algum atraso antes de reenviar uma solicitação de negociação ao servidor.
Normalmente, sugere-se que esse atraso seja feito com a ajuda do Sleep(). Mas isso interrompe a execução do programa. Portanto, todo o programa aguardará a conclusão da pausa dentro do método de negociação antes de reenviar a solicitação de negociação ao servidor.
Isso é bom? No caso geral e mais simples, está tudo bem.
Mas um Expert Advisor pode ter várias moedas. E durante o tempo de espera, ele não fará nada além desse tempo de espera.
Isso é bom? Acho que não - o Expert Advisor deve continuar a monitorar o ambiente para todos os seus símbolos de trabalho. É exatamente isso que as solicitações pendentes proporcionam: quando ele recebe um erro do servidor que exige espera, ele cria uma solicitação pendente com o número necessário de tentativas e o tempo de espera necessário entre elas, e continua a trabalhar. Em seguida, a própria classe de negociação enviará a solicitação de negociação necessária ao servidor em tempo hábil. Ao mesmo tempo, ela verificará primeiro "se o tempo para a execução de todas as tentativas alocadas para a solicitação de negociação já terminou". Portanto, o Expert Advisor não enviará ordens desatualizadas para o servidor após cento e cinquenta horas.
E se você gosta tanto de se comunicar com o programa, as "solicitações de negociação pendentes" que propus permitem que o usuário defina uma condição quando uma ordem de negociação deve ser enviada. O usuário define a condição e segue com seus afazeres - assim que a condição ocorrer, a solicitação será acionada. Esse é um dos muitos métodos de criação de lógica de negociação para os Expert Advisors. E quando a biblioteca estiver disponível para construir um shell gráfico para seus programas, será fácil criar ferramentas para criar a lógica de negociação - insira os valores necessários, especifique o tipo de solicitação e quando ela precisa funcionar, e pronto....
Esta é a primeira coisa que me vem à mente para explicar e responder à sua pergunta "por que tudo isso é necessário" - tudo é feito não "aqui e agora", mas tijolo por tijolo, gradualmente.
Se a conexão com o servidor for interrompida, todos os cálculos no Expert Advisor serão interrompidos, pois o principal mecanismo de cálculo é o preço.
Peter, a falha de conexão não é o único erro que requer espera antes de ser repetido. Você está apenas se apegando a um erro artificialmente emulado para testar.....
É impossível rastrear todas as chamadas do EA para o servidor.
Pergunto isso porque a solução para o problema de reenvio de ordens com falha (obviamente) não requer complicações e é resolvida de forma simples.
...
Deixe-me tentar repetir (foi dito no último artigo): há alguns erros do servidor de negociação que exigem algum atraso antes de reenviar uma solicitação de negociação ao servidor.
Normalmente, sugere-se que esse atraso seja feito usando Sleep(). Mas isso interrompe a execução do programa. Assim, todo o programa aguardará a conclusão da pausa dentro do método de negociação antes de enviar uma nova solicitação ao servidor.
...
Preciso de uma lista específica desses erros e de uma explicação - O QUE a biblioteca oferece como solução.
É necessário que os usuários façam com que apliquem as funções da biblioteca em vez de suas próprias funções.
Então, quais são esses erros e quais são suas soluções em termos gerais?
...
Pergunto isso porque a solução para o problema de reenvio de ordens com falha (obviamente) não requer complicações e é resolvida de forma simples.
Dei uma olhada no último artigo. Lá, trata-se apenas da falha no envio de um pedido devido à indisponibilidade do servidor. A forma da solução é muito mais complicada do que eu poderia imaginar. Porém, a essência da solução não se torna mais complicada.
Não há solução para outros tipos de solicitações repetidas.
Dei uma olhada no último artigo. Ele fala apenas sobre a falha no envio de um pedido devido à indisponibilidade do servidor. A forma da solução é muito mais complicada do que eu poderia ter imaginado. Mas a essência da solução não se torna mais complicada.
Não há solução para outros tipos de solicitações repetidas.
E você o testa :)
Isso não é uma resposta.
Você não quer se comunicar sobre o assunto e mostrar quais solicitações pendentes a biblioteca pode atender.
Cada solicitação pendente (não pedido) precisa de sua própria solução, - sua própria magia, suas próprias propriedades, seus próprios métodos e assim por diante. E onde está isso?
Isso não é uma resposta.
Você não quer se comunicar sobre o assunto e mostrar quais solicitações pendentes a biblioteca pode atender.
Cada solicitação pendente (não pedido) precisa de sua própria solução - sua própria mágica, suas próprias propriedades, seus próprios métodos e assim por diante. E onde está isso?