이전에 heyman 님이 올려주신 코드가 첫날에 잘 동작하다가 다음날부터 잘 동작하지 않아서 어쩔 수 없이 수정함ㅠㅠㅠ
(계좌 등급에 따라서 요청할 수 있는 데이터의 양이 제한된다던가;; 하는 문제가 있었음 )
import win32com.client
import unittest
import sqlite3
import datetime
from pandas import Series, DataFrame
instStockChart = win32com.client.Dispatch("CpSysDib.StockChart")
CpCodeMgr = win32com.client.Dispatch("CpUtil.CpCodeMgr")
class getPriceInfo:
def __init__(self):
pass
self.getCodes()
def getCodes(self):
kospi = CpCodeMgr.GetStockListByMarket(1) # 코스피
kosdaq = CpCodeMgr.GetStockListByMarket(2) # 코스닥
self.code_list = list(kosdaq+kosdaq) #종목 리스트로 합침
def getPrcInfo(self,paramCodes):
fromDate = CpCodeMgr.GetStockListedDate(paramCodes)
instStockChart.SetInputValue(0, paramCodes)
instStockChart.SetInputValue(1, ord('2'))
instStockChart.SetInputValue(4, 2500) # From 날짜
instStockChart.SetInputValue(5, [0, 2, 3, 4, 5, 8]) # 절대 소문자로 적으면 안됨.
instStockChart.SetInputValue(6, ord('D'))
instStockChart.SetInputValue(9, ord('1'))
instStockChart.BlockRequest()
self.numData = instStockChart.GetHeaderValue(3)
print("상장일 :%s" % fromDate)
data={}
data['Date']=[instStockChart.GetDataValue(0,i) for i in range(self.numData)]
data['Open']=[instStockChart.GetDataValue(1,i) for i in range(self.numData)]
data['High']=[instStockChart.GetDataValue(2,i) for i in range(self.numData)]
data['Low']=[instStockChart.GetDataValue(3,i) for i in range(self.numData)]
data['Close']=[instStockChart.GetDataValue(4,i) for i in range(self.numData)]
data['Volume']=[instStockChart.GetDataValue(5,i) for i in range(self.numData)]
newData=DataFrame(data,columns=["Date","Open","High","Low","Close","Volume"])
return newData
def start(self):
count=1
con = sqlite3.connect('code.db')
for eachCode in self.code_list:
prcInfo=self.getPrcInfo(eachCode)
# 'fail', 'replace', 'append' 중 하나 사용
prcInfo.to_sql(eachCode, con, if_exists='replace',index=None)
print("[%s / %s] %s 수집 완료" %(count, len(self.code_list), eachCode))
count+=1
if __name__=="__main__":
prcObj=getPriceInfo()
prcObj.start()
'포트폴리오 > api' 카테고리의 다른 글
mpl_finance 에서 candlestick_ohlc 사용하기. (0) | 2019.01.02 |
---|---|
pandas Series,DataFrame 기본 (0) | 2018.12.24 |