![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
No, non uso sleep() o messagebox(), ma faccio molto lavoro nella funzione MyInit(), che richiede circa 5 secondi.
Lo si può vedere nel file di log:
2013.11.15 14:35:32 Test ridotto 1180990: USDJPY M15 DebugStart: InitialHistoryGapClosed
2013.11.15 14:35:32 Test ridotto 1180990: USDJPY M15 DebugMyInit begin: <---------- inizia il lavoro
2013.11.15 14:35:32 Test ridotto 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 1 nach CreateHistory()
2013.11.15 14:35:33 Test ridotto 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 2 nach CreateHistory()
2013.11.15 14:35:34 Test ridotto 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 3 nach CreateHistory()
2013.11.15 14:35:35 Test ridotto 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 4 nach CreateHistory()
2013.11.15 14:35:35 Test ridotto 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 5 nach CreateHistory()
2013.11.15 14:35:36 Test ridotto 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 6 nach CreateHistory()
2013.11.15 14:35:37 Test ridotto 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 7 nach CreateHistory()
2013.11.15 14:35:37 Test ridotto 1180990: USDJPY M15 DebugMyInit ritorno InitialMyInitCalls: 0 IndexCount: 8 <---------- fine lavoro
2013.11.15 14:35:37 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
Ma perché questo dovrebbe far andare MT4 in un loop dopo?
Tutti voi parlate di loop infiniti, ma nessuno è curioso di sapere cosa fa CreateHistory(). Secondo l'output del log appare solo nell'ultima esecuzione di start().
Ho pensato che fosse una specie di funzione di salvataggio della storia... se l'OP vuole mostrarla lo farà... Presumo che non lo faccia e anche se lo facesse probabilmente non ci aiuterebbe ad aiutarlo. Il modo più veloce per lui è postare il suo codice in modo che qualcuno possa guardarlo con un paio di occhi nuovi. . .
mt4forum 2013.11.16 11:14
Ma perché questo dovrebbe far andare MT4 in un loop dopo?
A giudicare dal tuo file di log sembra che fosse già in un loop. Cosa succede dopo che arriva a 8? Era in un loop, se lo era, come fai a sapere che è uscito da quel loop? E' tornato a init()?
Hai aggiunto Print("Start Started"); e non è mai apparso nel file di log quindi non è mai entrato nella funzione start(). Questo suggerisce che non è mai uscito dalla funzione init(). Mettete più dichiarazioni Print() e restringete il campo.
Prima di tutto, grazie per il grande interesse e scusate per la mia risposta tardiva.
Affronterò i diversi commenti nelle voci seguenti.
Non lo fa, ma se sbagli il filo dell'interfaccia, MT4 si blocca... non puoi fare quello che stai facendo in un EA?
Ho eseguito il programma come EA. Si blocca anche lui o manda in crash MT4.
Ho eseguito il programma come EA. Si blocca anche lui o manda in crash MT4.
Tutti voi parlate di loop infiniti, ma nessuno è curioso di sapere cosa fa CreateHistory(). Secondo l'output del log appare solo nell'ultima esecuzione di start().
CreateHistory() fa un sacco di lavoro. Esegue un loop attraverso coppie di valute e timeframe e genera grafici offline.
Ma il file di log mostra che finisce correttamente.
A giudicare dal tuo file di log sembra che fosse già in un loop. Cosa succede dopo che arriva a 8? Era in un ciclo, se lo era, come fai a sapere che è uscito da quel ciclo? E' tornato a init()?
Hai aggiunto Print("Start Started"); e non è mai apparso nel file di log quindi non è mai entrato nella funzione start(). Questo suggerisce che non è mai uscito dalla funzione init(). Mettete più dichiarazioni Print() e restringete il campo.
Dopo che arriva a 8 ritorna correttamente a init().
La seguente linea nel file di log lo dimostra: "DebugMyInit return ..." è l'ultima linea di debug in MyInit().
2013.11.15 12:33:22 Test ridotto 395052: USDJPY M15 DebugMyInit return InitialMyInitCalls: 0 IndexCount: 8
Uso la mia funzione di stampa per generare il file di log. Print("Start Started") non stampa in quel file di log.
La voce
2013.11.15 12:33:22 Test ridotto 395052: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
mostra che è uscito dalla funzione init().
Se posso fidarmi del fatto che la mia funzione di debug registra correttamente tutte le informazioni, allora il file di log ci dice che dopo l'ultima esecuzione di start(),
start() è uscito e non è stato chiamato di nuovo. Questo è il problema.