FileLoad

지정된 이진 파일의 모든 데이터를 전달된 일련의 숫자 유형 또는 단순 구조로 읽습니다. 이 함수를 사용하여 알려진 유형의 데이터를 적절한 배열로 빠르게 읽을 수 있습니다.

long  FileLoad(
   const string  file_name,         // 파일명
   void&         buffer[],          // 숫자 유형 또는 단순 구조 배열
   int           common_flag=0      // 파일 플래그는 기본적으로 <data_folder>\MQL5\Files\ 에서 검색됩니다
   );

Parameters

file_name

[in]  데이터를 읽을 파일의 이름.

buffer

[out]  숫자 유형 또는 단순 구조 배열.

common_flag=0

[in]  작업 모드를 나타내는 파일 플래그. 매개 변수를 지정하지 않으면 하위폴더 MQL5\Files (또는 테스트의 경우 <testing_agent_directory>\MQL5\Files)에서 파일이 검색됩니다.

반환 값

읽은 요소의 수 또는 오류 발생 시 -1.

참고

FileLoad() 함수는 파일에서 배열 요소 크기의 배수인 바이트 수를 읽습니다. 파일 크기가 10바이트이고 함수가 데이터를 double (sizeof(double)=8) 타입의 배열로 읽는다고 가정해봅시다. 이 경우 함수는 8바이트만 읽고 파일 끝에 있는 나머지 2바이트는 삭제되며 FileLoad() 함수는 1(1 요소 읽기)을 반환합니다.

예:

//+------------------------------------------------------------------+
//|                                                Demo_FileLoad.mq5 |
//|                         Copyright 2000-2024, MetaQuotes Ltd. |
//|                                             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; // 막대의 수
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                    |
//+------------------------------------------------------------------+
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() 실패, 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