Невозможно записать в файл, когда ордер открыт

 

У меня есть советник, который пишет в файл журнала некоторую информацию, в некоторые моменты он решает открыть ордер, и когда это происходит, советник больше не пишет в файл, я просто получаю:

invalid integer number as parameter 1 for 'FileWrite' function

Прилагаю снимок экрана: видно, как при открытии ордера хэндл файла не меняется, но по какой-то причине он больше не может открыть файл. HELP!!!

Ошибка журнала

 
Вам следовало бы прикрепить соответствующие коды. Посмотрите примеры file_write в кодовой базе. Проверьте причины сообщения об ошибке в Документации.
 

Спасибо, код работает отлично, он создает файл, когда советник загружен, затем на каждом тике я открываю файл, помещаю в него кучу информации и затем закрываю его. Но как только он открывает ордер, он больше не работает.

Я искал это везде и не могу найти никакой информации об ошибке, я не могу найти никого, у кого была такая же проблема, я не могу найти никого с такой же ошибкой, у некоторых людей было:

"недопустимое целое число в качестве параметра 1 для функции TimeToNumber ".

Но я не могу найти ничего о:

"invalid integer number as parameter 1 for FileWritefunction ".

 
favosys:

Спасибо, код работает нормально, он создает файл, когда советник загружен, затем на каждом тике я открываю файл, помещаю в него кучу информации и затем закрываю его. Но как только он открывает ордер, он больше не работает.

Я искал это везде и не могу найти никакой информации об ошибке, я не могу найти никого, у кого была такая же проблема, я не могу найти никого с такой же ошибкой, у некоторых людей было:

"недопустимое целое число в качестве параметра 1 для функции TimeToNumber ".

Но я не могу найти ничего о:

"invalid integer number as parameter 1 for FileWritefunction ".

Ваш дескриптор недействителен/не является int. ... исправьте свой код. Возможно, вы используете локально объявленную переменную с тем же именем, что и глобально объявленная переменная, одна из которых int, а другая не int. Трудно помочь, не видя вашего кода.
 

SUre, это код для функции 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);

  } 

Так что это просто создает файл.

Затем в функции start я открываю файл:

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);

И затем я пишу в файл, например:

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

И затем я закрываю файл в конце.

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

И это все.

Спасибо за помощь!

 
favosys:

SUre, это код для функции init:

Так что это просто создает файл.

Затем в функции start я открываю файл:

И затем я пишу в файл, например:

И затем я закрываю файл в конце.

И это все.

Спасибо за помощь!

Вы искали ( Ctrl + F ) Handle в коде, чтобы найти другие объявления? Есть ли у вас возвраты в start(), кроме как в конце? Вы посмотрели CSV-файл, чтобы увидеть, является ли он полным? Если искусства отсутствуют, это может дать вам некоторое представление о том, что выполняется или не выполняется.
 
Handle=FileOpen(File_Name,FILE_CSV|FILE_WRITE,";");//File opening
 Handle=FileOpen(File_Name,FILE_CSV|FILE_READ|FILE_WRITE,";");//File opening
Неверный последний аргумент - не int
 
RaptorUK:
Вы искали ( Ctrl + F ) Handle в вашем коде, чтобы найти другие объявления? Есть ли у вас возвраты в start(), кроме как в конце? Вы посмотрели CSV файл, чтобы увидеть, является ли он полным? Если искусства отсутствуют, это может дать вам некоторое представление о том, что выполняется или не выполняется.


Здравствуйте, Raptor UK,

Нет никаких других расшифровок Handle

Единственный другой возврат - это тот, который вы видите при открытии файла, если Handle равен -1

Не совсем понятно, что вы делаете, если файл завершен. Когда открывается ордер, обрабатывается вся функция запуска, и я знаю, потому что в файле есть последние строки, строки ** END TICKET **, поэтому я знаю, что он дошел до конца и закрыл файл.

Что значит "искусства отсутствуют"? Извините, я не знаю, что такое искусство?

 
WHRoeder:
Неверный последний аргумент - не int


Привет WHRoeder,

Что вы имеете в виду? Последним аргументом FileOpen является

разделитель - Символ-разделитель для файлов csv. По умолчанию используется символ ';'.

Спасибо

 
favosys:


Здравствуйте, Raptor UK,

Нет никаких других расшифровок Handle

Единственный другой возврат - это тот, который вы видите при открытии файла, если Handle равен -1

Не совсем понятно, что вы делаете, если файл завершен. Когда открывается ордер, обрабатывается вся функция запуска, и я знаю, потому что в файле есть последние строки, строки ** END TICKET **, поэтому я знаю, что он дошел до конца и закрыл файл.

Что значит "искусства отсутствуют"? Извините, я не знаю, что такое искусство?

Извините, "части" ... вы получаете сообщение **** END TICK USDCHF **** ? или он заканчивается до этого?
 
favosys:


Здравствуйте, WHRoeder,

Что вы имеете в виду? Последним аргументом FileOpen является

разделитель - Символ-разделитель для файлов csv. По умолчанию используется символ ';'.

У вас ";", а не ';'... В полученном сообщении об ошибке говорилось о параметре 1, разве это не дескриптор файла?
Причина обращения: