class ExtQuotes(object): """扩展市场实时行情""" def __init__(self, **kwargs): self.client = TdxExHq_API(**kwargs) # self.bestip = os.environ.setdefault("MOOTDX_SERVER", '61.152.107.141:7727') # self.bestip = kwargs.get("bestip", '202.108.253.131:7709') # self.bestip = self.bestip.split(':') self.bestip = ('202.108.253.131', 7709) # self.bestip[1] = int(self.bestip[1]) def markets(self): ''' 获取实时市场列表 :return: pd.dataFrame or None ''' with self.client.connect(*self.bestip): data = self.client.get_markets() return self.client.to_df(data) return None def quote5(self, market=47, symbol="IF1709"): ''' 查询五档行情 :return: pd.dataFrame or None ''' with self.client.connect(*self.bestip): data = self.client.get_instrument_quote(market, symbol) return self.client.to_df(data) def minute(self, market=47, symbol="IF1709"): ''' 查询五档行情 :return: pd.dataFrame or None ''' with self.client.connect(*self.bestip): data = self.client.get_minute_time_data(market, symbol) return self.client.to_df(data) def instrument(self, start=0, offset=100): ''' 查询代码列表 :param start: :param offset: :return: pd.dataFrame or None ''' with self.client.connect(*self.bestip): # nums = self.client.get_instrument_count() data = self.client.get_instrument_info(int(start), int(offset)) return self.client.to_df(data)
def test_all_functions(): symbol_params = [[47, "IF1709"], [8, "10000889"], [31, "00020"], [47, "IFL0"], [31, "00700"]] api = TdxExHq_API(auto_retry=True) try: with api.connect('121.14.110.210', 7727, time_out=30): log.info("获取市场代码") data = api.get_markets() assert data is not None assert type(data) is list assert len(data) > 0 log.info("查询市场中商品数量") data = api.get_instrument_count() assert data is not None assert data > 0 log.info("查询五档行情") for params in symbol_params: data = api.get_instrument_quote(*params) print(data) assert data is not None assert type(data) is list assert len(data) > 0 # log.info("查询分时行情") for params in symbol_params: data = api.get_minute_time_data(*params) assert data is not None assert type(data) is list assert len(data) >= 0 log.info("查询历史分时行情") for params in symbol_params: data = api.get_history_minute_time_data( params[0], params[1], 20170811) assert data is not None assert type(data) is list assert len(data) >= 0 log.info("查询分时成交") for params in symbol_params: data = api.get_transaction_data(*params) assert data is not None assert type(data) is list assert len(data) >= 0 log.info("查询历史分时成交") for params in symbol_params: data = api.get_history_transaction_data( params[0], params[1], 20170811) assert data is not None assert type(data) is list assert len(data) >= 0 log.info("查询k线") for params in symbol_params: data = api.get_instrument_bars(TDXParams.KLINE_TYPE_DAILY, params[0], params[1]) assert data is not None assert type(data) is list assert len(data) >= 0 log.info("查询代码列表") data = api.get_instrument_info(10000, 98) assert data is not None assert type(data) is list assert len(data) > 0 except socket.timeout as e: pass
class ExtQuotes(object): """扩展市场实时行情""" config = None client = None bestip = ('112.74.214.43', 7727) def __init__(self, **kwargs): try: default = settings.get('SERVER').get('EX')[0] self.bestip = config.get('BESTIP').get('EX', default) except ValueError: self.bestip = ('112.74.214.43', 7727) self.client = TdxExHq_API(**kwargs) def validate(self, market, symbol): if not market: if len(symbol.split('#')) > 1: market = symbol.split('#')[0] symbol = symbol.split('#')[1] if not market: raise ValueError('市场参数错误, 市场参数不能为空.') return int(market), symbol def markets(self): ''' 获取实时市场列表 :return: pd.dataFrame or None ''' with self.client.connect(*self.bestip) as client: result = client.get_markets() return to_data(result) def instrument(self, start=0, offset=100): ''' 查询代码列表 :param offset: :param start: :return: ''' with self.client.connect(*self.bestip): result = self.client.get_instrument_info(start=start, count=offset) return to_data(result) def instrument_count(self): ''' 市场商品数量 :return: ''' with self.client.connect(*self.bestip): result = self.client.get_instrument_count() return result def instruments(self): ''' 查询所有代码列表 :return: ''' with self.client.connect(*self.bestip): count = self.client.get_instrument_count() pages = math.ceil(count / 100) result = [] for page in tqdm(range(0, pages)): result += self.client.get_instrument_info( page * 100, (page + 1) * 100) return to_data(result) def quote(self, market='', symbol=''): ''' 查询五档行情 :param market: :param symbol: :return: ''' market, symbol = self.validate(market, symbol) with self.client.connect(*self.bestip): result = self.client.get_instrument_quote(market, symbol) return to_data(result) def minute(self, market='', symbol=''): ''' 查询分时行情 :param market: :param symbol: :return: ''' market, symbol = self.validate(market, symbol) with self.client.connect(*self.bestip): result = self.client.get_minute_time_data(market, symbol) return to_data(result) def minutes(self, market=None, symbol='', date=''): ''' 查询历史分时行情 :param market: :param symbol: :param date: :return: ''' market, symbol = self.validate(market, symbol) with self.client.connect(*self.bestip): result = self.client.get_history_minute_time_data( market, symbol, date) return to_data(result) def bars(self, frequency='', market='', symbol='', start='', offset=0): ''' 查询k线数据 参数: K线周期, 市场ID, 证券代码,起始位置, 数量 :param frequency: K线周期 :param market: 市场ID :param symbol: 证券代码 :param start: 起始位置 :param offset: 数量 :return: ''' market, symbol = self.validate(market, symbol) with self.client.connect(*self.bestip): result = self.client.get_instrument_bars(frequency=frequency, market=market, code=symbol, start=start, count=offset) return to_data(result) def transaction(self, market=None, symbol='', start=0, offset=1800): ''' 查询分笔成交 :param market: :param symbol: :param start: :param offset: :return: ''' market, symbol = self.validate(market, symbol) with self.client.connect(*self.bestip): result = self.client.get_transaction_data(market=market, code=symbol, start=start, count=offset) return to_data(result) def transactions(self, market=None, symbol='', date='', start=0, offset=1800): ''' 查询历史分笔成交 :param market: :param symbol: :param date: :param start: :param offset: :return: ''' market, symbol = self.validate(market, symbol) with self.client.connect(*self.bestip): result = self.client.get_history_transaction_data(market=market, code=symbol, date=date, start=start, count=offset) return to_data(result)
# -*- coding: utf-8 -*- from pytdx.exhq import TdxExHq_API import ta api = TdxExHq_API() with api.connect('124.74.236.94', 7721): #查询市场中商品数量 marketsID = api.to_df(api.get_markets()) #查询五档行情 quote =api.to_df(api.get_instrument_quote(47, "IFL8")) #查询分时行情 markets_fenshi = api.to_df(api.get_minute_time_data(47, "IFL8")) #查询历史分时行情 historydata = api.to_df(api.get_history_minute_time_data(47, "IFL8", 20170811)) #查询k线数据 kdata = api.to_df(api.get_instrument_bars(0, 47, "IFL8", 0, 700)) #查询当前分笔成交 fenbi = api.to_df(api.get_transaction_data(47, "IFL8")) #查询历史分笔成交 fenbi_history = api.to_df(api.get_history_transaction_data(47, "IFL8", 20191204, start=1800)) #查询当天分笔成交 fenbi_chenjiao = api.to_df(api.get_history_transaction_data(47, "IFL8", 20191204,)) print (marketsID) print (quote) print (kdata) df = kdata
from pytdx.exhq import TdxExHq_API api = TdxExHq_API() with api.connect('101.227.77.254', 7727): api.get_markets() api.get_minute_time_data(47, "IF1709") import tushare as ts