54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
from datetime import datetime
|
|
import time
|
|
|
|
from monitor import Monitor
|
|
|
|
class MonitorCoin (Monitor):
|
|
"""자산(코인/주식/ETF) 모니터링 및 매수 실행 클래스"""
|
|
|
|
def __init__(self, cooldown_file: str = 'coins_buy_time.json') -> None:
|
|
super().__init__(cooldown_file)
|
|
|
|
def monitor_coins(self, symbol) -> None:
|
|
print("[{}] {}".format(datetime.now().strftime('%Y-%m-%d %H:%M:%S'), symbol))
|
|
|
|
interval = 60
|
|
data = self.get_coin_some_data(symbol, interval)
|
|
if data is not None and not data.empty:
|
|
try:
|
|
inverseData = self.inverse_data(data)
|
|
recent_inverseData = self.check_point(symbol, inverseData)
|
|
if recent_inverseData['point'].iloc[-1] != 1:
|
|
return
|
|
sell_success = self.sell_ticker(symbol, recent_inverseData)
|
|
if not sell_success:
|
|
return
|
|
|
|
data = self.calculate_technical_indicators(data)
|
|
recent_data = self.check_point(symbol, data)
|
|
if recent_data['point'].iloc[-1] != 1:
|
|
return
|
|
buy_success = self.buy_ticker(symbol, recent_data)
|
|
if not buy_success:
|
|
return
|
|
except Exception as e:
|
|
print(f"Error processing data for {symbol}: {str(e)}")
|
|
else:
|
|
print(f"Data for {symbol} is empty or None.")
|
|
|
|
time.sleep(0.5)
|
|
|
|
return
|
|
# ------------- Scheduler -------------
|
|
def run_schedule(self, ticker) -> None:
|
|
|
|
while True:
|
|
self.monitor_coins(symbol)
|
|
time.sleep(1)
|
|
|
|
if __name__ == "__main__":
|
|
symbol = 'SUI'
|
|
cooldown_file = './resources/coins_buy_'+symbol+'.json'
|
|
|
|
MonitorCoin(cooldown_file).run_schedule(symbol)
|