init
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import re
|
||||
import os
|
||||
import time
|
||||
import math
|
||||
import psutil
|
||||
import sqlite3
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
@@ -55,7 +55,7 @@ class HTS_Stocks (HTS):
|
||||
self.conn_stock.close()
|
||||
return
|
||||
|
||||
def sellStocks(self, stock_code, golden=True):
|
||||
def sellStocks(self, stock_code=None):
|
||||
check = False
|
||||
jangoDic = self.requstJango()
|
||||
if jangoDic and len(jangoDic.keys()) > 0:
|
||||
@@ -63,16 +63,15 @@ class HTS_Stocks (HTS):
|
||||
if stock_code is not None:
|
||||
if code == "A" + stock_code:
|
||||
if jangoDic[code]['매도가능'] > 0:
|
||||
if golden:
|
||||
if 7.0 < jangoDic[code]['평가손익']:
|
||||
self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가'])
|
||||
self.bot.sendMsg("Profit {:.2f}, {} ({})".format(jangoDic[code]['평가손익'], stock_code, stock_name))
|
||||
check = True
|
||||
else:
|
||||
if 1.0 < jangoDic[code]['평가손익']:
|
||||
self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가'])
|
||||
self.bot.sendMsg("Profit {:.2f}, {} ({})".format(jangoDic[code]['평가손익'], stock_code, stock_name))
|
||||
check = True
|
||||
if 3.0 < jangoDic[code]['평가손익']:
|
||||
self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가'])
|
||||
self.bot.sendMsg("Profit {:.2f}, {} ({})".format(jangoDic[code]['평가손익'], stock_code, ''))
|
||||
check = True
|
||||
else:
|
||||
if 10.0 < jangoDic[code]['평가손익']:
|
||||
self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가'])
|
||||
self.bot.sendMsg("Profit {:.2f}, {} ({})".format(jangoDic[code]['평가손익'], stock_code, ''))
|
||||
check = True
|
||||
return check
|
||||
|
||||
def buyRealTime(self, today, n = 200):
|
||||
@@ -80,15 +79,16 @@ class HTS_Stocks (HTS):
|
||||
THIS_TIME = datetime.now()
|
||||
|
||||
today_stock = self.get_today_stock()
|
||||
if len(today_stock) < 1:
|
||||
return
|
||||
|
||||
while datetime.strptime(today + " 070000", '%Y%m%d %H%M%S') < THIS_TIME < datetime.strptime(today + " 153100", '%Y%m%d %H%M%S'):
|
||||
|
||||
# 1515 까지만 매수를 시도한다.
|
||||
if datetime.strptime(today + " 090000", '%Y%m%d %H%M%S') < THIS_TIME < datetime.strptime(today + " 151500", '%Y%m%d %H%M%S'):
|
||||
if datetime.strptime(today + " 080000", '%Y%m%d %H%M%S') < THIS_TIME < datetime.strptime(today + " 151500", '%Y%m%d %H%M%S'):
|
||||
|
||||
self.sellStocks()
|
||||
|
||||
if len(today_stock) < 1:
|
||||
time.sleep(3600)
|
||||
return
|
||||
|
||||
buy_stock = []
|
||||
@@ -101,35 +101,43 @@ class HTS_Stocks (HTS):
|
||||
self.getRealTime_DailyCheck(today, stock_code, stock)
|
||||
data = self.stockStatus.analyze(stock, self.analyzed_day)
|
||||
|
||||
# 매수
|
||||
if data['avg60'] < data['avg20'] < data['avg5']:
|
||||
bs_buy_price = data["close"][-1]
|
||||
|
||||
buy_count = int(150000 / bs_buy_price)
|
||||
|
||||
# 매수를 주문한다.
|
||||
orderNum = self.requestOrder(OrderType.buy, stock_code, buy_count, bs_buy_price)
|
||||
self.orderChecker.buy(today, "A" + stock_code, buy_count, bs_buy_price, orderNum)
|
||||
|
||||
# bot에 메시지를 보냄
|
||||
self.bot.post(stock_code, '', "BUY", bs_buy_price, buy_count)
|
||||
|
||||
buy_stock.append( stock_code )
|
||||
|
||||
# 로그 출력
|
||||
print("BUY", THIS_TIME.strftime('%Y%m%d %H%M%S'), orderNum, stock_code, '', bs_buy_price, buy_count)
|
||||
|
||||
# 매도
|
||||
if not data['avg60'] < data['avg20'] < data['avg5']:
|
||||
self.sellStocks(stock_code, True)
|
||||
if not data['avg60'][-1] < data['avg20'][-1] < data['avg5'][-1]:
|
||||
self.sellStocks(stock_code)
|
||||
|
||||
# 매수
|
||||
bs_buy_price = data["close"][-1]
|
||||
|
||||
if 150000 < bs_buy_price:
|
||||
buy_count = 1
|
||||
else:
|
||||
self.sellStocks(stock_code, False)
|
||||
buy_count = 150000 // bs_buy_price
|
||||
|
||||
# 매수를 주문한다.
|
||||
orderNum = self.requestOrder(OrderType.buy, stock_code, buy_count, bs_buy_price)
|
||||
self.orderChecker.buy(today, "A" + stock_code, buy_count, bs_buy_price, orderNum)
|
||||
|
||||
# bot에 메시지를 보냄
|
||||
self.bot.sendMsg('BUY {} {} ({})'.format(stock_code, bs_buy_price, buy_count))
|
||||
|
||||
buy_stock.append( stock_code )
|
||||
|
||||
# 로그 출력
|
||||
print("BUY", THIS_TIME.strftime('%Y%m%d %H%M%S'), orderNum, stock_code, '', bs_buy_price, buy_count)
|
||||
|
||||
# 매수 후 제거
|
||||
for stock_code in buy_stock:
|
||||
today_stock.remove(stock_code)
|
||||
|
||||
time.sleep(3600)
|
||||
if int(THIS_TIME.strftime("%M")) in (10, 40):
|
||||
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(600)
|
||||
THIS_TIME = datetime.now()
|
||||
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user