Rodando 2 cópias do mesmo robô em ativos diferentes ao mesmo tempo trava MT5.

 

Quero executar duas cópias do mesmo EA no mesmo terminal.
Um com um ativo e magic e o outro em outro ativo diferente e com magic diferente. Em janelas diferentes (obviamente).

O robô funciona normalmente nos dois ativos sem problemas desde que esteja sozinho. Se eu tento executar a 2a cópia dele em outra janela, isso trava meu terminal.
Alguma ideia do pq isso estaria acontecendo?

Desde já grato!

 
Juan Pablo Silenzi de Stagni:

Quero executar duas cópias do mesmo EA no mesmo terminal.
Um com um ativo e magic e o outro em outro ativo diferente e com magic diferente. Em janelas diferentes (obviamente).

O robô funciona normalmente nos dois ativos sem problemas desde que esteja sozinho. Se eu tento executar a 2a cópia dele em outra janela, isso trava meu terminal.
Alguma ideia do pq isso estaria acontecendo?

Desde já grato!

Há alguma interação entre as duas instâncias do mesmo EA?

Elas se comunicam de alguma forma via socket, pipes, arquivos compartilhados, variáveis globais de terminal ?

Se não houver nada disso, talvez haja algum bug nesse EA que só se manifesta quando há ordens de outro EA na mesma conta (mesmo que com magic e ativo diferente).

Será que em algum local do código vc não está se esquecendo de filtrar algum evento pelo magic e pelo ativo?

Ou talvez baseando decisões em propriedades da conta (saldo, etc.), com a premissa de que não há outro EA agindo simultaneamente (por exemplo, deduzir que uma ordem da própria instância foi executada apenas porque o saldo da conta variou, quando na verdade foi a execução de uma ordem da outra instância que fez o saldo variar).  

Se houver algum erro dessa natureza, tudo vai correr bem se houver apenas 1 instância do EA na conta, mas quando houver mais de 1 instância, ambas podem ficar num loop infinito, uma induzindo a outra a errar e vice-versa.

Reveja toda a sua lógica e verifique as premissas utilizadas, se elas continuam sendo verdadeiras se houver mais de 1 instância atuando. 

 
Trader_Patinhas:

Há alguma interação entre as duas instâncias do mesmo EA?

Elas se comunicam de alguma forma via socket, pipes, arquivos compartilhados, variáveis globais de terminal ?

Se não houver nada disso, talvez haja algum bug nesse EA que só se manifesta quando há ordens de outro EA na mesma conta (mesmo que com magic e ativo diferente).

Será que em algum local do código vc não está se esquecendo de filtrar algum evento pelo magic e pelo ativo?

Ou talvez baseando decisões em propriedades da conta (saldo, etc.), com a premissa de que não há outro EA agindo simultaneamente (por exemplo, deduzir que uma ordem da própria instância foi executada apenas porque o saldo da conta variou, quando na verdade foi a execução de uma ordem da outra instância que fez o saldo variar).  

Se houver algum erro dessa natureza, tudo vai correr bem se houver apenas 1 instância do EA na conta, mas quando houver mais de 1 instância, ambas podem ficar num loop infinito, uma induzindo a outra a errar e vice-versa.

Reveja toda a sua lógica e verifique as premissas utilizadas, se elas continuam sendo verdadeiras se houver mais de 1 instância atuando. 

Obrigado pela resposta e pelo ponto de vista, vou rever o codigo buscando essas intereções e filtros, porém não tenho nenhuma decisão ou verificação ou comunicação entre eles a principio, só se houver alguma, foi não intencional, mas vou revisar assim mesmo.
 
Trader_Patinhas:

Há alguma interação entre as duas instâncias do mesmo EA?

Elas se comunicam de alguma forma via socket, pipes, arquivos compartilhados, variáveis globais de terminal ?

Se não houver nada disso, talvez haja algum bug nesse EA que só se manifesta quando há ordens de outro EA na mesma conta (mesmo que com magic e ativo diferente).

Será que em algum local do código vc não está se esquecendo de filtrar algum evento pelo magic e pelo ativo?

Ou talvez baseando decisões em propriedades da conta (saldo, etc.), com a premissa de que não há outro EA agindo simultaneamente (por exemplo, deduzir que uma ordem da própria instância foi executada apenas porque o saldo da conta variou, quando na verdade foi a execução de uma ordem da outra instância que fez o saldo variar).  

Se houver algum erro dessa natureza, tudo vai correr bem se houver apenas 1 instância do EA na conta, mas quando houver mais de 1 instância, ambas podem ficar num loop infinito, uma induzindo a outra a errar e vice-versa.

Reveja toda a sua lógica e verifique as premissas utilizadas, se elas continuam sendo verdadeiras se houver mais de 1 instância atuando. 

Como sempre, cirúrgico nas observações! Show man!

[ ]'s

 
Juan Pablo Silenzi de Stagni:
Obrigado pela resposta e pelo ponto de vista, vou rever o codigo buscando essas intereções e filtros, porém não tenho nenhuma decisão ou verificação ou comunicação entre eles a principio, só se houver alguma, foi não intencional, mas vou revisar assim mesmo.
Boa noite Juan, se o terminal chega a travar, o que considero bastante grave, minha maior suspeita está em um possível loop ou conflito de leitura da real posição da carteira.
Entretanto, note que um EA bem escrito e seguro deve suportar várias instâncias mesmo que estejam programadas com o mesmo Magic e instrumento financeiro, sem ocorrer travamentos.
Sds.,
Rogério Figurelli
Razão: