Come assicurarsi che l'EA funzioni solo sul grafico in cui è stato lanciato per la prima volta - pagina 4
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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).
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).
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.
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.
la tua idea non funziona.
Cosa posso dedurre dalla sua "soluzione"? ;)
"dovrebbe" non significa "farà", "c'è" è "dove"? se "non ha funzionato"
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.
Poi archiviare senza mezzi termini come un armadietto e nessun problema.
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 ;)
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.
Perché non usare questa, l'opzione più semplice?
Nella programmazione "grande", si usa il mutex - per esempio qui:
http://bitonic.wordpress.com/2008/10/09/mutex-%D0%BC%D1%8C%D1%8E%D1%82%D0%B5%D0%BA%D1%81-%E2%80%93-%D0%B7%D0%B0%D0%BF%D1%80%D0%B5%D1%82-%D0%BD%D0%B0-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5-%D1%87%D0%B5%D0%BC/