FileLoad
FileLoad
指定二进制文件的所有数据读入数值类型或简单结构的传递数组。该函数允许您快速的将已知类型的数据读入相应的数组。
long FileLoad(
const string file_name, // 文件名
void& buffer[], // 数值类型或简单结构的数组
int common_flag=0 // 在<data_folder>\MQL5\Files\ by default中搜索的文件标识
);参数
- file_name
[in] 阅读数据的文件名称。
- buffer
[out] 数值类型或 简单结构数组。
- common_flag=0
[in] 指示操作模式的文件标识。如果没有指定参数,文件将在子文件夹MQL5\Files被搜索(或测试时在<testing_agent_directory>\MQL5\Files)。
返回值
读取的元素数量或错误时为 -1。
注意
FileLoad()从文件读取数组大小几倍的字节数。假设文件大小为10字节,函数将数据读入双精度类型数组(sizeof(double)=8)。在这种情况下,函数只能读入8个字节,在文件结尾剩下的2个字节将被删除,函数FileLoad()将返回1 (1个元素阅读)。
例如:
//+------------------------------------------------------------------+
//| Demo_FileLoad.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 copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
#property script_show_inputs
//--- 输入参数
input int bars_to_save=10; // Number of bars
//+------------------------------------------------------------------+
//| 脚本程序起始函数 |
//+------------------------------------------------------------------+
void OnStart()
{
string filename=_Symbol+"_rates.bin";
MqlRates rates[];
//---
int copied=CopyRates(_Symbol,_Period,0,bars_to_save,rates);
if(copied!=-1)
{
PrintFormat(" CopyRates(%s) copied %d bars",_Symbol,copied);
//--- 报价写入文件
if(!FileSave(filename,rates,FILE_COMMON))
PrintFormat("FileSave() failed, error=%d",GetLastError());
}
else
PrintFormat("Failed CopyRates(%s), error=",_Symbol,GetLastError());
//--- 现在阅读这些返回到文件的报价
ArrayFree(rates);
long count=FileLoad(filename,rates,FILE_COMMON);
if(count!=-1)
{
Print("Time\tOpen\tHigh\tLow\tClose\tTick Voulme\tSpread\tReal Volume");
for(int i=0;i<count;i++)
{
PrintFormat("%s\t%G\t%G\t%G\t%G\t%I64u\t%d\t%I64u",
TimeToString(rates[i].time,TIME_DATE|TIME_SECONDS),
rates[i].open,rates[i].high,rates[i].low,rates[i].close,
rates[i].tick_volume,rates[i].spread,rates[i].real_volume);
}
}
}另见
Structures and Classes,FileReadArray,FileReadStruct, FileSave