def download_history_data(symbol, exchange): print(symbol, exchange) begin_date = datetime.strptime("2019-09-19", "%Y-%m-%d") for i in range(1): start_date = begin_date.replace(year=begin_date.year + i) # end_date = begin_date.replace(year=begin_date.year + i + 1) end_date = datetime.now() print(start_date, end_date) req = HistoryRequest(symbol=symbol, exchange=Exchange(exchange), interval=Interval("1m"), start=start_date, end=end_date) data = mddata_client.query_history(req)
def query_bar_from_rq(self, symbol: str, exchange: Exchange, interval: Interval, start: datetime, end: datetime): """ Query bar data from RQData. """ req = HistoryRequest(symbol=symbol, exchange=exchange, interval=interval, start=start, end=end) # data = mddata_client.query_history(req) try: data = mddata_client.query_history(req) except Exception as ex: self.write_log(f"{symbol}.{exchange.value}合约下载失败:{ex.args}") return None return data
def run_downloading( self, vt_symbol: str, interval: str, start: datetime, end: datetime ): """ Query bar data from RQData. """ self.write_log(f"{vt_symbol}-{interval}开始下载历史数据") symbol, exchange = extract_vt_symbol(vt_symbol) req = HistoryRequest( symbol=symbol, exchange=exchange, interval=Interval(interval), start=start, end=end ) contract = self.main_engine.get_contract(vt_symbol) try: # If history data provided in gateway, then query if contract and contract.history_data: data = self.main_engine.query_history( req, contract.gateway_name ) # Otherwise use RQData to query data else: data = mddata_client.query_history(req) if data: self.write_log(f"{vt_symbol}-{interval}历史数据下载完成, 共计:{len(data)}") database_manager.save_bar_data(data) self.write_log(f"{vt_symbol}-{interval}数据保存成功!") else: self.write_log(f"数据下载失败,无法获取{vt_symbol}的历史数据") except Exception: msg = f"数据下载失败,触发异常:\n{traceback.format_exc()}" self.write_log(msg) # Clear thread object handler. self.thread = None
def get_bars(self, vt_symbol: str, start_date: str, interval: Interval, use_df: bool = False) -> Sequence[BarData]: """""" contract = self.main_engine.get_contract(vt_symbol) if not contract: return [] start = datetime.strptime(start_date, "%Y%m%d") req = HistoryRequest( symbol=contract.symbol, exchange=contract.exchange, start=start, interval=interval ) try: data = mddata_client.query_history(req) except Exception as ex: self.write_log(f"{contract.symbol}.{contract.exchange.value}合约下载失败:{ex.args}") return None # return get_data(rqdata_client.query_history, arg=req, use_df=use_df) return data