FileWriteInteger

파일 포인터의 현재 위치부터 int 타입 파라미터 값을 바이너리 파일에 씁니다.

파일 포인터의 현재 위치부터 int 타입 파라미터 값을 텍스트로 변환하여 CSV 또는 텍스트 파일에 씁니다.

uint  FileWriteInteger(
   int  file_handle,        // 파일 핸들
   int  value,              // 작성될 값
   int  size=INT_VALUE      // 바이트 단위 사이즈
   );

Parameters

file_handle

[in] FileOpen()에서 반환된 파일 설명자.

value

[in] 정수 값.

size=INT_VALUE

[in] 기록해야 하는 바이트 수(최대 4). 해당 상수가 제공됩니다: CHAR_VALUE=1, SHORT_VALUE=2 및 INT_VALUE=4, 따라서 함수는 char, uchar, short, usshort, int 또는 uint 유형의 정수 값을 쓸 수 있습니다.

반환 값

성공하면 함수는 기록된 바이트 수를 반환합니다. 파일 포인터는 같은 바이트 수만큼 이동합니다.

참고

바이너리 파일에 쓰는 경우 int 타입 파라미터로 FileWrite 함수를 호출하는 것과 같습니다

int int_value;
FileWrite(file_handle,int_value);

예:

//+------------------------------------------------------------------+
//|                                        Demo_FileWriteInteger.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- 스크립트를 시작할 때 입력 매개 변수의 창을 표시합니다.
#property script_show_inputs
//--- 터미널에서 데이터를 수신하기 위한 매개 변수
input string             InpSymbolName="EURUSD";           // 통화
input ENUM_TIMEFRAMES    InpSymbolPeriod=PERIOD_H1;        // 타임프레임
input datetime           InpDateStart=D'2013.01.01 00:00'; // 데이터 복사 시작 날짜
//--- 파일에 데이터를 쓰기 위한 매개 변수
input string             InpFileName="Trend.bin"; // 파일명
input string             InpDirectoryName="Data"; // 디렉토리명
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime date_finish=TimeCurrent();
   double   close_buff[];
   datetime time_buff[];
   int      size;
//--- 에러값 리셋
   ResetLastError();
//--- 매 막대의 종가 복제
   if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1)
     {
      PrintFormat("종가의 값을 복사하지 못했습니다. Error code = %d",GetLastError());
      return;
     }
//--- 매 막대의 시간 복제
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
     {
      PrintFormat("시간 값 복제 실패. Error code = %d",GetLastError());
      return;
     }
//--- 버퍼 사이즈 수령
   size=ArraySize(close_buff);
//--- 값 쓰기를 위해 파일 오픈(파일이 없을 경우 자동으로 생성됨)
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("%s 파일을 쓸 수 있습니다",InpFileName);
      PrintFormat("파일 경로: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- 
      int   up_down=0; // 추세 플래그
      int   arr_size;  // arr 배열 사이즈
      uchar arr[];     // uchar type array
      //--- 파일에 시간 값 작성
      for(int i=0;i<size-1;i++)
        {
         //--- 현재 막대와 다음 막대의 종가를 비교
         if(close_buff[i]<=close_buff[i+1])
           {
            if(up_down!=1)
              {
               //--- FileWriteInteger를 사용하여 파일에 날짜 값 작성
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- 먼저 배열의 심볼 수를 기록합니다
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- 심볼 작성
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- 추세 플래그 변경
               up_down=1;
              }
           }
         else
           {
            if(up_down!=-1)
              {
               //--- FileWriteInteger를 사용하여 파일에 날짜 값 작성
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- 먼저 배열의 심볼 수를 기록합니다
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- 심볼 작성
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- 추세 플래그 변경
               up_down=-1;
              }
           }
        }
      //--- 파일 닫기
      FileClose(file_handle);
      PrintFormat("데이터가 작성됐습니다, %s 파일이 닫힙니다",InpFileName);
     }
   else
      PrintFormat("%s 파일 열기 실패, 에러 코드 = %d",InpFileName,GetLastError());
  }

더 보기

IntegerToString, StringToInteger, Integer types