FileSave
FileSave
将传递数组所有元素写入二进制文件作为参数。该函数允许您快速编写数值类型或简单结构的数组为一个字符串。
bool FileSave(
const string file_name, // 文件名
void& buffer[], // 数值类型或简单结构的数组
int common_flag=0 // 文件标识,默认文件写入<data_folder>\MQL5\Files\
);参数
- file_name
[in] 将被写入数据数组的文件名称。
- buffer
[in] 数值类型或 简单结构数组。
- common_flag=0
[in] 指示操作模式的文件标识。如果没有指定参数,文件将被写入子文件夹MQL5\Files(或测试时在<testing_agent_directory>\MQL5\Files)。
返回值
如果失败返回false。
例如:
//+------------------------------------------------------------------+
//| Demo_FileSave.mq5 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
#property script_show_inputs
//--- 输入参数
input int ticks_to_save=1000; // Number of ticks
//+------------------------------------------------------------------+
//| 脚本程序起始函数 |
//+------------------------------------------------------------------+
void OnStart()
{
string filename=_Symbol+"_ticks.bin";
MqlTick ticks[];
u//---
int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,ticks_to_save);
if(copied!=-1)
{
PrintFormat(" CopyTicks(%s) copied %d ticks",_Symbol,copied);
//--- 如果报价历史被同步,错误代码等于零
if(!GetLastError()==0)
PrintFormat("%s: Ticks are not synchronized, error=%d",_Symbol,copied,_LastError);
//--- 报价写入文件
if(!FileSave(filename,ticks,FILE_COMMON))
PrintFormat("FileSave() failed, error=%d",GetLastError());
}
else
PrintFormat("Failed CopyTicks(%s), Error=",_Symbol,GetLastError());
//--- 现在将这些报价读入文件
ArrayFree(ticks);
long count=FileLoad(filename,ticks,FILE_COMMON);
if(count!=-1)
{
Print("Time\tBid\tAsk\tLast\tVolume\tms\tflags");
for(int i=0;i<count;i++)
{
PrintFormat("%s.%03I64u:\t%G\t%G\t%G\t%I64u\t0x%04x",
TimeToString(ticks[i].time,TIME_DATE|TIME_SECONDS),ticks[i].time_msc%1000,
ticks[i].bid,ticks[i].ask,ticks[i].last,ticks[i].volume,ticks[i].flags);
}
}
}另见
Structures and Classes,FileWriteArray,FileWriteStruct, FileLoad, FileWrite