개요
- 메타트레이더에서 파일 출력하기 읽기
- 클래스 CCy_File 구현예.
파일 관련 함수
MT4 의 파일관련 함수 전체
- https://docs.mql4.com/files/
파일 기본 경로
FileOpen() 에서 인자 file_name 에 경로 설정하지 않은 겨우, \MQL4\Files 를 기본 경로로 함.
파일 출력하기
FileOpen() 호출하여 받은 핸들로 FileWrite() 호출.
클래스 CCy_File 구현예.
- 사전 지식 : 클래스 만들기 방법
- 파일 출력 기능 구현.
//+------------------------------------------------------------------+ | |
//| CCy_File_1.mqh | | |
//| igotit | | |
//| https://igotit.tistory.com | | |
//+------------------------------------------------------------------+ | |
#property copyright "igotit" | |
#property link "https://igotit.tistory.com" | |
#property version "1.00" | |
#property strict | |
class CCy_File_1 | |
{ | |
private: | |
int m_hFileWrite; | |
public: | |
CCy_File_1(); | |
~CCy_File_1(); | |
void File_Open_Write(string _file_name); | |
void File_Close_Write(); | |
void File_Write(string _str_array); | |
}; | |
CCy_File_1::CCy_File_1() | |
: m_hFileWrite(INVALID_HANDLE) | |
{ | |
} | |
CCy_File_1::~CCy_File_1() | |
{ | |
File_Close_Write(); | |
} | |
void CCy_File_1::File_Open_Write(string _file_name) | |
{ | |
m_hFileWrite = FileOpen( | |
_file_name//string file_name, // File name | |
,FILE_WRITE | FILE_CSV //int open_flags, // Combination of flags | |
,','//short delimiter=';', // Delimiter | |
//uint codepage=CP_ACP // Code page | |
); | |
if(INVALID_HANDLE == m_hFileWrite){ | |
Alert("[CCy_File_1::File_Open_Write] Invalid File handle"); | |
} | |
} | |
void CCy_File_1::File_Close_Write() | |
{ | |
if(INVALID_HANDLE != m_hFileWrite){ | |
FileClose(m_hFileWrite); | |
} | |
} | |
void CCy_File_1::File_Write(string _str_array) | |
{ | |
if(INVALID_HANDLE == m_hFileWrite){ | |
Alert("[CCy_File_1::File_Write] Invalid File handle"); | |
return; | |
} | |
FileWrite( | |
m_hFileWrite //int file_handle, // File handle | |
,_str_array //... // List of recorded parameters | |
); | |
} | |
/* | |
Example EA using class CCy_File_1 | |
//+------------------------------------------------------------------+ | |
//| CyEA905_SAPair_1.mq4 | | |
//| igotit | | |
//| https://igotit.tistory.com | | |
//+------------------------------------------------------------------+ | |
#property copyright "igotit" | |
#property link "https://igotit.tistory.com" | |
#property version "1.00" | |
#property strict | |
input string ui_file_name = "my_file_test.txt"; // File Name to Write | |
#include "CySDK_MT4/CCy_File_1.mqh" | |
CCy_File_1 Cy_File; | |
int OnInit() | |
{ | |
Cy_File.File_Open_Write(ui_file_name); | |
string str_write_line; | |
// write Header | |
str_write_line = "Date,Time,O,H,L,C"; | |
Cy_File.File_Write(str_write_line); | |
// write Candle Data | |
MqlRates rates[]; | |
CopyRates(_Symbol, PERIOD_M1,0,100,rates); | |
for(int idx = 0 ; idx < ArraySize(rates) ; idx++) | |
{ | |
str_write_line = ""; | |
str_write_line += TimeToString(rates[idx].time, TIME_DATE); // open time. yyyy.mm.dd | |
str_write_line += ","+TimeToString(rates[idx].time, TIME_MINUTES); //open time. hh:mm | |
str_write_line += ","+DoubleToString(rates[idx].open, _Digits); | |
str_write_line += ","+DoubleToString(rates[idx].high, _Digits); | |
str_write_line += ","+DoubleToString(rates[idx].low, _Digits); | |
str_write_line += ","+DoubleToString(rates[idx].close,_Digits); | |
Cy_File.File_Write(str_write_line); | |
} | |
Alert("Complete Write"); | |
return(INIT_SUCCEEDED); | |
} | |
void OnDeinit(const int reason) | |
{ | |
Cy_File.File_Close_Write(); | |
} | |
void OnTick() | |
{ | |
} | |
*/ |
실행결과
- 상기 코드 가장 아래 있는 EA 를 메타트레이더의 챠트에 배치하면 1분봉 캔들 이전 100개의 O,H,L,C 가격을 파일에 출력한다(아래그림. 나스닥 - FXTM 에서 심볼명 NQ100_m ).
- 엑셀등에서 파일 읽어서 챠팅 활용해도 되고 기타 툴들을 이용하여 데이터 읽어서 필요에 맞게 활용한다.

활용예 . 상기 파일을 구글 스프레드 시트 에서 오픈하여 종가만 챠팅.

파일 저장 활용예
페어트레이딩 . 2개 종목 가격 변화 비교. 비트코인 / 이더리움 / 나스닥 / 다우 / 에센피
PCR 정의. PCR : Price Change Ratio = 캔들의 ( 종가 - 시가 ) / 시가 나스닥, 다우, 에센피 종목 간의 PCR 관계 - 나스닥 : 다우 , 나스닥 : S&P , S&P : 다우 - 아래 결과를 보면 S&P 와 다우 지수간의 선형 비례
igotit.tistory.com
연관
메타트레이더 4. 체계정리. 활용법/지식.
MetaTrader 4 메타트레이더 4 활용정보 체계정리. - 글로벌 트레이딩 소프트웨어. - 지속 발전 가능한 안정된 시스템. - 직접 코딩 가능한 MQL4 언어. C 언어 유사 - - MQL4 에서도 클래스 사용가능하므로
igotit.tistory.com
메타트레이더 5. 체계정리. 활용법/지식
MetaTrader 5 메타트레이더 5 , 메타에디터, MQL5 활용정보 체계정리. 본 글에서 주요 정리대상 정보 1. 메타트레이더 5 사용법. 2. MQL5 언어 기반 "직접 코딩"하여 메타프레이더5에서 자동매매 달성하기
igotit.tistory.com
첫 등록 : 2023.03.31
최종 수정 :
단축 주소 : https://igotit.tistory.com/4303
'트레이딩 > 메타트레이더 코딩' 카테고리의 다른 글
메타트레이더 . 코딩 . 여러 EA 구동시 가용마진 확인 방법 . 터미널 전역 변수 활용 (0) | 2023.04.28 |
---|---|
메타트레이더 . 다 종목 매매 전략 백테스팅 MT5 만 가능 (0) | 2023.04.02 |
메타트레이더 . 코딩 . 거래 수수료 . 클래스 CCy_Commission (0) | 2023.03.22 |
메타트레이더 . 코딩 . input 입력 변수 . (0) | 2023.03.21 |
메타트레이더 . 코딩 . 클래스 만들기 (0) | 2023.03.20 |
댓글