init
This commit is contained in:
@@ -26,8 +26,9 @@ class Bithumb_minute(HTS):
|
|||||||
analyzerSqlite = None
|
analyzerSqlite = None
|
||||||
bithumb = None
|
bithumb = None
|
||||||
binance = None
|
binance = None
|
||||||
|
TODAY = None
|
||||||
|
|
||||||
def __init__(self, RESOURCE_PATH):
|
def __init__(self, RESOURCE_PATH, today):
|
||||||
super().__init__(RESOURCE_PATH)
|
super().__init__(RESOURCE_PATH)
|
||||||
self.RESOURCE_PATH = RESOURCE_PATH
|
self.RESOURCE_PATH = RESOURCE_PATH
|
||||||
|
|
||||||
@@ -40,6 +41,7 @@ class Bithumb_minute(HTS):
|
|||||||
# bithumb api에 연결한 클라스 객체를 선언한다.
|
# bithumb api에 연결한 클라스 객체를 선언한다.
|
||||||
self.bithumb = pybithumb.Bithumb(con_key, sec_key)
|
self.bithumb = pybithumb.Bithumb(con_key, sec_key)
|
||||||
self.binance = ccxt.binance()
|
self.binance = ccxt.binance()
|
||||||
|
self.TODAY = today
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -320,7 +322,7 @@ class Bithumb_minute(HTS):
|
|||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def writeFile(self, dirName, ticker, data, bsLine, today, type=None):
|
def writeFile(self, dirName, ticker, data, bsLine, type=None):
|
||||||
if bsLine is None:
|
if bsLine is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -410,10 +412,10 @@ class Bithumb_minute(HTS):
|
|||||||
fig['layout'].update()
|
fig['layout'].update()
|
||||||
|
|
||||||
if type is None:
|
if type is None:
|
||||||
fileName = "%s/%s_%s.html" % (dirName, ticker, today)
|
fileName = "%s/%s_%s.html" % (dirName, ticker, self.TODAY)
|
||||||
po.write_html(fig, file=fileName, auto_open=False)
|
po.write_html(fig, file=fileName, auto_open=False)
|
||||||
else:
|
else:
|
||||||
fileName = "%s/%s_%s_%s.html" % (dirName, type, ticker, today)
|
fileName = "%s/%s_%s_%s.html" % (dirName, type, ticker, self.TODAY)
|
||||||
po.write_html(fig, file=fileName, auto_open=False)
|
po.write_html(fig, file=fileName, auto_open=False)
|
||||||
|
|
||||||
return
|
return
|
||||||
@@ -535,6 +537,20 @@ class Bithumb_minute(HTS):
|
|||||||
|
|
||||||
return log_df
|
return log_df
|
||||||
|
|
||||||
|
def check_buy_history(self, log_df, log_filename, hours=3):
|
||||||
|
now = datetime.now() - timedelta(hours=hours)
|
||||||
|
|
||||||
|
log_df = log_df.loc[(now < log_df.index)]
|
||||||
|
if len(log_df) == 0:
|
||||||
|
log_df["datetime"] = ""
|
||||||
|
buy_history = False
|
||||||
|
else:
|
||||||
|
log_df["datetime"] = log_df.index
|
||||||
|
buy_history = True
|
||||||
|
|
||||||
|
log_df.to_csv(log_filename, index=False)
|
||||||
|
return buy_history, log_df
|
||||||
|
|
||||||
def getStock(self, ticker, analyzed_day, minute=5):
|
def getStock(self, ticker, analyzed_day, minute=5):
|
||||||
stock = {"CODE": ticker, "NAME": ticker, "PRICE": []}
|
stock = {"CODE": ticker, "NAME": ticker, "PRICE": []}
|
||||||
|
|
||||||
@@ -580,20 +596,32 @@ class Bithumb_minute(HTS):
|
|||||||
|
|
||||||
# 그래프를 그린다.
|
# 그래프를 그린다.
|
||||||
if len(stock1.index) > 10:
|
if len(stock1.index) > 10:
|
||||||
today = datetime.today().strftime('%Y%m%d')
|
# 매수 요청 n분 이상된 주문은 취소하기 위함
|
||||||
log_filename = os.path.join(RESOURCE_PATH, 'order', "bithumb"+"_"+today + '.log')
|
order_log_filename = os.path.join(RESOURCE_PATH, 'order', "bithumb"+"_"+self.TODAY + '.log')
|
||||||
if os.path.exists(log_filename):
|
if os.path.exists(order_log_filename):
|
||||||
log_df = pd.read_csv(log_filename)
|
order_log_df = pd.read_csv(order_log_filename)
|
||||||
log_df.columns = ["type", "order0", "order1", "order2", "order3", "slow_k_30", "slow_k_5", "price", "count", "datetime"]
|
order_log_df.columns = ["type", "order0", "order1", "order2", "order3", "slow_k_30", "slow_k_5", "price", "count", "datetime"]
|
||||||
log_df["datetime"] = pd.to_datetime(log_df["datetime"], format='%Y-%m-%d %H:%M:%S')
|
order_log_df["datetime"] = pd.to_datetime(order_log_df["datetime"], format='%Y-%m-%d %H:%M:%S')
|
||||||
else:
|
else:
|
||||||
log_df = pd.DataFrame(columns=["type", "datetime", "order0", "order1", "order2", "order3", "slow_k_30", "slow_k_5", "price", "count"])
|
order_log_df = pd.DataFrame(columns=["type", "datetime", "order0", "order1", "order2", "order3", "slow_k_30", "slow_k_5", "price", "count"])
|
||||||
log_df['datetime'] = pd.to_datetime(log_df['datetime'], unit='s')
|
order_log_df['datetime'] = pd.to_datetime(order_log_df['datetime'], unit='s')
|
||||||
log_df.set_index('datetime', inplace=True)
|
order_log_df.set_index('datetime', inplace=True)
|
||||||
|
|
||||||
|
# 한번 매수 후 n시간 이후 매수하기 위함
|
||||||
|
buy_history_filename = os.path.join(RESOURCE_PATH, 'order', "bithumb" + "_" + self.TODAY + '.log')
|
||||||
|
if os.path.exists(buy_history_filename):
|
||||||
|
buy_history_df = pd.read_csv(buy_history_filename)
|
||||||
|
buy_history_df.columns = ["type", "order0", "order1", "order2", "order3", "slow_k_30", "slow_k_5", "price", "count", "datetime"]
|
||||||
|
buy_history_df["datetime"] = pd.to_datetime(buy_history_df["datetime"], format='%Y-%m-%d %H:%M:%S')
|
||||||
|
else:
|
||||||
|
buy_history_df = pd.DataFrame(columns=["type", "datetime", "order0", "order1", "order2", "order3", "slow_k_30", "slow_k_5", "price", "count"])
|
||||||
|
buy_history_df['datetime'] = pd.to_datetime(buy_history_df['datetime'], unit='s')
|
||||||
|
buy_history_df.set_index('datetime', inplace=True)
|
||||||
|
|
||||||
# 10분이 지난 미체결은 취소한다.
|
# 10분이 지난 미체결은 취소한다.
|
||||||
log_df = self.cancel_order(log_df, log_filename, 10)
|
order_log_df = self.cancel_order(order_log_df, order_log_filename, min=10)
|
||||||
if isRealTime:
|
buy_history, buy_history_df = self.check_buy_history(buy_history_df, buy_history_filename, hours=3)
|
||||||
|
if isRealTime and not buy_history:
|
||||||
if max(bsLine['buy'][len(bsLine['buy']) - 2:]) > 100:
|
if max(bsLine['buy'][len(bsLine['buy']) - 2:]) > 100:
|
||||||
tmp = self.bithumb.get_balance(ticker)
|
tmp = self.bithumb.get_balance(ticker)
|
||||||
balance = tmp[2]
|
balance = tmp[2]
|
||||||
@@ -606,16 +634,27 @@ class Bithumb_minute(HTS):
|
|||||||
datetime_value = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
datetime_value = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||||
value_df = pd.DataFrame(value, index=[datetime_value])
|
value_df = pd.DataFrame(value, index=[datetime_value])
|
||||||
|
|
||||||
indexes = log_df.index.tolist()
|
# 매수 요청 n분 이상된 주문은 취소하기 위함
|
||||||
indexes.append(datetime_value)
|
indexes1 = order_log_df.index.tolist()
|
||||||
|
indexes1.append(datetime_value)
|
||||||
|
|
||||||
log_df = log_df.append(value_df, ignore_index = True)
|
order_log_df = order_log_df.append(value_df, ignore_index = True)
|
||||||
log_df.index = indexes
|
order_log_df.index = indexes1
|
||||||
log_df['datetime'] = log_df.index
|
order_log_df['datetime'] = order_log_df.index
|
||||||
log_df.to_csv(log_filename, index=False)
|
order_log_df.to_csv(order_log_filename, index=False)
|
||||||
|
|
||||||
|
# 한번 매수 후 n시간 이후 매수하기 위함
|
||||||
|
indexes2 = buy_history_df.index.tolist()
|
||||||
|
indexes2.append(datetime_value)
|
||||||
|
|
||||||
|
buy_history_df = buy_history_df.append(value_df, ignore_index=True)
|
||||||
|
buy_history_df.index = indexes2
|
||||||
|
buy_history_df['datetime'] = buy_history_df.index
|
||||||
|
buy_history_df.to_csv(order_log_filename, index=False)
|
||||||
|
|
||||||
|
# 파일에 매수 시점 그래프
|
||||||
dirName = os.path.join(RESOURCE_PATH, 'analysis', 'bithumb')
|
dirName = os.path.join(RESOURCE_PATH, 'analysis', 'bithumb')
|
||||||
self.writeFile(dirName, ticker, stock1, bsLine, datetime.now().strftime('%Y%m%d %H%M%S'), 'buy')
|
self.writeFile(dirName, ticker, stock1, bsLine, 'buy')
|
||||||
|
|
||||||
if max(bsLine['sell'][len(bsLine['sell']) - 2:]) > 100:
|
if max(bsLine['sell'][len(bsLine['sell']) - 2:]) > 100:
|
||||||
tmp = self.bithumb.get_balance(ticker)
|
tmp = self.bithumb.get_balance(ticker)
|
||||||
@@ -629,19 +668,19 @@ class Bithumb_minute(HTS):
|
|||||||
datetime_value = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
datetime_value = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||||
value_df = pd.DataFrame(value, index=[datetime_value])
|
value_df = pd.DataFrame(value, index=[datetime_value])
|
||||||
|
|
||||||
indexes = log_df.index.tolist()
|
indexes = order_log_df.index.tolist()
|
||||||
indexes.append(datetime_value)
|
indexes.append(datetime_value)
|
||||||
|
|
||||||
log_df = log_df.append(value_df, ignore_index=True)
|
order_log_df = order_log_df.append(value_df, ignore_index=True)
|
||||||
log_df.index = indexes
|
order_log_df.index = indexes
|
||||||
log_df['datetime'] = log_df.index
|
order_log_df['datetime'] = order_log_df.index
|
||||||
log_df.to_csv(log_filename, index=False)
|
order_log_df.to_csv(order_log_filename, index=False)
|
||||||
|
|
||||||
dirName = os.path.join(RESOURCE_PATH, 'analysis', 'bithumb')
|
dirName = os.path.join(RESOURCE_PATH, 'analysis', 'bithumb')
|
||||||
self.writeFile(dirName, ticker, stock1, bsLine, datetime.now().strftime('%Y%m%d %H%M%S'), 'sell')
|
self.writeFile(dirName, ticker, stock1, bsLine, 'sell')
|
||||||
else:
|
else:
|
||||||
dirName = os.path.join(RESOURCE_PATH, 'analysis', 'bithumb')
|
dirName = os.path.join(RESOURCE_PATH, 'analysis', 'bithumb')
|
||||||
self.writeFile(dirName, ticker, stock1, bsLine, datetime.now().strftime('%Y%m%d %H%M%S'))
|
self.writeFile(dirName, ticker, stock1, bsLine)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -658,7 +697,8 @@ if __name__ == "__main__":
|
|||||||
os.mkdir(dirName)
|
os.mkdir(dirName)
|
||||||
|
|
||||||
# bithumb_daily = Bithumb_daily(RESOURCE_PATH)
|
# bithumb_daily = Bithumb_daily(RESOURCE_PATH)
|
||||||
bithumb = Bithumb_minute(RESOURCE_PATH)
|
today = datetime.today().strftime('%Y%m%d')
|
||||||
|
bithumb = Bithumb_minute(RESOURCE_PATH, today)
|
||||||
|
|
||||||
tickers = ['XRP']
|
tickers = ['XRP']
|
||||||
analyzed_day = 120
|
analyzed_day = 120
|
||||||
|
|||||||
Reference in New Issue
Block a user