개요. | |
주문정정(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.
'트레이딩' 카테고리의 다른 글
CyOrderModify/Cancel 의 타겟이 되는 CyOrderNew개체 관리사항.수정가능상태, 타겟선점 Lock 기능등. (0) | 2016.01.12 |
---|---|
Order Cancel Process. (0) | 2016.01.10 |
Order Routing State (주문전송상태). CyOrder 개체의 전송 상태- 정의. (0) | 2016.01.07 |
IOC, FOK, 시장가, 지정가,조건부 지정가, 최유리 지정가, 최우선 지정가. (0) | 2015.12.20 |
XingAPI.DLL 활용 프로그램 종료시 죽는 문제해결. (0) | 2015.12.17 |
댓글