개요
- 메타트레이더 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 가격 등 주문 함수에 있는 모든 가격들에 적용되어야 주문 송신시 서버에서 거부하지 않고 정상 접수됨.
연관
첫 등록 : 2022.11.08
최종 수정 : 2023.03.05
단축 주소 : https://igotit.tistory.com/4271
'트레이딩 > 메타트레이더 코딩' 카테고리의 다른 글
메타트레이더 4 . 챠트 . 오류 SL, TP 가격 차이 표현 단위 Pips (0) | 2023.03.14 |
---|---|
메타 트레이더4 . MQL4 . 주문 (포지션) 검색 코드 (0) | 2023.03.06 |
메타 트레이더 . 주문 종류 . stop limit pending (0) | 2023.02.16 |
메타 트레이더 . 주문 에러. Trade is disabled . 나스닥 거래 (0) | 2023.02.14 |
메타 트레이더 . 외장하드 설치 . 사용자 데이터도 외장하드에서 집중관리. (0) | 2022.12.08 |
댓글