검색결과 리스트
ebestapi에 해당되는 글 2건
- 2024.01.31 [Xing API] 연속 TR API 오류
- 2023.08.11 [API] 일봉 데이터에서 수정주가 해석하기
글
[Xing API] 연속 TR API 오류
선물 tick 데이터를 연속으로 받는 중 발견한 오류입니다.
tick 데이터는 msec 해상도를 가지는데, msec까지 같은 경우가 가끔 있습니다. 그런데 연속 조회시 마지막 데이터와 다음 조회시에 받을 데이터가 같은 msec인 경우에 연속 조회시 받을 수 있는 두가지 오류가 발견되었습니다.
일단 원 데이터를 보겠습니다.
아래는 2024년 1월 29일 선물 tick 데이터입니다. 09:39:36초에 총 4번의 거래가 발생하였음을 알 수 있습니다.
첫 번째 오류는 최근에 받은 tick 자료에 msec이 같은 tick이 더 있는 경우에 발생하는 오류입니다.
아래 자료 중 밑에 있는 것은 이전에 받은 tick 정보입니다. 09:39:36초에 2건의 거래가 있었음을 알려줍니다. querycnt 값이 차서 이 상태로 돌려줍니다. 이때 cts_time 정보는 0939363755가 돌아옵니다. API ref를 보면 돌려주는 cts_time 정보를 다음 연속 query할 때 입력으로 사용하라고 명시되어 있습니다. 다음 query의 결과값은 0939363755 보다 큰 값을 가진 tick 정보를 돌려주는 방식입니다. 이 가정에서 오류가 발생하는데요.
앞에서 설명하였듯이 09:39:36초에는 총 4건의 거래가 있습니다. 다음 query에서는 이 전에 몇 건을 보냈는 정보를 관리하지 않아서 무조건 cts_time보다 큰 값을 가진 tick을 돌려줍니다. 따라서 미처 받지 못한 2건은 사라지게 됩니다.
ebest api를 수정할 방법은 없으니 회피 방법을 찾아봅니다.
cts_time을 전달할 때 query에서 준 값이 아닌 tick 정보 중 최근 값보다 큰 값을 전달하면 될 듯합니다. 기본 가정은 최신 tick 시간에는 중복된 데이타가 있다고 가정을 하는 것이죠. 이렇게 해보니 msec이 중복된 tick 정보는 모두 받을 수 있는데 또 한가지 처리하여할 문제가 발생합니다. 바로 중복 저장 문제입니다.
수정한 방식으로 연속 query를 하면 아래와 같이 09:39:36초 데이터가 중복으로 받아집니다. api 입장에서는 0939363755 틱을 이전에 받았는지 알 수가 없는 것이죠. 그래서 중복된 모든 tick 정보를 다시 전달해줍니다.
이 또한 어쩔 수 없는 것이므로, 중복된 tick을 제거하는 방식으로 처리하여야합니다.
방법은 간단한데요. 이전에 받은 자료 중 같은 시간에 해당하는 tick의 수를 계산해서 이번에 받은 자료에서 그 만큼 차감하여 저장하면 됩니다. 이렇게 하면 아래와 같이 중복된 자료가 사라짐을 알 수 있습니다.
결과적으로 msec이 같은 tick 정보를 모두 받을 수 있고, 중복된 tick 정보도 제거할 수 있었습니다.
이런 과정없이 tick을 저장하신 분들이 msec이 같은 경우에 이빨이 빠져있을 수 있으니 이점 참고하시기 바랍니다.
'이베스트 API xingAPI' 카테고리의 다른 글
[XingAPI] 파이썬과 OpenAPI로 TR 만들어보기 (0) | 2024.02.02 |
---|---|
[XingApi] OpenAPI로 선물 tick 데이터 down 받는 파이썬 소스코드 (0) | 2024.01.31 |
[API] 일봉 데이터에서 수정주가 해석하기 (0) | 2023.08.11 |
새로 생긴 위클리 옵션 월요일 만기 상품 다루기 (0) | 2023.07.31 |
xing API 사용하여 weekly 옵션 구하기 (0) | 2022.10.27 |
글
[API] 일봉 데이터에서 수정주가 해석하기
ebest api에서 t8413을 이용하여 특정 주식의 일봉 자료를 얻을 수 있습니다. 자료에 보면 jongchk와 rate라는 항목이 있는데 여기에 주가 변동 사항에 대하여 정리가 되어 있습니다.
이동 평균선을 구할 때 이 항목을 잘 확인을 해야하는데요. 이걸 무시하면 엉뚱한 결과가 나올 수 있습니다.
삼성전자 예를 들어보겠습니다. 아시다시피 삼성전자는 액면가 5,000원을 100으로 변경하는 액면분할을 하였습니다. 당시 일봉자료를 보면 아래와 같은 값이 표기되어 있습니다.
jongchk : 4100
rate : -98
그 의미를 이해하려면 4100을 hex 값으로 변환하여야 합니다. 4100의 hex값은 1004가 됩니다. 위에 그림에서 보면 0x1000은 기준가 조정이고 마지막 4는 액면분할을 의미합니다.
그리고 rate값인 -98은 액면가가 98% 줄어들었다는 의미입니다.
주가 보정을 위해서는 아래와 같은 방식으로 하면 됩니다.
삼성전자 2018/05/03 주가 2,650,000
수정주가 => 2,650,000 * (100+rate)/100 = 53,000
반대로 액면병합인 경우에는 rate 값이 양수로 표기됩니다.
액면병합, 연말 배당, 유상증자 등으로 권리변동이 계속 발생하므로 변경이 생긴 원인을 파악하고 이에 맞는 적절한 가격 계산을 해 주어야 합니다.
'이베스트 API xingAPI' 카테고리의 다른 글
[XingApi] OpenAPI로 선물 tick 데이터 down 받는 파이썬 소스코드 (0) | 2024.01.31 |
---|---|
[Xing API] 연속 TR API 오류 (0) | 2024.01.31 |
새로 생긴 위클리 옵션 월요일 만기 상품 다루기 (0) | 2023.07.31 |
xing API 사용하여 weekly 옵션 구하기 (0) | 2022.10.27 |
선물/옵션 코드 해석하기 (0) | 2021.07.09 |