MT4 si blocca, non chiama più start() - pagina 2

 

start():

int start()
  {     
   int TFInd;
   int k;  
   
   Print("start():  started . . .");  
   
   if (CheckDebug(DebugStart, 2))
      {
         DebugStr = "DebugStart: " + "begin: " + " InitialGapFound: " + BoolToString(InitialGapFound);
         PrintDebug(DebugFile, DebugStr);
      }

...

OK è solo #define OK 0

il mio file di log:

2013.11.15 14:35:30 Test ridotto 0: USDJPY M15 Debug Init() begin:
2013.11.15 14:35:30 Test ridotto 0: USDJPY M15 DebugMyInit begin:
2013.11.15 14:35:30 Test ridotto 0: USDJPY M15 Debug Init() ritorno:
2013.11.15 14:35:30 Test ridotto 0: USDJPY M15 DebugStart: begin: InitialGapFound: True
2013.11.15 14:35:30 Test ridotto 0: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:30 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
2013.11.15 14:35:31 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound
2013.11.15 14:35:32 Test ridotto 1180990: USDJPY M15 DebugStart: inizio: InitialGapFound: True
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 inizio:
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
2013.11.15 14:35:37 Test ridotto 1180990: USDJPY M15 DebugStart: ultimo ritorno in InitialGapFound


Il file di log di MT4 non mostra nulla. Print() non funziona in questo caso quando MT4 si blocca, perché il file di log di MT4 non viene lavato. Ecco perché sto usando la mia funzione di log personale.

vedere anche

WHRoeder2013.11.14 19:27#

Loggare dove/come? NON puoi usare Print/Alert perché stai bloccando il thread della GUI, l'output non verrà scritto.

File di log di MT4:

13:38:00 GA_Pivot Points DE30.Z,M15: inizializzato
13:38:00 $CH_Stochastic Copyright Dec2009 DE30.Z,M15: inizializzato
14:35:05 GA_Daily Range Lines V1.3 _US30,M15: inizializzato
14:35:05 GA_Daily Range Lines V1.3 _US30,M15: uninit reason 1
14:35:05 GA_MTF MAs 1 V1.4 _US30,M15: uninit reason 1
14:35:05 GA_MTF MAs 2 V1.4 _US30,M15: uninit reason 1
14:35:05 GA_Pivot Points _US30,M15: deinizializzato
14:35:05 GA_Pivot Points _US30,M15: uninit reason 1
14:35:05 $CH_Stochastic Copyright Dec2009 _US30,M15: deinizializzato
14:35:05 $CH_Stochastic Copyright Dec2009 _US30,M15: uninit reason 1
14:35:05 GA_Daily Range Lines V1.3 _US30,M15: rimosso
14:35:05 GA_MTF MAs 1 V1.4 _US30,M15: rimosso
14:35:05 GA_MTF MAs 2 V1.4 _US30,M15: rimosso
14:35:05 GA_Pivot Points _US30,M15: rimosso
14:35:05 $CH_Stochastic Copyright Dec2009 _US30,M15: rimosso
14:35:05 GA_MTF MAs 1 V1.4 _US30,M15: uninit reason 1
14:35:05 GA_MTF MAs 2 V1.4 _US30,M15: uninit reason 1
14:35:05 GA_Pivot Points _US30,M15: deinizializzato
14:35:05 GA_Pivot Points _US30,M15: uninit reason 1
14:35:05 $CH_Stochastic Copyright Dec2009 _US30,M15: deinizializzato
14:35:05 $CH_Stochastic Copyright Dec2009 _US30,M15: uninit reason 1
14:35:05 GA_MTF MAs 1 V1.4 _US30,M15: rimosso
14:35:05 GA_MTF MAs 2 V1.4 _US30,M15: rimosso
14:35:05 GA_Pivot Points _US30,M15: rimosso
14:35:05 $CH_Stochastic Copyright Dec2009 _US30,M15: rimosso
14:35:05 GA_MTF MAs 1 V1.4 _EUR50,Daily: uninit reason 1
14:35:05 GA_MTF MAs 2 V1.4 _EUR50,Daily: uninit reason 1
14:35:05 GA_Pivot Points _EUR50,Daily: deinizializzato
14:35:05 GA_Pivot Points _EUR50,Daily: uninit reason 1
14:35:05 $CH_Stochastic Copyright Dec2009 _EUR50,Daily: deinizializzato
14:35:05 $CH_Stochastic Copyright Dec2009 _EUR50,Daily: uninit reason 1
14:35:05 GA_MTF MAs 1 V1.4 _EUR50,Daily: rimosso
14:35:05 GA_MTF MAs 2 V1.4 _EUR50,Daily: rimosso
14:35:05 GA_Pivot Points _EUR50,Daily: rimosso
14:35:05 $CH_Stochastic Copyright Dec2009 _EUR50,Daily: rimosso
14:35:05 GA_MTF MAs 1 V1.4 _DE30,M15: uninit reason 1
14:35:05 GA_MTF MAs 2 V1.4 _DE30,M15: uninit reason 1
14:35:05 GA_Pivot Points _DE30,M15: deinizializzato
14:35:05 GA_Pivot Points _DE30,M15: uninit reason 1
14:35:05 $CH_Stochastic Copyright Dec2009 _DE30,M15: deinizializzato
14:35:05 $CH_Stochastic Copyright Dec2009 _DE30,M15: uninit reason 1
14:35:05 GA_MTF MAs 1 V1.4 _DE30,M15: rimosso
14:35:05 GA_MTF MAs 2 V1.4 _DE30,M15: rimosso
14:35:05 GA_Pivot Points _DE30,M15: rimosso
14:35:05 $CH_Stochastic Copyright Dec2009 _DE30,M15: rimosso
14:35:05 GA_MTF MAs 1 V1.4 DE30.Z,M15: uninit reason 1
14:35:05 GA_MTF MAs 2 V1.4 DE30.Z,M15: uninit reason 1
14:35:05 GA_Pivot Points DE30.Z,M15: deinizializzato
14:35:05 GA_Pivot Points DE30.Z,M15: uninit reason 1
14:35:05 $CH_Stochastic Copyright Dec2009 DE30.Z,M15: deinizializzato
14:35:05 $CH_Stochastic Copyright Dec2009 DE30.Z,M15: uninit reason 1
14:35:05 GA_MTF MAs 1 V1.4 DE30.Z,M15: rimosso
14:35:05 GA_MTF MAs 2 V1.4 DE30.Z,M15: rimosso
14:35:05 GA_Pivot Points DE30.Z,M15: rimosso
14:35:05 $CH_Stochastic Copyright Dec2009 DE30.Z,M15: rimosso

 
mt4forum:

start():

OK è solo #define OK 0

OK

Il file di log di MT4 non mostra nulla. Print() non funziona in questo caso quando MT4 si blocca, perché il file di log di MT4 non viene lavato. Ecco perché sto usando la mia funzione di log.

vedi anche

WHRoeder2013.11.14 19:27#

Registrare dove/come? NON puoi usare Print/Alert perché stai bloccando il thread della GUI, l'output non verrà scritto
Print() funzionerà prima del blocco. ... se si interrompe l'esecuzione degli EA, si clicca sul pulsante EA, il file di log non dovrebbe essere ripulito? Allora si potrebbe vedere l'ultima stampa... oppure si può cambiare in un Comment() e cancellare il commento alla fine di start() con Comment("");
 

Sto eseguendo il programma come indicatore.

Per fermarlo, devo uccidere il processo del terminale MT4.

Ho inserito comment() come hai suggerito.

Il commento non appare sul grafico.

 
         if (TimeLocal() >= LastInitialGapCloseCheck + HistoryDownloadCheckInterval)                                  // zzz
Perché stai chiamando TimeLocal Questo è il tempo della tua macchina (nel tuo TZ,) non il tempo del tuo broker, non il tempo del tester. Prova TimeCurrent() in entrambi i posti.
 

Lo so, lo sto usando solo per controllare quanto tempo è trascorso prima di fare di nuovo qualche controllo.

In questo caso potrei usare qualsiasi funzione di tempo, purché usi sempre la stessa.

Non è questo il problema.

È possibile che io stia in qualche modo distruggendo lo stack delle chiamate di funzione della funzione start()?

 
mt4forum: In questo caso potrei usare qualsiasi funzione temporale, purché usi sempre la stessa. Non è questo il problema.
È un problema se si vuole usare il tester/ottimizzatore.
 
mt4forum:

Sto eseguendo il programma come indicatore.

Stai decelerando il filo dell'interfaccia?
 
RaptorUK:
Stai decelerando il filo dell'interfaccia?

Cosa vuoi dire con questo?

 
mt4forum:

Cosa vuoi dire con questo?

In un indicatore non puoi Sleep() non puoi usare MessageBox() o se il tuo codice impiega molto tempo in un ciclo . . .

"La funzione non può essere chiamata dagli indicatori personalizzati poiché essi vengono eseguiti all'interno del thread dell'interfaccia e non possono decelerarlo ".
 

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?