검색결과 리스트
2024/03에 해당되는 글 2건
- 2024.03.12 [시스템트레이딩] 옵션 시스템트레이딩시 필요한 데이터
- 2024.03.04 [XingAPI] 파이썬과 OpenAPI로 실시간 TR 받기(2)
글
[시스템트레이딩] 옵션 시스템트레이딩시 필요한 데이터
월 옵션은 매월 둘째 주 목요일 만기입니다.
만기일을 찾을 수 있도록 time 함수를 이용하여 어찌 어찌할 수 있겠지만 이 정도는 그냥 손으로 만드는 것이 더 효율적입니다.
제가 사용하는 일자를 공유합니다. 한땀 한땀 달력보고 입력한 것이니 맞을 것으로 예상되나, 혹시 틀린 날이 있다면 댓글 부탁드립니다.
option_end_days = {
2010 : {1:14, 2:11, 3:11, 4:8, 5:13, 6:10, 7:8, 8:12, 9:9, 10:14, 11:11, 12:9},
2011 : {1:13, 2:10, 3:10, 4:14, 5:12, 6:9, 7:14, 8:11, 9:8, 10:13, 11:10, 12:8},
2012 : {1:12, 2:9, 3:8, 4:12, 5:10, 6:14, 7:12, 8:9, 9:13, 10:11, 11:8, 12:13},
2013 : {1:10, 2:14, 3:14, 4:11, 5:9, 6:13, 7:11, 8:8, 9:12, 10:10, 11:14, 12:12},
2014 : {1:9, 2:13, 3:13, 4:10, 5:8, 6:12, 7:10, 8:14, 9:11, 10:8, 11:13, 12:11},
2015 : {1:8, 2:12, 3:12, 4:9, 5:14, 6:11, 7:9, 8:13, 9:10, 10:8, 11:12, 12:10},
2016 : {1:14, 2:11, 3:10, 4:14, 5:12, 6:9, 7:14, 8:11, 9:8, 10:13, 11:10, 12:8},
2017 : {1:12, 2:9, 3:9, 4:13, 5:11, 6:8, 7:13, 8:10, 9:14, 10:12, 11:9, 12:14},
2018 : {1:11, 2:8, 3:8, 4:12, 5:10, 6:14, 7:12, 8:9, 9:13, 10:11, 11:8, 12:13},
2019 : {1:10, 2:14, 3:14, 4:11, 5:9, 6:13, 7:11, 8:8, 9:11, 10:10, 11:14, 12:12},
2020 : {1:9, 2:13, 3:12, 4:9, 5:14, 6:11, 7:9, 8:13, 9:10, 10:8, 11:12, 12:10},
2021 : {1:14, 2:10, 3:11, 4:8, 5:13, 6:10, 7:8, 8:12, 9:9, 10:14, 11:11, 12:9},
2022 : {1:13, 2:10, 3:10, 4:14, 5:12, 6:9, 7:14, 8:11, 9:8, 10:13, 11:10, 12:8},
2023 : {1:12, 2:8, 3:10, 4:14, 5:12, 6:9, 7:14, 8:11, 9:8, 10:13, 11:10, 12:8},
2024 : {1:11, 2:8, 3:14, 4:11, 5:9, 6:13, 7:11, 8:8, 9:12, 10:10, 11:14, 12:12},
}
'시스템트레이딩' 카테고리의 다른 글
[시스템트레이딩] Super Trend (0) | 2024.01.25 |
---|---|
[시스템트레이딩] 옵션 Naked 매수/매도(1) (2) | 2023.11.24 |
예스트레이더(YesTrader) 예제 (1) | 2023.10.20 |
[시스템트레이딩] 수익나는 옵션 매도 전략(8) (1) | 2023.05.19 |
[시스템트레이딩] 수익나는 옵션 매도 전략(7) (0) | 2023.05.02 |
글
[XingAPI] 파이썬과 OpenAPI로 실시간 TR 받기(2)
지난 1편에 소개 글에 이어 실시간 TR을 추가하는 방법에 대하여 기술합니다.
어떻게 하면 초보자가 쉽게 코딩할 수 있을지 고민을 해 보았는데요.
초보자의 경우에는 가급적 어려운 부분이 가려져 있는 것이 좋을 듯합니다. websocket, send, recv 등등
내가 필요한 실시간 TR Code 값과 메세지를 받는 부분, 그리고 관심있는 ticker 정도만 전달할 수 있다면 보다 쉽게 개발을 할 수 있을 것 같습니다.
단언컨데 더 이상 쉬울 수 없는 방법을 소개하고자합니다.
------------------------
본 셈플은 크게 두개의 .py로 이루어져 있습니다.
open_api_real_lib.py # 실시간 real tr을 요청하는 부분. 일반 개발자는 신경안써도 되는 부분
my_open_api_real.py # 개발하고자하는 real tr에 대한 코드, 일반 개발자가 짤 코드
open_api_real_lib.py 에 있는 내용은 관심있으신 분들만 코드를 보세요.
이 글에서는 my_open_api_real.py를 만드는 방법에 대해서만 기술합니다.
이전 글에 있던 sample 코드는 아래와 같은 방식으로 개발이 가능합니다. 이전 셈플에 비하여 관련없는 부분은 모두 삭제가 되어서 코드가 간단하고 보기도 좋습니다.
from open_api_real_lib import main_loop
# 메세지 처리하는 함수
def on_future_sise(data):
price = float(data['price'])
vol = int(data['cvolume'])
offerho1 = float(data['offerho1'])
bidho1 = float(data['bidho1'])
print(format(price, '5.2f'), format(vol, '4d'), ' ', format(offerho1, '5.2f'), ' ', format(bidho1, '5.2f'))
if __name__ == '__main__':
# 실시간 TR 메세지 정의
FUTURE_SISE = 'FC0'
# 관심있는 ticker 정보
ticker = '101V3000' # 2024년 3월 만기 선물
main_loop(FUTURE_SISE, on_future_sise, ticker)
기본적인 구조는 실시간 TR을 정의하고 해당하는 TR에서 오는 메세지를 처리하는 함수를 만들면 됩니다.
여기에 선물 호가창을 추가하는 방법에 대하여 정리합니다.
GUI가 아닌 command 창에 실시간 정보를 출력하기 때문에 창 하나에 한 TR을 출력하는 방식을 적용해야합니다. 실행할 때 마다 소스를 변경해서 실시간 호가창/실시간 체결 정보를 보는 것은 비효율적이니 간단하게 메뉴 방식으로 실행시 선택하는 방식을 사용해보겠습니다.
우선 선물 호가창 정보가 왔을 때 어떻게 출력할 것인지를 코딩합니다. 본 예제에서는 호가창 아래 위 2개만 출력합니다. 최대 5개까지 출력할 수 있으니 관심있으시분 들은 수정하여 사용하세요.
참고로 선물 호가창 TR을 통해서 받는 정보의 형태는 api 문서를 참고하세요.
def on_future_order_book(data):
print(data['hotime'])
print('--------------------------------')
print(' 건수 수량 가격 수량 건수')
print('--------------------------------')
print(format(int(data['offercnt2']), '4,d'),
format(int(data['offerrem2']), '4,d'), ' ',
format(data['offerho2']))
print(format(int(data['offercnt1']), '4,d'),
format(int(data['offerrem1']), '4,d'), ' ',
format(data['offerho1']))
print(format(' ', '11s'),
format(data['bidho1']),
format(int(data['bidcnt1']), '5,d'),
format(int(data['bidrem1']), '5,d'))
print(format(' ', '11s'),
format(data['bidho2']),
format(int(data['bidcnt2']), '5,d'),
format(int(data['bidrem2']), '5,d'))
다음으로 추가하고 하는 실시간 TR 코드를 작성합니다.
if __name__ == '__main__':
# TR codes
FUTURE_SISE = 'FC0'
FUTURE_ORDER_BOOK = 'FH0' # <- 새로 추가
간단한 선택 메뉴를 만듭니다.
print('선택')
# 새로운 REAL TR 추가시 print문에도 추가
print('1: 선물시세 2:선물호가창')
sel = input()
입력 값에 따라 실행할 TR code와 메세지를 받을 함수명을 정의합니다.
if sel == '1' :
tr_code = FUTURE_SISE
func = on_future_sise
elif sel == '2' : # <- 추가
tr_code = FUTURE_ORDER_BOOK
func = on_future_order_book
입력받은 Real tr code값, 불려질 함수명, ticker 정보를 open api를 담당하는 곳으로 전달합니다.
main_loop(tr_code, func, ticker)
실행방법입니다.
1번 선물 시세를 선택하면 잠시 후 선택한 real tr 값을 처리한 결과가 화면에 출력됩니다.
동시에 여러 개의 실시간 TR 정보를 보고 싶으면 command 창을 여러 개 띄워서 메뉴 창에서 원하는 번호를 선택하면 됩니다.
------------------------------
본 lib를 사용하면 websocket에 대한 내용은 모두 몰라도 되기 때문에 보다 쉽게 open api를 이용할 수 있을 것으로 예상됩니다.
다음에는 화면을 좀 더 잘 볼 수 있게 하는 방법과 실시간 시세 정보를 가공해서 보여주는 방법에 대하여 기술하도록 하겠습니다.
이런식으로 말이죠. 상승/하락시 색 변경, 체결 수량 10개 이상만 출력
-----------
소스코드는 아래 위치에 있습니다. 두 파일을 모두 다운받으세요.
https://github.com/multizone-quant/api_ex/blob/main/my_open_api_real.py
https://github.com/multizone-quant/api_ex/blob/main/open_api_real_lib.py
'이베스트 API xingAPI' 카테고리의 다른 글
[XingAPI] 파이썬과 OpenAPI로 실시간 TR 받기(1) (1) | 2024.02.29 |
---|---|
[XingAPI] 파이썬과 OpenAPI로 TR 만들어보기 (0) | 2024.02.02 |
[XingApi] OpenAPI로 선물 tick 데이터 down 받는 파이썬 소스코드 (0) | 2024.01.31 |
[Xing API] 연속 TR API 오류 (0) | 2024.01.31 |
[API] 일봉 데이터에서 수정주가 해석하기 (0) | 2023.08.11 |