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...") close_data = {} INIT = True 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'], BUY_LIST[stock['stock_code']]['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']) close_data[stock['stock_code']] = data['close'][-1] if INIT: hts.bot.sendMsg("Alive... close: {}".format(str(close_data))) INIT = False if int(THIS_TIME.strftime("%M")) % 50 == 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... close: {}, mem: {:.1f}".format(str(close_data), 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.disconnect() hts.bot.sendMsg("done...") print("done...")