Discussão do artigo "Utilizando WinInet.dll para a troca de dados entre plataformas via internet"

 

Novo artigo Utilizando WinInet.dll para a troca de dados entre plataformas via internet foi publicado:

Este artigo descreve os princípios do trabalho com a Internet por meio do uso de requisições HTTP e troca de dados entre terminais, usando um servidor intermediário. Uma classe de biblioteca MqlNet é apresentada para trabalho com recursos de internet no ambiente MQL5. Preços de monitoramento de diferentes corretores, mensagens de câmbio com outros negociadores sem sair do terminal, busca por informação na Internet - estes são apenas alguns exemplos, analisados neste artigo.

Autor: o_O

 

Poderoso! Artigo muito útil. É difícil para os iniciantes pesquisarem na Internet todas essas informações. E aqui tudo está reunido em um único artigo.

Em geral, trabalhar com a Internet é um dos tópicos mais interessantes. Crie um site totalmente automático (ou melhor, vários sites ou cabeçalhos em vários sites) para esse terminal. Exibir a situação atual do mercado no site. Exibição de análise de mercado e sinais de negociação no site. "Interceptação" de sinais de negociação por outros terminais. Envio de sinais e mensagens para usuários interessados. Adição/remoção de usuários "interessados" à lista (banco de dados) para atendimento posterior pelo serviço do terminal. Coleta e análise de informações de outros sites, criação e publicação de relatórios...

Para iniciantes, também é importante ter vários exemplos simples de uso dessa tecnologia.

 
Rinng писал(а) :

"Interceptação" de sinais de negociação por outros terminais.

O que significa interceptação? Você quer dizer pegar um sinal do site e executá-lo no terminal?

Envio de sinais e mensagens para usuários interessados. Adição/remoção de usuários "interessados" à lista (banco de dados) para atendimento posterior pelo serviço do terminal.

Há duas opções aqui: fazer uma copiadora comum de negócios, apenas a troca de informações com um servidor intermediário.
Ou fazer o cálculo de uma função oculta no servidor e fornecer ao usuário o resultado dessa função para que seu especialista tome uma decisão.

 
sergeev:

O que você quer dizer com interceptação? Quer dizer pegar um sinal do site e executá-lo no terminal?

Há duas opções aqui - fazer uma copiadora comum de negociações, mas apenas trocar informações com um servidor intermediário.
Ou fazer o cálculo de uma função oculta no servidor, e o usuário recebe o resultado dessa função para que seu Expert Advisor possa tomar uma decisão.

1) "Interceptação" - exatamente receber sinais desse servidor intermediário (site) e executar no terminal do usuário.

2) Acesso às informações do servidor (sinais de mercado, mensagens pessoais, análise de mercado) por acesso pessoal, de acordo com o banco de dados do usuário. Gerenciamento do banco de dados do usuário por meio do terminal mestre e/ou por meio de script do servidor (por exemplo, script para pagamento do acesso às informações via Webmani).

 

Rinng:

2) Acesso às informações do servidor (sinais de mercado, mensagens pessoais, análises de mercado) por acesso pessoal, de acordo com o banco de dados do usuário. Gerenciamento do banco de dados do usuário por meio do terminal principal e/ou por meio de script do servidor (por exemplo, script de pagamento para acesso a informações via Webmani).

Se você receber informações sobre o estado de "algo" no terminal, acho que esse é um ponto interessante.

Como você escreveu - mensagens do serviço ao qual o usuário está conectado.... Mas, para esse fim, o especialista deve ser capaz de ler e enviar as informações. Portanto, é um tipo de desenvolvimento individual para algum serviço.

Se você tiver uma variante ou ideias de um protocolo generalizado que possa ser instalado em qualquer servidor de origem e que seja fácil de conectar em um terminal, poderemos discuti-lo. Pessoalmente, estou interessado no tópico de globalização de conexões em terminais.

 

Estou interessado em publicar informações do Expert Advisor em vários sites e acessar as informações publicadas de forma privada, por meio de senha de outros terminais. E também o gerenciamento do banco de dados do usuário a partir do EA.

Quanto à globalização de links entre terminais, acho que não podemos prescindir de um servidor "remoto". Em geral, deve ser assim:

As tarefas do terminal mestre incluem a preparação de todas as informações necessárias e a administração do servidor remoto.

As tarefas do servidor remoto incluem a identificação dos terminais escravos, o gerenciamento do banco de dados de usuários (terminais escravos), o recebimento e o envio das informações necessárias aos terminais, o design e a publicação do(s) site(s).

A tarefa de um terminal escravo é receber e processar as informações destinadas a ele e enviar uma resposta ao servidor.

Em uma forma simples, o servidor pode ser projetado com PHP 5.0.

A troca de dados pode ser feita por meio do protocolo FTP, com a troca de arquivos.

Em geral, deve haver três programas: servidor, terminal-admin-servidor, terminal-cliente.

 

Para esse circuito, implementei duas abordagens.

1. O terminal mestre é o iniciador.
Nesse caso, ele coloca as informações necessárias no próprio servidor, e os escravos simplesmente as pegam de lá e as processam de acordo com o algoritmo. Isso não é diferente do processamento normal de informações, exceto pelo fato de que sua fonte é o terminal mestre sob nosso controle.

Aplicação: copiadoras de transações e sistemas que não exigem que o mestre reaja aos estados dos escravos.

2. Iniciador do terminal escravo.
Nesse caso, o mestre atua apenas como uma máquina remota que sabe mais do que o mestre. Ou seja, por exemplo, ele contém condições para entrar no mercado por meio de sinais ou fórmulas de cálculo ocultas, que são solicitadas pelo escravo.
Aplicação: cálculo de indicadores. Obtenção de sinais de negociação.

As funções do servidor, nesse caso, são realmente apenas a diferenciação dos direitos de acesso, ou seja, verificar se o escravo tem o direito de receber ou deixar uma solicitação (a propósito, da mesma forma para o mestre). O banco de dados de terminais pode ser armazenado no MySQL ou em um arquivo csv comum.

Tudo é realizado por meio de solicitações (POST / GET), pois o FTP, nesse caso, impõe dificuldades ao servidor.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 

O Metaarbitrage.mq5 não está funcionando. Ele escreve nos registros:

Como corrigir?

sergeev:

Tudo é implementado por meio de solicitações (POST / GET), pois o FTP, nesse caso, impõe dificuldades à parte do servidor.
.

Concordo. Sugiro um pacote de php e MySql. Com o MySql, será fácil organizar um sistema de classificação, armazenar dados e fazer seleções.

 
Graff:

O Metaarbitrage.mq5 não está funcionando. Nos registros, ele diz:

Como corrigir isso?

Acabei de verificar - em meu teste, o erro ocorre na função HttpOpenRequestW com a linha Access violation read to 0x003F0070 em'kernel32.dll'.

Parece-me que algo mudou nas chamadas de DLL após a publicação do artigo

Concordo. Sugiro um pacote de php e MySql. Com o MySql, será fácil organizar um sistema de classificação, armazenar dados e fazer seleções.

É claro. O MySql é sempre melhor do que apenas manter arquivos.
 
sergeev:

Acabei de verificar: em meu teste, o erro ocorre na função HttpOpenRequestW com a linha Access violation read to 0x003F0070 em'kernel32.dll'.

Parece-me que algo mudou nas chamadas de DLL depois que o artigo foi publicado.

É claro. O MySql é sempre melhor do que apenas manter arquivos.

Os números de erro são diferentes.

Estou pronto para ajudar com o desenvolvimento do lado do servidor e scripts pcp em meu tempo livre.

 
Graff:

Os números de erro são diferentes.

Enviei o arquivo para o servicedesk para que eles o verifiquem também, pois acho que o erro é mais profundo ou algo realmente mudou.

Estou pronto para ajudar com o desenvolvimento do lado do servidor e scripts pcp em meu tempo livre.

Qual é a ideia, ou melhor, qual deve ser o resultado?
Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.