def calcFirstBuyTime(self): last_buy_order_datetime = self.db_manager.getLastBuyOrderDatetime() if last_buy_order_datetime: last_buy_datetime = DBManager.convertOrderDatetime( last_buy_order_datetime) else: last_buy_datetime = datetime.datetime.now() return max( datetime.datetime.now(), last_buy_datetime + datetime.timedelta(0, DCA_FREQUENCY), )
def calcRobinhoodFirstBuyTime(self): last_buy_order_datetime = self.db_manager.getRobinhoodLastBuyOrderDatetime() # If we have no buy recored, we execute a buy order immediately. if not last_buy_order_datetime: return datetime.datetime.now() last_buy_datetime = DBManager.convertOrderDatetime(last_buy_order_datetime) return max( datetime.datetime.now(), last_buy_datetime + datetime.timedelta(0, default_config.robinhood_dca_frequency), )
def generateDCASummary(unwithdrawn_buy_orders): summary = "" total_cost, total_size = 0, 0 for order in unwithdrawn_buy_orders: order_datetime, cost, size = order local_datetime = DBManager.convertOrderDatetime(order_datetime) summary += ( f"{local_datetime.strftime('%m-%d %H:%M')}, ${round(cost, 2)}, " f"{size}, ${round( cost / size, 0 )}\n") total_cost += cost total_size += size return (f"Average Price: {round( total_cost / total_size, 2 )}\n" + f"Total Cost: {round( total_cost, 2 )}\n" + f"Total Size: {total_size}\n\n" + summary)
def calcFirstBuyTime(self): last_buy_order_datetime = self.db_manager.getLastBuyOrderDatetime() # If we have no buy recored, we execute a buy order immediately. if not last_buy_order_datetime: return datetime.datetime.now() last_buy_datetime = DBManager.convertOrderDatetime(last_buy_order_datetime) Logger.info( f"Last Coinbase buy order was at: {last_buy_datetime.strftime('%Y-%m-%d %H:%M:%S')}" ) Logger.info("") return max( datetime.datetime.now(), last_buy_datetime + datetime.timedelta(0, default_config.dca_frequency), )