下载MetaTrader 5
要添加评论,请登录注册
在个人资料中进行私人通信。这是安全的!
wuzuwang
57
wuzuwang 2007.10.19 17:59 

DxdCn 老师您好!

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

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

期待回复。。。。。

谢谢!

okwh
1629
okwh 2007.10.20 08:04  

应该没问题的:

   

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

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

void FileClose( int handle)

wuzuwang
57
wuzuwang 2007.10.21 17:02  

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

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

okwh
1629
okwh 2007.10.22 03:49  

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;
    }
wuzuwang
57
wuzuwang 2007.10.22 18:06  

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

}

okwh
1629
okwh 2007.10.23 08:59  

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

}

wuzuwang
57
wuzuwang 2007.10.23 17:31  

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);//----这一句语句可否省掉?

}

谢谢!

okwh
1629
okwh 2007.10.24 16:45  

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

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

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

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

wuzuwang
57
wuzuwang 2007.11.03 06:30  
DxdCn:

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

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

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

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


您好!

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

okwh
1629
okwh 2007.11.05 05:58  
用excel打开,另存为 xls文件就行了。excel可以读cvs文件的。
/
要添加评论,请登录注册