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

메타 트레이더 . 주문 가격 규격화 Digits 으로는 불완전. 해결책.

by i.got.it 2023. 3. 5.

 

 

개요 

- 메타트레이더 EA 에서 주문 송신시 가격 인자에 값을 기록시 해당심볼의 가격 규격에 맞게 정리해서 주문 송신 해야한다. 

 

- 가격 규격이라 함은 심볼의 specification 에서 지정되어있는 Digits 와 Tick Size  이다.

 

- 규격에 맞게 가격 표현을 정리한다 함은 EA 내부적으로 가격 관련 연산 과정 거치게 되면 필연 숫자들이 심볼에서 지정된 규격에 맞지 않는 수치들이 만들어진다.예 124.5678934512320987 등. 이 상태의 숫자를 그대로 주문 함수의 가격에 기록하면 서버에서 거부되기 때문에,  해당 심볼의 Digits 와 Tick Size 규격에 맞게 정리된 가격을 주문 함수 의 가격 인자에 기록해야 한다.

 

- 메타트레이더의 백테스팅 도구 시험 할 때는 가격이 규격에 맞지 않아도 오류 발생하지 않고 정상적으로 주문 수행되지만 실매매 서버로 주문 송신한 경우 오류발생한다. 

 

- 규격에 맞지 않는 가격을 기록한 경우 아래 예 처럼 주문 실패 발생한다. 

 

가격 규격화 오류로 인한 주문 실패. 

- 아래 실전매매 전략 실행시 Journal 에서 보이는 붉은색 아이콘들이 모두 주문 실패한 것을 보여주고 있다. ETHUSDT 의 최소가격 Tick Size 가 0.05 인데  가격들이 1602.36, 1660.11 처럼 0.05 단위가 아닌 값을 기록하여 주문 송신하였고,  bybit 서버가 주문 거부한 것임. 

 

 

가격 규격화 방법.  - 함수 NormalizeDouble () 이용. 

- 대부분의 메타트레이더 로 거래하는 심볼들의 소수점 이하 자리수 Digits 가 2 라면 , Tick Size 도 0.01 , Digits 가 5라면 Tick Size 도 0.00001 이다.

이런 경우에는 메타에서 제공되는 함수인 NormalizeDouble( , Digits) 로 가격 규격화 한 것을 주문함수에 기록하면 된다. 

 

 

함수 NormalizeDouble () 로 안되는 경우

- 한편, Digits 가 2임 에도 Tick Size 가 0.01 이 아닌 경우도 있다.

 

예 1:  BYBIT  무기한계약 종목 중 BTCUSDT 는 Digits 가 2인데 Tick Size 가 0.01 이 아닌 0.10 이다(아래그림 에서 Tick Size 0.1 ).  현재는 0.10 이지만 이전에는 0.5 였음. 즉, 가격 상황에 따라 Tick Size 는 고정 상수가 아니라  변동되는 값으로 동적 설정된다.  

예2. bybit 무기한 계약 종목인 ETHUSDT 인 경우 Digits 는 2, Tick Size 는 0.01 이 아닌 0.05 일 수도 있다.(현재 2023.03.05 는 0.01 임. ). 

 

 

 

 

 

완전한 가격 규격화 함수. - 범용 무결성. 

- Digits 와 Tick Size 2개 값을 모두 이용하여 가격 규격화 처리하는 함수를 직접 만들어서 사용해야 하며 아래 해당 함수 전체를 보인다. 

- 인자로 가격을 입력하면 규격화된 가격으로 변환된 값이 반환된다. 

 


double PriceNormalize(double _price)
{

   double m_TickSize_Price = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); //

   return (m_TickSize_Price * MathRound(_price/m_TickSize_Price));//

}

 

 

주문시 모든 가격들에 대하여 본 함수 호출하여 규격화 된 숫자로 변환하여 인자 전달해야한다.  지정가 가격,  stop loss 가격, take profit 가격 등 주문 함수에 있는 모든 가격들에 적용되어야 주문 송신시 서버에서 거부하지 않고 정상 접수됨. 

 

 

 

 

 

연관

 

 

 

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

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

igotit.tistory.com

 

 

 

 

 

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

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

igotit.tistory.com

 

 

 

바이비트 . 메타트레이더 4 설치.

개요 - 암호화폐 거래소 중에서는 바이비트에서 최초로 메타트레이더4 지원. - - 서비스 시작시점 : 2022년 4월 초 - 거래 가능 종목 : 바이비트 거래소의 USDT 무기한계약 종목 중 유동성 풍부한 BTCUS

igotit.tistory.com

 


첫 등록 :  2022.11.08

최종 수정 : 2023.03.05

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


 

댓글



 

비트코인




암호화폐       외환/나스닥/골드       암호화폐/외환/나스닥/골드 암호화폐/외환/나스닥/골드   암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)     롤오버 이자 없는 스왑프리계좌
( 스왑프리 암호화폐도 거래 가능 )    
MT4, MT5 , cTrader 모두 지원     FTMO 계좌 매매운용. MT4,MT5