73 lines
3.1 KiB
Python
73 lines
3.1 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']] = {}
|
|
|
|
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, 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.disconnect()
|
|
|
|
hts.bot.sendMsg("done...")
|
|
print("done...") |