A tarefa é, em princípio, resolúvel na MQL4 ?

 

A tarefa é: Em um terminal, há 9 pares diferentes, e 8 EAs trabalhando em cada um deles, e cada um está autorizado a negociar no 9º par, meu EA 'gerenciador', que monitora quantos pares e respectivamente cópias de EAs comerciais podem abrir ordens ao mesmo tempo. Todos os Expert Advisors obedecem a uma variável GLobal. Escrevi um loop simples que lê "números mágicos" de ordens já abertas e não permite a abertura de novas ordens de outros EAs definindo o valor da variável global de controle que proíbe a negociação.

É assim que deve ser "sob o cenário". Não é assim que realmente funciona. O problema é que até que minha EA "gerencial" tenha tempo para definir o valor da variável global que proíbe a negociação, as EA de trabalho têm tempo para abrir ordens em 6 pares ao invés das 2 permitidas. O algoritmo funciona corretamente, se eu primeiro iniciar o gerente da EA e depois deixar a negociação de EAs, então mais de 2 EAs (2 pares) não abrirão (proibido pela variável global definida pelo gerente da EA).

É possível estabelecer na MQL4 um sistema de prioridades, para que primeiro seja executado o código da EA, e depois todos os outros EAs?

Tentei fazer um loop start(), talvez tenha feito algo errado, mas o terminal desliga, mas nada acontece.

Ajuda para um profissional novato.

 
Zakyza:

É possível estabelecer um sistema de prioridades na MQL4, para que o código EA seja executado primeiro, e depois todos os outros EAs?

Tentei fazer um loop start(), talvez tenha feito algo errado, mas não consegui nada além da suspensão do terminal.

Para um profissional iniciante, eu preciso de alguma ajuda.

É possível. Por exemplo, acrescentando mais uma variável para o terminal, que só ele pode administrar, e para outros se tornará uma permissão para trabalhar.

Entendo que eu sugeri o que você já implementou. Aparentemente, isso é feito de forma incorreta.

Se o conselheiro administrativo não teve tempo de mudar a variável terminal, os escravos não devem ser autorizados a negociar.

 
Olhe para esta função. Esta é a única função na MQL4 que lida com o nível de kernel (fornece acesso atômico). Isso deve ajudar.
 
tara:
Possível. Por exemplo, adicionando outra variável terminal que só ele pode controlar, e para outros, ela se tornará permissão para trabalhar.


Não há tempo para que o gerente da EA defina o valor desejado da variável global
 
Zakyza:

O gerente da EA não tem tempo para definir o valor correto da variável global

Bem, não é preciso dar ao escravo o direito de respirar até que ele acorde.
 
Zhunko:
Olhe para esta função. Esta é a única função na MQL4 que lida com o nível de kernel (fornece acesso atômico). Isso deve ajudar.

Obrigado, espero que ajude, de alguma forma senti falta. "pode ser usado para organização de semáforos quando vários Expert Advisors que trabalham simultaneamente interagem dentro de um único terminal do cliente" - dá esperança. Embora, se aGlobalVariableSetOnCondition for chamada desde o início() de minha EA na última vez, depois que as EA já tiverem entrado em acordos, não vejo que diferença isso fará .
 
tara:

Bem, não é preciso dar ao escravo o direito de respirar até que ele acorde.

Como você organiza isto? Permitir o comércio manual dos escravos não é uma opção.
 
Se os conselheiros de escravos são conselheiros roubados, você foi para o endereço errado.
 
Por que ser roubado? O próprio autor da EA o colocou lá de graça, eu só fiz algumas cópias e quero organizá-las através de variáveis globais. Por que você diz isso?
 
Eu disse: se.
 
tara:
Eu disse: se.

Certo. Não, não é roubado.
Razão: