키움 자동매매(5)
-
[키움 API] OnReceiveChejan 이벤트 FID값 - 매도 주문
잔고에 신한지주가 52주 있는 상황 1) 신한지주 20주를 41000원에 매도 주문 접수 2) 1)의 주문을 전량(20주) 40900원으로 매도 정정 3) 2)의 주문을 전량(20주) 40600원으로 한번 더 매도 정정 4) 3)의 주문이 일부 매도 체결(1주, 미체결 19주) 5) 3)의 주문이 일부 매도 체결(2주, 미체결 17주) 3)의 주문이 일부 매도 체결(14주, 미체결 3주), 표에 없음 6) 3)의 주문이 전량 매도 체결(3주, 미체결 0주) 잔고에 남은 신한지주 32주 전량을 41000원에 매도 주문 접수, 표에 없음 7) 매도 주문 취소 잔고에 카카오페이가 2주 있는 상황 8) 카카오페이 2주를 시장가로 매도 주문 접수 9) 8)의 주문이 일부 매도 체결 (70700원에 1주 체결, 미..
2023.01.14 -
[키움 API] OnReceiveChejan 이벤트 FID값 - 매수 주문
1) 잔고에 삼성물산이 없는 상태에서 삼성물산 113000원에 10주 매수 주문 접수 2) 1)의 주문을 115000원으로 전량(10주) 매수 정정 주문 접수 3) 2)의 주문을 118000원으로 한번더 전량(10주) 매수 정정 주문 접수 4) 3)의 주문이 일부 체결됨 (6주 체결, 미체결 4주) 5) 3)의 주문이 일부 체결됨 (1주 체결, 미체결 3주) 6) 3)의 주문이 전량 체결됨 (3주 체결, 미체결 0주) 7) 잔고에 삼성물산이 10주가 있는 상태에서 삼성물산 시장가로 3주 매수 주문 접수 8) 7)의 주문이 전량 체결 삼성물산 5주 추가 주문, 표에는 없음 9) 5주 전량 취소 주문 접수
2023.01.13 -
실시간 거래 데이터 기록하기(결과)
keyframe = signed_at[:-1] + "0" if code not in self.minute_chart_data: self.minute_chart_data[code] = {} if keyframe not in self.minute_chart_data[code]: self.minute_chart_data[code][keyframe] = {"시가": close, "고가": close, "저가": close, "종가": close, "거래량": volume} else: if self.minute_chart_data[code][keyframe]["저가"] > close: self.minute_chart_data[code][keyframe]["저가"] = close if self.minute_char..
2022.12.24 -
실시간 거래 데이터 기록하기
실시간 체결 데이터에서 받아올 수 있는 정보. 이 중에서 분봉을 만들기 위해 필요한 것: 체결시간, 현재가, 거래량 분봉을 그릴 데이터를 모은다. 10초간 거래된 내용을 같은 열에 저장. 즉, 10초봉을 딕셔너리 형식으로 저장할 예정. pseudo 코드 받아온 거래량 데이터를 형변환 if 종목코드가 dict의 key에 없다면: { dict에 종목코드를 key로 추가 } if dict[종목코드][체결시간(분단위)]가 없다면: { 새로 key 추가 하면서 시가, 고가, 저가, 종가, 거래량의 데이터도 현재가로 집어넣기 } else: { 있던 key의 데이터와 현재가를 비교해서 시가는 절대 수정하지 않음 저가 > 현재가 이면 현재가로 수정 고가 < 현재가 이면 현재가로 수정 종가는 항상 현재가로 수정 거래량은..
2022.12.21 -
분봉과 거래량 기록하기
급등주를 따라가려면 분봉 데이터나 거래량이 필수 매분 or 매초 관심종목의 분봉데이터를 tr조회로 받는것은 너무 비효율적 그렇다면 실시간으로 수신받는 데이터를 이용해서 직접 데이터를 기록한다면 분봉보다 더 세밀한 단위의 차트도 그릴 수 있을거 같음(초봉..?) 지금은 실시간 데이터를 받아와서 (1) 딕셔너리 형태로 저장하고 (2) 당일 매수 종목에 대해 매수 이후 최고가 감시 2가지 작업을 하고 있음. 여기서 실시간 데이터를 시간대별로 데이터프레임으로 만드는 작업이 추가적으로 필요해보임. elif real_type == "주식체결": # get_fid()는 util.FIDconst에 있음. signed_at = self.ocx.dynamicCall("GetCommRealData(QString, int)"..
2022.12.21