//+------------------------------------------------------------------+
//|                                                  ArrayToFile.mq4 |
//|                                                      nicholishen |
//|                                   www.reddit.com/u/nicholishenFX |
//+------------------------------------------------------------------+
#property copyright "nicholishen"
#property link      "www.reddit.com/u/nicholishenFX"
#property version   "1.00"
#property strict

#include <Arrays\ArrayDouble.mqh>
#include <Files\FileBin.mqh>

class MyArray : public CArrayDouble
{
   public: void CopyArray(double &arr[])
   {
      ArrayResize(arr,Total());
      for(int i=0;i<Total();i++)
         arr[i] = this[i];
   }
};

void OnStart()
{
   CFileBin       file;
   MyArray        arr;
   double         any_data[];
   int            handle;
   string         file_name = "my_array.bin";
   
   CopyClose(Symbol(),Period(),0,10,any_data);
   
   //--- write array to file
   arr.AssignArray(any_data);
   handle = file.Open(file_name,FILE_WRITE);
   arr.Save(handle);
   file.Close();
   
   //!--- OH NO! We lost data!
   arr.Clear();
   ArrayFree(any_data);
   //---
   
   //---Read array from file and copy back to C style array[]
   handle = file.Open(file_name,FILE_READ);
   arr.Load(handle);
   file.Close();
   arr.CopyArray(any_data); 
   
   for(int i=0;i<ArraySize(any_data);i++)
      Print("From file to Array [",i,"]= ",any_data[i]);
   
}
//+------------------------------------------------------------------+
