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 2016, MetaQuotes Software Corp."

#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 ClassesFileWriteArrayFileWriteStruct, FileLoad, FileWrite