MQL4生成的csv文件,同样的一段代码,MQL4就能读取,MQL5能代开csv,句柄显示都是1了,甚至行数都能读取了,就是读取不了里面的数据,怎么回事,求大神解决。

 

csv 文件内容:

2992.96*2992.9

35964755*EURUSD*0*0.01*0*0**0*1560167721*1.13113

35964754*EURUSD*0*0.01*0*0**0*1560167720*1.13113


MQL5读取文件代码:

===========================

 handle=FileOpen(跟踪主账号+".csv",FILE_CSV|FILE_READ|FILE_SHARE_WRITE|FILE_SHARE_READ,间隔符);

   if(handle>0)//打印出来handle=1的

     {

         account_balance=FileReadString(handle);  //这里无法读取到数值???有没有大神知道是什么原因呀。多少行都能读取正常的 。

     }

===========================

MQL4读取文件代码:

===========================

 handle=FileOpen(跟踪主账号+".csv",FILE_CSV|FILE_READ|FILE_SHARE_WRITE|FILE_SHARE_READ,间隔符);

   if(handle>0)

     {

         account_balance=FileReadString(handle);  //MQL4读取数据就正常的(值为:2992.96),头大呀 。

     }

===========================


 
MQL5自己生成的csv文件读取也是正常的
 
难道是系统有bug???MQL4生成的csv无法被MQL5读取?
 

哈哈  也有人碰到这个问题了...

我也没解决怀疑是bug  wps这种外部生成的csv文件

只有mt4可读

 
要是这样,就难受了
 

你试试写文件与读文件的代码中都加上 FILE_UNICODE

 
Ziheng Zhuang:

你试试写文件与读文件的代码中都加上 FILE_UNICODE

谢谢大神,不过还是不行。我感觉应该是mql5的问题,mql5自己写的csv就能读取到数据。mql4也能读取到MQL5生成的csv。

 

应该是你代码有问题,还是你没有说清楚...

没有读到数据与读的数据不对是两码事。

 

MT4 脚本写数据到COMMON路径,这样MT4与MT5就能借同一个目录以文件的方式通信。

写5行数据: 

//+------------------------------------------------------------------+
//|                                           test_mt4_fileWrite.mq4 |
//|                                           Copyright 2019,fxMeter |
//|                            https://www.mql5.com/en/users/fxmeter |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019,fxMeter"
#property link      "https://www.mql5.com/en/users/fxmeter"
#property version   "1.00"
#property strict
string fileName="test_mt4.csv";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int handle=FileOpen(fileName,FILE_CSV|FILE_UNICODE|FILE_WRITE|FILE_SHARE_READ|FILE_COMMON,",");
   if(handle==-1)return;
   string txt="35964755*EURUSD*0*0.01*0*0**0*1560167721*1.13113";
   for(int i=0;i<5;i++)
     {
      FileWrite(handle,i+":"+txt);
     }
   FileClose(handle);
  }
//+------------------------------------------------------------------+


在MT5中读数据:

//+------------------------------------------------------------------+
//|                                            test_mt5_fileRead.mq5 |
//|                                           Copyright 2019,fxMeter |
//|                            https://www.mql5.com/en/users/fxmeter |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019,fxMeter"
#property link      "https://www.mql5.com/en/users/fxmeter"
#property version   "1.00"

string fileName="test_mt4.csv";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int handle=FileOpen(fileName,FILE_CSV|FILE_UNICODE|FILE_READ|FILE_COMMON,",");
   if(handle==-1)return;
   string txt; //i+":"+"35964755*EURUSD*0*0.01*0*0**0*1560167721*1.13113"
   while(!FileIsEnding(handle))
     {
      txt=FileReadString(handle);
      Print(txt);
     }
   FileClose(handle);
  }
//+------------------------------------------------------------------+
 

在MT4中运行该脚本后,数据文件写入到COMMON路径下。

在MT5中运行读文件脚本,结果如下:

 

COMMON目录是MT4,MT5共享的,其路径一般是这样的

C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal

原因: