Exemplo n.º 1
0
    def do_hq_api_call(self, method_name, *args, **kwargs):
        """
        代理发送请求到实际的客户端
        :param method_name: 调用的方法名称
        :param args: 参数
        :param kwargs: kv参数
        :return: 调用结果
        """
        try:
            result = getattr(self.api, method_name)(*args, **kwargs)
            if result is None:
                log.info("api(%s) call return None" % (method_name, ))
        except Exception as e:
            log.info("api(%s) call failed, Exception is %s" %
                     (method_name, str(e)))
            result = None

        # 如果无法获取信息,则进行重试
        if result is None:
            if self.api_call_retry_times >= self.api_call_max_retry_times:
                log.info("(method_name=%s) max retry times(%d) reached" %
                         (method_name, self.api_call_max_retry_times))
                raise TdxHqApiCallMaxRetryTimesReachedException(
                    "(method_name=%s) max retry times reached" % method_name)
            old_api_ip = self.api.ip
            new_api_ip = None
            if self.hot_failover_api:
                new_api_ip = self.hot_failover_api.ip
                log.info(
                    "api call from init client (ip=%s) err, perform rotate to (ip =%s)..."
                    % (old_api_ip, new_api_ip))
                self.api.disconnect()
                self.api = self.hot_failover_api
            log.info("retry times is " + str(self.api_call_max_retry_times))
            # 从池里再次获取备用ip
            new_ips = self.ippool.get_ips()

            choise_ip = None
            for _test_ip in new_ips:
                if _test_ip[0] == old_api_ip or _test_ip[0] == new_api_ip:
                    continue
                choise_ip = _test_ip
                break

            if choise_ip:
                self.hot_failover_api = self.hq_cls(multithread=True,
                                                    heartbeat=True)
                self.hot_failover_api.connect(*choise_ip)
            else:
                self.hot_failover_api = None
            # 阻塞0.2秒,然后递归调用自己
            time.sleep(self.api_retry_interval)
            result = self.do_hq_api_call(method_name, *args, **kwargs)
            self.api_call_retry_times += 1

        else:
            self.api_call_retry_times = 0

        return result
Exemplo n.º 2
0
    def do_hq_api_call(self, method_name, *args, **kwargs):
        """
        代理发送请求到实际的客户端
        :param method_name: 调用的方法名称
        :param args: 参数
        :param kwargs: kv参数
        :return: 调用结果
        """
        try:
            result = getattr(self.api, method_name)(*args, **kwargs)
            if result is None:
                log.info("api(%s) call return None" % (method_name,))
        except Exception as e:
            log.info("api(%s) call failed, Exception is %s" % (method_name, str(e)))
            result = None

        # 如果无法获取信息,则进行重试
        if result is None:
            if self.api_call_retry_times >= self.api_call_max_retry_times:
                log.info("(method_name=%s) max retry times(%d) reached" % (method_name, self.api_call_max_retry_times))
                raise TdxHqApiCallMaxRetryTimesReachedException("(method_name=%s) max retry times reached" % method_name)
            old_api_ip = self.api.ip
            new_api_ip = None
            if self.hot_failover_api:
                new_api_ip = self.hot_failover_api.ip
                log.info("api call from init client (ip=%s) err, perform rotate to (ip =%s)..." %(old_api_ip, new_api_ip))
                self.api.disconnect()
                self.api = self.hot_failover_api
            log.info("retry times is " + str(self.api_call_max_retry_times))
            # 从池里再次获取备用ip
            new_ips = self.ippool.get_ips()

            choise_ip = None
            for _test_ip in new_ips:
                if _test_ip[0] == old_api_ip or _test_ip[0] == new_api_ip:
                    continue
                choise_ip = _test_ip
                break

            if choise_ip:
                self.hot_failover_api = self.hq_cls(multithread=True, heartbeat=True)
                self.hot_failover_api.connect(*choise_ip)
            else:
                self.hot_failover_api = None
            # 阻塞0.2秒,然后递归调用自己
            time.sleep(self.api_retry_interval)
            result = self.do_hq_api_call(method_name, *args, **kwargs)
            self.api_call_retry_times += 1

        else:
            self.api_call_retry_times = 0

        return result
Exemplo n.º 3
0
        data = pd.concat([self.to_df(self.get_security_bars(9, __select_market_code(
            code), code, (9 - i) * 800, 800)) for i in range(10)], axis=0)

        data = data.assign(date=data['datetime'].apply(lambda x: str(x)[0:10])).assign(code=str(code))\
            .set_index('date', drop=False, inplace=False)\
            .drop(['year', 'month', 'day', 'hour', 'minute', 'datetime'], axis=1)[start_date:end_date]
        return data.assign(date=data['date'].apply(lambda x: str(x)[0:10]))


if __name__ == '__main__':
    import pprint

    api = TdxHq_API()
    if api.connect('101.227.73.20', 7709):
        log.info("获取股票行情")
#         stocks = api.get_security_quotes([(0, "000001"), (1, "600300")])
#         stocks = api.to_df(stocks)
#         pprint.pprint(stocks)
#         log.info("获取k线")
#         data = api.get_security_bars(9, 0, '000001', 4, 3)
#         pprint.pprint(data)
#         log.info("获取 深市 股票数量")
#         pprint.pprint(api.get_security_count(0))
#         log.info("获取股票列表")
#         stocks = api.get_security_list(1, 255)
#         pprint.pprint(stocks)
#         log.info("获取指数k线")
#         data = api.get_index_bars(9, 1, '000001', 1, 2)
#         pprint.pprint(data)
#         log.info("查询分时行情")
Exemplo n.º 4
0
Arquivo: hq.py Projeto: mifox/pytdx
        data = self.to_df(data)
        data['date'] = data['datetime'].apply(lambda x: x[0:10])
        data['date'] = pd.to_datetime(data['date'])
        data = data.set_index('date')
        data = data.drop(
            ['year', 'month', 'day', 'hour', 'minute', 'datetime'], axis=1)
        return data[start_date:end_date]


if __name__ == '__main__':
    import pprint

    api = TdxHq_API()
    if api.connect('101.227.73.20', 7709):
        log.info("获取股票行情")
        stocks = api.get_security_quotes([(0, "000001"), (1, "600300")])
        pprint.pprint(stocks)
        log.info("获取k线")
        data = api.get_security_bars(9, 0, '000001', 4, 3)
        pprint.pprint(data)
        log.info("获取 深市 股票数量")
        pprint.pprint(api.get_security_count(0))
        log.info("获取股票列表")
        stocks = api.get_security_list(1, 255)
        pprint.pprint(stocks)
        log.info("获取指数k线")
        data = api.get_index_bars(9, 1, '000001', 1, 2)
        pprint.pprint(data)
        log.info("查询分时行情")
        data = api.get_minute_time_data(TDXParams.MARKET_SH, '600300')
Exemplo n.º 5
0
    @update_last_ack_time
    def get_minute_time_data(self, market, code):
        cmd = GetMinuteTimeData(self.client)
        cmd.setParams(market, code)
        return cmd.call_api()

    def do_heartbeat(self):
        self.get_instrument_count()


if __name__ == '__main__':
    import pprint

    api = TdxExHq_API()
    with api.connect('121.14.110.210', 7727):
        log.info("获取市场代码")
        #pprint.pprint(api.to_df(api.get_markets()))
        log.info("查询市场中商品数量")
        #pprint.pprint(api.get_instrument_count())
        log.info("查询五档行情")
        #pprint.pprint(api.to_df(api.get_instrument_quote(47, "IF1709")))
        #pprint.pprint(api.get_instrument_quote(8, "10000889"))
        #pprint.pprint(api.get_instrument_quote(31, "00020"))
        log.info("查询分时行情")
        #pprint.pprint(api.to_df(api.get_minute_time_data(47, "IF1709")))
        #pprint.pprint(api.get_minute_time_data(8, "10000889"))
        #pprint.pprint(api.get_minute_time_data(31, "00020"))

        log.info("查询k线")
        #pprint.pprint(api.to_df(api.get_instrument_bars(TDXParams.KLINE_TYPE_DAILY, 8, "10000843")))
        pprint.pprint(
Exemplo n.º 6
0
        data = pd.concat([self.to_df(self.get_security_bars(9, __select_market_code(
            code), code, (9 - i) * 800, 800)) for i in range(10)], axis=0)

        data = data.assign(date=data['datetime'].apply(lambda x: str(x)[0:10])).assign(code=str(code))\
            .set_index('date', drop=False, inplace=False)\
            .drop(['year', 'month', 'day', 'hour', 'minute', 'datetime'], axis=1)[start_date:end_date]
        return data.assign(date=data['date'].apply(lambda x: str(x)[0:10]))


if __name__ == '__main__':
    import pprint

    api = TdxHq_API()
    if api.connect('101.227.73.20', 7709):
        log.info("获取股票行情")
        stocks = api.get_security_quotes([(0, "000001"), (1, "600300")])
        pprint.pprint(stocks)
        log.info("获取k线")
        data = api.get_security_bars(9, 0, '000001', 4, 3)
        pprint.pprint(data)
        log.info("获取 深市 股票数量")
        pprint.pprint(api.get_security_count(0))
        log.info("获取股票列表")
        stocks = api.get_security_list(1, 255)
        pprint.pprint(stocks)
        log.info("获取指数k线")
        data = api.get_index_bars(9, 1, '000001', 1, 2)
        pprint.pprint(data)
        log.info("查询分时行情")
        data = api.get_minute_time_data(TDXParams.MARKET_SH, '600300')
Exemplo n.º 7
0
    api = TdxExHq_API()
    with api.connect('182.131.7.196', 7709):
        # log.info("获取市场代码")
        # pprint.pprint(api.to_df(api.get_markets()))
        # log.info("查询市场中商品数量")
        # pprint.pprint(api.get_instrument_count())
        # log.info("查询五档行情")
        #pprint.pprint(api.to_df(api.get_instrument_quote(47, "IF1709")))
        #pprint.pprint(api.get_instrument_quote(8, "10000889"))
        #pprint.pprint(api.get_instrument_quote(31, "00020"))
        # log.info("查询分时行情")
        #api.get_minute_time_data(47, "IFL0")
        #pprint.pprint(api.to_df(api.get_minute_time_data(47, "IFL0")))
        #pprint.pprint(api.to_df(api.get_minute_time_data(8, "10000889")).tail())
        #pprint.pprint(api.get_minute_time_data(31, "00020"))
        log.info("查询历史分时行情")
        pprint.pprint(
            api.to_df(api.get_history_minute_time_data(31, "00020",
                                                       20170811)).tail())
        log.info("查询分时成交")
        pprint.pprint(api.to_df(api.get_transaction_data(31, "00020")).tail())

        log.info("查询历史分时成交")
        pprint.pprint(
            api.to_df(api.get_history_transaction_data(31, "00020",
                                                       20170811)).tail())
        #data = api.get_history_minute_time_data(47, 'IFL0', 20170811)
        # pprint.pprint(data)

        # log.info("查询k线")
        #pprint.pprint(api.to_df(api.get_instrument_bars(TDXParams.KLINE_TYPE_DAILY, 8, "10000843")))
Exemplo n.º 8
0
        # pprint.pprint(data)
        # log.info("查询分时行情")
        # data = api.get_minute_time_data(TDXParams.MARKET_SH, '600300')
        # pprint.pprint(data)
        # log.info("查询历史分时行情")
        # data = api.get_history_minute_time_data(
        #     TDXParams.MARKET_SH, '600300', 20161209)
        # pprint.pprint(data)
        # log.info("查询分时成交")
        # data = api.get_transaction_data(TDXParams.MARKET_SZ, '000001', 0, 30)
        # pprint.pprint(data)
        # log.info("查询历史分时成交")
        # data = api.get_history_transaction_data(
        #     TDXParams.MARKET_SZ, '000001', 0, 10, 20170209)
        # pprint.pprint(data)
        log.info("查询公司信息目录")
        data = api.get_company_info_category(TDXParams.MARKET_SZ, '000001')
        pprint.pprint(data)
        # log.info("读取公司信息-最新提示")
        # data = api.get_company_info_content(0,'000001','000001.txt',8367,43379)
        # print(data)
        # log.info("读取除权除息信息")
        # data = api.get_xdxr_info(1, '600300')
        # pprint.pprint(data)
        # log.info("读取财务信息")
        # data = api.get_finance_info(0, '000001')
        # pprint.pprint(data)
        # log.info("日线级别k线获取函数")
        # data = api.get_k_data('000001', '2017-07-01', '2017-07-10')
        # pprint.pprint(data)
Exemplo n.º 9
0
        # pprint.pprint(api.get_instrument_count())
        # log.info("查询五档行情")
        #pprint.pprint(api.to_df(api.get_instrument_quote(47, "IF1709")))
        #pprint.pprint(api.get_instrument_quote(8, "10000889"))
        #pprint.pprint(api.get_instrument_quote(31, "00020"))
        # log.info("查询分时行情")
        #api.get_minute_time_data(47, "IFL0")
        #pprint.pprint(api.to_df(api.get_minute_time_data(47, "IFL0")))
        #pprint.pprint(api.to_df(api.get_minute_time_data(8, "10000889")).tail())
        #pprint.pprint(api.get_minute_time_data(31, "00020"))
        # log.info("查询历史分时行情")
        # pprint.pprint(api.to_df(api.get_history_minute_time_data(31, "00020", 20170811)).tail())
        # log.info("查询分时成交")
        # pprint.pprint(api.to_df(api.get_transaction_data(31, "00020")).tail())

        log.info("查询历史分时成交")
        pprint.pprint(
            api.to_df(api.get_history_transaction_data(47, "IFL0",
                                                       20200222)).tail())
        #data = api.get_history_minute_time_data(47, 'IFL0', 20170811)
        # pprint.pprint(data)

        # log.info("查询k线")
        #pprint.pprint(api.to_df(api.get_instrument_bars(TDXParams.KLINE_TYPE_DAILY, 8, "10000843")))
        #pprint.pprint(api.to_df(api.get_instrument_bars(TDXParams.KLINE_TYPE_DAILY, 31, "00700")))
        # log.info("查询代码列表")
        #pprint.pprint(api.to_df(api.get_instrument_info(10000, 98)))
        # x = api.to_df(api.get_history_instrument_bars_range(47, "IFL0", 20210201, 20210210))
        # pprint.pprint(x.tail())
        # log.info("查询k线")
        # pprint.pprint(api.to_df(api.get_instrument_bars(9, 8, "10000843")))
Exemplo n.º 10
0
        return cmd.call_api()

    def do_heartbeat(self):
        self.get_instrument_count()


if __name__ == '__main__':
    import pprint

    api = TdxExHq_API()
    if api.connect('16.152.107.141', 7727):
        # log.info("获取市场代码")
        # pprint.pprint(api.to_df(api.get_markets()))
        # log.info("查询市场中商品数量")
        # pprint.pprint(api.get_instrument_count())
        log.info("查询五档行情")
        #pprint.pprint(api.to_df(api.get_instrument_quote(47, "IF1709")))
        #pprint.pprint(api.get_instrument_quote(8, "10000889"))
        pprint.pprint(api.get_instrument_quote(31, "00020"))
        # log.info("查询分时行情")
        #api.get_minute_time_data(47, "IFL0")
        #pprint.pprint(api.to_df(api.get_minute_time_data(47, "IFL0")))
        #pprint.pprint(api.to_df(api.get_minute_time_data(8, "10000889")).tail())
        #pprint.pprint(api.get_minute_time_data(31, "00020"))
        #log.info("查询历史分时行情")
        #pprint.pprint(api.to_df(api.get_history_minute_time_data(31, "00020", 20170811)).tail())
        #log.info("查询分时成交")
        #pprint.pprint(api.to_df(api.get_transaction_data(31, "00020")).tail())

        # log.info("查询历史分时成交")
        #pprint.pprint(api.to_df(api.get_history_transaction_data(31, "00020", 20170811)).tail())
Exemplo n.º 11
0
Arquivo: exhq.py Projeto: gyezhz/pytdx
        return cmd.call_api()

    def get_instrument_count(self):
        cmd = GetInstrumentCount(self.client)
        return cmd.call_api()

    def get_instrument_quote(self, market, code):
        cmd = GetInstrumentQuote(self.client)
        cmd.setParams(market, code)
        return cmd.call_api()

    def get_minute_time_data(self, market, code):
        cmd = GetMinuteTimeData(self.client)
        cmd.setParams(market, code)
        return cmd.call_api()


if __name__ == '__main__':
    import pprint

    api = TdxExHq_API()
    with api.connect('61.152.107.141', 7727):
        log.info("获取市场代码")
        pprint.pprint(api.get_markets())
        log.info("查询市场中商品数量")
        pprint.pprint(api.get_instrument_count())
        log.info("查询行情")
        pprint.pprint(api.get_instrument_quote(47, "IF1709"))
        log.info("查询分时行情")
        pprint.pprint(api.get_minute_time_data(47, "IF1709"))
Exemplo n.º 12
0
    api = TdxExHq_API()
    with api.connect('121.14.110.210', 7727):
        # log.info("获取市场代码")
        # pprint.pprint(api.to_df(api.get_markets()))
        # log.info("查询市场中商品数量")
        # pprint.pprint(api.get_instrument_count())
        # log.info("查询五档行情")
        #pprint.pprint(api.to_df(api.get_instrument_quote(47, "IF1709")))
        #pprint.pprint(api.get_instrument_quote(8, "10000889"))
        #pprint.pprint(api.get_instrument_quote(31, "00020"))
        # log.info("查询分时行情")
        #api.get_minute_time_data(47, "IFL0")
        #pprint.pprint(api.to_df(api.get_minute_time_data(47, "IFL0")))
        #pprint.pprint(api.to_df(api.get_minute_time_data(8, "10000889")).tail())
        #pprint.pprint(api.get_minute_time_data(31, "00020"))
        log.info("查询历史分时行情")
        pprint.pprint(api.to_df(api.get_history_minute_time_data(31, "00020", 20170811)).tail())
        log.info("查询分时成交")
        pprint.pprint(api.to_df(api.get_transaction_data(31, "00020")).tail())

        log.info("查询历史分时成交")
        pprint.pprint(api.to_df(api.get_history_transaction_data(31, "00020", 20170811)).tail())
        #data = api.get_history_minute_time_data(47, 'IFL0', 20170811)
        # pprint.pprint(data)

        # log.info("查询k线")
        #pprint.pprint(api.to_df(api.get_instrument_bars(TDXParams.KLINE_TYPE_DAILY, 8, "10000843")))
        #pprint.pprint(api.to_df(api.get_instrument_bars(TDXParams.KLINE_TYPE_DAILY, 31, "00700")))
        # log.info("查询代码列表")
        #pprint.pprint(api.to_df(api.get_instrument_info(10000, 98)))