init
This commit is contained in:
43
HTS_etf.py
43
HTS_etf.py
@@ -23,8 +23,6 @@ from hts.BuySellChecker import BuySellChecker
|
|||||||
class HTS_etf(HTS):
|
class HTS_etf(HTS):
|
||||||
RESOURCE_PATH = None
|
RESOURCE_PATH = None
|
||||||
SELL_GAP = None
|
SELL_GAP = None
|
||||||
stock_code = None
|
|
||||||
stock_name = None
|
|
||||||
buy_count = None
|
buy_count = None
|
||||||
orderChecker = None
|
orderChecker = None
|
||||||
buySellChecker = None
|
buySellChecker = None
|
||||||
@@ -43,7 +41,6 @@ class HTS_etf(HTS):
|
|||||||
|
|
||||||
self.RESOURCE_PATH = RESOURCE_PATH
|
self.RESOURCE_PATH = RESOURCE_PATH
|
||||||
|
|
||||||
self.orderChecker = OrderChecker(self.RESOURCE_PATH, self.stock_code)
|
|
||||||
self.bot = TelegramBot()
|
self.bot = TelegramBot()
|
||||||
self.stockStatus = StockStatus(RESOURCE_PATH)
|
self.stockStatus = StockStatus(RESOURCE_PATH)
|
||||||
|
|
||||||
@@ -53,7 +50,7 @@ class HTS_etf(HTS):
|
|||||||
self.macd = MACD()
|
self.macd = MACD()
|
||||||
self.ichimokuCloud = IchimokuCloud()
|
self.ichimokuCloud = IchimokuCloud()
|
||||||
|
|
||||||
self.buySellChecker = BuySellChecker(self.RESOURCE_PATH, self.stock_code)
|
self.buySellChecker = BuySellChecker(self.RESOURCE_PATH)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -84,14 +81,14 @@ class HTS_etf(HTS):
|
|||||||
check = True
|
check = True
|
||||||
else:
|
else:
|
||||||
if jangoDic[code]['매도가능'] > 0:
|
if jangoDic[code]['매도가능'] > 0:
|
||||||
#if jangoDic[code]['평가손익'] < -0.6 or 1.0 < jangoDic[code]['평가손익']:
|
if jangoDic[code]['평가손익'] < -0.6 or 2.0 < jangoDic[code]['평가손익']:
|
||||||
if sell_count == 0:
|
if sell_count == 0:
|
||||||
self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가'])
|
self.requestOrder(OrderType.sell, code[1:], jangoDic[code]['매도가능'], jangoDic[code]['현재가'])
|
||||||
else:
|
else:
|
||||||
self.requestOrder(OrderType.sell, code[1:], sell_count, jangoDic[code]['현재가'])
|
self.requestOrder(OrderType.sell, code[1:], sell_count, jangoDic[code]['현재가'])
|
||||||
self.bot.sendMsg("Profit {:.2f}, {} ({})".format(jangoDic[code]['평가손익'], stock_code, stock_name))
|
self.bot.sendMsg("Profit {:.2f}, {} ({})".format(jangoDic[code]['평가손익'], stock_code, stock_name))
|
||||||
check = True
|
check = True
|
||||||
else:
|
else:
|
||||||
if jangoDic[code]['매도가능'] > 0:
|
if jangoDic[code]['매도가능'] > 0:
|
||||||
#if jangoDic[code]['평가손익'] < -0.6 or 1.0 < jangoDic[code]['평가손익']:
|
#if jangoDic[code]['평가손익'] < -0.6 or 1.0 < jangoDic[code]['평가손익']:
|
||||||
if sell_count == 0:
|
if sell_count == 0:
|
||||||
@@ -441,11 +438,13 @@ class HTS_etf(HTS):
|
|||||||
|
|
||||||
def buyRealTime(self, stock, data, data_signal, MAX_BUY_PRICE, BUY_LIST):
|
def buyRealTime(self, stock, data, data_signal, MAX_BUY_PRICE, BUY_LIST):
|
||||||
|
|
||||||
|
self.orderChecker = OrderChecker(self.RESOURCE_PATH, stock['stock_code'])
|
||||||
|
|
||||||
# 매도를 체크한다.
|
# 매도를 체크한다.
|
||||||
check = self.sellStocks(stock_code=self.stock_code)
|
check = self.sellStocks(stock_code=stock['stock_code'], stock_name=stock['stock_name'])
|
||||||
|
|
||||||
# jangoDic[code]['장부가'], jangoDic[code]['평가금액'], jangoDic[code]['평가손익'],
|
# jangoDic[code]['장부가'], jangoDic[code]['평가금액'], jangoDic[code]['평가손익'],
|
||||||
buy_avg, amount, profit = self.getBallance(self.stock_code)
|
buy_avg, amount, profit = self.getBallance(stock['stock_code'])
|
||||||
if check or buy_avg == 0:
|
if check or buy_avg == 0:
|
||||||
BUY_LIST['buy_avg'] = 0
|
BUY_LIST['buy_avg'] = 0
|
||||||
BUY_LIST['buy_count'] = 0
|
BUY_LIST['buy_count'] = 0
|
||||||
@@ -454,33 +453,33 @@ class HTS_etf(HTS):
|
|||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
|
|
||||||
# 사야 할 시점과 팔아야 할 시점을 체크한다.
|
# 사야 할 시점과 팔아야 할 시점을 체크한다.
|
||||||
bsLine1 = self.buySellChecker.checkTransaction1(self.stock_code, MAX_BUY_PRICE, data, data_signal, BUY_LIST, isRealTime=True)
|
bsLine1 = self.buySellChecker.checkTransaction1(stock['stock_code'], MAX_BUY_PRICE, data, data_signal, BUY_LIST, isRealTime=True)
|
||||||
|
|
||||||
if 'sell_price' in bsLine1:
|
if 'sell_price' in bsLine1:
|
||||||
sell_price = bsLine1['sell_price'][-1]
|
sell_price = bsLine1['sell_price'][-1]
|
||||||
sell_count = bsLine1['sell_count'][-1]
|
sell_count = bsLine1['sell_count'][-1]
|
||||||
sell_type = bsLine1['sell_type'][-1]
|
sell_type = bsLine1['sell_type'][-1]
|
||||||
if 0 < sell_price:
|
if 0 < sell_price:
|
||||||
check = self.sellStocks(stock_code=self.stock_code, bs_sell_price=sell_price)
|
check = self.sellStocks(stock_code=stock['stock_code'], stock_name=stock['stock_name'], bs_sell_price=sell_price)
|
||||||
if check:
|
if check:
|
||||||
self.orderChecker.sell(datetime.today().strftime('%Y%m%d'), self.stock_code)
|
self.orderChecker.sell(datetime.today().strftime('%Y%m%d'), stock['stock_code'])
|
||||||
BUY_LIST['buy_avg'] = 0
|
BUY_LIST['buy_avg'] = 0
|
||||||
BUY_LIST['buy_count'] = 0
|
BUY_LIST['buy_count'] = 0
|
||||||
BUY_LIST['buy_list'].clear()
|
BUY_LIST['buy_list'].clear()
|
||||||
self.bot.sendMsg("Profit {:.2f}, {} ({})".format(profit, self.stock_code, self.stock_name))
|
self.bot.sendMsg("Profit {:.2f}, {} ({})".format(profit, stock['stock_code'], stock['stock_name']))
|
||||||
|
|
||||||
if 'buy_price' in bsLine1:
|
if 'buy_price' in bsLine1:
|
||||||
buy_price = bsLine1['buy_price'][-1]
|
buy_price = bsLine1['buy_price'][-1]
|
||||||
buy_count = int(bsLine1['buy_count'][-1])
|
buy_count = int(bsLine1['buy_count'][-1])
|
||||||
if buy_price > 0:
|
if buy_price > 0:
|
||||||
# 매수를 요청 한다.
|
# 매수를 요청 한다.
|
||||||
orderNum = self.requestOrder(OrderType.buy, self.stock_code, buy_count, buy_price)
|
orderNum = self.requestOrder(OrderType.buy, stock['stock_code'], buy_count, buy_price)
|
||||||
self.orderChecker.buy(datetime.today().strftime('%Y%m%d'), "A" + self.stock_code, buy_count, buy_price, orderNum)
|
self.orderChecker.buy(datetime.today().strftime('%Y%m%d'), "A" + stock['stock_code'], buy_count, buy_price, orderNum)
|
||||||
self.bot.post(self.stock_code, self.stock_name, "[BUY] ", buy_price, buy_count, data['rsi'][-1], -1)
|
self.bot.post(stock['stock_code'], stock['stock_name'], "[BUY] ", buy_price, buy_count, data['rsi'][-1], -1)
|
||||||
|
|
||||||
# 미체결 기록을 가져와서 10분 이상 된 매수 주문을 취소 한다.
|
# 미체결 기록을 가져와서 10분 이상 된 매수 주문을 취소 한다.
|
||||||
ORDER_LIST = self.requestOrderList()
|
ORDER_LIST = self.requestOrderList()
|
||||||
orderListToCancel = self.orderChecker.cancel(datetime.today().strftime('%Y%m%d'), "A" + self.stock_code, ORDER_LIST, mins=3)
|
orderListToCancel = self.orderChecker.cancel(datetime.today().strftime('%Y%m%d'), "A" + stock['stock_code'], ORDER_LIST, mins=3)
|
||||||
if len(orderListToCancel) > 0:
|
if len(orderListToCancel) > 0:
|
||||||
self.cancelOrderList(orderListToCancel)
|
self.cancelOrderList(orderListToCancel)
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class BuySellChecker():
|
|||||||
PATTERNS = None
|
PATTERNS = None
|
||||||
RESOURCE_PATH = None
|
RESOURCE_PATH = None
|
||||||
|
|
||||||
def __init__(self, RESOURCE_PATH, s):
|
def __init__(self, RESOURCE_PATH):
|
||||||
self.RESOURCE_PATH = RESOURCE_PATH
|
self.RESOURCE_PATH = RESOURCE_PATH
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user