This commit is contained in:
dsyoon
2023-01-23 17:27:01 +09:00
parent 70bd799b92
commit b78d65fb53
2 changed files with 32 additions and 28 deletions

View File

@@ -594,12 +594,14 @@ class Bithumb_minute(HTS):
bsLine['buy'][i] = buy
bsLine['buy_weight'][i] = 0.1
"""
if data1['slow_k'][i] < 20 and data1['slow_k'][i - 1] < data1['slow_d'][i - 1] and data1['slow_d'][i] < data1['slow_k'][i]:
buy = data1['low'][i]
data1['buy'][i] = buy
bsLine['buy'][i] = buy
bsLine['buy_weight'][i] = 0.3
"""
if data2['slow_k'][i] < 30:
if data1['slow_k'][i] < 30 and data1['avg5'][i] < data1['close'][i]:
@@ -631,29 +633,16 @@ class Bithumb_minute(HTS):
df.set_index('datetime', inplace=True)
return df
def cancel_order(self, log_filename, min=10):
tmp_transactions = []
if os.path.exists(log_filename):
with open(log_filename, 'r', encoding='utf-8') as log_file:
rd = csv.reader(log_file)
for line in rd:
tmp_transactions.append(line)
def cancel_order(self, log_df, min=10):
df = log_df[pd.DatetimeIndex(log_df.index).minute >= min]
df.reset_index()
transactions = []
for tmp_transaction in tmp_transactions:
if tmp_transaction[0] == 'buy':
diff = datetime.now() - datetime.strptime(tmp_transaction[1], '%Y-%m-%d %H:%M:%S')
if 60*min < diff.seconds:
order = (tmp_transaction[2], tmp_transaction[3], tmp_transaction[4], tmp_transaction[5])
cancel = self.bithumb.cancel_order(order)
continue
transactions.append(tmp_transaction)
with open(log_filename, 'w', newline='', encoding='utf-8') as log_file:
wr = csv.writer(log_file)
for transaction in transactions:
wr.writerow(transaction)
if df is not None:
for i in range(len(df)):
order = (df['order0'][i], df['order1'][i], df['order2'][i], df['order3'][i])
cancel = self.bithumb.cancel_order(order)
log_df = log_df[pd.DatetimeIndex(log_df.index).minute < min]
return
def getStock(self, ticker, analyzed_day, minute=5):
@@ -703,9 +692,16 @@ class Bithumb_minute(HTS):
if len(stock1.index) > 10:
today = datetime.today().strftime('%Y%m%d')
log_filename = os.path.join(RESOURCE_PATH, 'order', "bithumb"+"_"+today + '.log')
if os.path.exists(log_filename):
log_df = pd.read_csv(log_filename)
log_df.columns = ["type", "datetime", "order0", "order1", "order2", "order3", "slow_k", "price", "count"]
else:
log_df = pd.DataFrame(columns=["type", "datetime", "order0", "order1", "order2", "order3", "slow_k", "price", "count"])
log_df['datetime'] = pd.to_datetime(log_df['datetime'], unit='s')
log_df.set_index('datetime', inplace=True)
# 10분이 지난 미체결은 취소한다.
self.cancel_order(log_filename, 10)
self.cancel_order(log_df, 10)
if isRealTime:
if max(bsLine['buy'][len(bsLine['buy']) - 2:]) > 100:
tmp = self.bithumb.get_balance(ticker)
@@ -715,9 +711,10 @@ class Bithumb_minute(HTS):
# order: ('bid', 'BTC', 'C0101000000322993432', 'KRW')
print(ticker, "/", datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "/", stock1['close'][len(stock1['close']) - 1], "/ BUY / ", stock1['slow_k'][len(stock1['slow_k']) - 1], "/", bsLine['buy'][len(bsLine['buy']) - 1], "/", count)
with open(log_filename, 'a', newline='', encoding='utf-8') as log_file:
wr = csv.writer(log_file)
wr.writerow(["buy", datetime.now().strftime('%Y-%m-%d %H:%M:%S'), order[0], order[1], order[2], order[3]])
log_df.append({"type": "buy", "datetime": datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "order0": order[0], "order1": order[1], "order2": order[2], "order3": order[3], "slow_k": stock1['slow_k'][len(stock1['slow_k']) - 1], "price": bsLine['buy'][len(bsLine['buy']) - 1], "count": count}, ignore_index=True)
log_df['datetime'] = pd.to_datetime(log_df['datetime'], unit='s')
log_df.set_index('datetime', inplace=True)
log_df.to_csv(log_filename, index=False)
dirName = os.path.join(RESOURCE_PATH, 'analysis', 'bithumb')
self.writeFile(dirName, ticker, stock1, bsLine, datetime.now().strftime('%Y%m%d %H%M%S'), 'buy')
@@ -728,7 +725,12 @@ class Bithumb_minute(HTS):
return
count = tmp[0]
order = self.bithumb.sell_limit_order(ticker, bsLine['sell'][len(bsLine['sell'])-1], count)
print(ticker, "/", datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "/", stock1['close'][len(stock1['close']) - 1], "/ BUY / ", 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 / ", stock1['slow_k'][len(stock1['slow_k']) - 1], "/", bsLine['sell'][len(bsLine['sell']) - 1], "/", count)
log_df.append({"type": "buy", "datetime": datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "order0": order[0], "order1": order[1], "order2": order[2], "order3": order[3], "slow_k": stock1['slow_k'][len(stock1['slow_k']) - 1], "price": bsLine['buy'][len(bsLine['buy']) - 1], "count": count}, ignore_index=True)
log_df['datetime'] = pd.to_datetime(log_df['datetime'], unit='s')
log_df.set_index('datetime', inplace=True)
log_df.to_csv(log_filename, index=False)
dirName = os.path.join(RESOURCE_PATH, 'analysis', 'bithumb')
self.writeFile(dirName, ticker, stock1, bsLine, datetime.now().strftime('%Y%m%d %H%M%S'), 'sell')

View File

@@ -629,6 +629,8 @@ class Bithumb_daily(HTS):
if len(data.index) > 10:
today = datetime.today().strftime('%Y%m%d')
log_filename = os.path.join(RESOURCE_PATH, 'analysis', '', today + '.log')
# realtime이고, 5분이내 매수 기록이 없다면
if isRealTime and not self.exist_buy(ticker, log_filename):
if max(bsLine['buy'][len(bsLine['buy']) - 2:]) > 100:
balance = self.getBalance(ticker)
@@ -672,7 +674,7 @@ if __name__ == "__main__":
except:
time.sleep(30)
continue
time.sleep(300)
time.sleep(10)
else:
for ticker in tickers:
bithumb.buyRealTime(ticker, analyzed_day, isRealTime)