개요

 

MQL5 의 주문 함수 OrderSend 실행시 오류들 원인및 해결책 정리. 

OrderSend 함수 호출 반환값이 fail 인 경우 그 원인은 여러가지가 있다. 해당 원인은 OrderSend 의 두번째 인자 MqlTradeResult 의 멤버변수 rectocde 값을 보면 알 수 있다. retcode 값에 따라 원인및 해결법 정리.

기본 배경지식.
MQL5 의 주문함수들 기본 정보 : http://igotit.tistory.com/1815
 
 


 


 

오류1. retcode 10004. TRADE_RETCODE_REQUOTE

 
 

10004 반환 되는 상황예. 

시장가 주문으로 .OrderSend 주문하는 경우에도 인자 price 에 가격 지정하고, 동시에 deviation 값도 지정해야한다. deviation 값은 주문시 지정한 price 대비 체결시킬 허용 가격폭을 지정하는 것이다. 서버에 주문 도착시 현재 가격이 사용자 지정한 가격폭을 벗어난 경우 서버측에서 반환하는 코드가 10004 이다. 

예 : 현재 주문시점 Ask 가격이 1.16363 이서 매수 가격을 1.16363  으로 하고 deviation 을 5로 설정한 경우 주문의 서버 도착시 Ask 가격이 1.16368 이하인 경우만 주문접수되고 체결된다. 주문의 서버 도착시 가격이 1.16369 이상이면 주문접수되지 않고 코드 10004 반환된다. 

해결책.
1. 본인이 지정한 가격폭 이내가 아니므로 서버측에서 주문 접수하지 않은 것이므로 오류는 아니다. 
2. 본인 지정한 가격폭 이내에서만 체결을 원하면 주문 재전송하는 등의 조치 취한다. 
3. 혹은 본인 지정한 가격폭을 너무 작게 설정했다면 (예 5포인트 이하 등) 이 값을 증가 시킨다. 20~50정도로 설정하면 웬만한 가격 변동 중에도 거의 체결된다. 그러나 급격한 가격 움직임이 있을 때는 서버에 도착시 가격이 변동폭 50을 벗어난 가격일 수도 있다. 

즉,  요약하면 본 반환값 10004는 오류는 아니며, 시장가 주문으로 하는 경우 체결시킬 가격 변동폭을 본인의 전략에서 어느정도를 허용할 것이냐에 달려있다. 


 


 


 본 글 포함된 상위 정리글. 


 1. 메타트레이더5 체계정리. 활용법/지식 : http://igotit.tistory.com/1775







///1833

Posted by 리치굿맨
TAG

댓글을 달아 주세요

  1. 안녕하세요?

    시장가도 가격을 지정해야하는 군요..
    그리고 가격폭 설정하는 것도 인상깊네요.

    2020.10.26 18:59 [ ADDR : EDIT/ DEL : REPLY ]