Minha abordagem. O núcleo é o motor. - página 158

 
Artyom Trishkin:

Espere. Você escreveu:

Então, quem tem que exército?

Bem, vou gritar sua grosseria sobre "cara esperto" até o fato de que você não fala bem russo e não entende que isso significa uma atitude depreciativa e desdenhosa em relação à pessoa com quem você está falando.

Por que, você perdeu seu senso de humor?

 
Vasiliy Sokolov:

Infelizmente, sim. Uma interface de chamada de retorno entre dois sistemas fundamentalmente diferentes não é possível.

Na verdade, a questão era quase retórica)

IMHO, com a compatibilidade NET adicionada, é necessário adicionar callbacks ao terminal. Pelo menos um) Pelo menos, para empurrar o evento para a fila terminal.

 
Artyom Trishkin:

Se via temporizador, como você vai trabalhar no testador? Pensei que você tinha dito que estava fazendo código multiplataforma.

Artyom, que perguntas? Se o temporizador não funciona, ele é emulado de outras fontes.

é sempre assim mesmo no "robô de batalha", porque o EventSetTimer:-)

ps/ há algo infectilmente atraído para temas militaristas...postos de comando, robôs de combate... "Galacteco Danger"

 
Dmitriy Skub:

Na verdade, a questão era quase retórica)

IMHO, com a adição da compatibilidade NET, há uma forte necessidade de adicionar call-backs ao terminal. Pelo menos um) Pelo menos, empurrando o evento para a fila terminal.

Não sou capaz de captar eventos no MT5, o Spy++ não consegue ver eventos no gráfico por algum motivo. Parece que são usadas classes e modelos de eventos autoescritos em vez de eventos padrão do Windows.

Eu uso o OnTimer também, por isso tento receber um pacote mínimo de dados no pedido, embora na velocidade atual do PC eu possa estar ficando ganancioso))))

Artyom Trishkin:

Se o temporizador, como você trabalha no testador? Pensei que você tinha dito que fazia código de plataforma cruzada.

Quando tentei usar МТ5 foi um verdadeiro prazer escrever em C# - chamo .dll, começo imediatamente um formulário e coloco todos os gráficos em uma thread separada ( Thread ) e é tudo, depois disso só trabalho com a troca de dados entre C# e МТ5 e o formulário gráfico com botões funciona como uma aplicação viúva normal - a solicitação de МТ5 só recebe status de elementos clicados anteriormente e nada está freando ou estará;)

 
Maxim Kuznetsov:

Artyom, para que servem as perguntas? se o temporizador não funciona, é emulado de outras fontes...

este é sempre o caso do "robô de combate", porque o EventSetTimer :-)

ps/ há algo infectilmente atraído para temas militaristas...postos de comando, robôs de combate... "Galacteco Danger"

Bem... Eu queria perguntar a Vassili como ele o faria. Para compará-lo com o que eu mesmo fiz há muito tempo (não sem o conselho de Vasil, é claro)

 
Igor Makanu:

não consegui capturar eventos no MT5, por alguma razão o Spy++ não consegue ver eventos no gráfico, parece que são usadas classes e modelos de eventos autoescritos em vez de modelos de eventos padrão para viúvas, no MT4 posso enviar um evento para viúvas sem qualquer problema

Eu uso o OnTimer também, por isso tento receber um pacote mínimo de dados no pedido, embora na velocidade atual do PC eu possa estar ficando ganancioso))))

Quando eu tentei usar o OnTimer no MT5, o temporizador no testador é gerado sem problemas e é um verdadeiro prazer escrever em C# - eu chamo .dll, inicio imediatamente o formulário e coloco todos os gráficos em um thread separado ( Thread ), depois disso você só trabalha com troca de dados entre C# e MT5 e o formulário gráfico com botões funciona por si só como uma aplicação normal do Windows - o pedido do MT5 só recebe status de elementos clicados anteriormente e nada é retardado ;)

Eu o fiz em cinco minutos através de um temporizador no testador. Mesmo seu simples uso (é um multitimer de milissegundos) leva a uma séria desaceleração do testador. Portanto, simplesmente recusou o temporizador no visualizador - é a mesma coisa para trabalhar com carrapatos. Fabricados em dois modelos - por temporizador e por eventos de bandeiras através do OnTick(). Por temporizador em tempo real, por carrapatos - no visualizador.

Mentiras - três modelos - também através da OnChartEvent() - somente em tempo real lá também.

 
Igor Makanu:

não consegui capturar eventos no MT5, por alguma razão o Spy++ não consegue ver eventos no gráfico, parece que são usadas classes e modelos de eventos autoescritos em vez de modelos de eventos padrão para viúvas, no MT4 posso enviar um evento para viúvas sem qualquer problema

Eu uso o OnTimer também, por isso tento receber um pacote mínimo de dados no pedido, embora na velocidade atual do PC eu possa estar ficando ganancioso))))

Quando eu tentei usar o OnTimer no MT5, o temporizador no testador é gerado sem problemas, e é um prazer escrever código sob C# - eu chamo .dll, inicio imediatamente o formulário e em um thread separado ( Thread ) todos os gráficos e isso é tudo, agora eu só trabalho com troca de dados entre C# e MT5, e o formulário gráfico com botões funciona por si só como uma aplicação viúva comum - no MT5 solicitação apenas o status dos elementos clicados anteriormente é enviado, nada está atrasado e não irá atrasar ;)

Se você também fizer Modelo a nível de MQL e outras coisas em Sharpey, será ótimo. Então a lógica é separada, a visão é separada. O frontend lida com design e usabilidade e não lida com o backend comercial. Alterar a configuração dos botões em um formulário ou dividir um formulário em dois ou três não deve afetar de forma alguma os algoritmos do Expert Advisor.

 
Vasiliy Sokolov:

Peter, se você não se importa, vou preparar um artigo sobre como uma aplicação gráfica pode ser criada muito facilmente em MQL, usando o novo recurso de integração com bibliotecas .Net. O título do artigo será "Criação de formulários personalizados no VisualStudio para especialistas em comércio baseados em .Net Framework e C#".

Sua abordagem e suas idéias me animaram. Eu me perguntava se seria possível criar um formulário gráfico para meu Expert Advisor de forma rápida e fácil, usando apenas habilidades básicas de programação. Realizei uma experiência e descobri que isso é possível! Eu tenho um formulário como este:

A idéia era que o usuário desenhasse a forma necessária no editor VisualStudio e todo o trabalho necessário para integrar esta janela com o código MQL seria feito nos bastidores, em modo automático. Para fazer isso, tive que escrever um controlador C# - uma espécie de analógico de seu kernel, porém, são necessárias apenas cerca de 200 linhas de código.

Você pode ler sobre como tudo isso funciona no artigo que comecei.

É isso aí, Vasiliy, você cobriu seu grão com um caldeirão.

 
Dmitry Fedoseev:

É isso aí, Vassily, você cobriu sua cabeça com um caldeirão.

Geralmente espera-se que acabe assim, mas ainda não há nenhum artigo específico...

embora haja 99% de chance de que tal artigo saia antes do kernel-engine. Peter precisa manter a porcentagem restante.

 
Artyom Trishkin:

Eu fiz nos cinco através do temporizador no testador. Mesmo apenas usando-o (e é um multitimer de milissegundos) causou um sério abrandamento do testador. Portanto, simplesmente recusou o temporizador no visualizador - é a mesma coisa para trabalhar com carrapatos. Fabricados em dois modelos - por temporizador e por eventos de bandeiras através do OnTick(). Por temporizador em tempo real, por carrapatos - em renderizador.

ZS. Eu minto - três modelos - também através da OnChartEvent() - lá, também, apenas em tempo real.

Ainda não decidi sobre o projeto, verifiquei que funciona no testador sem problemas, graças ao@fxsaber por sua ajuda com o código #define - eu adiciono automaticamente os manipuladores OnTick(), OnTimer() ao conectar o injetor... para que eu possa fazer as ligações necessárias em qualquer seção do Expert Advisor

Eu nem sei onde pode estar o atraso... Eu uso o temporizador com bastante frequência - 400 ms, mas a chamada só está sendo feita a partir do .dll 2 arrays int 10-ele-v e 2 int (quantos botões e quantas caixas de seleção, tal dimensão de arrays), lá simplesmente não pode abrandar fisicamente, porque mesmo escreva no array se o botão foi clicado, e no número int que eu enviar um botão, o array não é necessário em princípio, como backup se o usuário tiver um colapso nervoso e mais rápido do que 0,5 segundos irá bater o botão )))

Acho que temos tarefas diferentes - quando se trata da construção do TS, você não precisa de gráficos, e quando se trata de depuração e visualização do TS, você não precisa da velocidade do testador ;)


Maxim Kuznetsov:

Se você também fizer um modelo de nível MQL, e o resto em Sharpay, seria ótimo. Então a lógica é separada, a visão é separada. O frontend trata do design e da usabilidade e não se envolve com o backend comercial. Alterar a configuração dos botões em um formulário ou dividir um formulário em dois ou três não deve afetar os algoritmos do Expert Advisor.

Vou guardá-lo como um lembrete, bom post! E escreva-a na descrição, se eu estiver maduro para comentários do público