def strategy_file_name(self, value: Optional[str]): self._strategy_file_name = value if value is not None: db_name = value.split(".")[0] self.trade_fill_db = SQLConnectionManager.get_trade_fills_instance(db_name) else: self.trade_fill_db = None
def __init__(self): self.ev_loop: asyncio.BaseEventLoop = asyncio.get_event_loop() self.parser: ThrowingArgumentParser = load_parser(self) self.app = HummingbotCLI( input_handler=self._handle_command, bindings=load_key_bindings(self), completer=load_completer(self)) self.acct: Optional[LocalAccount] = None self.markets: Dict[str, MarketBase] = {} self.wallet: Optional[Web3Wallet] = None self.strategy_task: Optional[asyncio.Task] = None self.strategy: Optional[StrategyBase] = None self.market_pair: Optional[CrossExchangeMarketPair] = None self.market_trading_pair_tuples: List[MarketTradingPairTuple] = [] self.clock: Optional[Clock] = None self.init_time: int = int(time.time() * 1e3) self.start_time: Optional[int] = None self.assets: Optional[Set[str]] = set() self.starting_balances = {} self.placeholder_mode = False self.log_queue_listener: Optional[logging.handlers.QueueListener] = None self.reporting_module: Optional[ReportAggregator] = None self.data_feed: Optional[DataFeedBase] = None self.notifiers: List[NotifierBase] = [] self.kill_switch: Optional[KillSwitch] = None self.liquidity_bounty: Optional[LiquidityBounty] = None self._initialize_liquidity_bounty() self._app_warnings: Deque[ApplicationWarning] = deque() self._trading_required: bool = True self.trade_fill_db: SQLConnectionManager = SQLConnectionManager.get_trade_fills_instance() self.markets_recorder: Optional[MarketsRecorder] = None
async def get_unsubmitted_trades(self) -> List[TradeFill]: """ Get locally saved trades that have not been submitted to liquidity bounties """ await self._wait_till_ready() session: Session = SQLConnectionManager.get_trade_fills_instance( ).get_shared_session() try: and_conditions: BooleanClauseList = [ and_( TradeFill.base_asset == ab["base_asset"], TradeFill.market == ab["market"], TradeFill.timestamp >= ab["start_timestamp"], # does not matter if start_timestamp == -1 TradeFill.timestamp <= (ab["end_timestamp"] if ab["end_timestamp"] > 0 else 1e14)) for ab in self._active_bounties ] query: Query = (session.query(TradeFill).filter( TradeFill.timestamp > self._last_submitted_trade_timestamp ).filter(or_(*and_conditions)).order_by(TradeFill.timestamp)) new_trades: List[TradeFill] = query.all() return new_trades except Exception as e: self.logger().error( f"Failed to query for unsubmitted trades: {str(e)}", exc_info=True)
def __init__(self, sql: SQLConnectionManager = None): if sql: self.sql_manager = sql else: self.sql_manager = SQLConnectionManager.get_trade_fills_instance() self._starting_base = CurrencyAmount() self._starting_quote = CurrencyAmount() self._current_base = CurrencyAmount() self._current_quote = CurrencyAmount()
async def get_unsubmitted_orders(self) -> List[Order]: """ Get locally saved orders that have not been submitted to liquidity bounties """ await self._wait_till_ready() session: Session = SQLConnectionManager.get_trade_fills_instance().get_shared_session() try: and_conditions: BooleanClauseList = self.get_order_filter() query: Query = (session .query(Order) .filter(Order.creation_timestamp > self._last_submitted_order_timestamp) .filter(or_(*and_conditions)) .order_by(Order.creation_timestamp)) new_orders: List[Order] = query.all() return new_orders except Exception as e: self.logger().error(f"Failed to query for unsubmitted orders: {str(e)}", exc_info=True)
def __init__(self): self.ev_loop: asyncio.BaseEventLoop = asyncio.get_event_loop() self.parser: ThrowingArgumentParser = load_parser(self) self.app = HummingbotCLI(input_handler=self._handle_command, bindings=load_key_bindings(self), completer=load_completer(self)) self.markets: Dict[str, ExchangeBase] = {} self.wallet: Optional[Web3Wallet] = None # strategy file name and name get assigned value after import or create command self.strategy_file_name: str = None self.strategy_name: str = None self.strategy_task: Optional[asyncio.Task] = None self.strategy: Optional[StrategyBase] = None self.market_pair: Optional[CrossExchangeMarketPair] = None self.market_trading_pair_tuples: List[MarketTradingPairTuple] = [] self.clock: Optional[Clock] = None self.init_time: int = int(time.time() * 1e3) self.start_time: Optional[int] = None self.assets: Optional[Set[str]] = set() self.starting_balances = {} self.placeholder_mode = False self.log_queue_listener: Optional[ logging.handlers.QueueListener] = None self.data_feed: Optional[DataFeedBase] = None self.notifiers: List[NotifierBase] = [] self.kill_switch: Optional[KillSwitch] = None self._app_warnings: Deque[ApplicationWarning] = deque() self._trading_required: bool = True self.trade_fill_db: SQLConnectionManager = SQLConnectionManager.get_trade_fills_instance( ) self.markets_recorder: Optional[MarketsRecorder] = None self._script_iterator = None # This is to start fetching trading pairs for auto-complete TradingPairFetcher.get_instance()
def strategy_file_name(self, value: str): self._strategy_file_name = value db_name = value.split(".")[0] self.trade_fill_db = SQLConnectionManager.get_trade_fills_instance(db_name=db_name)