33
자본시장 공동 핀테크 오픈 플랫폼 주문 API Restful FIX API KOSCOM 기술연구소

핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

자본시장 공동 핀테크 오픈 플랫폼 주문 API Restful FIX API

KOSCOM 기술연구소

Page 2: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

문서 이력

버전 일자 Description

1.00 2017.04.25 FIX Restful 주문 API 설명서 초안 작성

1.01 2017.05.18 Buy-side 메시지 spec 일부 필드 변경/삭제

1.02 2017.07.31 웹소켓 메시지 헤더 FIX msgType 추가 / Allocation 메시지 추가

Page 3: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

오픈플랫폼 FIX Restful API Service 구조

일임형 투자

자문사

주문요청 (Rest API 호출)

주문응답수신 (Web Socket)

rest request (JSON)

rest response (JSON)

http 주문처리 #1 (Rest API)

주문응답전송 #1 (Web Socket)

FIX Session

주문처리 #2 (Rest API)

주문응답전송 #2 (Web Socket)

주문처리 #3 (Rest API)

FIX Session

FIX Session

FIX Session

FIX Session

증권사 FIX

Session

KOSCOM STP-HUB (Retail용)

FIX Session

FIX Session

FIX Session

FIX Session

JSON to FIX

② ③

① - 신규주문 (New Order Single), 신규주문(New Order List – 현 사용 불가), 주문 정정(Order Cancel/Replace Request), 주문 취소(Order Cancel Request), 리스트 주문 취소 (List Cancel Request) 용 Restful API 호출 - 주문응답 수신을 위한 subscription 전송하여 web socket session을 설정

② Restful API 요청의 Body에 포함된 주문전문(JSON)을 FIX 메시지 형태로 변환하여 STP-HUB로 전송

③ 오픈플랫폼은 API 요청에 대한 응답을 즉시 전송 - JSON message 수준에서의 기본적인 오류를 확인하여 응답

④ ~ ⑦ 주문전문은 STP-HUB를 거쳐 증권사 및 거래소로 전달되고, 그 응답을 역순으로 반환 ⑧ 응답 (Execution Reports), 거부 (Order Cancel Reject) FIX 메시지를 JSON으로 변환하여 자문사와 연결된 WebSocket Session을 통해 전송

오픈플랫폼 FIX Restful API Service

<buy-side>

<sell-side>

Page 4: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

오픈플랫폼 FIX REST API 기본

특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를 JSON형태로 생성하여 Request Body에 담아 전송 - JSON의 필드명은 Tag 번호가 아닌 필드이름을 사용 - JSON필드는 FIX에서 정의하고 있는 필드 외에 오픈플랫폼 또는 증권사가 필요로 하는 필드가 추가될 수 있으며, HTTP header 내 필드를 사용하게 될 수 있음 - JSON 메시지 구조는 { “header” : { }, “body” : { } }

Sell-Side로부터 전송되는 메시지는 Web socket을 통해 전송되며, 메시지 수준의 프로토콜은

STOMP(Simple Text Oriented Messaging Protocol)을 적용 - Web socket 세션 생성과 상태 체크(heartbeat) - 메시지 송신 요청 (subscription) - 메시지 재전송 요청 - 메시지 중복 체크, 사이즈 체크

Page 5: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 초기화 단계

주문요청 FIX REST API를 사용하기 위해서는 매일 최초 Login API를 호출하여 세션 초기화가 필요함 - Login API 호출은 오픈플랫폼에서 해당 자문사의 주문을 처리하기 위한 준비 작업을 수행 - Login API request의 응답으로 상태정보와 주문응답을 받기 위한 Web Socket 세션용 token을 수신

- Web Socket 세션용 token은 다음 두 종류가 수신됨 1) token : 주문 응답을 받기 위한 Web Socket Session 용 토큰 2) publicToken : 장운영 등 공통 정보를 받기 위한 Web Socket Session 용 토큰 (현재는 미사용) 자문사에서 오픈플랫폼 FIX REST API를 이용하기 위해서는 주문응답 수신을 위한 Web Socket Session을 생성하여야 함 - Web socket 프로토콜은 STOMP를 사용하며, Login 메시지 전송 시 token을 포함시켜 전달 - Web socket 세션이 만들어지면 이후로 주문요청 FIX REST API 사용이 가능

Page 6: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 초기화 단계 – Login

PUT https://apigw.koscom.co.kr/v1/order/admin/login

Field Name Req'd Type Comments

header senderCompID Y String Sender : Buy-side에 부여된 compID

body null

sample

HTTP Request

{ "header":{ "senderCompId":"CFX" }, "body":{ } }

HTTP Response

{ "body": { "success": true, "message": "success!!!!", "token": "FrGZIgg1nYbLAkBHtRYz6y1NFLDR0UiXAezG3sq8lOQ=", "publicToken":"FrGZIgg1nYbLAkBHtRYz6y1NFLDR0UiXAezG3sq8lOQ=" } }

Page 7: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 초기화 단계 – Logout

Field Name Req'd Type Comments

header senderCompID Y String Sender : Buy-side에 부여된 compID

body private token – Buy-side별로 부여되는 token. 이를 통해 websocket에 접속하여 push응답을 받게된다.

sample

HTTP Request

{ "header":{ "senderCompId":"CFX" }, "body":{ "token":"FrGZIgg1nYbLAkBHtRYz6y1NFLDR0UiXAezG3sq8lOQ=" } }

HTTP Response

{ "body": { "success": true, "message": "success!!!!", "token": null } }

PUT https://apigw.koscom.co.kr/v1/order/admin/logout

Page 8: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 주문요청 (REST API 호출)

일임형 투자

자문사

주문요청 (Rest API 호출)

주문응답수신 (Web Socket)

주문처리 #1 (Rest API)

주문응답전송 #1 (Web Socket)

FIX Session

주문처리 #2 (Rest API)

주문응답전송 #2 (Web Socket)

주문처리 #3 (Rest API)

FIX Session

FIX Session

FIX Session

FIX Session

JSON to FIX

오픈플랫폼 FIX Restful API Service

<buy-side>

주문요청 API는 Request/Reply 구조이므로 응답이 있기 전까지는 다음 주문을 요청할 수 없으므로 Load-balancing을 위해 여러 주문 처리 서비스로 자동 분산

Proxy,

API G/W

Proxy 주문응답, 체결 등 데이터는 Websocket Session을 이용

하며, 기본적으로 하나의 web socket session을 연결하여 사용

Page 9: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 주문요청 (REST API 호출)

오픈플랫폼 FIX REST API 목록 API 유형 기능 비고

New Order Single 단건 신규 주문

https://apigw.koscom.co.kr/v1/order/single/new

Order Cancel Request 주문취소

https://apigw.koscom.co.kr/v1/order/single/cancel

Order Cancel/Replace Request 주문정정

전량가격정정 https://apigw.koscom.co.kr/v1/order/single/replace

FIX REST API 호출 후 오픈플랫폼은 즉시 REST API의 response를 전송하며, response의 결과는 오픈플랫폼에서 단순 접수 사실에 대한 것이므로, 주문이 증권사를 포함한 거래소에 정상적으로 전달하였음을 의미하지 않음

거래소까지 주문이 접수 또는 증권사가 거래소로 전달하였음을 확인하기 위해서는 REST API response가 아닌 Web socket을 통해 수신하는 execution report로 확인해야 함

Page 10: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 주문요청 (REST API 호출) – 단건 신규 주문, New Order Single 1/3

Body - Field Field Description Req’d Type FIX Tag Comments

clOrdID 자문사에서 신규주문을 유일하게 구분할 수 있는 구분자 Y String 11 Buyside 에서 지정하여 전송 해당 id값은 buyside 주문 건들 내에서 unique 해야함

account 증권사 계좌번호 N String 1 증권사가 정한 format으로 전송

handlInst

신규주문에 대한 증권사 취급 지침 1= Fully DMA(Direct Market Access), 증권사 개입 없이 완전 자동 처리 2= Semi DMA, 자동처리가 원칙이나 증권사의 개입 가능 3= Fully Manually, 증권사 브로커가 받아 최선 집행

Y String 21 증권사 별 가능 수준 협의 필요

execInst 신규주문에 대한 거래소 취급 지침 4=종가주문(over the day) W=VWAP 고수 (Peg to VWAP)

N String 18 한국거래소(KRX)는 위와 같은 주문 취급 옵션을 제공하지 않으므로 결국 증권사 시스템에서 주문관리를 할 수 있어야만 가능

exDestination Target 거래소코드 N String 100 거래소 별 지정된 코드를 사용

symbol 종목코드 Y String 55 한국거래소 상장종목은 단축코드(6자리) 사용하며, 통상 사람이 종목을 구분할 때 쓰는 코드

securityID 종목구분자 N String 48 종목을 표시하는 방법(22 tag)에 따라 할당된 종목 구분자로 한국거래소 상장종목은 ISIN을 따르는 12자리 구분자 사용

idSource

종목구분자 표시 기준 2=SEDOL 4=ISIN number 5=RIC code

N String 22 48 Tag의 기준 한국거래소 상장 종목의 경우는 ‘4’ (ISIN)

Header - Field Field Description Req’d Type FIX Tag Comments

senderCompID Buy-side에 부여된 compID Y String 49

deliverToCompID 증권사 compID Y String 128

Page 11: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

Body - Field Field Description Req’d Type FIX Tag Comments

side 매매구분 1=Buy 2=Sell

Y String 54 기타 취급 매매구분은 증권사와 협의 필요

transactTime 주문생성시각 Y Date 60 UTC 또는 GMT로 표현되는 시각 Buyside에서 세팅하지 않음

orderQty 주문수량 N Double 38

ordType 호가유형 1=시장가(Market) 2=지정가, 보통(Limit)

Y String 40 장전시간외, 장후시간외, 시간외단일가, 조건부지정가, 최유리지정가, 최우선지정가 등은 증권사와 협의 필요

currency 주문가격에 대한 통화유형 KRW=한화

N String 15 기타 통화유형은 증권사와 협의 필요

price 주문가격 N Double 44

timeInForce

호가유효조건 0=장 구분 동안 유효 (장전시간외, 정규장, 시간외 등 하나의 장구분 동안만 유효) 1=취소할 때까지 유효 (GTC) 2=At the Opening (OPG) 3=전부체결 안되면 전체수량 취소(IOC) 4=체결될 수 있는 만큼 체결되고 잔량 취소(FOK) 6=정해진 시간까지 유효(Good Till Date)

N String 59 증권사에 따라 일부 지원되지 않는 효가유효조건이 있으므로 협의 필요

① 주문요청 (REST API 호출) – 단건 신규 주문, New Order Single 2/3

Page 12: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 주문요청 (REST API 호출) – 단건 신규 주문, New Order Single 3/3

Body - Field Field Description Req’d Type FIX Tag Comments

effectiveTime 본 메시지 자체 유효 시각이므로 이 시간이 경과하면 집행되지 않은 주문에 한해 무효화 처리

N Date 168 UTC 또는 GMT로 표현되는 시각 증권사에 따라 지원되지 않을 수 있으므로 협의 필요

expireTime 주문이 만료되는 시각 - TimeInForce가 Good Till Date인 경우 이 시간이 되면 무효화

N Date 126 UTC 또는 GMT로 표현되는 시각 증권사에 따라 지원되지 않을 수 있으므로 협의 필요

text 증권사로 전달할 메시지 N String 58

자유기술이 가능하나 길이가 제한될 수 있고, DMA 주문의 경우 본 Field는 의미를 갖지 않을 수 있으며, 증권사에 따라 각종 정보를 추가적으로 요구하는 경우가 있으므로 확인 필요

Page 13: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 주문요청 (REST API 호출) – 단건 신규 주문 응답, New Order Single Response

Header - Field Field Description Req’d Type FIX Tag

Comments

msgType D (New Order – Single) Y String 35

Body - Field Field Description Req’d Type FIX Tag

Comments

clOrdId 자문사에서 주문을 유일하게 구분할 수 있는 구분자 Y String 11

responseCode FIX API Service의 응답 코드 Y String

responseMsg FIX API Service의 응답 메시지 Y String

seqNo FIX API Service에서 부여한 sequence no Y Long

Page 14: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 주문요청 (REST API 호출) – 단건 신규 주문 예시, New Order Single Sample

Sample

HTTP Request

{

"header":{

"senderCompId":"KRITEST11", "deliverToCompId":"KRSHANYANG"

},

"body":{

"clOrdID":"170329-002", "account":"00123456789", "handlInst":"1", "execInst":"4",

"exDestination":"KS", "symbol":"005930", "side":"1", "orderQty":10, "ordType":"2", "p

rice":2000000

}

}

HTTP Response

{

"header":{

"msgType":"D"

},

"body": {

"clOrdId": "170329-002",

"responseCode":"200"

"responseMsg": "",

"seqNo": "1"

}

}

Page 15: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 주문요청 (REST API 호출) – 단건 주문 취소, Order Cancel Request

Body - Field Field Description Req’d Type FIX Tag Comments

orderID Sell-Side(대부분 증권사)에서 할당한 취소 대상 주문의 주문번호 N String 37 증권사마다 OrderID에 대한 부여 기준이 다를 수 있고, 다른 field와 복합적으로 사용해야만 할 경우도 있으니 확인 필요

origClOrdID 취소 대상 주문의 ClOrdID Y String 41 원주문의 clOrdID와 동일해야 함

clOrdID 취소 주문의 ClOrdID Y String 11 이 취소주문의 주문번호

listID 취소 대상 LIST 주문의 ListID N String 66 List 주문은 현재 지원되지 않으므로 사용하지 않음

symbol 종목 코드 Y String 55 원주문과 동일해야 함

side 매매구분 1=Buy 2=Sell

Y String 54 원주문과 동일해야 함

transactTime 주문생성시각 Y String 60 주문이 만들어진 시각. 시스템에서 자동 세팅

orderQty 취소수량 Y Double 38 원주문과 동일해야 함

text 증권사로 전달할 메시지 N String 58

Header - Field Field Description Req’d Type FIX Tag Comments

senderCompID Buy-side에 부여된 compID Y String 49

deliverToCompID 증권사 compID Y String 128

Page 16: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 주문요청 (REST API 호출) – 단건 주문 취소 응답, Order Cancel Response

Header - Field Field Description Req’d Type FIX Tag

Comments

msgType F (Order Cancel Request) Y String 35

Body - Field Field Description Req’d Type FIX Tag

Comments

clOrdId 자문사에서 주문을 유일하게 구분할 수 있는 구분자 Y String 11

responseCode FIX API Service의 응답 코드 Y String

responseMsg FIX API Service의 응답 메시지 Y String

seqNo FIX API Service에서 부여한 sequence no Y Long

Page 17: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 주문요청 (REST API 호출) – 단건 주문 취소 예시, Order Cancel Sample

Sample

HTTP Request

{

"header":{

"senderCompId":"KRITEST11", "deliverToCompId":"KRSHANYANG"

},

"body":{

"origClOrdID": "170329-003",

"clOrdID": "170329-004",

"symbol": "005930",

"side": "1",

"orderQty": "10"

}

}

HTTP Response

{

"header":{

"msgType":"F"

},

"body": {

"clOrdId": "170329-004",

"responseCode":"200"

"responseMsg": "",

"seqNo": "3"

}

}

Page 18: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 주문요청 (REST API 호출) – 단건 주문 정정, Order Cancel/Replace Request 1/2

Body - Field Field Description Req’d Type FIX Tag Comments

orderID Sell-Side(대부분 증권사)에서 할당한 정정 대상 주문의 주문번호 N String 37 증권사마다 OrderID에 대한 부여 기준이 다를 수 있고, 다른 field와 복합적으로 사용해야만 할 경우도 있으니 확인 필요

origClOrdID 정정 대상 주문의 ClOrdID Y String 41 원주문의 clOrdID와 동일해야 함

clOrdID 정정 주문의 ClOrdID Y String 11 이 정정주문의 주문번호

listID 정정 대상 LIST 주문의 ListID N String 66 List 주문은 현재 지원되지 않으므로 사용하지 않음

handlInst

신규주문에 대한 증권사 취급 지침 1= Fully DMA(Direct Market Access), 증권사 개입 없이 완전 자동 처리 2= Semi DMA, 자동처리가 원칙이나 증권사의 개입 가능 3= Fully Manually, 증권사 브로커가 받아 최선 집행

Y String 21 증권사 별 가능 수준 협의 필요

execInst 정정을 위한 거래소 취급 지침이나 대체로 사용하지 않음 N String 18

exDestination Target 거래소코드 N String 100 원주문과 동일해야 함

symbol 종목 코드 Y String 55 원주문과 동일해야 함

Header - Field Field Description Req’d Type FIX Tag Comments

senderCompID Buy-side에 부여된 compID Y String 49

deliverToCompID 증권사 compID Y String 128

Page 19: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 주문요청 (REST API 호출) – 단건 주문 정정, Order Cancel/Replace Request 2/2

Body - Field Field Description Req’d Type FIX Tag Comments

side 매매구분 1=Buy 2=Sell

Y String 54 원주문과 동일해야 함

transactTime 주문생성시각 Y Date 60 주문이 만들어진 시간. 시스템에서 자동 세팅

orderQty 정정수량 Y Double 38 가격정정 : 일부 정정은 불가하므로 잔량 전체를 지정해야함 수량정정 : 수량 증가는 불가

ordType 호가유형 정정 1=시장가(Market) 2=지정가, 보통(Limit)

Y String 40 장전시간외, 장후시간외, 시간외단일가, 조건부지정가, 최유리지정가, 최우선지정가 등은 증권사와 협의 필요

currency 주문가격에 대한 통화유형 KRW=한화

N String 15 기타 통화유형은 증권사와 협의 필요

price 정정할 주문가격 N Double 44 수량정정의 경우 OrderType = 2(Limit), I(Funari), U07(ECN대량), U87(시간외대량) 이면 Required.

timeInForce 호가유효조건 – 정정주문의 경우 큰 의미 없는 필드 N String 59 증권사에 따라 일부 지원되지 않는 효가유효조건이 있으므로 협의 필요

effectiveTime 본 메시지 자체 유효 시각이므로 이 시간이 경과하면 집행되지 않은 주문에 한해 무효화 처리

N Date 168 UTC 또는 GMT로 표현되는 시각 증권사에 따라 지원되지 않을 수 있으므로 협의 필요

expireTime 주문이 만료되는 시각 - TimeInForce가 Good Till Date인 경우 이 시간이 되면 무효화

N Date 126 UTC 또는 GMT로 표현되는 시각 증권사에 따라 지원되지 않을 수 있으므로 협의 필요

text 증권사로 전달할 메시지 N String 58

Page 20: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 주문요청 (REST API 호출) – 단건 주문 정정 응답, Order Cancel/Replace Response

Header - Field Field Description Req’d Type FIX Tag

Comments

msgType G (Order Cancel/Replace Request) Y String 35

Body - Field Field Description Req’d Type FIX Tag

Comments

clOrdId 자문사에서 신규주문을 유일하게 구분할 수 있는 구분자 Y String 11

responseCode FIX API Service의 응답 코드 Y String

responseMsg FIX API Service의 응답 메시지 Y String

seqNo FIX API Service에서 부여한 sequence no Y Long

Page 21: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

① 주문요청 (REST API 호출) – 단건 주문 정정 예시, Order Cancel/Replace Sample

Sample

HTTP Request

{

"header":{

"senderCompId":"KRITEST11", "deliverToCompId":"KRSHANYANG"

},

"body":{

"origClOrdID": "170329-002",

"clOrdID": "170329-003",

"handlInst": "1",

"execInst": "4",

"symbol": "005930",

"side": "1",

"orderQty": "10",

"ordType": "2",

"price": "2010000"

}

}

HTTP Response

{

"header":{

"msgType":"G"

},

"body": {

"clOrdId": "170329-003",

"responseCode":"200"

"responseMsg": "",

"seqNo": "2"

}

}

Page 22: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

⑨ 응답 (Websocket) – Execution Report, 체결/정정/취소 확인 1/3

Body - Field Field Description Req’d Type FIX Tag

Comments

orderID Sell-Side(대부분 증권사)에서 할당한 주문번호 N String 37 증권사마다 OrderID에 대한 부여 기준이 다를 수 있고, 다른 field와 복합적으로 사용해야만 할 경우도 있으니 확인 필요

clOrdID 해당 Execution Report와 관련된 주문의 주문번호 Y String 11 신규, 정정, 취소 주문의 ClOrdID

origClOrdID 원주문번호 Y String 41 정정, 취소 대상 주문의 ClOrdID

listID 취소 대상 LIST 주문의 ListID N String 66 List 주문은 현재 지원되지 않으므로 사용하지 않음

execID Sell-Side(대부분 증권사)에서 할당한 execution report 구분자 Y String 17 체결의 경우 체결번호

execRefID 거래취소(Trade Cancel)와 거래정정(Trade Correct)에 사용하는 구분자

N String 19 사용되지 않음

execTransType Transaction 구분 0=신규주문, 1=취소, 2=정정, 3=Status Report (사용안함)

Y String 20 FIX 4.2 only

execType

본 execution report의 의미 0=신규주문, 1=부분체결, 2=완전체결, 3=Done for Day 4=취소완료, 5=정정완료, 6=취소중, 7=중단, 8=거부, 9=주문유예, A=신규처리중, B=계산중, C=만료, D=Restated, E=정정중(Cancel/Replace request의 결과)

Y String 150

Header - Field Field Description Req’d Type FIX Tag

Comments

msgType 8 (ExecutionReport) Y String 35

senderCompID Buy-side에 부여된 compID Y String 49

deliverToCompID 증권사 compID Y String 128

seqNo 일련번호 Y Long

Page 23: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

⑨ 응답 (Websocket) – Execution Report, 체결/정정/취소 확인 2/3

Body - Field Field Description Req’d Type FIX Tag

Comments

ordStatus

주문의 현재 상태 0=신규주문, 1=부분체결, 2=완전체결, 3=Done for Day 4=취소완료, 5=정정완료, 6=취소중, 7=중단, 8=거부, 8=주문유예, A=신규처리중, B=계산중, C=만료, D=주문접수 E=정정중

Y String 39

ordRejReason

주문거부사유 0=증권사 사유, 1=알 수 없는 종목, 2=장종료, 3=주문한도초과, 4=늦은주문, 5=알수없는 주문, 6=중복주문, 7=중복주문(전화주문) 8=유효하지 않는 주문

N String 103

execRestatedmentReason

전화 등으로 주문조건을 재조정한 이유 N String 378 사용하지 않음

account 계좌번호 N 1

symbol 6자리 종목단축코드 Y String 55

securityType 상품유형 CS=보통주 PS=우선주

N String 167 FIX 4.2 only

cFICode 주식 = EXXXXX 선물 = FXXXS 옵션 = OXXXXS

N String 461 FIX 4.3 only

side 매매구분 1=Buy 2=Sell

Y String 54

Page 24: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

⑨ 응답 (Websocket) – Execution Report, 체결/정정/취소 확인 3/3

Body - Field Field Description Req’d Type FIX Tag

Comments

orderQty 주문수량 Y Double 38

ordType 호가유형 1=시장가(Market) 2=지정가, 보통(Limit)

N String 40

currency 주문가격에 대한 통화유형 KRW=한화

N String 15

price 주문가격 N Double 44

timeInForce 호가유효조건 N String 59

effectiveTime 본 메시지 자체 유효 시각 N Date 168

expireTime 주문이 만료되는 시각 N Date 126

execInst 거래소 취급 지침 N String 18 자세한 내용은 Request spec 참조.

lastShares 이번 메시지 상의 체결 수량 N Double 32

lastPx 이번 메시지 상의 체결 가격 N Double 31

leavesQty 잔량 (앞으로 체결될 수 있는 수량) Y Double 151

cumQty 누적체결 수량 Y Double 14

avgPx 평균단가 Y Double 6

handlInst 증권사 취급 지침 N String 21 자세한 내용은 Request spec 참조.

text N String 58

Page 25: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

⑨ 응답 (Websocket) – Execution Report Sample, 체결/정정/취소 확인 예시

Sample HTTP Response

(via WebSocket)

"header":{“msgType”:”8”, "deliverToCompId":"OPENAPI1","senderCompId":"SS_SI

M", "seqNo":21

},

"body":{"orderID":"10","clOrdID":"014", "execID":"16",

"execType":"I","ordStatus":"1",

"account":"1234567890","symbol":"A0123456","side":"1",

"orderQty":100.0

"ordType":"2","price":5000.0, "lastQty":0.0,"lastPx":0.0,"leavesQty":49.0,

"cumQty":51.0,"avgPx":5000.0}

Page 26: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

⑨ 응답 (Websocket) – Order Cancel Reject, 취소/정정 주문 거부 1/2

Body - Field Field Description Req’d Type FIX Tag

Comments

orderID Sell-Side(대부분 증권사)에서 할당한 취소 대상 주문의 주문번호

N String 37 증권사마다 OrderID에 대한 부여 기준이 다를 수 있고, 다른 field와 복합적으로 사용해야만 할 경우도 있으니 확인 필요

clOrdID 해당 Execution Report와 관련된 주문의 주문번호 Y String 11 정정, 취소 주문의 ClOrdID

origClOrdID 원주문번호 Y String 41 정정, 취소 대상 주문의 ClOrdID

ordStatus

주문의 현재 상태 0=신규주문, 1=부분체결, 2=완전체결, 3=Done for Day 4=취소완료, 5=정정완료, 6=취소중, 7=중단, 8=거부, 8=주문유예, A=신규처리중, B=계산중, C=만료, D=주문접수 E=정정중

Y String 39

listID 취소 대상 LIST 주문의 ListID N String 66 List 주문은 현재 지원되지 않으므로 사용하지 않음

account 계좌번호 N String 1

Header - Field Field Description Req’d Type FIX Tag

Comments

msgType 9 (OrderCancelReject) Y String 35

senderCompID Buy-side에 부여된 compID Y String 49

deliverToCompID 증권사 compID Y String 128

seqNo 일련번호 Y Long

Page 27: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

⑨ 응답 (Websocket) – Order Cancel Reject, 취소/정정 주문 거부 2/2

Body - Field Field Description Req’d Type FIX Tag

Comments

cxlRejectResponseTo 1=취소 주문의 거부, 2=정정 주문의 거부 N String 434

cxlRejReason 거부사유 0=늦은 정정주문, 1=알 수 없는 주문, 2=증권사 사유, 3=이미 해당 주문은 취소 또는 정정 중

N String 102

text N String 57

Page 28: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

⑨ 응답 (Websocket) – Allocation 1/4

Body - Field Field Description Req’d Type FIX Tag

Comments

allocId Allocation ID Y String 70 증권사에서 부여하는 allocation id

allocTransType

Allocation 트랜잭션 타입 0 = 신규, 1 = Replace, 2 = 취소, 3 = 임시정산내역(Preliminary), 4 = 정산내역(Calculated), 5 = 확정내역 (Calculated without preliminary)

Y String 71 FIX 4.3에서는 0, 1, 2만 사용 일반적으로 언제나 ‘0’(신규)만 사용함

allocType

Allocation 타입 1 = Buyside 정산내역(기타 수수료 포함), 2 = Buyside 임시정산내역(기타 수수료 제외), 3 = Sellside 정산내역(기타 수수료 포함), 4 = Sellside 확정내역 (기타 수수료 포함, sellside가 자발전송)

Y String 626 FIX 4.3 only 언제나 ‘4’(Sellside 확정내역)만 사용함

orders 주문내역 N Array

└ clOrdId 주문번호 N String 11

└ listId 리스트 주문번호 N String 66 리스트 주문일 경우

Header - Field Field Description Req’d Type FIX Tag

Comments

msgType J (Allocation) Y String 35

senderCompID Buy-side에 부여된 compID Y String 49

deliverToCompID 증권사 compID Y String 128

seqNo 일련번호 Y Long

Page 29: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

⑨ 응답 (Websocket) – Allocation 2/4

Body - Field Field Description Req’d Type FIX Tag

Comments

side 매매구분 1=Buy 2=Sell

Y String 54

symbol 종목단축코드 Y String 55

99999: 전체종목 전체주문에 대한 Allocation 99998: 전체종목 FIX 주문에 대한 Allocation 99997: 전체종목, 전체주문중 FIX로 낸 주문을 제외한 Allocation

allocMediaType

Allocation 타입 1 = Buyside 정산내역(기타 수수료 포함), 2 = Buyside 임시정산내역(기타 수수료 제외), 3 = Sellside 정산내역(기타 수수료 포함), 4 = Sellside 확정내역 (기타 수수료 포함, sellside가 자발전송)

N String 10016

Fix / Non-Fix 주문만 인지, 전체인지 구분. 0 = 전체 1 = Fix 2 = Non-Fix

totOrderQty 총 주문수량 N Double 10007 미체결 주문수량까지 포함한 총 주문수량

quantity 총 체결수량 Y Double 53

grossTradeAmt 총 체결금액 N Double 381 실체 체결 가격*체결수량

netMoney 정산(결제)금액 N Double 118 AvgPx와 같은 화폐로 표현된다. AllocNetMoney의 합. 수수료, 세금이 계산된 결제금액

Page 30: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

⑨ 응답 (Websocket) – Allocation 3/4

Body - Field Field Description Req’d Type FIX Tag

Comments

allocs Allocation 내역 (계좌별 정산 내역) N Array symbol 필드가 ‘99999’, ‘99997’인 경우는 empty array가 전송됨 allocAccount ~ allocOrderQty 까지

└ allocAccount 체결 계좌 N String 79

└ allocPrice 체결금액 N Double 118 체결금액(AllocAvgPx(#153) * AllocQty(#80))

└ allocQty 체결 수량 N Double 80

└ allocText 정산관련 텍스트 N String 161

└ commission 커미션 N Double 12 금액으로 표시

└ allocAvgPx 평균 체결가격 N Double 153 실체 체결 가격*체결수량

└ allocNetMoney 정산(결제)금액 N Double 154 수수료, 세금이 계산된 결제금액

└ miscFees 기타 수수료 내역 N Array miscFeeAmt ~ miscFeeType 까지

└ miscFeeAmt 기타 수수료 금액 N Double 137 세금

└ miscFeeCurr 기타 수수료 통화 N String 138 KRW

└ miscFeeType 기타 수수료 타입. 1 = Regulatory, 2 = Tax, 3 = Local commision, 4 = Exchange fees, 7 = Other

N String 139 2 = Tax 만 사용

└ allocOrderQty 주문 수량 N Double 10008 미체결 주문수량까지 포함한 주문수량

Page 31: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

⑨ 응답 (Websocket) – Allocation 4/4

Body - Field Field Description Req’d Type FIX Tag

Comments

avgPx 평균 체결가격 N Double 6 Allocation 총 내역에 대한 평균 체결가격

tradeDate 거래 일자 Y String 75

transactTime 생성시각 N Date 60 Allocation 전송 시각

text N String 58

Page 32: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

⑨ 응답 (Websocket) – Allocation Sample

Sample

HTTP Respon

se

(via WebSock

et)

{

"header": {

"msgType": "J",

"deliverToCompId": “KRITEST11",

"senderCompId": "KRSSAMSUNG2",

"seqNo": 17

},

"body": {

"allocID": "2",

"allocTransType": "0",

"allocType": "4",

"orders": [

{

"clOrdID": "20170801-000001"

}

],

"side": "1",

"symbol": "000990",

"totOrderQty": 0,

"quantity": 3,

"grossTradeAmt": 56700,

"netMoney": 56982,

"allocs": [

{

"allocAccount": "07653100002",

"allocPrice": 56700,

"allocQty": 3,

"commission": 282,

"allocAvgPx": 18900,

"allocNetMoney": 56982,

"miscFees": [

{

"miscFeeAmt": 0,

"miscFeeCurr": "KRW",

"miscFeeType": "2"

}

],

"allocOrderQty": 0

}

],

"avgPx": 18900,

"tradeDate": "20170801",

"transactTime": "20170801-17:30:01.000",

"encodedTextLen": 0

}

}

Page 33: 핀테크 오픈 주문 API - Koscom · 2017-08-01 · 오픈플랫폼 FIX REST API 기본 특별한 경우를 제외하고 FIX REST API는 POST method를 사용 - 요청 메시지를

주의사항

Sell-Side (증권사) 환경 사전 검토 필요 : 코스콤 Retail용 STP-HUB와 연동 가능 여부, 일임형 자문사 FIX 주문 처리 가능 여부 확인

: 서비스 전 sell-side와의 사전 연동 및 테스트 필수 취급 가능한 금융상품

: 1차 - 유가증권 (ETF 포함), 코스닥 상장 주식

지원 가능한 매매 유형 : 수량, 가격 동시정정(일부정정) 불가

FIX Restful API는 일임형 자문업자만이 사용 가능 : 자문사 솔루션, RA 시스템 업체는 기존 자문업자와의 협력 필수