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