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

 

Probabilmente è così che funziona:

Iniziate, create una variabile globale e un oggetto sul grafico (da qualche parte fuori dal grafico, per non cancellarlo accidentalmente a mano), e "scrivete" una chiave comune in entrambi (ottenuta da GetTickCount, per esempio).

Le riesecuzioni su altri grafici controllano la presenza della variabile globale. se esiste - cerca un oggetto con la stessa chiave sul NOSTRO grafico. se non si trova - altro grafico - non funziona e grida la riesecuzione!

Poiché gli oggetti del grafico e le variabili globali devono sopravvivere ai riavvii e alle ricompilazioni, il controllo funzionerà sempre correttamente).

 
ForexTools:

Probabilmente è così che funziona:

Iniziate, create una variabile globale e un oggetto sul grafico (da qualche parte fuori dal grafico, per non cancellarlo accidentalmente a mano) e "scrivete" una chiave comune in entrambi (ottenuta da GetTickCount, per esempio).

Le riesecuzioni su altri grafici controllano la presenza della variabile globale. se esiste - cerca un oggetto con la stessa chiave sul NOSTRO grafico. se non lo trova - altro grafico - non funziona e grida con l'avviso che la riesecuzione!

Poiché gli oggetti del grafico e le variabili globali devono sopravvivere ai riavvii e alle ricompilazioni, il controllo funzionerà sempre correttamente).

A volte gli oggetti non vengono salvati se il terminale è andato in crash.
 
ForexTools:

L'Expert Advisor dovrebbe lavorare con una sola "istanza". Cioè, la prima volta che lo attacco a qualsiasi grafico e funziona. Se poi accidentalmente o intenzionalmente lo attacco di nuovo a un altro grafico, il secondo attacco dovrebbe rilevare 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 dei due farà funzionare il suo init per primo per creare questa variabile globale.

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


E se all'inizializzazione per aprire il file per scrivere, alla deinizializzazione per rilasciarlo. Logicamente, una nuova istanza di EA non sarà in grado di aprire un file che è stato aperto per la scrittura in precedenza. Se, per esempio, per cinque iterazioni, otteniamo costantemente un errore di apertura di un file per la scrittura, significa che un'istanza dell'EA è già aperta.

 
exhumer:
Una nuova istanza dell'EA non sarà in grado di aprire un file che era precedentemente aperto per la scrittura.

dopo che il terminale è andato in crash e si è riavviato, il file sarà disponibile alla prima persona che lo aprirà, non alla prima persona che lo resetterà :(

Ancora una volta, ripeto: hai bisogno di un grafico specifico - un Expert Advisor specifico.

 
ForexTools:

la tua idea non funziona.

Cosa vuol dire che non funziona? Mentre questa è un'affermazione vuota.
Tanto più che non hai altro che un'idea (figuriamoci una "ricetta concreta")

Cosa posso dedurre dalla sua "soluzione"? ;)

È esattamente un'idea. Se non avete abbastanza conoscenze per capire come controllarlo, allora scrivete così. In realtà l'hai fatto, ma l'hai scritto come un'affermazione. Almeno l'osservazione "cosa posso codificare sulla tua "soluzione"? ;)" sembra esattamente un'affermazione. E poi per qualche motivo una serie di banalità

"dovrebbe" non significa "farà", "c'è" è "dove"? se "non ha funzionato"

- come potete dare consigli su soluzioni non testate?!

Senti, se si offrissero solo soluzioni collaudate, tu staresti ancora cercando le radici con un bastone. Di chi è il problema, mio o tuo? Perché mai si dovrebbe qualificare il suggerimento di un'idea come una raccomandazione di una soluzione?

Dal mio punto di vista la dichiarazione di domanda è: io ti do un'idea, tu la testi, se funziona mi informi che funziona, a titolo di un minimo ringraziamento.

P.S. Amico, avresti dovuto esaminare un file chr per curiosità, visto che pretendi di essere un professionista del lavoro con MT.

 
TheXpert:
Poi archiviare senza mezzi termini come un armadietto e nessun problema.
Perché non usare questa, l'opzione più semplice? L'Expert Advisor crea un file di controllo e controlla se il file esiste prima di farlo. Se il file con lo stesso nome esiste già, l'Expert Advisor non si avvia. Se l'EA esce correttamente dal grafico, cancellerà il file. Se si verifica un crash, il file rimanente blocca il lancio di qualsiasi istanza dell'EA e viene cancellato manualmente per continuare a lavorare.
 

Candid:

Di chi è il problema, mio o tuo? Perché mai dovresti qualificare il tuo suggerimento di un'idea come una raccomandazione di una soluzione?

Perché è esattamente quello che ho chiesto nel mio primo post - ecco perché ho preso la tua idea come tale.

Sembra che tu pretenda di essere un professionista nel lavorare con MT.

Ecco perché vedo la validità di molte "idee" anche di DOTO come loro..... ;)

se mi sbaglio su di te - scrivi del codice EA che non fa altro che impedire l'esecuzione della tua seconda copia. controlla che funzioni davvero quando ricompili e riavvii il terminale e posta il codice qui - tutto andrà a posto ;)

 
granit77:
Quando si verifica un crash, il file rimanente viene bloccato da....

ci sono due grafici, uno di loro ha un EA funzionante che tiene il file, e il secondo ha una copia dell'EA che non funziona a causa di un file bloccato.

il terminale è giù o chiuso.

(ri)avviare il terminale. su di esso due EA iniziano a controllare per leggere il file. c'è qualche garanzia che il primo vero lo prenda per primo e non quello che è stato bloccato l'ultima volta? :(

Per la terza volta ripeto: ho bisogno di un collegamento tra CHART e EXPERT, ma non di bloccare un Expert Advisor con un altro.

 
granit77:
Perché non usare questa, l'opzione più semplice?
No, no, questo è solo se non importa quale istanza eseguire.
Motivazione: