카테고리 없음
주식 자동 매수 프로그램 만들기
BuRini*^a^*
2024. 9. 30. 12:30
반응형
파이썬을 사용하여 주식 자동 매수 프로그램을 만들려면, 몇 가지 주요 단계를 거쳐야 합니다. 기본적으로, 주식 데이터를 실시간으로 받아오고, 조건에 맞는 매수 주문을 실행하는 로직을 구현해야 합니다. 또한, 실제 거래를 위해 증권사의 API를 활용할 수 있습니다. 예시로는 키움증권의 OpenAPI를 많이 사용합니다.
필수 단계
- 증권사 API 설정: 증권사에서 제공하는 API를 사용해 로그인, 잔고 조회, 주문 실행 등을 처리합니다. 예시로 키움증권 OpenAPI를 사용한다면, 먼저 키움증권 API를 설치하고 연동을 해야 합니다.
- 주식 데이터 실시간 수집: 실시간 주식 데이터를 받아와야 합니다. 증권사 API 또는 yfinance 같은 라이브러리로 데이터를 수집할 수 있습니다.
- 조건 설정: 매수 기준을 설정합니다. 예를 들어, 특정 가격에 도달했을 때, 혹은 RSI 같은 기술적 지표를 기준으로 매수를 실행할 수 있습니다.
- 자동 매수 로직 구현: 데이터를 바탕으로 매수 주문을 실행하는 로직을 작성합니다.
간단한 예시 (키움 OpenAPI 기반)
python
코드 복사
import win32com.client import pythoncom import time class Kiwoom: def __init__(self): self.ocx = win32com.client.Dispatch("KHOPENAPI.KHOpenAPICtrl.1") self.ocx.OnEventConnect.connect(self._on_login) self.ocx.OnReceiveTrData.connect(self._on_receive_tr_data) def login(self): self.ocx.CommConnect() pythoncom.PumpWaitingMessages() def _on_login(self, err_code): if err_code == 0: print("로그인 성공") else: print("로그인 실패") def get_account_info(self): # 계좌 정보 가져오기 account_list = self.ocx.GetLoginInfo("ACCNO") print(f"계좌 번호: {account_list}") def send_order(self, code, qty, price, bstype): # 매수 주문: bstype이 1이면 매수, 2이면 매도 self.ocx.SendOrder("주문명", "화면번호", "계좌번호", bstype, code, qty, price, "00", "") print(f"{code} 종목 {qty}주 {bstype} 주문 실행") def _on_receive_tr_data(self, screen_no, rqname, trcode, recordname, next, unused1, unused2, unused3, unused4): # 실시간 데이터 처리 pass kiwoom = Kiwoom() kiwoom.login() time.sleep(1) kiwoom.get_account_info() kiwoom.send_order("005930", 10, 0, 1) # 삼성전자 10주 시장가 매수
설명:
- 키움 API 연동: win32com.client를 이용해 키움 OpenAPI를 제어합니다.
- 자동 매수 실행: send_order 함수에서 매수 주문을 실행합니다. bstype이 1이면 매수, 2이면 매도입니다.
- 실시간 데이터 수집: _on_receive_tr_data 함수는 실시간 데이터를 처리하는 콜백 함수입니다.
보완할 점
- API 연동을 위해 키움증권의 OpenAPI+를 사전에 설치하고 인증을 받아야 합니다.
- 매수 조건을 보다 정교하게 설정하려면 실시간 주가, 거래량, 기술적 지표 등을 분석하는 로직을 추가해야 합니다.
- 거래의 리스크를 관리하기 위한 전략(손절, 익절)을 포함할 수도 있습니다.
이 프로그램은 키움 API를 예시로 작성되었으나, 다른 증권사 API나 라이브러리를 사용해서 유사한 구조로 개발할 수 있습니다.
반응형