앞서 데이터를 가지고 오는 소스를 보시면,
한국 주식시장에 상장된 전 종목에 대한 데이터를 갖고 오게 됩니다.
그런데 이 데이터를 웹브라우저를 사용해서 갖고오기 때문에 (이를 크롤러라고 합니다)
1종목의 100여 페이지 (1페이지당 10개 x 100 => 1000 일봉 (HTS 등에선 한번에 900봉씩 가지고 옵니다))
의 데이터 갖고오는데 1,2 분정도 걸립니다.
한국 주식 종목의 수가 약 2300개쯤 되는데 1종목에 1,2분이면
60분 * 24시간 = 1440분 / 2 = 720개 ~ 1000개 종목을 갖고오게 됩니다.
물론 이걸 주말이든 해서 다 가져와도 상관없지만...
필요없는 데이터는 추리고 의미 있는 (거래량 많은 변동성 좋은) 종목으로 하는것이 시스템 매매에 좋습니다.
그래서 여기서는 몇몇 대중적인 (주관적으로) 주식 데이터를 긁어볼려고 합니다.
물론 다 text 파일에 종목을 긁어 놓을꺼니까, text 파일만 수정하면 원하시는 종목을 더 갖고오게 됩니다.
아래와 같은 targetList.txt 파일을 만들어 줍니다.
아래와 같이 main.py에 targetList를 읽어 주고,
크롤링 하기전에 targetList에 있는 종목인지 확인하는 코드를 넣어 줍니다.
# 필요한 모듈 설치
# pip install pandas
# pip install pandas-datareader
# pip install dataframe
import pandas as pd
import dataframe
import sqlite3
import datetime
import WebStockDataGetter
import SqliteStockDB
# 메인 함수 시작
if __name__ == '__main__':
# 설정파일. 웹페이지의 1페이지당 10일치 데이터가 있는데, 몇개 웹페이지를 긁을지 설정
f = open("./config.txt", 'r')
if f.readable == False:
print("! have not config file.")
exit
maxGetPage = f.readline().strip()
f.close()
# 타켓 종목만 고르기
f = open("./targetList.txt", "r", encoding="utf-8")
targetList = f.read().splitlines()
f.close()
# 네이버 데이터 크롤러
getter = WebStockDataGetter.naverGetter()
stockDf = getter.getKoreaStocks()
# Sqlite에 데이터 저장
dayPriceDB = SqliteStockDB.dayPriceDB('KoreaStockData.db')
totalCount = len(stockDf)
# 주식의 일자데이터 url 가져오기
for idxi, rowCode in stockDf.iterrows():
code = rowCode['code']
name = rowCode['name']
if name in targetList:
print(name)
else:
continue
# DB에 데이터가 없으면 테이블을 만듬
tableName = dayPriceDB.tableName(code)
if dayPriceDB.checkTable(tableName) == False:
dayPriceDB.createTable(tableName)
# 크롤러에게 code 넘기고 넷 데이터 긁어오기
df = getter.getAllStockDays(code, maxGetPage)
data = pd.DataFrame(df, columns=['날짜', '시가', '고가', '저가', '종가', '거래량'])
# 데이터 저장
dayPriceDB.save(tableName, data)
log = "====== 주식 일봉 데이터 [%s] 저장 완료 (%d/%d) =====" % (name, idxi, totalCount)
print(log)
'재테크' 카테고리의 다른 글
집에서 비트코인이나 도지코인 채굴 하기 (0) | 2021.04.19 |
---|---|
TaLib 사용해서 여러 보조 지표 계산하기 (0) | 2020.01.04 |
파이썬으로 네이버 주식의 데이터 긁어 오기 (0) | 2019.12.15 |
시스템 트레이딩을 하기 위해 필요한 것들 (0) | 2019.12.15 |
시스템 트레이딩 시작하며 (0) | 2019.12.15 |