15 MQL4文件操作函数

一组文件运行函数。
三个文件目录(补充指南)放置的地方:

/HISTORY/<current broker> – FileOpenHistory 函数;

/EXPERTS/FILES – 常规状况;

/TESTER/FILES – 专门测试.

来自其他目录的工作文件禁止。

15.1 FileClose(关闭文件)

void FileClose(    int handle)

FileOpen() 函数打开先前已关闭的文件。

参量:

handle      –      用 FileOpen()函数返回句柄。

示例:

int handle=FileOpen(“filename”, FILE_CSV|FILE_READ);

if(handle>0)

{

// 运行文件 …

FileClose(handle);

}

15.2 FileDelete(删除文件)

void FileDelete(    string filename)

删除指定的文件名。获得详细的错误信息, 查看GetLastError()函数。
如果他们是在 terminal_dir\experts\files 目录 (terminal_directory\tester\files, 在测试的情况下)或它的补充指南,只删除单个文件。

int lastError;

FileDelete(“my_table.csv”);

lastError=GetLastError();

if(laseError!=ERR_NOERROR)

{

Print(“错误 (“,lastError,”) 删除文件my_table.csv”);

return(0);

}

参量:

filename      –      目录和文件名 。

示例:

//文件 my_table.csv 将从目录terminal_dir\experts\files directory删除

15.3 FileFlush(刷新文件)

void FileFlush(    int handle)

将缓存中的数据刷新到磁盘上去 。
注解:FileFlush() 函数只有在文件被读或写中显示。
所有关闭的文件会自动从储存缓冲器上删除。所以在调用 FileClose() 函数之前不需要调用 FileFlush() 函数。

参量:

handle      –      用 FileOpen()函数返回的句柄。

示例:

int bars_count=Bars;

int handle=FileOpen(“mydat.csv”,FILE_CSV|FILE_WRITE);

if(handle>0)

{

FileWrite(handle, “#”,”OPEN”,”CLOSE”,”HIGH”,”LOW”);

for(int i=0;i<bars_count;i++)

FileWrite(handle, i+1,Open[i],Close[i],High[i], Low[i]);

FileFlush(handle);


for(int i=0;i<bars_count;i++)

FileWrite(handle, i+1,Open[i],Close[i],High[i], Low[i]);

FileClose(handle);

}

15.4 FileIsEnding(是否文件结尾)

bool FileIsEnding(    int handle)

如果文件指针是在文件的末端,返回逻辑配齐, 否则返回 false。 获得详细的错误信息, 查看 GetLastError() 函数。 如果文件末端在只读期间到达, GetLastError() 函数将返回 错误
ERR_END_OF_FILE (4099)

参量:

handle      –      用 FileOpen()函数返回的句柄。

示例:

if(FileIsEnding(h1))

{

FileClose(h1);

return(false);

}

15.5 FileIsLineEnding(是否行结尾)

bool FileIsLineEnding(    int handle)

如果CSV文件指针是在文件的末端,返回逻辑配齐, 否则返回false. 获得详细的错误信息, 查看 GetLastError() 函数。

参量:

handle      –      用 FileOpen()函数返回的句柄。

示例:

if(FileIsLineEnding(h1))

{

FileClose(h1);

return(false);

}

15.6 FileOpen(打开文件)

int FileOpen(    string filename, int mode, void delimiter)

为输入或输出信息打开文件。如果函数失败,返回打开文件或-1 。获得详细的错误信息, 查看GetLastError() 函数。
注解: 文件可能只在terminal_directory\experts\files 文件夹(terminal_directory\tester\files 或在它的子文件夹内被打开。
FILE_BIN和 FILE_CSV 格式不能同时使用。
如果FILE_WRITE 与FILE_READ 不结合, 被打开的文件长度为零。如果还有一些包含数据的文件, 它们将被删除 。如果需要对现存文件添加数据, 必须使用FILE_READ 和 FILE_WRITE文件组合打开 。
如果FILE_READ 与FILE_WRITE 不结合, 仅仅会打开现存文件。如果文件不存在, 可以使用FILE_WRITE 创建。
在一个板块内最多能够同时执行32个文件。

参量:

filename      –      文件名称

mode      –      打开模式。可以是以下的一种或是组合: FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITE。

delimiter      –      csv 文件的限定。默认值为’;’ 符号。

示例:

int handle;

handle=FileOpen(“my_data.csv”,FILE_CSV|FILE_READ,’;’);

if(handle<1)

{

Print(“未找到 my_data.dat 文件,错误”, GetLastError());

return(false);

}

15.7 FileOpenHistory(文件打开历史)

int FileOpenHistory(    string filename, int mode, void delimiter)

在当前的历史目录(terminal_directory\history\server_name)或在它的子文件内打开文件 。如果函数失败, 返回文件描述部分或-1 。获得详细的错误信息, 查看GetLastError()函数。
注解: 客户终端可能连接到不同经纪公司的服务器。每个经纪公司的历史数据(HST 文件)会存储在terminal_directory\history 相对应的子文件夹内。
文件在脱机时同样可以打开,不会有数据进入。

参量:

filename      –      文件名称

mode      –      打开模式。可以是以下的一种或是组合: FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITE。

delimiter      –      csv 文件的限定。默认值为’;’ 符号。

示例:

int handle=FileOpenHistory(“USDX240.HST”,FILE_BIN|FILE_WRITE);

if(handle<1)

{

Print(“不能创建 USDX240.HST文件”);

return(false);

}

// 运行文件

// …

FileClose(handle);

15.8 FileReadArray(读取文件到数组)

int FileReadArray(    int handle, void array[], int start, int count)

将二进制文件读取到数组中,返回读取的条数。
获得详细的错误信息, 查看GetLastError()函数。

参量:

handle      –      用 FileOpen()函数返回的句柄。

array[]      –      写入的数组。

start      –      在数组中存储的开始点。

count      –      读取多少个对象 。

示例:

int handle;

double varray[10];

handle=FileOpen(“filename.dat”, FILE_BIN|FILE_READ);

if(handle>0)

{

FileReadArray(handle, varray, 0, 10);

FileClose(handle);

}

double FileReadDouble(    int handle, void size)

15.9 FileReadDouble(读取浮点数)

从文件中读取浮点型数据,数字可以是8byte的double型或者是4byte的float型。
获得错误信息,请查看GetLastError() 函数。

参量:

handle      –      用 FileOpen()函数返回的句柄。

size      –      数字格式大小,DOUBLE_VALUE(8 bytes) 或者 FLOAT_VALUE(4 bytes)。

示例:

int handle;

double value;

handle=FileOpen(“mydata.dat”,FILE_BIN);

if(handle>0)

{

value=FileReadDouble(handle,DOUBLE_VALUE);

FileClose(handle);

}

15.10 FileReadInteger(读取整型数)

int FileReadInteger(    int handle, void size)

函数从当前二进制文件读取整形型数据,数字可以是1,2,4byte的长度 。如果格式大小不被指定, 系统设法读4 字节的值。获得详细的错误信息, 请查看GetLastError() 函数。

参量:

handle      –      用 FileOpen()函数返回的句柄。

size      –      数字格式大小,CHAR_VALUE(1 byte), SHORT_VALUE(2 bytes) 或者 LONG_VALUE(4 bytes)。

示例:

int handle;

int value;

handle=FileOpen(“mydata.dat”, FILE_BIN|FILE_READ);

if(handle>0)

{

value=FileReadInteger(h1,2);

FileClose(handle);

}

15.11 FileReadNumber(读取数量)

double FileReadNumber(    int handle)

从当前文件位置在符号之前读取数字。只能为CSV 文件。
获得详细的错误信息, 查看GetLastError()函数。

参量:

handle      –      用 FileOpen()函数返回的句柄。

示例:

int handle;

int value;

handle=FileOpen(“filename.csv”, FILE_CSV, ‘;’);

if(handle>0)

{

value=FileReadNumber(handle);

FileClose(handle);

}

15.12 FileReadString(读取字符串)

string FileReadString(    int handle, void length)

函数从当前文件位置读取字串符。适用于CSV 和二进制文件。在文本文件中字串符在符号之前被读取。对于二进制文件, 被测量的计数将读取字串符。获得详细的错误信息, 查看GetLastError()函数。

参量:

handle      –      用FileOpen()返回的句柄。

length      –      读取字符串长度 。

示例:

int handle;

string str;

handle=FileOpen(“filename.csv”, FILE_CSV|FILE_READ);

if(handle>0)

{

str=FileReadString(handle);

FileClose(handle);

}

15.13 FileSeek(文件指针移动)

bool FileSeek(    int handle, int offset, int origin)

在字节上函数移动文件指针是垂距的,从开始的一个新的位置指向末端或者当前文件位置。 接下来读取或写入放置在一个新位置。
如果文件指针成功地被移动了,函数返回 TRUEe, 否则,它返回 FALSE. 获得详细的错误信息,查看 GetLastError() 函数。

参量:

handle      –      用 FileOpen()函数返回的句柄。

offset      –      设置的原点。

origin      –      最初的位置。 值可以是以下任意常数:
SEEK_CUR – 当前位置,
SEEK_SET – 开始位置
SEEK_END – 结束位置。

示例:

int handle=FileOpen(“filename.csv”, FILE_CSV|FILE_READ|FILE_WRITE, ‘;’);

if(handle>0)

{

FileSeek(handle, 0, SEEK_END);

//—-在文件末端添加数据

FileWrite(handle, data1, data2);

FileClose(handle);

handle=0;

}

15.14 FileSize(文件大小)

int FileSize(    int handle)

函数返回文件大小字节。获得详细的错误信息,查看GetLastError() 函数。

参量:

handle      –      用 FileOpen()函数返回的句柄。

示例:

int handle;

int size;

handle=FileOpen(“my_table.dat”, FILE_BIN|FILE_READ);

if(handle>0)

{

size=FileSize(handle);

Print(“my_table.dat 大小为 “, 大小 ” bytes”);

FileClose(handle);

}

15.15 FileTell(文件指针位置)

int FileTell(    int handle)

返回文件指针的当前位置。获得详细的错误信息,查看GetLastError() 函数。

参量:

handle      –      用 FileOpen()函数返回的句柄。

示例:

int handle;


int pos;

handle=FileOpen(“my_table.dat”, FILE_BIN|FILE_READ);

// 读取数据

pos=FileTell(handle);

Print(“current position is “, pos);

15.16 FileWrite(写入文件)

int FileWrite(    int handle, …)

该函数的目的是便于书写的数据转换为CSV格式文件,自动插入限定符。在写入文件后,每行的尾端将会添加”\r\n” 符号。数字将会被转变成文本(查看Print() 函数)。
如果生成错误,返回书写字或负值的计数。
获得详细的错误信息,查看GetLastError() 函数。

参量:

handle      –      用 FileOpen()函数返回的句柄。

…      –      写入的数据,由逗号分离。 它可以是63个参量。当他们作为整数时,int数据和双重类型自动地被转换成串,但不自动转换颜色、日期-时间和bool typesare和写出的文件。数组无法作为参量鼯td>

示例:

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

}

15.17 FileWriteArray(写入数组)

int FileWriteArray(    int handle, void& array[], int start, int count)

函数给一个二进制文件写入数组。一些int、bool、日期-时间和颜色类型书面元素作为4字节整数。 一些双重类型书面元素,作为8字节浮动小数点数字。一些字串符类型将自动地在每串末尾添加符号 “\r\n” 。
如果错误生成,返回书写字或负值的计数。 获得详细的错误信息,查看 GetLastError()函数。

参量:

handle      –      用 FileOpen()函数返回的句柄。

array[]      –      写数组。

start      –      在数组内(第一个书面元素数字)开始索引。

count      –      书写字的计数。

示例:

int handle;

double BarOpenValues[10];

// 复制前十个柱到数组

for(int i=0;i<10; i++)

BarOpenValues[i]=Open[i];

// 写入数组到文件

handle=FileOpen(“mydata.dat”, FILE_BIN|FILE_WRITE);

if(handle>0)

{

FileWriteArray(handle, BarOpenValues, 3, 7); // 写入最后7个元素

FileClose(handle);

}

15.18 FileWriteDouble(写入浮点数)

int FileWriteDouble(    int handle, double value, void size)

函数给一个二进制文件以浮动小数点写入双重值。 如果格式指定为FLOAT_VALUE,值将作为4字节浮动小数点数字写入 (的浮游物类型)。否则,它以8字节浮动小数点格式将被写入(双重类型)。
如果错误生成,返回实际上书面字节数或负值。
获得详细的错误信息, 查看 GetLastError() 函数。

参量:

handle      –      用 FileOpen()函数返回的句柄。

value      –      双精度值。

size      –      选择格式。可以是以下的任意值:DOUBLE_VALUE (8 字节,默认值),
FLOAT_VALUE (4 字节)。

示例:

int handle;


double var1=0.345;

handle=FileOpen(“mydata.dat”, FILE_BIN|FILE_WRITE);

if(handle<1)

{

Print(“不能打开错误文件-“,GetLastError());

return(0);

}

FileWriteDouble(h1, var1, DOUBLE_VALUE);

//…

FileClose(handle);

15.19 FileWriteInteger(写入整型数)

int FileWriteInteger(    int handle, int value, void size)

函数给一个二进制文件写入整数值。 如果大小是SHORT_VALUE,值将作为2字节整数(短的类型)被写入。 如果大小是CHAR_VALUE,值将作为1字节整数(炭灰类型)写入,并且,如果大小是LONG_VALUE, 值将作为4字节整数(长的int类型)写入。
如果错误生成,返回实际上书面字节数或负值。
获得详细的错误信息, 查看 GetLastError() 函数。

参量:

handle      –      用 FileOpen()函数返回的句柄。

value      –      写入值

size      –      选择格式。可以是以下任意值:CHAR_VALUE (1 字节),SHORT_VALUE (2 字节),LONG_VALUE (4 字节,默认值)。

示例:

int handle;

int value=10;

handle=FileOpen(“filename.dat”, FILE_BIN|FILE_WRITE);

if(handle<1)

{

Print(“不能打开错误文件-“,GetLastError());

return(0);

}

FileWriteInteger(handle, value, SHORT_VALUE);

//…

FileClose(handle);

15.20 FileWriteString(写入字符串)

int FileWriteString(    int handle, string value, int length)

从当前文件位置函数写入一个二进制文件字串符。
如果错误生成,返回实际上书面字节数或负值。
获得详细的错误信息,查看GetLastError() 函数。

参量:

handle      –      用 FileOpen()函数返回的句柄。

value      –      写入字串符。

length      –      写的字串符的长度。如果字串符长度超出被测量的值,它将被削减。 如果它较短,它将由二进制0s延伸由特定长度决定。

示例:

int handle;

string str=”some string”;

handle=FileOpen(“filename.bin”, FILE_BIN|FILE_WRITE);

if(handle<1)

{

Print(“不能打开错误文件-“,GetLastError());

return(0);

}

FileWriteString(h1, str, 8);

FileClose(handle);