Files
DeepStock/HTS_etf_all.py
dsyoon 75b41ab2eb init
2023-12-20 13:42:17 +09:00

74 lines
3.2 KiB
Python

import os
import json
import time
import psutil
from datetime import datetime
from HTS_etf import HTS_etf
if __name__ == "__main__":
PROJECT_HOME = os.getcwd()
RESOURCE_PATH = os.path.join(PROJECT_HOME, "resources")
stocks = [
{'stock_code': '122630', 'stock_name': 'KODEX 레버리지'},
{'stock_code': '233740', 'stock_name': 'KODEX 코스닥150레버리지'},
{'stock_code': '251340', 'stock_name': 'KODEX 코스닥150선물인버스'},
{'stock_code': '252670', 'stock_name': 'KODEX 200선물인버스2X'}
]
hts = HTS_etf(RESOURCE_PATH)
hts.connect2DB("hts.db")
today = datetime.today().strftime('%Y%m%d')
if not os.path.exists(os.path.join(RESOURCE_PATH, "log")):
os.mkdir(os.path.join(RESOURCE_PATH, "log"))
BUY_LIST = {}
for stock in stocks:
with open("config.json", "r", encoding="utf-8") as f:
config = json.load(f)
if stock['stock_code'] not in BUY_LIST:
BUY_LIST[stock['stock_code']] = {}
BUY_LIST[stock['stock_code']]['MAX_BUY_PRICE'] = config['MAX_BUY_PRICE']
BUY_LIST[stock['stock_code']]['BUY_LIST_1'] = config['BUY_LIST_1']
BUY_LIST[stock['stock_code']]['BUY_LIST_1']["disparity"] = hts.getDisparityLimit(stock)
print("START...")
while datetime.strptime(today + " 060000", '%Y%m%d %H%M%S') < datetime.now() < datetime.strptime(today + " 153100", '%Y%m%d %H%M%S'):
if datetime.strptime(today + " 090000", '%Y%m%d %H%M%S') < datetime.now() < datetime.strptime(today + " 151500", '%Y%m%d %H%M%S'):
THIS_TIME = datetime.now()
for stock in stocks:
if datetime.strptime(today + " 090000", '%Y%m%d %H%M%S') < datetime.now() < datetime.strptime(today + " 090100", '%Y%m%d %H%M%S'):
hts.bot.sendMsg("START... {} ({}) SLOW_K: {}".format(stock['stock_code'], stock['stock_name'], MAX_BUY_PRICE))
LAST_DATA = hts.getLastData(stock['stock_code'], today)
result_m1 = hts.getRealTime(stock['stock_code'], today, LAST_DATA)
result_tic_m1 = hts.makeTickData1(result_m1, mins=1)
data = hts.analyze(result_tic_m1)
result_tic_m30 = hts.makeTickData2(result_tic_m1, mins=30)
data_signal = hts.analyze(result_tic_m30)
# data.drop(data.index[:len(data) - analyzed_day], inplace=True)
hts.buyRealTime(stock, data, data_signal, BUY_LIST[stock['stock_code']]['MAX_BUY_PRICE'], BUY_LIST[stock['stock_code']]['BUY_LIST_1'])
if (int(THIS_TIME.strftime("%M")) % 50 == 0 or int(THIS_TIME.strftime("%M")) % 20 == 0):
vm = psutil.virtual_memory()
vm_item = dict()
vm_item['free'] = vm.available // (1024 * 1024)
vm_item['idle'] = vm.available / vm.total * 100
hts.bot.sendMsg("Alive... mem: {:.1f}".format(vm_item['idle']))
time.sleep(60)
db_filename = os.path.join(RESOURCE_PATH, "hts.db")
for stock in stocks:
hts.insertStockData(today, stock['stock_code'], stock['stock_name'])
hts.bot.sendMsg("done... {} ({})".format(stock['stock_code'], stock['stock_name']))
hts.disconnect()
print("done...")