Impossibile scrivere su file quando l'ordine è aperto

[Eliminato]  

Ho un EA che scrive su un file di log alcune informazioni, in alcuni punti decide di aprire un ordine e quando questo accade l'EA non scrive più sul file, ottengo solo:

numero intero non valido come parametro 1 per la funzione 'FileWrite'.

Allego uno screen shot: come quando apre l'ordine l'handle del file non cambia ma per qualche motivo non riesce più ad aprire il file. AIUTO!

Errore di registro

 
Avresti dovuto invece allegare i codici pertinenti. Guarda alcuni esempi di file_write nella base di codice. Controlla i motivi del messaggio di errore nelle Documentazioni.
[Eliminato]  

Grazie, il codice funziona bene, crea il file quando l'EA viene caricato, poi ad ogni tick apro il file, metto tonnellate di informazioni nel file e poi lo chiudo. Ma appena apre un ordine non funziona più.

Ho cercato ovunque e non riesco a trovare nessuna informazione sull'errore, non riesco a trovare nessuno che abbia avuto lo stesso problema, non riesco a trovare nessuno con lo stesso errore, alcuni hanno avuto:

"numero intero non valido come parametro 1 per la funzione TimeToNumber ".

Ma non riesco a trovare nulla su:

"numero intero non valido come parametro 1 per la funzione FileWrite ".

 
favosys:

Grazie, il codice funziona bene, crea il file quando l'EA viene caricato, poi ad ogni tick apro il file, metto tonnellate di informazioni nel file e poi lo chiudo. Ma appena apre un ordine non funziona più.

Ho cercato ovunque e non riesco a trovare nessuna informazione sull'errore, non riesco a trovare nessuno che abbia avuto lo stesso problema, non riesco a trovare nessuno con lo stesso errore, alcuni hanno avuto:

"numero intero non valido come parametro 1 per la funzione TimeToNumber ".

Ma non riesco a trovare nulla su:

"numero intero non valido come parametro 1 per la funzione FileWrite ".

Il tuo handle non è valido/non è un int . . . fissa il tuo codice. Forse stai usando una variabile dichiarata localmente con lo stesso nome di una variabile dichiarata globalmente, una è un int e l'altra non è un int. È difficile aiutare senza vedere il tuo codice.
[Eliminato]  

Ecco, questo è il codice della funzione init :

int init()

  {

//----

   File_Name = StringConcatenate(Name_of_file, " - ", Symbol(), " - ", TimeToStr(TimeLocal(),TIME_DATE), " - ", TimeHour(TimeLocal()), ".", TimeMinute(TimeLocal()), ".", TimeSeconds(TimeLocal()), ".txt");

   Handle=FileOpen(File_Name,FILE_CSV|FILE_WRITE,";");//File opening

   if(Handle==-1)                      // File opening fails

     {

      Alert("An error while opening the file. ",// Error message

              "May be the file is busy by the other applictiom");

      PlaySound("Bzrrr.wav");          // Sound accompaniment

      return;                          // Exir start()      

     }

     FileClose( Handle );

//----

   return(0);

  } 

Quindi questo crea solo il file.

Poi nella funzione start apro il file con:

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ|FILE_WRITE,";");//File opening
    //Handle = 1;
    Print("Handle: ", Handle);
   if(Handle==-1)                      // File opening fails
     {
      Alert("An error while opening the file. ",// Error message
              "May be the file is busy by the other applictiom");
      PlaySound("Bzrrr.wav");          // Sound accompaniment
      return;                          // Exir start()      
     }
   FileSeek(Handle, 0, SEEK_END);

E poi scrivo cose nel file come:

Qnt_Symb=FileWrite(Handle,"**** STARTING TICK ", Symbol(), ": ", TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS), " ****");
Qnt_Symb=FileWrite(Handle,"************************************************************"); 

E poi chiudo il file alla fine

Qnt_Symb=FileWrite(Handle,"***************************");      
Qnt_Symb=FileWrite(Handle,"**** END TICK ", Symbol(), " ****");        
FileClose( Handle );
//----
   return(0);

E questo è tutto.

Grazie per il vostro aiuto!

 
favosys:

Ecco, questo è il codice della funzione init:

Quindi questo crea solo il file.

Poi nella funzione start apro il file con:

E poi scrivo cose nel file come:

E poi chiudo il file alla fine

E questo è tutto.

Grazie per il vostro aiuto!

Hai cercato ( Ctrl + F ) Handle nel tuo codice per trovare altre dichiarazioni ? Hai qualche ritorno in start() oltre che alla fine ? Hai guardato il file CSV per vedere se è completo ? se mancano arti potrebbe darti un'idea di cosa viene o non viene eseguito.
 
Handle=FileOpen(File_Name,FILE_CSV|FILE_WRITE,";");//File opening
 Handle=FileOpen(File_Name,FILE_CSV|FILE_READ|FILE_WRITE,";");//File opening
Ultimo argomento non valido - non è un int
[Eliminato]  
RaptorUK:
Hai cercato ( Ctrl + F ) Handle nel tuo codice per trovare altre dichiarazioni ? hai qualche ritorno in start() oltre che alla fine ? hai guardato il file CSV per vedere se è completo ? se mancano gli arti potrebbe darti un'idea di cosa viene o non viene eseguito.


Ciao Raptor UK,

Non ci sono altre decalcazioni di Handle

L'unico altro ritorno è quello che si vede quando si apre il file se Handle è -1

Non sono sicuro di quello che tu uomini se il file è completo. Quando l'ordine si apre l'intera funzione di avvio viene elaborata e lo so perché il file ha le ultime linee, le linee ** END TICKET ** quindi so che è arrivato alla fine e ha chiuso il file.

Cosa intendi per arti mancanti? Scusa, non so cosa siano gli arti.

[Eliminato]  
WHRoeder:
Ultimo argomento non valido - non è un int


Ciao WHRoeder,

Cosa vuoi dire? L'ultimo argomento di FileOpen è

delimitatore - Carattere delimitatore per i file csv. Per impostazione predefinita, si applica il simbolo ';'.

Salute

 
favosys:


Ciao Raptor UK,

Non ci sono altre decalcazioni di Handle

L'unico altro ritorno è quello che si vede quando si apre il file se Handle è -1

Non sono sicuro di quello che tu uomini se il file è completo. Quando l'ordine si apre l'intera funzione di avvio viene elaborata e lo so perché il file ha le ultime linee, le linee ** END TICKET ** quindi so che è arrivato alla fine e ha chiuso il file.

Cosa intendi per arti mancanti? Scusa ma non so cosa sono gli arti?

Scusa, "parti" ... ricevi il messaggio **** END TICK USDCHF **** o finisce prima?
 
favosys:


Ciao WHRoeder,

Cosa vuoi dire? L'ultimo argomento di FileOpen è

delimitatore - Carattere delimitatore per i file csv. Per impostazione predefinita, si applica il simbolo ';'.

Tu hai ";" non ';'. . . il messaggio di errore che hai ricevuto parlava del parametro 1, non è l'handle del file?