This commit is contained in:
dsyoon
2023-01-27 21:33:15 +09:00
parent b1f3baa536
commit b27d436f36
3 changed files with 26 additions and 1 deletions

View File

@@ -17,6 +17,7 @@ from sklearn.preprocessing import StandardScaler, MinMaxScaler
from stock.analysis.AnalyzerSqlite import AnalyzerSqlite from stock.analysis.AnalyzerSqlite import AnalyzerSqlite
from hts.BuySellChecker import BuySellChecker from hts.BuySellChecker import BuySellChecker
from hts.HTS import HTS from hts.HTS import HTS
from stock.util.SlackBot import SlackBot
class Bithumb_minute(HTS): class Bithumb_minute(HTS):
@@ -27,9 +28,14 @@ class Bithumb_minute(HTS):
binance = None binance = None
TODAY = None TODAY = None
MAX_BUY_PRICE = None MAX_BUY_PRICE = None
slackBot = None
stock_code = None
def __init__(self, RESOURCE_PATH, today): def __init__(self, RESOURCE_PATH, today):
super().__init__(RESOURCE_PATH) super().__init__(RESOURCE_PATH)
self.slackBot = SlackBot()
self.stock_code = {"XRP": "리플"}
self.RESOURCE_PATH = RESOURCE_PATH self.RESOURCE_PATH = RESOURCE_PATH
con_key = "946dd0b0e6f8ad411144cd33f09518d3" # 본인의 Connect Key를 입력한다. con_key = "946dd0b0e6f8ad411144cd33f09518d3" # 본인의 Connect Key를 입력한다.
@@ -527,6 +533,8 @@ class Bithumb_minute(HTS):
for i in range(len(df)): for i in range(len(df)):
order = (df['order0'][i], df['order1'][i], df['order2'][i], df['order3'][i]) order = (df['order0'][i], df['order1'][i], df['order2'][i], df['order3'][i])
cancel = self.bithumb.cancel_order(order) cancel = self.bithumb.cancel_order(order)
# slackbot에 메시지를 보냄
self.slackBot.post_to_slack(ticker, self.stock_code[ticker], "CANCEL", -1, -1)
log_df = log_df.loc[(log_df.index > now)] log_df = log_df.loc[(log_df.index > now)]
if len(log_df) == 0: if len(log_df) == 0:
@@ -628,7 +636,12 @@ class Bithumb_minute(HTS):
balance = tmp[2] balance = tmp[2]
#count = round((balance * (bsLine['buy_weight'][len(bsLine['buy_weight']) - 1] / 100)) / bsLine['buy'][len(bsLine['buy']) - 1], 2) #count = round((balance * (bsLine['buy_weight'][len(bsLine['buy_weight']) - 1] / 100)) / bsLine['buy'][len(bsLine['buy']) - 1], 2)
count = round(self.MAX_BUY_PRICE / bsLine['buy'][len(bsLine['buy']) - 1], 2) count = round(self.MAX_BUY_PRICE / bsLine['buy'][len(bsLine['buy']) - 1], 2)
# 매수를 요청한다.
order = self.bithumb.buy_limit_order(ticker, bsLine['buy'][len(bsLine['buy']) - 1], count) order = self.bithumb.buy_limit_order(ticker, bsLine['buy'][len(bsLine['buy']) - 1], count)
# slackbot에 메시지를 보냄
self.slackBot.post_to_slack(ticker, self.stock_code[ticker], "BUY", bsLine['buy'][len(bsLine['buy']) - 1], count)
# order: ('bid', 'BTC', 'C0101000000322993432', 'KRW') # order: ('bid', 'BTC', 'C0101000000322993432', 'KRW')
if len(stock1['close']) > 0: if len(stock1['close']) > 0:
print(ticker, "/", datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "/", stock1['close'][len(stock1['close']) - 1], "/ BUY / ", stock2['slow_k'][len(stock2['slow_k']) - 1], "/", stock1['slow_k'][len(stock1['slow_k']) - 1], "/", bsLine['buy'][len(bsLine['buy']) - 1], "/", count) print(ticker, "/", datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "/", stock1['close'][len(stock1['close']) - 1], "/ BUY / ", stock2['slow_k'][len(stock2['slow_k']) - 1], "/", stock1['slow_k'][len(stock1['slow_k']) - 1], "/", bsLine['buy'][len(bsLine['buy']) - 1], "/", count)
@@ -663,7 +676,12 @@ class Bithumb_minute(HTS):
if tmp is None: if tmp is None:
return return
count = tmp[0] count = tmp[0]
# 매도를 요청한다.
order = self.bithumb.sell_limit_order(ticker, bsLine['sell'][len(bsLine['sell'])-1], count) order = self.bithumb.sell_limit_order(ticker, bsLine['sell'][len(bsLine['sell'])-1], count)
# slackbot에 메시지를 보냄
self.slackBot.post_to_slack(ticker, self.stock_code[ticker], "SELL", bsLine['sell'][len(bsLine['sell']) - 1], count)
if len(order) > 2 and len(stock1['close'])>0: if len(order) > 2 and len(stock1['close'])>0:
print(ticker, "/", datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "/", stock1['close'][len(stock1['close']) - 1], "/ SELL / ", stock2['slow_k'][len(stock2['slow_k']) - 1], "/", stock1['slow_k'][len(stock1['slow_k']) - 1], "/", bsLine['sell'][len(bsLine['sell']) - 1], "/", count) print(ticker, "/", datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "/", stock1['close'][len(stock1['close']) - 1], "/ SELL / ", stock2['slow_k'][len(stock2['slow_k']) - 1], "/", stock1['slow_k'][len(stock1['slow_k']) - 1], "/", bsLine['sell'][len(bsLine['sell']) - 1], "/", count)
value = {"type": "SELL","order0": order[0], "order1": order[1], "order2": order[2], "order3": order[3], "slow_k_30": stock2['slow_k'][len(stock2['slow_k']) - 1], "slow_k_5": stock1['slow_k'][len(stock1['slow_k']) - 1], "price": bsLine['sell'][len(bsLine['sell']) - 1], "count": count} value = {"type": "SELL","order0": order[0], "order1": order[1], "order2": order[2], "order3": order[3], "slow_k_30": stock2['slow_k'][len(stock2['slow_k']) - 1], "slow_k_5": stock1['slow_k'][len(stock1['slow_k']) - 1], "price": bsLine['sell'][len(bsLine['sell']) - 1], "count": count}

View File

@@ -9,6 +9,7 @@ from hts.OrderType import OrderType
from hts.BuySellChecker import BuySellChecker from hts.BuySellChecker import BuySellChecker
from hts.OrderChecker import OrderChecker from hts.OrderChecker import OrderChecker
from stock.util.SlackBot import SlackBot
class HTS_DAILY (HTS): class HTS_DAILY (HTS):
@@ -22,6 +23,7 @@ class HTS_DAILY (HTS):
def __init__(self, RESOURCE_PATH): def __init__(self, RESOURCE_PATH):
super().__init__(RESOURCE_PATH) super().__init__(RESOURCE_PATH)
self.slackBot = SlackBot()
self.RESOURCE_PATH = RESOURCE_PATH self.RESOURCE_PATH = RESOURCE_PATH
self.dailyStatus = DailyStatus(RESOURCE_PATH) self.dailyStatus = DailyStatus(RESOURCE_PATH)
@@ -132,6 +134,8 @@ class HTS_DAILY (HTS):
# 매수를 주문한다. # 매수를 주문한다.
orderNum = self.requestOrder(OrderType.buy, stock_code, buy_count, bs_buy_price) orderNum = self.requestOrder(OrderType.buy, stock_code, buy_count, bs_buy_price)
# slackbot에 메시지를 보냄
self.slackBot.post_to_slack(stock_code, stock_name, "BUY", bsLine['buy'][len(bsLine['buy']) - 1], buy_count)
self.orderChecker.add(today, stock_code, 1, buy_count, bs_buy_price, orderNum) self.orderChecker.add(today, stock_code, 1, buy_count, bs_buy_price, orderNum)
# 로그 출력 # 로그 출력
@@ -143,6 +147,8 @@ class HTS_DAILY (HTS):
if bsLine['sell'][last_index] > 0: if bsLine['sell'][last_index] > 0:
bs_sell_price = bsLine['sell'][last_index] bs_sell_price = bsLine['sell'][last_index]
orderNum = self.getSellingPrice(THIS_TIME, stock_code, bs_sell_price) orderNum = self.getSellingPrice(THIS_TIME, stock_code, bs_sell_price)
# slackbot에 메시지를 보냄
self.slackBot.post_to_slack(stock_code, stock_name, "SELL", bsLine['sell'][len(bsLine['sell']) - 1], -1)
self.orderChecker.delete(today, stock_code) self.orderChecker.delete(today, stock_code)
# 로그 출력 # 로그 출력

View File

@@ -15,8 +15,9 @@ class SlackBot:
return return
def post_to_slack(self, this_time, stock_code, stock_name, type, price, count): def post_to_slack(self, stock_code, stock_name, type, price, count):
try: try:
this_time = datetime.now()
text = "DATE TIME:" + this_time.strftime( text = "DATE TIME:" + this_time.strftime(
'%Y-%m-%d %H:%M:%S') + ", " + "stock_code:" + stock_code + ", " + "stock_name:" + stock_name + ", " + "type:" + type + ", " + "price:" + str( '%Y-%m-%d %H:%M:%S') + ", " + "stock_code:" + stock_code + ", " + "stock_name:" + stock_name + ", " + "type:" + type + ", " + "price:" + str(
price) + ", " + "count:" + str(count) price) + ", " + "count:" + str(count)