Beispiel #1
0
 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
Beispiel #3
0
    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()
Beispiel #5
0
    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)
Beispiel #6
0
    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)