Mais uma vez, sobre multithreading - página 4

 
meat:

Bem, digamos, nem tudo o que listou está relacionado com ferramentas mql5 :) E a questão não era sobre como resolver (contornar) esta questão. Pode sempre encontrar uma forma de contornar a situação, não há dúvidas sobre isso. A questão é porque não podemos adicionar a funcionalidade apropriada ao mql5 sem quaisquer detalhes.

A MQL5 tem tudo o que precisamos, só precisamos de aprender a usá-la.

Transferir parte dos cálculos para o indicador e executá-lo a partir de um consultor especializado.

E ninguém fará o paralelismo básico para 2 dúzias (de forma optimista) de utilizadores.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
TheXpert:
Há guiões para multithreading. E não precisa disso no testador

Como se gere um guião de um Expert Advisor?

 
komposter:

Transferir alguns dos cálculos para o indicador, e executá-los a partir do Conselheiro Especialista.

Lá vai você novamente com a dança do tamborim. Eu estava a falar de uma implementação normal.

E ninguém fará o paralelo habitual para 2 dúzias (de forma optimista) de utilizadores.

Pareceu-me desde o início que a MQL5 está posicionada como uma linguagem para programadores mais ou menos qualificados, em contraste com o mql4. Isto significa que a optimização do algoritmo, paralelizando-o através de múltiplos fios, deve ser uma necessidade diária. Foi por isso que chamei a vossa atenção para este ponto no início do tópico. E Renat, por alguma razão, reagiu muito dolorosamente a ela.

Resolver constantemente a questão da optimização através de um só lugar, como muitas pessoas aqui sugerem, não é algo que se queira de todo fazer.

Além disso, já disse no início que não estou a pedir-lhes que façam um paralelismo normal. Eu próprio sou perfeitamente capaz de paralisar tudo, usando o WinApi. Tudo o que preciso é de um endereço de função. Foi por isso que pedi para acrescentar apenas indicadores de funções. É claro que é desejável apoiar a directiva __stdcall, mas não é necessário, pode fazer as manipulações necessárias por si próprio.

Apontadores para funções é de facto uma coisa muito útil. A sua utilização para criar fios é apenas uma das muitas utilizações. São também utilizados, por exemplo, para especificar funções de chamada de retorno em várias operações assíncronas. Serão igualmente transferidos para a DLL, o que simplifica a comunicação entre a DLL e o Expert Advisor que a importou, ou seja, a integração completa. Em tempo de execução, a DLL pode chamar directamente a função MQL e obter as informações necessárias a partir dela. Agora, para o fazer, tem de gerar um evento (por exemplo, um tick), que chamará um Expert Advisor, que passará então as informações necessárias para a DLL... No total, mais aborrecimentos e consumo de tempo

 
Sobre a multithreading.
  1. Adicionar multithreading à língua implica a criação de uma API especial que suporta multithreading,
    que, por sua vez, funcionará mais lentamente que o API sem tal apoio, espero que seja claro (loki, etc.).
  2. Ter de reescrever o optimizador do compilador MQL5 - na verdade pioram as optimizações.
  3. Este é um lugar para os bugs de utilizadores difíceis de encontrar.
Bem e por último, não são poucos os utilizadores que precisam dele e a falta de apoio pode ser contornada.


Sobre os indicadores de funções.
A questão está em aberto no que diz respeito à sua utilização dentro do código MQL5.
Infelizmente, não poderemos passar o ponteiro para DLL - tivemos de sacrificar o acordo de chamada para a plataforma cruzada x86/x64.
 
mql5:
Em relação ao multithreading.

O homem está apenas a andar a cavalo (pensava que a língua era...) por raciocínio teórico e não compreende nem a natureza aplicada da língua nem as consequências da multithreading.

De facto, ele nem sequer tem uma verdadeira tarefa para a concorrência.

 

mql5:
 ...Ну и последнее, нужно это не очень малому числу пользователей и отсутствие поддержки можно обойти.

Gosto da ideia de utilizar guiões, mas como é que os chama da EA?

 
DC2008:

Gosto da ideia de utilizar guiões, mas como é que os chama da EA?

Infelizmente, não existe qualquer disposição para o lançamento de scripts da MQL5.

Mas há uma forma, através de um modelo de gráfico, se escrever um guião nele em vez do Expert Advisor.
Ao aplicar tal modelo a um novo gráfico, o guião é lançado (no entanto, trata-se de uma "característica não documentada", que pode não ficar disponível um dia)...

Qual é a sua tarefa?
Por que não tem um Expert Advisor pronto a correr na tabela adjacente, que fará o seu trabalho depois de receber um Evento?
O lançamento de um novo programa MQL5 é dispendioso, devido à protecção dos ficheiros EX5.
 
mql5:
Infelizmente, os guiões não podem ser lançados a partir da MQL5.

Mas há uma forma, através de um modelo de gráfico, se colocarmos nele um guião em vez do Expert Advisor.
Ao aplicar tal modelo a um novo gráfico, o guião é lançado (no entanto, trata-se de uma "característica não documentada", que pode não ficar disponível um dia)...

Qual é a sua tarefa?
Porque não tem um Expert Advisor pronto a correr no gráfico adjacente, que fará o seu trabalho depois de receber um Evento?
O lançamento de um novo programa MQL5 é dispendioso, devido à protecção dos ficheiros EX5.

Tenho milhares de objectos gráficos que precisam de ser analisados: remover objectos desnecessários, alterar propriedades, calcular características estatísticas, etc. Mesmo num gráfico há desfasamentos, e se houver vários deles?

 
Para objectos gráficos a multithreading não ajudará nem teoricamente.

O problema de trabalhar com objectos gráficos deve ser resolvido de forma algorítmica. Economicamente e não misturar mudança e ler comandos. Por exemplo, 1000 leituras e apenas 1000 escritas serão muito mais rápidas do que 1000 leituras e escritas.
 
mql5:
Sobre a multithreading.
  1. Adicionar multithreading à língua implica a criação de uma API especial que suporta multithreading,
    que, por sua vez, funcionará mais lentamente que o API sem tal apoio, espero que seja claro (loki, etc.).
  2. Ter de reescrever o optimizador do compilador MQL5 - na verdade pioram as optimizações.
  3. Este é um lugar para os bugs de utilizadores difíceis de encontrar.
Bem e por último, não são poucos os utilizadores que precisam dele e a falta de apoio pode ser contornada.


Sobre os indicadores de funções.
A questão está em aberto no que diz respeito à sua utilização dentro do código MQL5.
Infelizmente, a passagem de um ponteiro para uma DLL não vai funcionar - tivemos de sacrificar a convenção de chamada por x86/x64 crossplatform.
Obrigado pela sua resposta exaustiva. Tudo está mais claro agora. A única coisa relativa à impossibilidade de passar um ponteiro para DLLs, suponho que se refere a DLLs do sistema (isto é, __acordo de chamada)? E na minha própria DLL posso escrever qualquer outro acordo. Ou é um exclusivo que não cumpre nenhuma norma?