class_docstr: The correctness of the metrics of Account in nested execution depends on the shallow copy of `trade_account` in
  qlib/backtest/executor.py:NestedExecutor
  Different level of executor has different Account object when calculating metrics. But the position object is
  shared cross all the Account object.
docstr: update trade indicators and order indicators in each bar end
docstr_tok: ["update","trade","indicators","and","order","indicators","in","each","bar","end"]
code: def update_indicator(
      self,
      trade_start_time: pd.Timestamp,
      trade_exchange: Exchange,
      atomic: bool,
      outer_trade_decision: BaseTradeDecision,
      trade_info: list = [],
      inner_order_indicators: List[BaseOrderIndicator] = [],
      decision_list: List[
          Tuple[BaseTradeDecision, pd.Timestamp, pd.Timestamp]
      ] = [],
      indicator_config: dict = {},
  ) -> None:
      """update trade indicators and order indicators in each bar end"""
      # TODO: will skip empty decisions make it faster?  `outer_trade_decision.empty():`
  
      # indicator is trading (e.g. high-frequency order execution) related analysis
      self.indicator.reset()
  
      # aggregate the information for each order
      if atomic:
          self.indicator.update_order_indicators(trade_info)
      else:
          self.indicator.agg_order_indicators(
              inner_order_indicators,
              decision_list=decision_list,
              outer_trade_decision=outer_trade_decision,
              trade_exchange=trade_exchange,
              indicator_config=indicator_config,
          )
  
      # aggregate all the order metrics a single step
      self.indicator.cal_trade_indicators(
          trade_start_time, self.freq, indicator_config
      )
  
      # record the metrics
      self.indicator.record(trade_start_time)
  
imports: from __future__ import annotations
  import copy
  from typing import Dict, List, Optional, Tuple, cast
  import pandas
  from qlib.utils import init_instance_by_config
  from .decision import BaseTradeDecision, Order
  from .exchange import Exchange
  from .high_performance_ds import BaseOrderIndicator
  from .position import BasePosition
  from .report import Indicator, PortfolioMetrics
label_desc: Use image node_id 13 for calling the Account obj's underlying member method code with example usage: obj.update_indicator(trade_start_time, trade_exchange, atomic, outer_trade_decision, trade_info, inner_order_indicators, decision_list, indicator_config) without return types