Example #1
0
    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)
Example #2
0
    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 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)
Example #5
0
    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)
Example #6
0
    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
Example #7
0
    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
Example #8
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