일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 티스토리
- idxmax
- 웹크롤링
- 금융결제원
- 필기
- Tistory
- line number
- idxmin
- Python
- freeze_support
- Windows
- pywinauto
- pycharm
- CSS
- 퀀트
- 진행 상황
- 파이썬
- highlight.js
- 우리FIS
- 구현
- 금결원
- DataFrame
- multiprocessing
- OpenAPI+
- HTML
- 멀티 로그인
- 하이라이트
- 의사 클래스
- QueueHandler
- 코드블럭
- Today
- Total
맨땅에 헤딩하는 사람
장전 시간외 거래에서 프로그램으로 빠르게 매수 주문 넣기 | python 본문
얼마 전 시간외 단일거래에서 상한가를 치거나, 장 시작 전 말도안되게 호재가 터진 기업의 주식들을 장전 시간외 거래로 매수 후 장이 시작했을 때 높은 가격에 팔면 좋을 것 같단 생각을 하게 되었다.
장전 시간외 거래의 경우 주문 체결 방식이 선착순 방식이다. 당연히 가격으로 체결 순위를 정할 수 없으니 시간으로 정할 수 밖에 없다. 손으로 하는 건 속도에 한계가 있으니 컴퓨터를 이용해 가장 빠른 시간에 주문을 넣어보자 생각했다. 예전에 작성했던 글을 참고하여 만들었다.
2020/05/09 - [파이썬/이론] - [Python] 수강신청, 티케팅, 서버 신호, 가장 정확한 시간에 신호보내기
서버 시간 동기화
먼저 datetime 모듈을 사용하기 때문에 내 PC의 시간을 한국거래서 서버의 시간과 동기화해주는 작업이 필요하다. 한국표준과학연구원 사이트에서 한국 표준 시 타임 서버의 도메인을 확인할 수 있다. (time.kriss.re.kr, time2.kriss.re.kr) 다만 증권 거래를 담당하는 한국 거래소 서버가 위 타임 서버의 시간을 사용하는 지에 대한 확증은 없다. 정황상 한국 거래소니까 한국 표준 시 타임 서버를 사용하겠지 하는 추정을 할 뿐이다. 서버 시간을 동기화 하는 과정은 간단하다.
- 윈도우 → 날짜 및 시간 설정 → 다른 시간대에 대한 시계 추가 클릭
- 인터넷 시간 탭 선택 후 설정 변경 클릭
- 인터넷 시간 서버와 동기화 옵션 선택 후 서버란에 해당 서버의 도메인 추가 후 확인
이와 같은 방법으로 손쉽게 서버 시간과 동기화를 해준다.
프로그램 코드
소스 코드는 다음과 같다.
import Kiwoom
import datetime
# you can choose stock and qty
code = '032190'
qty = 2141
app = Kiwoom.QApplication(Kiwoom.sys.argv)
kiwoom = Kiwoom.Kiwoom()
kiwoom.comm_connect()
acc_no = kiwoom.GetLoginInfo("ACCLIST").split(';')[0]
order_type = 'SELL'
deal_type = 'BEFORE_MARKET'
base_1 = datetime.datetime.now().replace(minute=30,second=0,microsecond=000000)
base_2 = datetime.datetime.now().replace(minute=29,second=59,microsecond=850000)
while True:
now = datetime.datetime.now()
if now >= base_1:
kiwoom.send_order(acc_no, order_type, code, qty, deal_type)
break
elif now >= base_2:
kiwoom.send_order(acc_no, order_type, code, qty, deal_type)
코드는 간단하다. 반복문으로 시간을 확인하며 8시 29분 59.85초에 장전시간외 거래로 매수 주문 신호를 보내고 8시 30분이 되면 빠져나온다. 내 경우 키움증권 'openAPI+'를 사용하여 주문 접수 등의 기능을 수행하는 모듈을 구현하였는데 구현한 모듈이 지저분하기도 하고 여러모로 부족한 부분이 많기 때문에 추후 보완되고 완성도가 높아지면 해당 코드 역시 공개할 생각이다.
코드 완성 후 직접 매수를 해본 후 효과가 없다 판단했는데 그 이유는 다음과 같다.
- 같은 생각을 하는 사람이 여럿 있어서 선점하기가 어렵다.
- 당일 폭등 조짐이 있는 주식은 장전 시간외에서 매도 물량이 안나온다.
1번의 경우 나보다 더 잘하는 사람들이 최적화한 주문을 송신하기 때문에 경쟁력이 밀리고 2번의 이유 때문에 쉽게 물량을 모으지도 못한다. 여러모로 부족한 전략이라 생각이 들고 다른 전략을 찾아봐야겠다.
+사족
실수로 글을 지워버려서 같은 글을 다시 작성하였다.... 처음 쓴 거보다 잘 써진 걸 위안삼는다..ㅠㅠ
'퀀트 > 구현' 카테고리의 다른 글
키움증권 Open API+ 구현 상 issue 해결 | python (0) | 2020.10.24 |
---|---|
키움증권 Open API+ 멀티 로그인 | python pywinauto (2) | 2020.08.23 |
WICS 섹터 기업 업종 json 포맷 웹크롤링 | python (2) | 2020.07.17 |
퀀트 주가 분석 및 자동매매 시스템 환경 구축 | python (1) | 2020.07.16 |
어닝 서프라이즈 특징주 예후 분석 | python (2) | 2020.07.11 |