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 reset(
      self,
      order: Order,
      strategy_config: dict,
      executor_config: dict,
      exchange_config: dict,
      qlib_config: dict | None = None,
      cash_limit: Optional[float] = None,
  ) -> None:
      if qlib_config is not None:
          init_qlib(qlib_config)
  
      strategy, self._executor = get_strategy_executor(
          start_time=order.date,
          end_time=order.date + pd.DateOffset(1),
          strategy=strategy_config,
          executor=executor_config,
          benchmark=order.stock_id,
          account=cash_limit if cash_limit is not None else int(1e12),
          exchange_kwargs=exchange_config,
          pos_type="Position"
          if cash_limit is not None
          else "InfPosition",
      )
  
      assert isinstance(self._executor, NestedExecutor)
  
      self.report_dict: dict = {}
      self.decisions: List[BaseTradeDecision] = []
      self._collect_data_loop = collect_data_loop(
          start_time=order.date,
          end_time=order.date,
          trade_strategy=strategy,
          trade_executor=self._executor,
          return_value=self.report_dict,
      )
      assert isinstance(self._collect_data_loop, Generator)
  
      self.step(action=None)
  
      self._order = order
  
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 2 for calling the SingleAssetOrderExecution obj's underlying member method code with example usage: obj.reset(order, strategy_config, executor_config, exchange_config, qlib_config, cash_limit) without return types