def load_bar(self, vt_symbol: str, days: int, interval: Interval) -> List[BarData]: """""" symbol, exchange = extract_vt_symbol(vt_symbol) end = datetime.now(get_localzone()) start = end - timedelta(days) contract: ContractData = self.main_engine.get_contract(vt_symbol) data = [] # Query bars from gateway if available if contract and contract.history_data: req = HistoryRequest( symbol=symbol, exchange=exchange, interval=interval, start=start, end=end ) data = self.main_engine.query_history(req, contract.gateway_name) if not data: data = database_manager.load_bar_data( symbol=symbol, exchange=exchange, interval=interval, start=start, end=end, ) return data
def load_bar(self, vt_symbol: str, days: int, interval: Interval, callback: Callable[[BarData], None], use_database: bool): """""" symbol, exchange = extract_vt_symbol(vt_symbol) end = datetime.now(get_localzone()) start = end - timedelta(days) bars = [] # Pass gateway and database if use_database set to True if not use_database: # Query bars from gateway if available contract = self.main_engine.get_contract(vt_symbol) if contract and contract.history_data: req = HistoryRequest(symbol=symbol, exchange=exchange, interval=interval, start=start, end=end) bars = self.main_engine.query_history(req, contract.gateway_name) # try to load the data from database if we query no data from api. if not bars: bars = database_manager.load_bar_data( symbol=symbol, exchange=exchange, interval=interval, start=start, end=end, ) for bar in bars: callback(bar)
def request2(): print("start2") start = datetime(2020, 11, 12, tzinfo=get_localzone()) end = datetime(2020, 11, 13, tzinfo=get_localzone()) req = HistoryRequest(symbol=symbol, exchange=exchange, interval=Interval(interval), start=start, end=end) data = gate_way.query_history(req) print("start12_end13", data)
def request1(): start = datetime(2020, 10, 1, tzinfo=get_localzone()) end = datetime(2020, 10, 2, tzinfo=get_localzone()) req = HistoryRequest(symbol=symbol, exchange=exchange, interval=Interval(interval), start=start, end=end) data = gate_way.query_history(req) print(data) if data: database_manager.save_bar_data(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}开始下载历史数据") try: symbol, exchange = extract_vt_symbol(vt_symbol) except ValueError: self.write_log(f"{vt_symbol}解析失败,请检查交易所后缀") self.thread = None return 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 ) if 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 _query_history(self, vt_symbol: str, interval: Interval, start: datetime, end: datetime) -> None: """""" contract: ContractData = self.main_engine.get_contract(vt_symbol) req = HistoryRequest(symbol=contract.symbol, exchange=contract.exchange, interval=interval, start=start, end=end) if contract.history_data: data = self.main_engine.query_history(req, contract.gateway_name) event = Event(EVENT_CHART_HISTORY, data) self.event_engine.put(event)
def download_tick_data(self, symbol: str, exchange: Exchange, start: datetime) -> int: """ Query tick data from RQData. """ req = HistoryRequest(symbol=symbol, exchange=exchange, start=start, end=datetime.now()) # if not rqdata_client.inited: # rqdata_client.init() # # data = rqdata_client.query_tick_history(req) # # if data: # database_manager.save_tick_data(data) # return(len(data)) return 0
def download_bar_data(self, symbol: str, exchange: Exchange, interval: str, start: datetime) -> int: """ Query bar data from RQData. """ req = HistoryRequest(symbol=symbol, exchange=exchange, interval=Interval(interval), start=start, end=datetime.now()) vt_symbol = f"{symbol}.{exchange.value}" contract = self.main_engine.get_contract(vt_symbol) # If history data provided in gateway, then query if contract and contract.history_data: data = self.main_engine.query_history(req, contract.gateway_name) if data: database_manager.save_bar_data(data) return (len(data)) return 0