Programação assíncrona e multi-tarefa em MQL - página 28

 
Andrey Barinov:

Imprimir, ASSERIR, DEBUG. Eu não uso o depurador interno neste caso...

Sim, isso é um inconveniente. Quase como na antiga MQL4.

 
Реter Konow:
E como tal "multithreading" corresponde a sua noção? É possível dividir as tarefas do programa em linhas usando esta função?

Para certas tarefas, 100%. Por exemplo, você precisa administrar negócios - Arrasto ou qualquer outra coisa.

Esta tarefa pode ser realizada sobre o agente em cada carrapato pelo tempo que você quiser e a GUI ainda funcionará.

 
Andrey Barinov:

Com este esquema, as proteções são feitas

  • Contra alguém que fecha OBJ_CHART. Por exemplo, o roteiro "inteligente" de alguém.
  • O mecanismo de evasão do amigo ou inimigo não é apenas por identificação.
Intercâmbio de dados via arquivos - sem problemas físicos com o disco? Parece-me que todas as copiadoras do mercado estão fazendo algo terrível devido a esta sincronização.


Que bandeira você usa para identificar o modo EA escravo/master? Se eu uso OBJ_CHART, então é um escravo. E em MT4? Minha entrada era data/hora, então eu a resolvi facilmente usando uma data/hora negativa. Mas eu não tentei sem input.

 
Andrey Barinov:

Para certas tarefas, 100%. Por exemplo, você precisa administrar negócios - Arrasto ou qualquer outra coisa.

Esta tarefa pode ser realizada sobre o agente em cada carrapato pelo tempo que você quiser e a GUI ainda funcionará.

Ainda é uma floresta escura. A função salva o modelo do gráfico e então, posso abrir um novo gráfico da EA e aplicar o modelo salvo a ele, e ao fazer isso, uma cópia da EA será executada nesse gráfico?
 
fxsaber:

Com este esquema, as proteções são feitas

  • Contra alguém que fecha OBJ_CHART. Por exemplo, o roteiro "inteligente" de alguém.
  • O mecanismo de evasão do amigo ou inimigo não é apenas por identificação.
Intercâmbio de dados via arquivos - sem problemas físicos com o disco? Parece-me que todas as copiadoras do mercado estão fazendo algo terrível devido a esta sincronização.

Sim, a proteção é necessária, como sempre.

Os arquivos devem ser usados com sabedoria. Somente quando necessário. Afinal, apenas momentos de mudanças significativas no ambiente/estado que o próprio agente não consegue reconhecer estão sincronizados.

Os copiadores normalmente trabalham em um VPS, portanto, não é realmente um grande problema.

 
Andrey Barinov:

Os imitadores geralmente trabalham em um VPS, portanto, não é muito assustador.

Pobre VPS... acima complementou a pergunta.

 
Реter Konow:
Ainda uma floresta escura. A função cria uma cópia salva do gráfico e então, posso abrir um novo gráfico da EA e executar o modelo salvo nele, e ao fazer isso, a cópia da EA será executada nesse gráfico?

1. o usuário coloca a EA em uma tabela em branco.

2. A EA cria um modelo (com ele mesmo no gráfico)

3. O Expert Advisor cria um novo gráfico (OBJ_CHART ou um gráfico normal no caso do MT4)

4. O Expert Advisor aplica o modelo ao novo gráfico.

5. Uma cópia da EA começa no novo gráfico, agora deve entender que este é o agente, não a EA principal :)

6. Eles começam a se comunicar.

Eles vivem felizes para sempre e morrem no mesmo dia :)

 
fxsaber:

Pobre VPS... acima complementou a pergunta.

Você não pode fazer uma cópia sem arquivos (para o mercado). E os arquivos de sincronização do ambiente comercial entre terminais exigem muito mais operações do que a sincronização entre agentes.


O agente no MT4 é determinado pela presença de variáveis globais apropriadas que são definidas pela EA principal antes de aplicar um modelo a um novo gráfico.

 
fxsaber:

Pobre VPS... acima complementou a pergunta.

É preciso levar em conta que o SO não grava em disco, ele sabe como fazer o cache. Não me lembro onde, mas há até mesmo um cenário em algum lugar ao vento.

 
Andrey Barinov:

1. o usuário coloca a EA em uma tabela em branco.

2. A EA cria um modelo (com ele mesmo no gráfico)

3. O Expert Advisor cria um novo gráfico (OBJ_CHART ou um gráfico normal no caso do MT4)

4. O Expert Advisor aplica o modelo ao novo gráfico.

5. Uma cópia da EA começa no novo gráfico, agora deve entender que este é o agente, não a EA principal :)

6. Eles começam a se comunicar.

Eles vivem felizes para sempre e morrem no mesmo dia :)

Fantástico!)) Obrigado!

Sim, essa é a que tem o multithreading. Você precisa executar para cada tarefa pesada uma cópia da EA em um gráfico separado através de um modelo e dizer a essa cópia para executar apenas a função que você deseja que ela execute. As outras funções da cópia podem ser descansadas.

A comunicação via recursos com cópias em gráficos regulares (não OBJ_CHART) ocorrerá? Ou há alguma restrição?

Razão: