Impossibile scrivere su file quando l'ordine è aperto

 

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.
 

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.
 

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
 
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.

 
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?
Motivazione: