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
Può essere controllato, basta eseguire il controllo in un ciclo infinito. come avviare questo ciclo quando si avvia il terminale durante un'interruzione della connessione è un problema completamente separato. Una volta che hai fatto partire il tuo ciclo farà ciò che ci si aspetta.
Il tuo problema non ha nulla a che fare con la funzione IsConnected(). Con lo stesso argomento potreste anche lamentarvi di Print() o Alert() o qualsiasi altra funzione che non potete chiamare perché non avete potuto avviare l'intero codice in primo luogo a causa di qualche ragione completamente diversa.
Ok, lasciami spiegare qualcosa perché sto usando molti terminali per tutto il tempo in cui il mio utilizzo della cpu sta salendo fino a 100 punti percentuali, ecco perché ho bisogno di spegnere alcuni terminali
E quando li accendo (ovviamente in automatico) ho visto alcune volte che non sono connessi e l'EA che li esegue non segnala che non c'è connessione,
Ecco perché ho iniziato questo topic e finora l'unico modo che ho trovato è come ho detto sopra con un programma esterno
Forse è legato alla "caratteristica" che è stata introdotta per la prima volta con Windows XP SP2 che si rifiuta di avere più di una manciata di connessioni semiaperte in qualsiasi momento, principalmente per infastidire le persone che vogliono usare applicazioni ad alta intensità di rete. AFAIK esiste un metodo per patchare questa fastidiosa "caratteristica" e ripristinare la normale operatività: http://blog.davidkaspar.com/archives/2005/04/windows-xp-sp2-and-event-id-4226.php
Cercate l'evento 4226 nel registro eventi di Windows.
Questo è l'unico modo corretto per forzare uno start() dall'interno di init() in un EA. Non ti è permesso farlo in un indicatore poiché lì la start() verrà eseguita nel thread della GUI.
Questo è bello, ma non sempre funziona perché il tick potrebbe essere andato anche prima che initi() sia tornato, nel qual caso il tick viene scartato. Per evidenziare questo, se si aggiunge una pausa di 5ms dopo
allora start() non sarà eseguito.
C'è una soluzione migliore per far eseguire start() al caricamento dell'expert advisor senza richiedere un tick reale dal broker?
Sono un po' vecchio masto cercando una soluzione allo stesso problema che ho avuto in questo topic.
Infatti, l'affermazione di qjol che "l'unico modo per farlo è con uno script; il problema è che non c'è modo di aprire il terminale con uno script caricato" è parzialmente vera. Con uno script ok, ma c'è un modo per avviare uno script con il terminale del client. Questo è documentato nella guida di metatrader (F1, Strumenti, Configurazione all'avvio). Forse non è lo stesso al momento in cui questo argomento è stato iniziato.
Così ho sviluppato un piccolo script per fare il lavoro. Usatelo con uno script di avvio, esempio :
E lanciare il terminale con qualcosa come :
"...\Metatrader 4\terminal.exe" config\start.ini
Ciao ragazzi,
Sapete qualcuno di voi, perché non lavorare script fake ticks - https://www.mql5.com/en/forum/128803/page2#373539(pagina 2) questo thread per costruire 600++?
Il mio sistema operativo è Vista. Grazie.
Ciao ragazzi,
Sapete qualcuno di voi, perché non lavorare script fake ticks - https://www.mql5.com/en/forum/128803/page2#373539(pagina 2) questo thread per costruire 600++?
Il mio sistema operativo è Vista. Grazie.
Dalla build > 600 devi sostituire "A" per ansi con "W" per unicode
perché è usare 2 e 1 nel parametro
perché è usare 2 e 1 nel parametro
È fuori dallo scopo di MQL, chet la funzione qui:
Nel caso in cui qualcun altro stia cercando informazioni sulla funzione IsConnected().
Quindi sì, la funzione non funzionerà sotto la funzione start() o la funzione OnTick(), perché se non c'è connessione, allora non arriverà nessun nuovo tick, e la funzione non si attiverà comunque....
Quindi cosa dovremmo fare?
Usare la funzione OnTimer(), per controllare regolarmente la connessione, indipendentemente dai tick in arrivo.
fridayda13:
Quindi sì, la funzione non funzionerà sotto la funzione start() o la funzione OnTick(), perché se non c'è connessione, allora nessun nuovo tick arriverà, e la funzione non si attiverà comunque....
Quindi cosa dovremmo fare?
Usare la funzione OnTimer(), per controllare regolarmente la connessione, indipendentemente dai tick in arrivo.
Non dovresti fare nulla, perché non c'è nulla che tu possa fare. Ci vogliono più di 30 secondi prima che la rete vada in timeout e la funzione cambi valore. Cosa farai quando non è cambiato nulla e non hai nessuna connessione?
E' utile solo se non tornate mai da start/OnTick (controllatelo prima di un OrderSend.) o dopo OrderSend per i ritentativi all'interno dello stesso tick.
Invece, se OrderSend fallisce, registralo, torna indietro e prova/ritenta al prossimo tick. Fatto.