class_docstr: Single-asset order execution (SAOE) simulator which is implemented based on Qlib backtest tools.
  
  Parameters
  ----------
  order
      The seed to start an SAOE simulator is an order.
  executor_config
      Executor configuration
  exchange_config
      Exchange configuration
  qlib_config
      Configuration used to initialize Qlib. If it is None, Qlib will not be initialized.
  cash_limit:
      Cash limit.
class_docstr_tok: ["Single-asset","order","execution","(","SAOE",")","simulator","which","is","implemented","based","on","Qlib","backtest","tools",".","Parameters","--","--","--","--","--","order","The","seed","to","start","an","SAOE","simulator","is","an","order",".","executor_config","Executor","configuration","exchange_config","Exchange","configuration","qlib_config","Configuration","used","to","initialize","Qlib",".","If","it","is","None",",","Qlib","will","not","be","initialized",".","cash_limit",":","Cash","limit","."]
code: def __init__(
      self,
      order: Order,
      executor_config: dict,
      exchange_config: dict,
      qlib_config: dict | None = None,
      cash_limit: float | None = None,
  ) -> None:
      super().__init__(initial=order)
  
      assert (
          order.start_time.date() == order.end_time.date()
      ), "Start date and end date must be the same."
  
      strategy_config = {
          "class": "SingleOrderStrategy",
          "module_path": "qlib.rl.strategy.single_order",
          "kwargs": {
              "order": order,
              "trade_range": TradeRangeByTime(
                  order.start_time.time(), order.end_time.time()
              ),
          },
      }
  
      self._collect_data_loop: Optional[Generator] = None
      self.reset(
          order,
          strategy_config,
          executor_config,
          exchange_config,
          qlib_config,
          cash_limit,
      )
  
file_path: qlib/qlib/rl/order_execution/simulator_qlib.py
imports: from __future__ import annotations
  from typing import Generator, List, Optional
  import pandas
  from qlib.backtest import collect_data_loop, get_strategy_executor
  from qlib.backtest.decision import BaseTradeDecision, Order, TradeRangeByTime
  from qlib.backtest.executor import NestedExecutor
  from qlib.rl.data.integration import init_qlib
  from qlib.rl.simulator import Simulator
  from .state import SAOEState
  from .strategy import SAOEStateAdapter, SAOEStrategy
label_desc: Use image node_id 1 to create a new SingleAssetOrderExecution object from inherited base classes: Simulator with example: obj = SingleAssetOrderExecution(order, executor_config, exchange_config, qlib_config, cash_limit)