본문 바로가기

트레이딩/메타트레이더 코딩   ( 77 )


MQL5 . 연속 시장 암호화폐 주문 불가능 시간 주의 메타 트레이더 시간 0시  주문 위험 상황 예시 바이비트 MT5로  BTCUSDT 같은 연속시장 종목 거래 하는 경우임에도 주문 불가한 시간이 있다.  MT5 에서 구동 중인 EA 에서 주문 송신하였으나,  MT5 저널 부분에 주문 오류 표시된 것(아래 이미지)을 보면 로컬 PC 시각 21시 0분 0.117 초(UTC+0 으로 시각 설정해 둔 컴퓨터임) 시점에 Market closed 사유로 주문 거부된 것을 볼 수 있다. 바이비트 MT5 가 서머타임 적용 기간이어서 UTC+3 인  메타시간으로는 0시0분0.117 초 시점에 주문 낸 것이 거부된 것.     한편, BTCUSDT 종목의 스펙에서 거래가능 시간을 보면 00:00~ 24:00 으로 완전 연속 거래 가능 종목이다.   주문 불가 원인 : 메타.. 2025. 4. 8.
MQL5 . 사용자 정의 지표 만들기 사용자 정의 지표 파일 소스 파일 확장자 . mq5  컴파일 후 빌드된 파일 확장자 : ex5.ex5 파일은 MT5 의 폴더 Indicators 하위 혹은 서브 폴더 (예 : Indicators\igotit) 에 있어야 MT5 에서 지표 활용가능.    사용자 정의 지표 소스코드 필수 구성요소 - 아래 코드에 사용자 정의 지표의 필수 요소만 보이고 있다. - 사용자 지표 만들기 위한 예를 보이기 위하여 캔들의 종가 를 지표로 다루는 초간단 예를 보이고 있다.       이벤트 핸들러 함수 OnCalculate ()앞의 코드에서 필수 작동 방식을 이해하고 있어야 하는 함수가 OnCalculate 이다. 이 함수가 실행되는 시점은 지표가 챠트에 배치되어 첫 실행될 때, 이후 캔들이 신규 갱신될 때, 현재 진.. 2025. 3. 24.
MT5 . 종목별 주문가능 최소수량 메타트레이더  . 종목별 주문가능 최소수량 메타트레이더에서 주문가능 최소수량은 종목별로 다르며 MT5 터미널에서는 심볼 specification 의  Minimal Volume 에서 주문가능 최소수량 확인 가능. 단위: LOT.   바이비트 MT5 의 BTCUSDT 의 Specification 을 보면 Minimal Volume 이 0.01 LOT 으로 되어있다. XRPUSDT , SUIUSDT 는 10LOT , SOLUSDT 는 0.1로 되어있다.   참고 : BTCUSDT 1LOT 의 실제 수량은 Contract Size 를 보면 됨. 위  BTCUSD 인 경우 Contract Size 가 1이므로 1LOT 은 1BTC.  Minimal Volume  0.01 LOT 은 0.01BTC.    주문 가.. 2025. 3. 6.
OnInit, OnDeinit . EA에서 1회만 실행 위한 코드 구조 개요  - 메타트레이더 EA의  필수 이벤트 핸들러 함수인 OnInit, OnDeinit 이 실행되는  시점은 EA 로딩 , 언로딩 시점 외에도 입력 파라미터 변경, 챠트의 타임프레임 변경 시 등에서도 여러 번 실행되기 때문에 EA 실행 이후 1회만 실행되어야 하는 것들 실행 위한 코드 작성법.    아래 코드는 가장 기본적인 OnInit, OnDeinit 함수 형태이다. int OnInit(){ return INIT_SUCCEEDED; }void OnDeinit(const int reason){}   OnInit, OnDeinit 에서 EA 실행 이후 1회만 실행 위한 코드 구조 - 요점 OnDeinit 실행될때마다 인자로 전달되는 OnDeinit 사유를 전역 변수 REASON_USING_IN_O.. 2025. 3. 4.
MQL5 . SQLite 데이터베이스 직접 지원 . 활용 코드예 개요 별도의 dll 이나 추가 설정  없이 MQL5 코드에서 즉시 SQLite 데이터베이스  관련 처리 가능.      MQL5 에서 SQLite DB  활용 코드 예   HTML 삽입미리보기할 수 없는 소스  위 코드로 만들어진 DB 파일을  DB Browser 로 열어본다.            상위정리    메타트레이더 5. 체계정리. 활용법/지식MetaTrader 5  메타트레이더 5 , 메타에디터, MQL5 활용정보 체계정리. 본 글에서 주요 정리대상 정보  1. 메타트레이더 5 사용법.2. MQL5 언어 기반 "직접 코딩"하여 메타프레이더5에서 자동매매 달성igotit.tistory.com   연관   SQLite. 개요. 다운로드. implicit linking 위한 dll, h, lib 파일.. 2024. 10. 26.
MT5 . 주문 체결 에러 . No Prices . TRADE_RETCODE_PRICE_OFF (=10021) No Prices 오류 발생 상황. 보유 포지션 청산하려고 시장가 주문 하였는데 MT5 Journal 리스트를 보면  No prices 사유로 청산되지 못하는 경우 있다.  주문을 체결해줄 호가가 없다는 의미. 청산 주문뿐만 아니라 포지션 오픈 하려는 경우에도 간혹 발생함.    위와 같은 No Prices 상황을 mql5 코드에서 검출하려면  OnTradeTransaction 에서 아래처럼 코드 작성.void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result){ if (result.retcode != TRADE_RETCODE_DONE) { .. 2024. 10. 10.
bybit MT5 통신 속도 확인 . AWS 일본 , 싱가포르 bybit MT5 서버와의  ping 속도  일본 , 싱가포르 AWS 서버에서 확인 .  결론 : AWS 일본 토쿄 zone A 가 훨씬 빠르다.  bybit MT5 서버와 핑 5msec 이내의  고속 통신 가능함.반면 싱가포르 서버는  핑 70msec 정도로 매우 느린편.    AWS Tokyo Zone A         AWS Singapore Zone A     연관    바이비트 . 메타트레이더 5 설치 . FX , 나스닥 , 골드, 오일도 거래가능.개요 - 암호화폐 거래소중 유일하게 메타트레이더 4 지원했던 바이비트에서  메타트레이더 5 서비스로 업그레이드 하였다. 대환영 !!! - 바이비트 메타트레이더 4에서는 암호화폐만 거래 가능igotit.tistory.com     bybit API 서버.. 2024. 10. 9.
MQL5. 외부 프로그램으로 실시간 데이터 송신 . SendMessage, PostMessage, WM_COPYDATA 개요 - 메타트레이더5 . EA 에서 외부 프로그램(=프로세스) 으로  실시간 데이터 송신 가능. - 아래 이미지는 메타트레이더 (바이빗 MT5 )의 종목 챠트에 ea 배치하고 OnTick 시점에 ask, bid 등의  틱 정보를 외부 프로그램으로 실시간 송신 중.    - 아래 코드예는 64비트용으로 제작되었기 때문에 64비트인 메타트레이더5 에서만 정상 동작하며, 32비트인 MT4 에서는 정상 동작 안된다. 또한, 통신 상대방도 64비트 프로그램이어야 정상 통신 가능하다.   SendMessage, PostMessage , FindWindow   HTML 삽입미리보기할 수 없는 소스   생성자: CCy_WindowMessage(string name_wnd_tgt, int msg = WM_USER + .. 2024. 9. 6.
메타트레이더 5 . ONNX 모델 직접 지원 . 메타트레이더 5 . ONNX 모델 직접 지원 .  ONNX 처리 가능한 함수 전체  MQL5 provides the following functions for working with ONNX:FunctionActionOnnxCreateCreate an ONNX session, loading a model from an *.onnx fileOnnxCreateFromBufferCreate an ONNX session, loading a model from a data arrayOnnxReleaseClose an ONNX sessionOnnxRunRun an ONNX modelOnnxGetInputCountGet the number of inputs in an ONNX modelOnnxGetOutputCoun.. 2024. 8. 29.
MQL5 . 메타 시간을 UTC 로 변환하기 . 일광절약 시간제 (DST) 고려 개요 - 메타트레이더 에서의 시각은 UTC 로 통일되어 있지 않고 브로커 마다 다르며 , 통상 UTC + 2, UTC +3 으로 되어있다. 브로커의 서버 위치의 로컬 시라고 설명하고 있으나 꼭 그렇지도 않다. 암튼 난 이 시간을 메타시간이라고 표현한다. - 메타 트레이더 코딩 하는 경우에도 모든 시간들은 메타 시간으로 반환되기 때문에 UTC 가 아니어서 더 헷갈리게 만들고 있으며, 시간 관련 주요 정보 활용하는 코드 작성시 일관성 훼손하는 주범이다. - - 예로 캔들 데이터 구조체인 MqlRate 의 멤버로 time 이 있는데 이 시간 역시 메타시간 이다. 그 외 mql5 의 모든 시간이 메타시간 임. - utc 로 변환하는 함수들은 직접 구현해야 하는데, 단순이 UTC+2 처럼 항.. 2024. 8. 28.
MQL5 . 기본 자료형 바이트 크기 및 표준 자료형 대응표 메타트레이더 5 의 언어 MQL5 에서는 표준 정수형(uint32_t , int64_t ,..) 지원되지 않고 int,  long, ulong, .. 형식만 지원된다. 아래 표에 MQL5 의 기보 자료형의 바이트 사이즈 정리하였고, 해당 자료형에 대응하는 stdint 의 자료형 정리.   MQL5 자료형 바이트 크기sdtint.h  대응 자료형. char1int8_tuchar1uint8_tshort2int16_tushort2uint16_tint4int32_tuint4uint32_tlong8int64_tulong8uint64_tfloat4N/A (C 표준 실수형 float)double8N/A (C 표준 실수형 double)color4N/A (특정형 없음)bool1bool (C 표준 bool)datetime.. 2024. 8. 28.
메타트레이더 . VSCode 에서 MQL Tools 기반 쾌적 코딩 환경 구축 개요 - VSCode 에서 extension  MQL Tools 설치하여, 메타트레이더( MT4 , MT5 )에서 기본 제공되는 코드 작업툴인 메타에디터 보다 훨씬 쾌적, 효율적  코딩 환경 구축 가능.  사전준비 1. 메타트레이더 설치되어있어야 함.  - 본 예에서는 메타트레이더 포터블 설치 된 상황. 개발용 메타트레이더는 포터블 설치 강력 추천. - 메타트레이더 포터블 설치 방법 보기 :  https://igotit.tistory.com/3861  2. VSCode 포터블 설치되어 있어야 함.   - VSCode 포터블 설치 방법 보기 : https://igotit.tistory.com/4313   VSCode 에 MQL Tools 설치 VSCode 실행하여 Extensions (아래 그림의 왼쪽 메.. 2024. 5. 27.
메타트레이더 . 코딩 . OnTimer . 시간격 이벤트 메타트레이더 EA 의 타이머 - 1개의 EA 당 1개의 타이머만 구동 가능. - 타이머 이벤트 핸들러 함수는 EA 파일의 void OnTimer() - 함수 EventSetTimer 호출하면 타이머 시작되어 지정한 시간격 되면 EA 의 void OnTimer() 실행 - 함수 EventKillTimer 호출하면 타이머 중지. 함수 EventSetTimer 인자 : 초단위의 시간 bool EventSetTimer( int seconds // number of seconds ); 상기 함수 호출한 시점 이후 인자에서 지정한 시간이 되면 ea 의 void OnTimer() 실행된다. 함수 EventKillTimer 이 함수 호출된 이후에는 OnTimer 이벤트 발생하지 않음. void EventKillTime.. 2023. 5. 4.
메타트레이더 . 코딩 . 시간 . MqlDateTime . 년 월 일 시 분 초 요일 메타트레이더 시간 관련 함수 함수 전체 : https://www.mql5.com/en/docs/dateandtime 함수 TimeCurrent - 2개 함수형태 제공된다. 반환값 자료형은 모두 datetime , 인자 있는 함수는 MqlDateTime 구조체 형식으로 데이터 받을 수 있어 편리. - 반환 받는 시간은 메타 트레이더 시간 datetime TimeCurrent( MqlDateTime& dt_struct // structure type variable ); datetime TimeCurrent(); 구조체 MqlDateTime - 년 월 일 시 분 초 요일 정보 각각 확보 편리. struct MqlDateTime { int year; // Year int mon; // Month int day.. 2023. 5. 4.
메타트레이더 . 코딩 . 터미널 전역변수 . 멀티스레드 EA 동기화 처리 터미널 전역 변수 . Global Variables of the Client Terminal  - 메타트레이더 에서 실행 중인 2개 이상의 EA에서  동시 접근 가능한 전역변수 .비교 : C/C++ 에서의 일반적인 "전역 변수"의 스코프는 1개의 EA 내부에서만 접근가능한 반면 터미널 전역 변수는 여러 EA 에서 접근 가능.   - 터미널 전역변수 자료형은 double 만 가능.  - 터미널 전역변수는 4주 동안 EA 에서 접근하지 않는 경우 메타트레이더에서 자동 삭제됨.  MQL5 에서 제공되는 터미널 전역 변수 관련 함수 전체 : https://www.mql5.com/en/docs/globals  터미널 전역변수 기본 사용법  전역변수 이름  GV_FreeMargin  으로 하여 이 변수에 값 기록하.. 2023. 4. 30.
메타트레이더 . 코딩 . 여러 EA 구동시 가용마진 확인 방법 . 터미널 전역 변수 활용 개요 - 문제 상황  메타트레이더에서 여러 EA를 동시에 구동하면서 각 EA에서 주문하기 전에 주문 가능한 가용 마진(Free Margin) 확인하면서  주문 실행 해야 하는 경우가 있다. 1개의 EA 만 실행될 때는 코드에서 Free Margin 요청하여 현재 주문 하려는 수량이 주문 접수 가능한지 점검하면 된다.  그러나, 2개 이상의 EA 가 실행되는 경우에는 각각의 EA 에서 서버 측으로 Free Margin 정보 요청하는 방식으로는  필연 오류 발생한다.   Free Margin 값은 주문이 완료되어 포지션 오픈 된 이후에 포지션 오픈 되고 남은 잔량이 표시되기 때문에, 아래와 같은 상황에서는 문제 발생함.  상황예. 2개의 EA 1, 2 에서 주문 송신 전 단계에서 아래처럼 Free Margi.. 2023. 4. 28.
메타트레이더 . 다 종목 매매 전략 백테스팅 MT5 만 가능 개요 메타 트레이더의 1개의 EA 에서 거래 하는 종목이 EA 가 실행되는 챠트의 종목 외에 다른 종목의 틱 데이터 활용하면서 동시 주문 하는 전략을 백테스팅 하려면 메타트레이더 5 에서만 가능하며, MT4 의 Strategy Tester 에서는 시험 불가함. ( MT4 Strategy Tester 가 다종목 지원하지 않는 것이며, MT4 실거래 모드에서는 다종목 매매 가능.) MT5 백테스팅 예 EA 의 틱데이터 처리부에 아래처럼 S&P500 , 나스닥 지수 종목의 틱 데이터를 활용하려고 한다. void OnTick() { MqlTick mql_tick_base; SymbolInfoTick("SPX500_m", mql_tick_base);// S&P500 MqlTick mql_tick_quote; Sy.. 2023. 4. 2.
메타트레이더 . 코딩 . 파일 . 클래스 CCy_File 개요 - 메타트레이더에서 파일 출력하기 읽기 - 클래스 CCy_File 구현예. 파일 관련 함수 MT4 의 파일관련 함수 전체 - https://docs.mql4.com/files/ 파일 기본 경로 FileOpen() 에서 인자 file_name 에 경로 설정하지 않은 겨우, \MQL4\Files 를 기본 경로로 함. 파일 출력하기 FileOpen() 호출하여 받은 핸들로 FileWrite() 호출. 클래스 CCy_File 구현예. - 사전 지식 : 클래스 만들기 방법 - 파일 출력 기능 구현. 실행결과 - 상기 코드 가장 아래 있는 EA 를 메타트레이더의 챠트에 배치하면 1분봉 캔들 이전 100개의 O,H,L,C 가격을 파일에 출력한다(아래그림. 나스닥 - FXTM 에서 심볼명 NQ100_m ). - .. 2023. 3. 31.


비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5