This commit is contained in:
dsyoon
2023-05-06 16:03:23 +09:00
parent ff230bc726
commit 34147af94a

View File

@@ -78,7 +78,6 @@ class Bithumb_minute(HTS):
"avg10": -1,
"avg12": -1,
"avg20": -1,
"avg30": -1,
"avg36": -1,
"avg40": -1,
"avg48": -1,
@@ -140,7 +139,6 @@ class Bithumb_minute(HTS):
"avg10": [],
"avg12": [],
"avg20": [],
"avg30": [],
"avg36": [],
"avg40": [],
"avg48": [],
@@ -180,7 +178,6 @@ class Bithumb_minute(HTS):
result["avg10"].append(item['avg10'])
result["avg12"].append(item['avg12'])
result["avg20"].append(item['avg20'])
result["avg30"].append(item['avg30'])
result["avg36"].append(item['avg36'])
result["avg40"].append(item['avg40'])
result["avg48"].append(item['avg48'])
@@ -231,7 +228,6 @@ class Bithumb_minute(HTS):
'avg10': 'float',
'avg12': 'float',
'avg20': 'float',
'avg30': 'float',
'avg36': 'float',
'avg40': 'float',
'avg48': 'float',
@@ -443,15 +439,6 @@ class Bithumb_minute(HTS):
return False
return True
def check60min(self, data1, isRealTime=False):
size = len(data1["close"])
buy = -1
if data1['avg30'][size-2] < data1['avg60'][size-2] and data1['avg60'][size-1] < data1['avg30'][size-1]:
buy = data1['close'][size-1]
return buy
def checkWithEnvelope(self, data1, data2=None, isRealTime=False):
bsLine = {}
@@ -652,27 +639,35 @@ class Bithumb_minute(HTS):
def getXRPCount(self, price):
if 2000 < price: MAX_BUY_PRICE = 1000
elif 1900 <= price < 2000: MAX_BUY_PRICE = 10000
elif 1800 <= price < 1900: MAX_BUY_PRICE = 10000
elif 1700 <= price < 1800: MAX_BUY_PRICE = 10000
elif 1600 <= price < 1700: MAX_BUY_PRICE = 13000
elif 1700 <= price < 1600: MAX_BUY_PRICE = 13000
elif 1400 <= price < 1500: MAX_BUY_PRICE = 13000
elif 1300 <= price < 1400: MAX_BUY_PRICE = 13000
elif 1200 <= price < 1300: MAX_BUY_PRICE = 15000
elif 1100 <= price < 1200: MAX_BUY_PRICE = 15000
elif 1000 <= price < 1100: MAX_BUY_PRICE = 15000
elif 900 <= price < 1000: MAX_BUY_PRICE = 17000
elif 800 <= price < 900: MAX_BUY_PRICE = 17000
elif 700 <= price < 800: MAX_BUY_PRICE = 20000
elif 600 <= price < 700: MAX_BUY_PRICE = 30000
elif 500 <= price < 600: MAX_BUY_PRICE = 50000
elif 400 <= price < 500: MAX_BUY_PRICE = 70000
elif 300 <= price < 400: MAX_BUY_PRICE = 80000
elif 200 <= price < 300: MAX_BUY_PRICE = 90000
elif 100 <= price < 200: MAX_BUY_PRICE = 100000
else: MAX_BUY_PRICE = 100000
if 870 < price: MAX_BUY_PRICE = 1000
elif 840 <= price < 870: MAX_BUY_PRICE = 2000
elif 810 <= price < 840: MAX_BUY_PRICE = 3000
elif 780 <= price < 810: MAX_BUY_PRICE = 4000
elif 750 <= price < 780: MAX_BUY_PRICE = 5000
elif 720 <= price < 750: MAX_BUY_PRICE = 6000
elif 690 <= price < 720: MAX_BUY_PRICE = 7000
elif 660 <= price < 690: MAX_BUY_PRICE = 8000
elif 630 <= price < 660: MAX_BUY_PRICE = 9000
elif 600 <= price < 630: MAX_BUY_PRICE = 10000
elif 570 <= price < 600: MAX_BUY_PRICE = 20000
elif 540 <= price < 570: MAX_BUY_PRICE = 30000
elif 510 <= price < 540: MAX_BUY_PRICE = 40000
elif 450 <= price < 480: MAX_BUY_PRICE = 50000
elif 420 <= price < 450: MAX_BUY_PRICE = 60000
elif 390 <= price < 420: MAX_BUY_PRICE = 70000
elif 360 <= price < 390: MAX_BUY_PRICE = 80000
elif 330 <= price < 360: MAX_BUY_PRICE = 90000
elif 300 <= price < 330: MAX_BUY_PRICE = 100000
elif 270 <= price < 300: MAX_BUY_PRICE = 110000
elif 240 <= price < 270: MAX_BUY_PRICE = 120000
elif 210 <= price < 240: MAX_BUY_PRICE = 130000
elif 180 <= price < 210: MAX_BUY_PRICE = 140000
elif 150 <= price < 180: MAX_BUY_PRICE = 150000
elif 120 <= price < 150: MAX_BUY_PRICE = 160000
elif 90 <= price < 120: MAX_BUY_PRICE = 170000
elif 60 <= price < 90: MAX_BUY_PRICE = 180000
elif 30 <= price < 60: MAX_BUY_PRICE = 190000
elif price < 30: MAX_BUY_PRICE = 200000
count = int(MAX_BUY_PRICE / price)
return count
@@ -696,9 +691,8 @@ class Bithumb_minute(HTS):
stock2 = self.getStock(ticker, analyzed_day, minute=30)
# 매수 매도 체크
#bsLine = self.checkWithEnvelope(stock1, stock2, isRealTime=isRealTime)
bsLine = self.check60min(stock1, isRealTime=isRealTime)
print(ticker, "/", datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "/", stock1['close'][len(stock1['close'])-1], "/", "{:.2f}".format(stock2['slow_k'][len(stock1['slow_k'])-1]), "/", "{:.2f}".format(stock1['slow_k'][len(stock1['slow_k'])-1]), "/", "{:.2f}".format(stock1['avg30'][len(stock1['avg30']) - 1]), "/", "{:.2f}".format(stock1['avg60'][len(stock1['avg60']) - 1]))
bsLine = self.checkWithEnvelope(stock1, stock2, isRealTime=isRealTime)
print(ticker, "/", datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "/", stock1['close'][len(stock1['close'])-1], "/", "{:.2f}".format(stock2['slow_k'][len(stock1['slow_k'])-1]), "/", "{:.2f}".format(stock1['slow_k'][len(stock1['slow_k'])-1]), "/", "{:.2f}".format(stock2['macd'][len(stock2['macd']) - 1]), "/", "{:.2f}".format(stock1['macd'][len(stock1['macd']) - 1]))
# 그래프를 그린다.
if len(stock1.index) > 10:
@@ -720,9 +714,9 @@ class Bithumb_minute(HTS):
check_buy_history = self.check_buy_history(order_log_df, min=60)
if isRealTime and not check_buy_history:
# 매수 조건
if max(bsLine['buy'][len(bsLine['buy']) - 2:]) > 100:
if bsLine > 0:
# 매수 조건
#stock = self.getStock(ticker, analyzed_day, day=30)
#if stock["slow_k"][len(stock['close'])-1] > 40:
# print (datetime.now().strftime('%Y-%m-%d %H:%M:%S'), ",", round(stock["slow_k"][len(stock['close'])-3],2), ",", round(stock["slow_k"][len(stock['close'])-2],2), ",", round(stock["slow_k"][len(stock['close'])-1], ))
@@ -738,24 +732,24 @@ class Bithumb_minute(HTS):
balance = tmp[2]
#count = round((balance * (bsLine['buy_weight'][len(bsLine['buy_weight']) - 1] / 100)) / bsLine['buy'][len(bsLine['buy']) - 1], 2)
if ticker == 'TRX':
count = self.getTRXCount(bsLine)
count = self.getTRXCount(bsLine['buy'][len(bsLine['buy']) - 1])
elif ticker == 'SOL':
count = self.getSOLCount(bsLine)
count = self.getSOLCount(bsLine['buy'][len(bsLine['buy']) - 1])
elif ticker == 'EOS':
count = self.getEOSCount(bsLine)
count = self.getEOSCount(bsLine['buy'][len(bsLine['buy']) - 1])
else:
count = self.getXRPCount(bsLine)
count = self.getXRPCount(bsLine['buy'][len(bsLine['buy']) - 1])
# 매수를 요청한다.
order = self.bithumb.buy_limit_order(ticker, bsLine, 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, count)
self.slackBot.post_to_slack(ticker, self.stock_code[ticker], "BUY", bsLine['buy'][len(bsLine['buy']) - 1], count)
# order: ('bid', 'BTC', 'C0101000000322993432', 'KRW')
if len(stock1['close']) > 0:
print(ticker, "/", datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "/", stock1['close'][len(stock1['close'])-1], "/", "{:.2f}".format(stock2['slow_k'][len(stock1['slow_k'])-1]), "/", "{:.2f}".format(stock1['slow_k'][len(stock1['slow_k'])-1]), "/", "{:.2f}".format(stock2['avg30'][len(stock2['avg30']) - 1]), "/", "{:.2f}".format(stock1['avg60'][len(stock1['avg60']) - 1]), "/", bsLine, "/", count)
print(ticker, "/", datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "/", stock1['close'][len(stock1['close'])-1], "/", "{:.2f}".format(stock2['slow_k'][len(stock1['slow_k'])-1]), "/", "{:.2f}".format(stock1['slow_k'][len(stock1['slow_k'])-1]), "/", "{:.2f}".format(stock2['macd'][len(stock2['macd']) - 1]), "/", "{:.2f}".format(stock1['macd'][len(stock1['macd']) - 1]), "/", bsLine['buy'][len(bsLine['buy']) - 1], "/", count)
datetime_value = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
value = {"type": "BUY", "datetime": datetime_value, "order0": order[0], "order1": order[1], "order2": order[2], "order3": order[3], "canceled": 0, "slow_k_30": stock2['slow_k'][len(stock2['slow_k']) - 1], "slow_k_5": stock1['slow_k'][len(stock1['slow_k']) - 1], "price": bsLine, "count": count}
value = {"type": "BUY", "datetime": datetime_value, "order0": order[0], "order1": order[1], "order2": order[2], "order3": order[3], "canceled": 0, "slow_k_30": stock2['slow_k'][len(stock2['slow_k']) - 1], "slow_k_5": stock1['slow_k'][len(stock1['slow_k']) - 1], "price": bsLine['buy'][len(bsLine['buy']) - 1], "count": count}
value_df = pd.DataFrame(value, index=[datetime_value])
value_df["datetime"] = pd.to_datetime(value_df["datetime"], format='%Y-%m-%d %H:%M:%S')
indexes1 = order_log_df.index.tolist()