This commit is contained in:
dsyoon
2023-10-12 22:59:30 +09:00
parent 4cd5487e6a
commit 9c6ab45d87
4 changed files with 55 additions and 53 deletions

View File

@@ -20,52 +20,52 @@ if __name__ == "__main__":
# KODEX 인버스 * 2 # KODEX 인버스 * 2
stocks = [ stocks = [
{"stock_code": "252670", "stock_name": "KODEX 200선물인버스2X", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "252670", "stock_name": "KODEX 200선물인버스2X", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "122630", "stock_name": "KODEX 레버리지", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "122630", "stock_name": "KODEX 레버리지", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "305720", "stock_name": "KODEX 2차전지산업", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "305720", "stock_name": "KODEX 2차전지산업", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "102780", "stock_name": "KODEX 삼성그룹", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "102780", "stock_name": "KODEX 삼성그룹", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "139260", "stock_name": "TIGER 200 IT", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "139260", "stock_name": "TIGER 200 IT", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "091180", "stock_name": "KODEX 자동차", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "091180", "stock_name": "KODEX 자동차", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "401470", "stock_name": "KODEX K-메타버스액티브", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "401470", "stock_name": "KODEX K-메타버스액티브", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "329200", "stock_name": "TIGER 리츠부동산인프라", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "329200", "stock_name": "TIGER 리츠부동산인프라", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "091170", "stock_name": "KODEX 은행", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "091170", "stock_name": "KODEX 은행", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "091160", "stock_name": "KODEX 반도체", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "091160", "stock_name": "KODEX 반도체", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "161510", "stock_name": "ARIRANG 고배당주", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "161510", "stock_name": "ARIRANG 고배당주", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "228800", "stock_name": "TIGER 여행레저", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "228800", "stock_name": "TIGER 여행레저", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "150460", "stock_name": "TIGER 중국소비테마", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "150460", "stock_name": "TIGER 중국소비테마", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "143860", "stock_name": "TIGER 헬스케어", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "143860", "stock_name": "TIGER 헬스케어", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "228810", "stock_name": "TIGER 미디어컨텐츠", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "228810", "stock_name": "TIGER 미디어컨텐츠", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "139220", "stock_name": "TIGER 200 건설", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "139220", "stock_name": "TIGER 200 건설", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "139280", "stock_name": "TIGER 경기방어", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "139280", "stock_name": "TIGER 경기방어", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "322400", "stock_name": "HANARO e커머스", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "322400", "stock_name": "HANARO e커머스", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "157490", "stock_name": "TIGER 소프트웨어", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "157490", "stock_name": "TIGER 소프트웨어", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "228790", "stock_name": "TIGER 화장품", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "228790", "stock_name": "TIGER 화장품", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "139230", "stock_name": "TIGER 200 중공업", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "139230", "stock_name": "TIGER 200 중공업", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "396500", "stock_name": "TIGER Fn반도체TOP10", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "396500", "stock_name": "TIGER Fn반도체TOP10", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "365000", "stock_name": "TIGER KRX인터넷K-뉴딜", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "365000", "stock_name": "TIGER KRX인터넷K-뉴딜", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "102970", "stock_name": "KODEX 증권", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "102970", "stock_name": "KODEX 증권", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "117680", "stock_name": "KODEX 철강", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "117680", "stock_name": "KODEX 철강", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "244580", "stock_name": "KODEX 바이오", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "244580", "stock_name": "KODEX 바이오", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "266360", "stock_name": "KODEX 미디어&엔터테인먼트", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "266360", "stock_name": "KODEX 미디어&엔터테인먼트", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "375770", "stock_name": "KODEX 탄소효율그린뉴딜", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "375770", "stock_name": "KODEX 탄소효율그린뉴딜", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "364990", "stock_name": "TIGER KRX게임K-뉴딜", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "364990", "stock_name": "TIGER KRX게임K-뉴딜", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "388420", "stock_name": "KBSTAR 비메모리반도체액티브", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "388420", "stock_name": "KBSTAR 비메모리반도체액티브", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "117460", "stock_name": "KODEX 에너지화학", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "117460", "stock_name": "KODEX 에너지화학", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "300950", "stock_name": "KODEX 게임산업", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "300950", "stock_name": "KODEX 게임산업", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "266410", "stock_name": "KODEX 필수소비재", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "266410", "stock_name": "KODEX 필수소비재", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "140700", "stock_name": "KODEX 보험", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "140700", "stock_name": "KODEX 보험", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "139270", "stock_name": "TIGER 200 금융", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "139270", "stock_name": "TIGER 200 금융", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "395160", "stock_name": "KODEX Fn시스템반도체", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "395160", "stock_name": "KODEX Fn시스템반도체", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "140710", "stock_name": "KODEX 운송", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "140710", "stock_name": "KODEX 운송", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "139240", "stock_name": "TIGER 200 철강소재", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "139240", "stock_name": "TIGER 200 철강소재", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "395150", "stock_name": "KODEX Fn웹툰&드라마", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "395150", "stock_name": "KODEX Fn웹툰&드라마", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "307510", "stock_name": "TIGER 의료기기", "start_date": datetime.strptime("20231010", '%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "307510", "stock_name": "TIGER 의료기기", "start_date": datetime.strptime("20231011", '%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "315270", "stock_name": "TIGER 200커뮤니케이션서비스", "start_date": datetime.strptime("20231010",'%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "315270", "stock_name": "TIGER 200커뮤니케이션서비스", "start_date": datetime.strptime("20231011",'%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "132030", "stock_name": "KODEX 골드선물(H)", "start_date": datetime.strptime("20231010",'%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "132030", "stock_name": "KODEX 골드선물(H)", "start_date": datetime.strptime("20231011",'%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "144600", "stock_name": "KODEX 은선물(H)", "start_date": datetime.strptime("20231010",'%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "144600", "stock_name": "KODEX 은선물(H)", "start_date": datetime.strptime("20231011",'%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "261220", "stock_name": "KODEX WTI원유선물(H)", "start_date": datetime.strptime("20231010",'%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "261220", "stock_name": "KODEX WTI원유선물(H)", "start_date": datetime.strptime("20231011",'%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "271050", "stock_name": "KODEX WTI원유선물인버스(H)", "start_date": datetime.strptime("20231010",'%Y%m%d'), "end_date": datetime.today()}, {"stock_code": "271050", "stock_name": "KODEX WTI원유선물인버스(H)", "start_date": datetime.strptime("20231011",'%Y%m%d'), "end_date": datetime.today()},
{"stock_code": "138910", "stock_name": "KODEX 구리선물(H)", "start_date": datetime.strptime("20231010",'%Y%m%d'), "end_date": datetime.today()} {"stock_code": "138910", "stock_name": "KODEX 구리선물(H)", "start_date": datetime.strptime("20231011",'%Y%m%d'), "end_date": datetime.today()}
] ]
hts = HTS_Downloader(RESOURCE_PATH) hts = HTS_Downloader(RESOURCE_PATH)
@@ -76,7 +76,7 @@ if __name__ == "__main__":
while True: while True:
print("insert...", stock["stock_code"], stock["stock_name"], this_day.strftime('%Y%m%d')) print("insert...", stock["stock_code"], stock["stock_name"], this_day.strftime('%Y%m%d'))
hts.insertStockData(stock, this_day) hts.insertStockData(this_day, stock["stock_code"], stock["stock_name"])
this_day = this_day + timedelta(days=1) this_day = this_day + timedelta(days=1)
if this_day > stock["end_date"]: if this_day > stock["end_date"]:
break break

View File

@@ -203,6 +203,7 @@ if __name__ == "__main__":
# KODEX 인버스 * 2 # KODEX 인버스 * 2
stock_code = "252670" stock_code = "252670"
stock_name = "KODEX 레버리지"
hts = HTS_etf(RESOURCE_PATH) hts = HTS_etf(RESOURCE_PATH)
hts.connect2DB("hts.db") hts.connect2DB("hts.db")
@@ -211,7 +212,7 @@ if __name__ == "__main__":
hts.buyRealTime(today_str, stock_code, analyzed_day=1000) hts.buyRealTime(today_str, stock_code, analyzed_day=1000)
db_filename = os.path.join(RESOURCE_PATH, "hts.db") db_filename = os.path.join(RESOURCE_PATH, "hts.db")
hts.insertStockData(stock_code, today) hts.insertStockData(today, stock_code, stock_name)
hts.disconnect() hts.disconnect()
print("done...") print("done...")

View File

@@ -204,6 +204,7 @@ if __name__ == "__main__":
# KODEX 인버스 * 2 # KODEX 인버스 * 2
stock_code = "252670" stock_code = "252670"
stock_name = "KODEX 200선물인버스2X"
hts = HTS_etf(RESOURCE_PATH) hts = HTS_etf(RESOURCE_PATH)
hts.connect2DB("hts.db") hts.connect2DB("hts.db")
@@ -212,7 +213,7 @@ if __name__ == "__main__":
hts.buyRealTime(today_str, stock_code, analyzed_day=1000) hts.buyRealTime(today_str, stock_code, analyzed_day=1000)
db_filename = os.path.join(RESOURCE_PATH, "hts.db") db_filename = os.path.join(RESOURCE_PATH, "hts.db")
hts.insertStockData(stock_code, today) hts.insertStockData(today, stock_code, stock_name)
hts.disconnect() hts.disconnect()
print("done...") print("done...")

View File

@@ -463,7 +463,7 @@ class HTS:
return data return data
def insertStockData(self, stock, this_day): def insertStockData(self, this_day, stock_code, stock_name=''):
# 테이블 생성 # 테이블 생성
self.cursor.execute("CREATE TABLE IF NOT EXISTS hts (CODE text, NAME text, ymd text, hms text, close REAL, open REAL, high REAL, low REAL, volume REAL, label INTEGER DEFAULT 0)") self.cursor.execute("CREATE TABLE IF NOT EXISTS hts (CODE text, NAME text, ymd text, hms text, close REAL, open REAL, high REAL, low REAL, volume REAL, label INTEGER DEFAULT 0)")
@@ -472,7 +472,7 @@ class HTS:
create_key = "CREATE INDEX IF NOT EXISTS hts_idx on hts(CODE, ymd, hms) " create_key = "CREATE INDEX IF NOT EXISTS hts_idx on hts(CODE, ymd, hms) "
self.cursor.execute(create_key) self.cursor.execute(create_key)
items = self.getStockInfo(stock["stock_code"], this_day.strftime('%Y%m%d')) items = self.getStockInfo(stock_code, this_day.strftime('%Y%m%d'))
for item in items: for item in items:
ymd = item[0] ymd = item[0]
@@ -483,8 +483,8 @@ class HTS:
close = item[5] close = item[5]
volume = item[6] volume = item[6]
self.cursor.execute('DELETE FROM hts WHERE CODE=? and ymd=? and hms=?', (stock["stock_code"], ymd, hms,)) self.cursor.execute('DELETE FROM hts WHERE CODE=? and ymd=? and hms=?', (stock_code, ymd, hms,))
self.cursor.execute("INSERT INTO hts (CODE, NAME, ymd, hms, close, open, high, low, volume) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)", (stock["stock_code"], stock["stock_name"], ymd, hms, close, open, high, low, volume)) self.cursor.execute("INSERT INTO hts (CODE, NAME, ymd, hms, close, open, high, low, volume) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)", (stock_code, stock_name, ymd, hms, close, open, high, low, volume))
self.conn.commit() self.conn.commit()
return return