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

메타트레이더 . 코딩 . 거래 수수료 . 클래스 CCy_Commission

by i.got.it 2023. 3. 22.

 

 

개요

 

메타트레이더에  연결된 계좌에 따라 수수료 계산 방식이 다르다.   BYBIT 과 FXTM 의 거래 수수료 계산 방식 상세 .  에서 정리했듯이 BYBIT 의 경우 진입, 청산 각각 개별적으로 거래수수료가 계산되고  FXTM MT4 계좌에서는 진입시에 1회 거래수수료가 모두 부과되는  방식이다. 

 

EA 매매로직 코드 에서 거래 수수료 관련 정보를 이용하려는 경우 수수료 계산 방식이 다른 것을 고려하여 코드 작성해야 한다.   

 

메타트레이더 코드 내에서 거래수수료 정보 고려한 로직을 만들려면 입력변수로 거래수수료 비율 등을 사용자가 입력 가능하게 해야 한다.  (심볼의 Specification 으로 수수료 정보는 제공안됨.) 

 

본 글에서는 메타트레이더 코드에서 거래수수료 활용하기 위한 코드 작성 예 정리한다. 

 

 

enum 정의 

- 수수료 계산방식이 다른 것을 식별하고 핸들링 하기 위한 enum 변수를 아래 처럼 정의하자. 

 



enum CyENUM_COMMISSION_TYPE
{
   em_CommissionType_OpenOnly // Open Only. ex FXTM
   ,em_CommissionType_OpenCloseEach // Open Close Each. ex BYBIT 

};

 

 

EA 입력변수 

입력변수 로 수수료 비율 과 타입 을 사용자가 입력 가능하게 한것. 

기본 값은 FXTM 의 거래수수료 비율과 타입으로 해뒀다. 


input string ui_grp_2 = ""; // Parameter Group Commission
input double ui_commission_percent = 0.004; // Commission %
input CyENUM_COMMISSION_TYPE ui_em_commission_type = em_CommissionType_OpenOnly; // Commission Type

 

위 입력 변수들은 EA 속성창에서 보면 아래 붉은 박스 처럼 보인다. 

 

 

EA 적용대상이 BYBIT 종목인 경우에는 Commission % 에 0.06 기록하고 Commission Type 은 Open Close Each 선택하면 됨. 

 

수수료 처리 코드 예. 

- 수수료 관련 처리 코드를  클래스 형식으로 구현해본다.  ( 클래스 만드는 방법  보기 )

- 클래스 이름 : CCy_Commission_1 

- 클래스 주요 멤버 함수 

int GetPoints_BreakEven(double _price_open, CyENUM_POSI_TYPE _em_posi_type) 

기능 : 입력 인자로 포지션 진입가격 과 Long, Short 입력하면 수익이 수수료 와 동일하게 되는 가격 폭을 포인트 단위로 반환함. 

 

 

 

 

 

 

CCy_Commission 클래스 활용예. 

 

EA 에서 아래와 같은 형식으로 코딩하면 기능 확인가능. 

 


input string ui_grp_2 = ""; // Parameter Group Commission
input double ui_commission_percent = 0.004; // Commission %
input CyENUM_COMMISSION_TYPE ui_em_commission_type = em_CommissionType_OpenOnly; // Commission Type

#include "CySDK_MT4/CCy_Commission_1.mqh"

CCy_Commission_1 Cy_Commission; 


int OnInit()
{

   Cy_Commission.Proc_OnInit(ui_commission_percent, ui_em_commission_type);
   
   
   return(INIT_SUCCEEDED);
}


void OnTick()
{

  
  int points_breakeven_sell = Cy_Commission.GetPoints_BreakEven(Bid, em_PosiShort); 
  int points_breakeven_buy = Cy_Commission.GetPoints_BreakEven(Ask, em_PosiLong);
  Print("Points Break Even for Sell = " , points_breakeven_sell);
  Print("Points Break Even for Buy = " , points_breakeven_buy);
  

}

 

실행예. 

- 아래 그림은 FXTM 의 금 에 적용한 경우이며, 매수든 매도든 진입 가격 대비 7 포인트 지점이 수수료 상쇄(손익분기점, BreakEven )하는 가격 지점임을 보여준다.   

 

의미. 

 

위 챠트에서 XAUUSD 의 현재가격은 Bid 1944.80 , Ask 1944.89 이다.

현재 "매도" 진입한다면 진입가격은 Bid 가격인 1944.80 이 된다. 손익분기점에 해당하는 청산가격은 진입가격 - 7포인트 이므로 1944.73( = 1944.80 - 0.07) 이다. 즉, Ask 가격이 1944.73이 되어야 하는데 현재 Ask 가격이 1944.89 이므로 16포인트 더 하락해줘야 1944.73 이 된다. 

현재 "매수" 진입한다면 진입가격은 Ask  가격인 1944.89 이고, 손익분기점에 해당하는 청산가격은 진입가격 + 7포인트 이므로  1944.96 ( = 1944.89 + 0.07 ) 이다. 즉, Bid 가격이 1944.96이 되어야 하는데 현재 Bid 가격이 1944.80 이므로 16포인트 더 상승해줘야 1944.96 이 된다. 

 

 

 

 

 

 

 

 

  

 

 

 

연관 

 

 

 

메타트레이더 . 거래 수수료 . commission . BYBIT . FXTM

개요 메타트레이더로 거래 가능한 종목들 중에는 거래 수수료 없는 대신 스프레드가 큰 경우가 있고, 스프레드가 작은 대신 거래수수료가 부과되는 종목들도 있다. 또한, 메타트레이더에서 연

igotit.tistory.com

 

 

 

 

메타트레이더 . 코딩 . input 입력 변수 .

메타트레이더 4 입력변수 - 메타트레이더 EA 파일 상단에 아래예 처럼 기록하면 EA 속성창에서 사용자 입력 가능한 UI 로 자동 연결됨. - input string ui_grp_1 = "" 로 기록한 것은 속성창에서 시각적 구

igotit.tistory.com

 

 

 

메타트레이더 . 코딩 . 클래스 만들기

개요 - MT4, MT5 모두 클래스 지원되며, 본 글에서는 MT4 에서 클래스 만들기 방법 정리. - 메타트레이더의 클래스 는 C++ 과 거의 동일하므로 C++ 클래스 관련 기본 지식 요구됨. 클래스 파일 생성. 메

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

최종 수정 : 

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


 

 

 

 

 

 

 

 

 

 

 

댓글



 

비트코인




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