Come assicurarsi che l'EA funzioni solo sul grafico in cui è stato lanciato per la prima volta

 

Ho bisogno di far funzionare l'EA con una sola "istanza". Cioè lo collego a qualsiasi grafico per la prima volta e funziona. Se poi accidentalmente o intenzionalmente lo attacco di nuovo a un altro grafico, il secondo attacco dovrebbe riconoscere che è già in esecuzione e non fare nulla.

Lasciare l'etichetta in una variabile globale probabilmente non funzionerà. Se ho due EA attaccati e ricompilo il suo testo, non è chiaro quale funzionerà prima con il suo init dove questa variabile globale potrebbe essere creata.

Chi può suggerire cosa? Qualche idea su come farlo?

 

Beh, ricompilare è un'impresa ardua, ma risolvibile, ma cosa fare in caso di riavvio del terminale...

E le variabili globali sono un male, perché se il terminale va in crash, avendo precedentemente scritto le variabili globali su file, allora tutto andrà in crash.

In alternativa, si può tenere una maniglia di qualcosa.

 

TheXpert:

.... qualsiasi cosa

questa è la domanda :((
 
ma solo per non incatenare due volte l'EA al grafico, non è fattibile?
 
Techno:
ma semplicemente non collegare l'EA due volte al grafico, è impossibile?

Ho bisogno di una GARANZIA che né io né nessun altro lo farà accidentalmente o deliberatamente ;)

Immagina: l'EA riceve comandi "esterni" per aprire ordini. Anche una copia in più è (teoricamente) un ordine in più.

 
ForexTools:
questa è la domanda :((

No, questi sono i dettagli di implementazione, il problema principale è il riavvio e la ricompilazione.

Oh, c'è un argomento, devo solo controllare - l'EA viene ripristinato quando si riavvia e ricompila, se prima andava in crash, per esempio, sulla divisione per 0?

In caso contrario, questa è la strada da seguire.

 
TheXpert:

No, questo è un dettaglio di implementazione, il problema principale è il ricaricamento e la ricompilazione.


La ricompilazione non dovrebbe essere il problema.
 
PapaYozh:

Il problema non dovrebbe presentarsi durante la ricompilazione.

Come mai? diciamo che abbiamo tre copie dell'EA (senza trucchi - solo quelle pulite). l'hai ricompilato. il "comando" è andato al terminale. gli EA hanno iniziato a inizializzarsi.... in quale ordine devono essere reinizializzati?
 
ForexTools:

Diciamo che abbiamo tre copie dell'EA (senza trucchi - solo quelle pulite). l'hai ricompilato. il "comando" è andato al terminale. gli EA hanno iniziato a inizializzare.... in quale ordine devono essere reinizializzati?
poi si scopre che uno di loro stava scambiando, ma dopo il riavvio, il diritto di essere il leader sarà dato all'altro e il primo perderà questo diritto, quindi che differenza fa se sono uguali? la cosa principale è che uno ha scambiato. Usate una variabile globale e questo è tutto. Nella funzione inite scrivere un'aspettativa casuale per ogni EA a sleep(), quello che si sveglia per primo, conta la variabile globale e la cancella, al deinit la ripristina di nuovo. Il primo che conta e cancella funzionerà. In breve, si genera un numero casuale per sleep()
 
ForexTools:

Diciamo che abbiamo tre copie dell'EA (senza trucchi - solo quelle pulite). l'hai ricompilato. il "comando" è andato al terminale. gli EA hanno iniziato a inizializzare.... in quale ordine devono essere reinizializzati?

E non esclude di avere gli stessi grafici? Cioè, l'EA deve iniziare su 2 grafici con lo stesso simbolo e lo stesso periodo?
 
Techno:
Poi si scopre che uno di loro ha scambiato, ma dopo aver ricaricato, l'altro otterrà il diritto di condurre e il primo perderà questo diritto, e che differenza fa se sono uguali? Usate una variabile globale e questo è tutto. Nella funzione inite scrivere un'aspettativa casuale per ogni EA sleep(), quello che si sveglia per primo, conta la variabile globale e la cancella, al deinit la ripristina di nuovo. Il primo che conta e cancella funzionerà. In breve, si genera un numero casuale per sleep()

A proposito, sì. Se 2 istanze di EA sono inaccettabili, allora non importa quale EA inizia per prima.