code: def run(self):
          
          # 如果出现了日期的改变 才会进行结算的事件
          _date = None
  
          while QA_util_if_tradetime(self.now):
              for data in self.ingest_data:  # 对于在ingest_data中的数据
                  # <class 'QUANTAXIS.QAData.QADataStruct.QA_DataStruct_Stock_day'>
                  date = data.date[0]
                  if self.market_type is MARKET_TYPE.STOCK_CN:  # 如果是股票市场
                      if _date != date:  # 如果新的date
                          # 前一天的交易日已经过去
                          # 往 broker 和 account 发送 settle 事件
                          try:
                              self.market.trade_engine.join()
                              # time.sleep(2)
                              self.market._settle(self.broker_name)
  
                          except Exception as e:
                              raise e
                  # 基金 指数 期货
                  elif self.market_type in [MARKET_TYPE.FUND_CN, MARKET_TYPE.INDEX_CN, MARKET_TYPE.FUTURE_CN]:
                      self.market._settle(self.broker_name)
                  # print(data)
                  self.broker.run(
                      QA_Event(event_type=ENGINE_EVENT.UPCOMING_DATA, market_data=data))
                  # 生成 UPCOMING_DATA 事件放到 队列中去执行
  
                  self.market.upcoming_data(self.broker_name, data)
  
                  self.market.trade_engine.join()
  
                  _date = date
docs: generator driven data flow