Files
DeepCoin/downloader.py
dsyoon 2b4d0019ae init
2025-09-01 11:54:37 +09:00

77 lines
2.7 KiB
Python

import sqlite3
from config import *
from HTS2 import HTS
from monitor_coin import MonitorCoin
monitorCoin = MonitorCoin()
hts = HTS()
def inserData(symbol, interval, data):
conn = sqlite3.connect('coins.db')
cursor = conn.cursor()
tableName = "{}_{}".format(symbol, str(interval))
# 테이블/키 생성
cursor.execute("CREATE TABLE IF NOT EXISTS {} (CODE text, NAME text, ymdhms datetime, ymd text, hms text, Close REAL, Open REAL, High REAL, Low REAL, Volume REAL)".format(tableName))
cursor.execute("CREATE INDEX IF NOT EXISTS {}_idx on {}(CODE, ymdhms)".format(tableName, tableName))
for i in range(len(data)):
ymd = data.index[i].strftime('%Y%m%d')
hms = data.index[i].strftime('%H%M%S')
ymdhms = data.index[i].strftime('%Y-%m-%d %H:%M:%S')
Open = data.Open.iloc[i]
High = data.High.iloc[i]
Low = data.Low.iloc[i]
Close = data.Close.iloc[i]
Volume = data.Volume.iloc[i]
cursor.execute("SELECT * from {} where CODE = ? and ymdhms = ?".format(tableName), (symbol, ymdhms, ))
arr = cursor.fetchone()
if arr:
cursor.execute("UPDATE {} SET Close=?, Open=?, High=?, Low=?, Volume=? where CODE=? and ymdhms=?".format(tableName), (Close, Open, High, Low, Volume, symbol, ymdhms))
else:
cursor.execute("INSERT INTO {} (CODE, NAME, ymdhms, ymd, hms, Close, Open, High, Low, Volume) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)".format(tableName), (symbol, KR_COINS[symbol], ymdhms, ymd, hms, Close, Open, High, Low, Volume))
conn.commit()
cursor.close()
conn.close()
return
def download():
for symbol in KR_COINS:
print(symbol)
# 1일
interval = 1440
data = monitorCoin.get_coin_more_data(symbol, interval, bong_count=5000)
if data is not None and not data.empty:
try:
inserData(symbol, interval, data)
except Exception as e:
print(f"Error processing data for {symbol}: {str(e)}")
# 1시간
interval = 60
data = monitorCoin.get_coin_more_data(symbol, interval, bong_count=10000)
if data is not None and not data.empty:
try:
inserData(symbol, interval, data)
except Exception as e:
print(f"Error processing data for {symbol}: {str(e)}")
# 5분
interval = 5
data = monitorCoin.get_coin_more_data(symbol, interval, bong_count=10000)
if data is not None and not data.empty:
try:
inserData(symbol, interval, data)
except Exception as e:
print(f"Error processing data for {symbol}: {str(e)}")
return
if __name__ == "__main__":
download()