当订单打开时,无法写入文件

 

我有一个EA,它向日志文件写一些信息,在某些时候,它决定打开一个订单,当这种情况发生时,EA不再向文件写入,我只是得到。

无效的整数作为'FileWrite'函数 的参数1

我附上一张屏幕截图:fo当它打开订单时,文件手柄没有变化,但由于某些原因,它不能再打开文件了。

日志错误

 
你应该附上相关的代码来代替。看看代码库中的一些file_write 例子。检查文档中的错误信息的原因。
 

谢谢你,代码工作得很好,它在EA加载时创建了文件,然后在每个tick 上打开文件,在文件中放入大量信息,然后关闭它。但是一旦它打开一个订单,就不再工作了。

我到处搜索,我找不到关于这个错误的任何信息,我找不到有同样问题的人,我找不到有同样错误的人,有些人有过。

"无效的整数作为TimeToNumber函数的参数1"

但我找不到任何关于

"FileWritefunction的参数1是无效 的整数"

 
favosys:

谢谢你,代码工作得很好,它在EA加载时创建了文件,然后在每个tick上打开文件,在文件中放入大量信息,然后关闭它。但是一旦它打开一个订单,就不再工作了。

我到处搜索,我找不到关于这个错误的任何信息,我找不到有同样问题的人,我找不到有同样错误的人,有些人有过。

"无效的整数作为TimeToNumber函数的参数1"

但我找不到任何关于

"FileWritefunction的参数1是无效 的整数"

你的句柄是无效的/不是int . .修正你的代码。 也许你正在使用一个本地声明的变量与一个全局声明的变量同名,一个是int,另一个不是int。 如果不看你的代码,就很难提供帮助。
 

这就是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:

这就是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,那不是文件柄吗?
原因: