본문 바로가기
트레이딩

Order Modify Process. 주문정정처리. 관련 메시지 핸들러에서의 처리로직.

by 리치굿맨 2016. 1. 9.



 

개요.

 


주문정정(Order Modify) 작용 이해.


 Order Modify 는 이미 거래소에 있는 Order New 를 수정하여 새로운 Order New 를 생성하는 과정이다.

 Client 에서 처음 부터 Order New 를 전송하여 거래소에 Order New 가 생성 되어 있는것이나,  이미 거래소에 있었던 Order New 를 수정하여 새롭게 Order New 를 생성하나 완전 동일한 결과이다.


따라서, client 측의 주문관리 로직 구현시에 Order Modify 는 Order New 를 생성하고 전송하는 것과 별반 다를게 없다.

차이나는 부분은 주문전송시 데이터의 내용이 다르다는점이며,  특히 수정대상의 주문아이디 를 지정해주는 부분과 "주문정정" 명령전송시 필요한 데이터가 다르다는 점이다. 


해당 주문정정이 거래소에서 타겟 주문에 적용된 경우는 새롭게 생성된 Order New 를 관리해야한다.

해당 주문정정이 거래소에서 적용되지 못한 경우는 새로운 OrderNew 가 생성된 것이 아니므로 관리할 Order New 는 없다.


 


 


 

Order Modify Process

   



1. Order New 개체 생성.

- 자체 관리아이디 할당.

- 주문수정이 Exchange 에서 적용된 경우 거래소에 생성될 OrderNew 에 대응하는것을 미리 만들어 둔것임.


2.  Order Modify 개체 생성.

- 자체관리아이디 할당.

- 상기1을 Order Modify 개체의 멤버로 대응시켜둠.


3. Order Modify 전송용 데이터 생성.


4. 상기3을 거래소 전송.

전송경로 : 클라이언트(내 컴퓨터) -> Broker (증권사) -> Exchange(거래소)


상기 4이후에 Broker 와 Exchange 에서 Client 로 메시지 전송해옴.


5. Broker 에서 발송한 메시지 수신처리. 

-  "주문아이디"와 상기 2의 클라이언트(내 컴퓨터)에서 생성한 주문 개체의 1:1대응 시킬 수 있는 유일한 지점이다.


6. Exchange 에서 발송한 거부,정상 메시지 수신처리.

- 메시지에 "주문아이디" 를 같이 포함하여 전송해주고 Modify 적용 여부를 알려준다.


7. 상기6에서 "주문정정"이 거래소 정상처리된 경우, 이후 체결 메시지 통보가 발생할 수 있다.

정정것에 해당하는 "주문신규"가 거래소에 생성되며, 이후 체결이 발생한 시점에 채결메시지를 거래소가 클라이언트로 전송해준다.


상기 5,6,7에서 주요처리사항.

상기 5, 6, 7의 메시지 발생 순서가 고정되어있지 않다. 즉 5가 먼저 수신될 때도 있고, 상기 6이 먼저 수신될 때도 있다. 심지어는 7이 가장 먼저 수신될 수 도 있다.


상기 5의 시점이 client 에서 생성한 Order Modify 개체와 주문아이디의 대응을 알 수 있는 유일한 지점이므로

상기 6 혹은 7이  먼저 수신된 경우에는 이 주문아이디가 클라이언트에서 생성한 어떤 주문개체의 것인지 알 방법이 없다.

따라서, 상기 6, 7이 먼저 수신된 경우에는 주문아이디를 비롯하여 이 시점에 수신된 정보들을 임시 저장해뒀다가 상기5의 메시지 수신시점에서 클라이언트에서 관리하는 주문개체들의 미완성된 정보들을 확정시키는 처리 수행해야만 한다.


 


 

 

"주문정정" 명령 전송이후 메시지 핸들러에서의 처리로직.

 

검토.

주문정정과 관련되어 연동되는 3개의 메시지 핸들러가 있다. 각각의 메시지 핸들러의 처리 로직.




검토 결론.


-  최종 아래와 같은 3개의 메시지 처리부의 로직으로 구현하면 무결성 처리 달성됨.

-  앞의 2차 결론에서의 Broker OdID수신, ExchAcpt 와 동일한것이나 실제 코딩의 간결함을 위하여 ExchAcpt 의 위치만 변경된 것임.

-  메시지 수신순서 총 6개의 케이스에 대하여 각각의 상황에서 무결성위배 있는지 검토하였고 모든 상황에서 완전함.

-  처리요소가 간결하여 코드 유지 보수 유리함. 속도에서 손해보는것 없음.


아래 체결부의 처리사항은 "주문정정" 에 의한 주문신규뿐만 아니라, 일반 주문신규 처리포함하여 정상적으로 수행하는 루틴임.


아래 첫번째 처리 블럭에서의 OrderNew 란 "주문정정" 에 의하여 새롭게 생성된 "주문신규" 개체를 의미함.

CyFinAPI체계에서는 "CyOrderModify"개체 생성시 "CyOrderNew"개체도 동시에 생성하는 것으로 운용하고 있다. 








 


 


///540.


태그

댓글0


   
현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     선물 인버스 |선물 USDT