Como garantir que a EA só funcione no gráfico onde foi lançada pela primeira vez

 

Preciso fazer a EA trabalhar com apenas "uma instância". Isto é, anexo-o a qualquer gráfico pela primeira vez e funciona. Se eu, então, acidentalmente ou intencionalmente, anexá-lo novamente a outro gráfico, o segundo anexo deve reconhecer que já está funcionando e não fazer nada.

Deixar o rótulo em uma variável global provavelmente não vai funcionar. Se eu tiver dois EAs anexados e recompilar seu texto, não está claro qual deles funcionará primeiro com seu init, onde esta variável global poderia ser criada.

Quem pode sugerir o quê? Alguma idéia sobre como fazer isso?

 

A recompilação do poço é mutilante, mas solvível, mas o que fazer em caso de reinício do terminal...

E as variáveis globais são ruins, porque se o terminal se chocar, tendo previamente escrito variáveis globais para arquivar, então tudo se chocará.

Alternativamente, você pode manter um cabo de alguma coisa.

 

TheXpert:

.... qualquer coisa

essa é a questão :((
 
mas simplesmente não acorrentar a EA duas vezes ao gráfico, isso não é viável?
 
Techno:
mas simplesmente não ligar a EA duas vezes ao gráfico, isso é impossível?

Eu preciso de uma GARANTIA de que nem eu nem ninguém o fará acidental ou deliberadamente ;)

Imagine só: a EA recebe comandos 'externos' para abrir pedidos. Mesmo uma cópia extra é (teoricamente) um pedido extra.

 
ForexTools:
essa é a questão :((

Não, esses são os detalhes de implementação, o principal problema é reiniciar e recompilar.

Oh, há um tópico, basta verificar -- a EA é restaurada quando reiniciada e recompilada, se antes ela caiu, por exemplo, por divisão por 0?

Se não, esse é o caminho a seguir.

 
TheXpert:

Não, isso é um detalhe de implementação, o principal problema é a recarga e recompilação.


A recompilação não deve ser o problema.
 
PapaYozh:

O problema não deve surgir durante a recompilação.

por que? digamos que temos três cópias do EA (sem nenhum truque - apenas limpos). você o recompilou. o "comando" foi para o terminal. o EAs começou a inicializar.... em que ordem devem ser reinicializados?
 
ForexTools:

digamos que temos três cópias do EA (sem nenhum truque - apenas limpos). você o recompilou. o "comando" foi para o terminal. o EAs começou a iniciar.... em que ordem devem ser reinicializados?
Acontece então que um deles estava negociando, mas após a reinicialização, o direito de ser o líder será dado ao outro e o primeiro perderá esse direito, então que diferença faz se eles forem os mesmos? o principal é que um negociou. Use uma variável global e pronto. Na função inite escreva uma expectativa aleatória para cada EA dormir(), aquele que primeiro acorda, conta a variável global e a apaga, ao deinit restaura-a novamente. O primeiro a contar e excluir funcionará. Em resumo, você gera um número aleatório para dormir()
 
ForexTools:

digamos que temos três cópias do EA (sem nenhum truque - apenas limpos). você o recompilou. o "comando" foi para o terminal. o EAs começou a iniciar.... em que ordem devem ser reinicializados?

E você não descarta ter os mesmos gráficos? Ou seja, a EA deve começar em 2 gráficos com o mesmo símbolo e o mesmo período ser processado?
 
Techno:
Acontece então que um deles é negociado, mas depois de recarregar, o outro terá o direito de liderar e o primeiro perderá esse direito, e que diferença faz se eles forem os mesmos? Use uma variável global e pronto. Na função inite escreva uma expectativa aleatória para cada sono EA(), aquele que primeiro acorda, conta a variável global e a apaga, ao deinit restaura novamente. O primeiro a contar e excluir funcionará. Em resumo, você gera um número aleatório para dormir()

A propósito, sim. Se duas instâncias de EA são inaceitáveis, então não importa qual EA começa primeiro.