from datetime import datetime import time from config import * from monitor_min import Monitor class MonitorCoin (Monitor): """자산(코인/주식/ETF) 모니터링 및 매수 실행 클래스""" def __init__(self, cooldown_file: str = './resources/coins_buy_time.json') -> None: super().__init__(cooldown_file) def monitor_coins(self) -> None: tmps = self.getBalances() balances = {} for tmp in tmps: balances[tmp['currency']] = {'balance': float(tmp['balance']), 'avg_buy_price': float(tmp['avg_buy_price'])} print("[{}] KRW COINs: {}".format(datetime.now().strftime('%Y-%m-%d %H:%M:%S'), ','.join(KR_COINS.keys()))) for symbol in KR_COINS: 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.annotate_signals(symbol, inverseData) if not self.buy_sell_ticker_1h(symbol, recent_inverseData, balances=balances, is_inverse=True): pass data = self.calculate_technical_indicators(data) recent_data = self.annotate_signals(symbol, data) _ = self.buy_sell_ticker_1h(symbol, recent_data, balances=None, is_inverse=False) 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) -> None: while True: self.monitor_coins() time.sleep(10) if __name__ == "__main__": KR_COINS.keys() MonitorCoin().run_schedule()