如何输出数据到文件?

 

DxdCn 老师您好!

请问,我想每隔5分钟就输出某一货币对的卖价到本地电脑指定文件,代码应该如何写?

我用filewrite()搞了很久都完成不了。

期待回复。。。。。

谢谢!

 

应该没问题的:

   

int FileOpen( string filename, int mode, int delimiter=';')

    int FileWrite( int handle, ...)
     ....
    int FileWrite( int handle, ...)
    ....
    int FileWrite( int handle, ...)

void FileClose( int handle)

 

老大能不能说得具体些,小弟C语言是门外汉,编程也是摸着石头过河........能否用一个简单的实例说明?

拜托了。。。。大恩不言谢!

 

filewrite()搞了很久

既然搞了很久,就应该把你搞了很久的代码发来,才好改,网络不是面对面课堂,一般不可能替你写的。

你是不会写文件还是不知道间隔5分钟怎么确定?

帮助中的例子哪个地方没看懂?

  int handle;
  handle=FileOpen("my_data.csv",FILE_CSV|FILE_WRITE,';');
  if(handle<1)
    {
     Print("File my_data.dat not found, the last error is ", GetLastError());
     return(false);
    }
  int handle;
  datetime orderOpen=OrderOpenTime();
  handle=FileOpen("filename", FILE_CSV|FILE_WRITE, ';');
  if(handle>0)
    {
     FileWrite(handle, Close[0], Open[0], High[0], Low[0], TimeToStr(orderOpen));
     FileClose(handle);
    }
int handle=FileOpen("filename.csv", FILE_CSV|FILE_READ|FILE_WRITE, ';');
  if(handle>0)
    {
     FileSeek(handle, 0, SEEK_END);
     //---- add data to the end of file
     FileWrite(handle, data1, data2);
     FileClose(handle);
     handle=0;
    }
 

DxdCn 老师您好!

很感谢您的回复。

以下是我的代码:运行的时候,问题 1、文件不会自动关闭,要退出MT4才可以打开创建的文件。应该如何合法关闭文件?

问题2、程序不能连续按设定的时间间隔读取数据并写入文件。能否帮忙修改?谢谢!

extern double A;
extern double B;


int init()
{
A = MarketInfo("EURUSD",MODE_BID);
B = MarketInfo("USDJPY",MODE_BID);

}

int start()
{

int handle=FileOpen("mydat.csv",FILE_CSV|FILE_WRITE);
if(handle>0)
{
FileWrite(handle, "EURUSD","USDJPY");
} //----创建一个mydat.csv文件

if(TimeSeconds(TimeCurrent())>50)//----每隔一分钟写一次数据
{

FileWrite(handle, A,B);

}
return(0);

}

 

extern double A;
extern double B;

datetime lasttime=NULL;


int init()
{
A = MarketInfo("EURUSD",MODE_BID);
B = MarketInfo("USDJPY",MODE_BID);

}

int start()
{

if ( (lasttime != NULL) && ((Time[0] - lasttime )<60)) return(0);
lasttime = Time[0] ;

int handle=FileOpen("mydat.csv",FILE_CSV|FILE_WRITE);
if(handle>0)
{
FileSeek(handle, 0, SEEK_END);
//---- add data to the end of file
FileWrite(handle, A,B);

FileClose(handle);
handle=0;
}
return(0);

}

 

DxdCn 老师您好!

我试过了,还是不行。它只可以写一次数据,不知道问题出现在哪里了。。。。

......

......

int handle=FileOpen("mydat.csv",FILE_CSV|FILE_WRITE);//----这是不是相当于建立文件?
if(handle>0) //----这里是不是当文件创建成功,就执行条件函数体?
{
FileSeek(handle, 0, SEEK_END);
//---- add data to the end of file
FileWrite(handle, A,B);

FileClose(handle);
handle=0;//----返回0给handle,那依我的理解,它第二次以及以后判断的时候都不会执行条件函数体?
}
return(0);//----这一句语句可否省掉?

}

谢谢!

 

第二次以及以后判断的时候都不会执行条件函数体?
每次都是MT调用Start

改为 int handle=FileOpen("mydat.csv",FILE_CSV|FILE_READ | FILE_WRITE);// 

return(0);//----这一句语句可否省掉?

不能,start声明是 int Start() {...}

 
DxdCn:

第二次以及以后判断的时候都不会执行条件函数体?
每次都是MT调用Start

改为 int handle=FileOpen("mydat.csv",FILE_CSV|FILE_READ | FILE_WRITE);// 

return(0);//----这一句语句可否省掉?

不能,start声明是 int Start() {...}


您好!

输出文件已经基本解决。请问能否将文件的类型改为XLS?如何改才对?

 
用excel打开,另存为 xls文件就行了。excel可以读cvs文件的。
 
wuzuwang:

DxdCn 老师您好!

请问,我想每隔5分钟就输出某一货币对的卖价到本地电脑指定文件,代码应该如何写?

我用filewrite()搞了很久都完成不了。

期待回复。。。。。

谢谢!