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

메타트레이더 . 코딩 . 여러 EA 구동시 가용마진 확인 방법 . 터미널 전역 변수 활용

by i.got.it 2023. 4. 28.

 

 

개요 - 문제 상황  

메타트레이더에서 여러 EA를 동시에 구동하면서 각 EA에서 주문하기 전에 주문 가능한 가용 마진(Free Margin) 확인하면서  주문 실행 해야 하는 경우가 있다. 

1개의 EA 만 실행될 때는 코드에서 Free Margin 요청하여 현재 주문 하려는 수량이 주문 접수 가능한지 점검가능하면 된다. 

 

그러나, 2개 이상의 EA 가 실행되는 경우에는 각각의 EA 에서 서버 측으로 Free Margin 정보 요청하는 방식으로는  필연 오류 발생한다.   Free Margin 값은 주문이 완료되어 포지션 오픈 된 이후에 포지션 오픈 되고 남은 잔량이 표시되기 때문에, 아래와 같은 상황에서는 문제 발생함. 

 

상황예. 

2개의 EA 1, 2 에서 주문 송신 전 단계에서 아래처럼 Free Margin 확인하였고,  

EA 1 에서 Free Margin 확인하고 EA 1 에서의 주문 실행 가능하다고 판단하였고,  

EA 2 에서도 Free Margin 확인하고 주문 위한 마진 있음 확인하고 주문 실행 가능하다고 판단,  

 

위 상황에서 EA1 이 먼저 주문 송신하여 Free Margin 을  사용해 버려  , EA 2에서 주문 송신한 경우 Free Margin 부족으로 주문 거부되는 상황이 발생할 수 있다. EA 2에서 종목 1개만 매매하는 경우에는 큰 문제 일으키지 않지만 동시 2개 이상 종목 동시 체결되어야 하는 상황이라면 2개 종목 중 1개만 포지션 오픈 된다든지 하는 오류 발생한다. 

 

 

 

해결책 - 터미널 전역변수 활용  

메타트레이더 함수로 확보가능한  Free Margin 요청 한 정보 만으로는 상기 문제점을 해결 하지 못한다. 

 

여러 EA 들에서 공유 가능한  "터미널 전역변수" 활용하여 별도로 관리되는 Free Margin 변수가 필요하다. 

 

아래처럼 코드 로직 구현되어야 한다.  

 

터미널 전역변수 변수명을 GV_FreeMargin 이라고 하자.

 

GV_FreeMargin 변수에는 EA 1에서 주문하기 전에 현재 Free Margin에서 자신이 사용하게 될 마진을 차감한 금액을 주문 송신전 먼저 기록해 둔다.  이렇게 미리 기록해 두면 EA1 이 주문 송신하기 전이라도  다른 EA 2에서 주문 전에  GV_FreeMargin을 확인하여 마진잔고 부족하면 자신의 주문은 실행하지 않도록 한다.  마진 잔고 남아있다면 EA 2도 자신이 포지션 오픈에 사용하게 될 마진 차감한 것을  GV_FreeMargin에 갱신해 두고 이후 주문 실행한다. 

 

 

mql5 에서 터미널 전역변수 관련 함수 전체 : https://www.mql5.com/en/docs/globals

 

 

 

참고. 

메타트레이더에서 터미널 전역변수는 메뉴 : Tools -> Global Variables 에서 현재 어떤 값이 기록되어 있는지 확인가능하다. 

 

위 메뉴에서 Global Variables 클릭하면 아래처럼 현재 메타트레이더에서 생성되어있는 Global Variables를 모두 볼 수 있다. 

 

 

 

연관 

 

 

 

 

메타트레이더 . 코딩 . 터미널 전역변수 . 멀티스레드 EA 동기화 처리

터미널 전역 변수 . Global Variables of the Client Terminal - 메타트레이더 의 2개 이상의 EA에서 동시 접근 가능한 전역변수 . 비교 : C/C++ 에서의 일반적인 "전역 변수"의 스코프는 1개의 EA 내부에서만 접

igotit.tistory.com

 

 

 

메타트레이더 . 용어 이해 . 마진 (증거금) 계산식. 레버리지

메타트레이더 - Reverage(레버리지) 개념 , 용어 정의 이해. - 용어 : Balance (잔고), Equity(평가금) , Margin(마진), Free Margin(가용마진), Margin Level(마진레벨) 메타트레이더 매매창의 Toolbox -> Trade 에서 아래

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.04.28

최종 수정 : 

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


 

댓글



 

비트코인




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