본문 바로가기
트레이딩/메타트레이더 코딩

메타트레이더 . 코딩 . 시간 . MqlDateTime . 년 월 일 시 분 초 요일

by i.got.it 2023. 5. 4.

 

 

 

메타트레이더 시간 관련 함수 

 

함수 전체 : https://www.mql5.com/en/docs/dateandtime

 

 

 

함수 TimeCurrent 

- 2개 함수형태 제공된다.  반환값 자료형은 모두 datetime , 인자 있는 함수는 MqlDateTime 구조체 형식으로 데이터 받을 수 있어 편리. 

- 최근 수신된 틱의 시각 반환.

- 장 종료 구간에서는 값이 갱신되지 않고 마지막 틱 시각으로 유지된다.

- 시간 기준 :  메타 트레이더 시간  

datetime  TimeCurrent(
   MqlDateTime&  dt_struct      // structure type variable
   );
   
   
datetime  TimeCurrent();

 

 

함수 TimeTradeServer

- 초단위 epoch time. 

- MT5 의 서버 시각을 반환하므로 장종료 구간에서도  호출가능. 

- 서버에 요청하는 방식은 아니고 mt5 실행 중인 PC 시각 기준으로 계산된 메타 서버 시각  

 

 

 

 

구조체 MqlDateTime 

- 년 월 일 시 분 초 요일 정보 각각 확보 편리. 


struct MqlDateTime
  {
   int year;           // Year
   int mon;            // Month
   int day;            // Day
   int hour;           // Hour
   int min;            // Minutes
   int sec;            // Seconds
   int day_of_week;    // Day of week (0-Sunday, 1-Monday, ... ,6-Saturday)
   int day_of_year;    // Day number of the year (January 1st is assigned the number value of zero)
  };

 

 

 

함수 TimeToStruct 

 

dtatetime 자료형의 변수를 인자로 전달하면  MqlDateTime 으로 받음. 


bool  TimeToStruct(
   datetime      dt,            // date and time
   MqlDateTime&  dt_struct      // structure for the adoption of values
   );

 

 

 

당일 시작(0시0분0초) 이후  경과 시간 구하기 

 

void OnTick()
{
    MqlDateTime st_time;
    TimeCurrent(st_time);
    int minute_from_day0 = 60*st_time.hour + st_time.min; // 당일0시이후경과분.
    int sec_from_day0 = 3600*st_time.hour + 60*st_time.min + st_time.sec;//당일0시 이후 경과초.

}

 

 

일 변경 검출 

int ymd_prev = -1;// -1 로 초기화하여 ea 시작초기 OnTick 에서 일변경 점검되게 함. 

void OnTick()
{

    MqlDateTime st_time; 
    TimeCurrent(st_time);
    
    int ymd_cur = st_time.year*10000 + st_time.mon*100 + st_time.day;
    
    // 일 변경 점검. 
    if(ymd_prev != ymd_cur)
    {
        // 일변경시 처리할것들 . 예: 당일 거래 가능시간 확보등. 
        ymd_prev = ymd_cur;
    }

}

 

 

 

함수 TimeGMT() 

- UTC+0 기준의 현재 시각을 초단위로 반환. 

 

 

메타서버의 UTC+0 대비 오프셋  구하는 예 . 

- 메타서버의 시간은 UTC+0 기준이 아니며 UTC+2, UTC+3 등 일광절약시간 대 적용하는 경우가 많다. 

- 현재 메타서버에서 적용중인 시간대가 무엇인지 확인하는 방법. 

 

int server_utc_offset_sec()
{
    return (int)(TimeTradeServer() - TimeGMT());
}

 

메타서버 시간대가 UTC+2 적용중이면   

 

예 

TimeTradeServer() = 1703678400
TimeGMT()         = 1703671200
차이 = +7200 sec  → UTC+2

 

 

메타서버 시간대가 UTC+3 적용중이면 

차이 = +10800 sec → UTC+3

 

 

연관 

 

 

MT5 . 종목별 거래 가능 시간 정보 . SymbolInfoSessionTrade()

MT5 종목별 거래 가능 시간 MT5 에서 심볼 스펙을 보면 거래 가능시간 확인할 수 있다. 골드(XAUUSD+) 거래가능시간을 보면 매일 1시 1분 부터 23시 58분 (토요일은 23시 57분) 임을 확인 할 수 있다. 시간

igotit.tistory.com

 

 

 

메타트레이더 . 시간 .

메타 트레이더 의 시간 표현 기준 메타에서 보이는 시간들 , 예 . 메타에서 FXTM 으로 접속한 경우 보이는 챠트의 시간, Trade 탭에 보이는 Time 등, 메타트레이더 (4 / 5 모두) 에서 표현되는 모든 시간

igotit.tistory.com

 

 

 

메타트레이더 5. 체계정리. 활용법/지식

MetaTrader 5 메타트레이더 5 , 메타에디터, MQL5 활용정보 체계정리. 본 글에서 주요 정리대상 정보 1. 메타트레이더 5 사용법. 2. MQL5 언어 기반 "직접 코딩"하여 메타프레이더5에서 자동매매 달성하기

igotit.tistory.com

 

 

 

메타트레이더 4. 체계정리. 활용법/지식.

MetaTrader 4 메타트레이더 4 활용정보 체계정리. - 글로벌 트레이딩 소프트웨어. - 지속 발전 가능한 안정된 시스템. - 직접 코딩 가능한 MQL4 언어. C 언어 유사 - - MQL4 에서도 클래스 사용가능하므로

igotit.tistory.com

 

 

 

 


첫 등록 : 2023.05.04

최종 수정 : 2025.12.24

단축 주소 : https://igotit.tistory.com/4361


 

댓글



비트코인




            암호화폐/외환/나스닥/골드          
       
현물 |선물 인버스 |선물 USDT , bybit MT5               프랍 트레이딩. MT4,MT5