你的位置:2024欧洲杯官网- 欢迎您& > 新闻 > 支持:64/128bit🍏系统类型:kaiyun欧洲杯appApp官方下载 begin='20230101'-2024欧洲杯官网- 欢迎您&

支持:64/128bit🍏系统类型:kaiyun欧洲杯appApp官方下载 begin='20230101'-2024欧洲杯官网- 欢迎您&

时间:2026-09-18 04:25 点击:102 次

支持:64/128bit🍏系统类型:kaiyun欧洲杯appApp官方下载 begin='20230101'-2024欧洲杯官网- 欢迎您&

mootdx 是一个用于读取知道信数据的 Python 接口库,赞成离线数据读取、在线行情得到和财务数据下载。

版块: 0.11.7作家: bopo.wang开源左券: MIT LicensePython 版块条款: 3.8+形状地址: https://github.com/mootdx/mootdx装配设施基础装配# 中枢依赖装配pip install mootdx# 包含敕令行器用pip install 'mootdx[cli]'# 包含通盘膨大依赖(保举)pip install 'mootdx[all]'升级装配
pip install -U tdxpy mootdx# 或pip install -U 'mootdx[all]'
中枢模块

mootdx 主要包含三个中枢模块:

Reader - 知道信离线数据读取Quotes - 知道信在线行情数据Affair - 财务数据下载妥协析1. Reader 模块 - 离线数据读取基本用法from mootdx.reader import Reader# 创建读取器实例# market: 'std' 门径商场(股票), 'ext' 膨大商场(期货等)# tdxdir: 知道信数据目次旅途reader = Reader.factory(market='std', tdxdir='C:/new_tdx')主要设施1.1 读取日线数据
# 读取日线数据daily_data = reader.daily(symbol='600036')print(daily_data)
1.2 读取分钟数据# 读取分钟数据minute_data = reader.minute(symbol='600036')print(minute_data)1.3 读取技巧线数据
# 读取技巧线数据fzline_data = reader.fzline(symbol='600036')print(fzline_data)
Reader 类详备APIStdReader (门径商场)daily(symbol, **kwargs) - 得到日线数据minute(symbol, suffix=1, **kwargs) - 得到分钟数据fzline(symbol) - 得到技巧线数据block(tofile='block.dat', **kwargs) - 得到板块数据block_new(**kwargs) - 得到新板块数据find_path(symbol, subdir='lday', suffix=None, **kwargs) - 查找数据文献旅途ExtReader (膨大商场)赞成期货、黄金等膨大商场数据读取设施与 StdReader 访佛2. Quotes 模块 - 在线行情数据基本用法from mootdx.quotes import Quotes# 创建行情客户端# market: 'std' 门径商场, 'ext' 膨大商场# multithread: 是否多线程# heartbeat: 是否心跳检测client = Quotes.factory(market='std', multithread=True, heartbeat=True)主要设施2.1 得到K线数据
# 得到K线数据# symbol: 股票代码# frequency: 数据频次 (见频次常量)# offset: 得到条数 (最大800)kline_data = client.bars(symbol='600036', frequency=9, offset=100)print(kline_data)
2.2 得到指数数据# 得到指数K线index_data = client.index_bars(symbol='000001', frequency=9)print(index_data)# 或者使用简化设施index_data = client.index(symbol='000001', frequency=9)print(index_data)2.3 得到分时数据
# 得到实时间时数据minute_data = client.minute(symbol='000001')print(minute_data)# 得到历史分时数据history_minute = client.minutes(symbol='000001', date='20231201')print(history_minute)
2.4 得到实时行情# 得到实时行谍报价quotes_data = client.quotes(symbol='600036')print(quotes_data)# 批量得到多只股票行情quotes_data = client.quotes(symbol=['600036', '000001', '000002'])print(quotes_data)2.5 得到股票列表
# 得到商场股票数目count = client.stock_count(market=1)  # 1=上海, 0=深圳print(f'股票数目: {count}')# 得到股票列表stocks = client.stocks(market=1)print(stocks)# 得到通盘商场股票all_stocks = client.stock_all()print(all_stocks)
2.6 得到分笔成交数据# 得到分笔成交transaction_data = client.transaction(symbol='600036', start=0, offset=100)print(transaction_data)# 得到历史分笔成交history_transactions = client.transactions(symbol='600036', date='20231201', start=0, offset=100)print(history_transactions)2.7 得到F10信息和财务数据
# 得到公司F10信息目次f10_catalog = client.F10C(symbol='600036')print(f10_catalog)# 得到具体F10信息f10_detail = client.F10(symbol='600036', name='公司大概')print(f10_detail)# 得到财务信息finance_data = client.finance(symbol='600036')print(finance_data)# 得到除权除息信息xdxr_data = client.xdxr(symbol='600036')print(xdxr_data)
2.8 得到板块信息# 得到板块信息block_data = client.block(tofile='block.dat')print(block_data)2.9 按日历边界得到K线数据
# 按日历边界得到K线k_data = client.k(symbol='600036', begin='20230101', end='20231201')print(k_data)# 使用get_k_data设施k_data2 = client.get_k_data(code='600036', start_date='20230101', end_date='20231201')print(k_data2)
Quotes 类详备APIStdQuotes (门径商场)

基础行情设施:

quotes(symbol, **kwargs) - 得到实时行情bars(symbol='000001', frequency=9, start=0, offset=800, **kwargs) - 得到K线数据index_bars(symbol='000001', frequency=9, start=0, offset=800, **kwargs) - 得到指数K线index(symbol='000001', frequency=9, start=0, offset=800, **kwargs) - 得到指数K线(简化设施)minute(symbol, **kwargs) - 得到实时间时数据minutes(symbol, date='20191023', **kwargs) - 得到历史分时数据transaction(symbol='', start=0, offset=800, **kwargs) - 得到分笔成交transactions(symbol='', start=0, offset=800, date='20170209', **kwargs) - 得到历史分笔成交

股票列表设施:

stock_count(market=1) - 得到商场股票数目stocks(market=1) - 得到股票列表stock_all() - 得到通盘股票列表

高等功能设施:

F10(symbol='', name='') - 得到公司F10信息细则F10C(symbol='') - 得到公司信息目次finance(symbol='000001', **kwargs) - 得到财务信息block(tofile='block.dat', **kwargs) - 得到证券板块信息k(symbol='', begin=None, end=None, **kwargs) - 得到K线信息(按日历边界)xdxr(symbol='', **kwargs) - 得到除权除息信息get_k_data(code, start_date, end_date) - 得到K线数据(按日历)

连结措置设施:支持:64/128bit🍏系统类型:kaiyun欧洲杯appApp官方下载

traffic() - 得到流量统计close() - 关闭连结reconnect() - 再行连结ExtQuotes (膨大商场)赞成期货等膨大商场的行情数据得到连结参数# 完好意思的连结参数示例client = Quotes.factory(    market='std',           # 商场类型    server=('127.0.0.1', 7709),  # 自界说职业器    bestip=True,           # 自动接受最好IP    timeout=15,            # 连结超一样间    heartbeat=True,        # 心跳检测    auto_retry=True,       # 自动重试    raise_exception=False, # 是否抛出十分    verbose=True           # 详备日记)3. Affair 模块 - 财务数据基本用法
from mootdx.affair import Affair
主要设施3.1 得到财务文献列表# 得到汉典财务文献列表files = Affair.files()print(files)# 暴露文献信息from prettytable import PrettyTablet = PrettyTable(['filename', 'filesize', 'hash'])for file in files:    t.add_row([file['filename'], file['filesize'], file['hash']])print(t)3.2 下载财务数据文献
# 下载单个财务文献Affair.fetch(downdir='./data', filename='gpcw19960630.zip')# 下载通盘财务文献Affair.fetch(downdir='./data')
3.3 阐发财务数据# 阐发财务数据文献financial_data = Affair.parse(downdir='./data', filename='gpcw19960630.zip')print(financial_data)Affair 类详备APIfiles() - 得到财务文献列表fetch(downdir, filename=None) - 下载财务文献parse(downdir, filename, **kwargs) - 阐发财务文献4. 常量界说商场常量
from mootdx.consts import MARKET_SH, MARKET_SZ, MARKET_BJMARKET_SZ = 0  # 深市MARKET_SH = 1  # 沪市  MARKET_BJ = 2  # 北交所
数据规矩常量from mootdx.consts import MAX_KLINE_COUNT, MAX_TRANSACTION_COUNTMAX_KLINE_COUNT = 800        # K线数据最多800条MAX_TRANSACTION_COUNT = 2000 # 分笔行情最多2000条板块文献常量
from mootdx.consts import BLOCK_DEFAULT, BLOCK_SZ, BLOCK_FG, BLOCK_GNBLOCK_DEFAULT = 'block.dat'     # 默许板块文献BLOCK_SZ = 'block_zs.dat'       # 指数板块BLOCK_FG = 'block_fg.dat'       # 作风板块  BLOCK_GN = 'block_gn.dat'       # 主意板块
K线频次常量from mootdx.consts import *KLINE_5MIN = 0      # 5分钟K线KLINE_15MIN = 1     # 15分钟K线KLINE_30MIN = 2     # 30分钟K线KLINE_1HOUR = 3     # 1小时K线KLINE_DAILY = 4     # 日K线KLINE_WEEKLY = 5    # 周K线KLINE_MONTHLY = 6   # 月K线KLINE_EX_1MIN = 7   # 膨大商场1分钟KLINE_1MIN = 8      # 1分钟K线KLINE_RI_K = 9      # 日K线KLINE_3MONTH = 10   # 季K线KLINE_YEARLY = 11   # 年K线频次字符串
FREQUENCY = ['5m', '15m', '30m', '1h', 'day', 'week', 'mon', 'ex_1m', '1m', 'dk', '3mon', 'year']# 频次退换示例from mootdx.utils import get_frequencyfreq_5m = get_frequency('5m')    # 复返 0freq_day = get_frequency('day')  # 复返 9  freq_num = get_frequency(9)      # 复返 9
5. 器用函数股票商场判断from mootdx.utils import get_stock_market, get_stock_markets# 判断单个股票的商场market = get_stock_market('600036')  # 复返 1 (上海商场)market_str = get_stock_market('600036', string=True)  # 复返 'sh'# 批量判断股票商场markets = get_stock_markets(['600036', '000001'])print(markets)  # [[1, '600036'], [0, '000001']]数据退换
from mootdx.utils import to_data, to_file# 将数据退换为DataFramedf = to_data(data_list)# 导出数据到文献to_file(df, 'output.csv')    # CSV姿色to_file(df, 'output.xlsx')   # Excel姿色to_file(df, 'output.json')   # JSON姿色
复权处理# 得到前复权数据df = client.bars(symbol='600036', adjust='qfq')# 得到后复权数据  df = client.bars(symbol='600036', adjust='hfq')6. 完好意思示例6.1 得到股票基本信息和K线数据
from mootdx.quotes import Quotesimport pandas as pd# 创建客户端client = Quotes.factory(market='std', heartbeat=True)# 得到股票列表stocks = client.stocks(market=1)  # 上海商场print(f'上海商场股票数目: {len(stocks)}')# 得到特定股票的K线数据symbol = '600036'kline_data = client.bars(symbol=symbol, frequency=9, offset=100)print(f'{symbol} 日K线数据:')print(kline_data.head())# 得到实时行情quotes = client.quotes(symbol=symbol)print(f'{symbol} 实时行情:')print(quotes)# 得到分时数据minute_data = client.minute(symbol=symbol)print(f'{symbol} 分时数据:')print(minute_data.head())# 得到F10信息f10_data = client.F10C(symbol=symbol)print(f'{symbol} F10目次:')print(f10_data)# 得到除权除息信息xdxr_data = client.xdxr(symbol=symbol)print(f'{symbol} 除权除息:')print(xdxr_data.head())# 关闭连结client.close()
6.2 批量得到多只股票数据from mootdx.quotes import Quotesclient = Quotes.factory(market='std')# 界说股票列表symbols = ['600036', '000001', '000002', '600519', '000858']# 批量得到实时行情quotes_data = client.quotes(symbol=symbols)print('批量行情数据:')print(quotes_data)# 批量得到K线数据for symbol in symbols:    kline = client.bars(symbol=symbol, frequency=9, offset=50)    print(f'{symbol} K线数据步地: {kline.shape}')6.3 离线数据读取示例
from mootdx.reader import Reader# 创建读取器(需要土产货知道信数据)reader = Reader.factory(market='std', tdxdir='C:/new_tdx')# 读取日线数据daily = reader.daily(symbol='600036')print('日线数据:')print(daily.head())# 读取分钟数据minute = reader.minute(symbol='600036')print('分钟数据:')print(minute.head())
6.4 高等功能详细示例from mootdx.quotes import Quotes# 创建客户端client = Quotes.factory(market='std', timeout=15, heartbeat=True)symbol = '600036'# 招商银行try:    # 1. 得到基本行情    quotes = client.quotes(symbol=symbol)    print(f'=== {symbol} 实时行情 ===')    print(quotes)        # 2. 得到K线数据(多个周期)    print(f'\n=== {symbol} 多周期K线 ===')    daily_k = client.bars(symbol=symbol, frequency=9, offset=30)  # 日K    weekly_k = client.bars(symbol=symbol, frequency=5, offset=20)  # 周K    print(f'日K线: {daily_k.shape}')    print(f'周K线: {weekly_k.shape}')        # 3. 得到F10信息    print(f'\n=== {symbol} F10信息 ===')    f10_catalog = client.F10C(symbol=symbol)    ifnot f10_catalog.empty:        print('F10目次:', f10_catalog.columns.tolist())                # 得到具体F10试验        f10_detail = client.F10(symbol=symbol, name='公司大概')        print('公司大概:', f10_detail.shape ifnot f10_detail.empty else'多数据')        # 4. 得到财务数据    print(f'\n=== {symbol} 财务数据 ===')    finance = client.finance(symbol=symbol)    print('财务数据:', finance.shape ifnot finance.empty else'多数据')        # 5. 得到除权除息    print(f'\n=== {symbol} 除权除息 ===')    xdxr = client.xdxr(symbol=symbol)    print('除权除息:', xdxr.shape ifnot xdxr.empty else'多数据')        # 6. 得到分笔成交    print(f'\n=== {symbol} 分笔成交 ===')    transactions = client.transaction(symbol=symbol, offset=50)    print('分笔成交:', transactions.shape ifnot transactions.empty else'多数据')        # 7. 按日历边界得到数据    print(f'\n=== {symbol} 按日历边界得到 ===')    k_range = client.k(symbol=symbol, begin='20231101', end='20231201')    print('日历边界K线:', k_range.shape ifnot k_range.empty else'多数据')except Exception as e:    print(f'得到数据时出错: {e}')finally:    client.close()6.5 财务数据下载示例
from mootdx.affair import Affairimport os# 创建数据目次data_dir = './financial_data'os.makedirs(data_dir, exist_ok=True)# 得到财务文献列表files = Affair.files()print(f'可用财务文献数目: {len(files)}')# 下载最新的财务文献if files:    latest_file = files[0]['filename']    print(f'下载文献: {latest_file}')    Affair.fetch(downdir=data_dir, filename=latest_file)        # 阐发财务数据    financial_data = Affair.parse(downdir=data_dir, filename=latest_file)    print('财务数据:')    print(financial_data.head())
7. 失实处理7.1 连结失实处理from mootdx.quotes import Quotesfrom mootdx.exceptions import MootdxValidationExceptiontry:    client = Quotes.factory(market='std', timeout=10)    data = client.bars(symbol='600036')    print(data)except MootdxValidationException as e:    print(f'考证失实: {e}')except Exception as e:    print(f'连结失实: {e}')finally:    if'client'in locals():        client.close()7.2 数据考证
def safe_get_quotes(symbol):    '''安全得到行情数据'''    try:        client = Quotes.factory(market='std')        data = client.quotes(symbol=symbol)                if data isNoneor data.empty:            print(f'股票 {symbol} 多数据')            returnNone                    return data    except Exception as e:        print(f'得到 {symbol} 数据失败: {e}')        returnNone    finally:        client.close()# 使用示例quotes = safe_get_quotes('600036')if quotes isnotNone:    print(quotes)
8. 性能优化淡薄8.1 连结复用# 保举:复用连结client = Quotes.factory(market='std', heartbeat=True)symbols = ['600036', '000001', '000002']for symbol in symbols:    data = client.bars(symbol=symbol)    # 处理数据...client.close()  # 临了关闭连结8.2 批量操作
# 保举:批量得到行情symbols = ['600036', '000001', '000002']quotes_data = client.quotes(symbol=symbols)  # 一次得到多只股票# 不保举:一一得到# for symbol in symbols:#     quote = client.quotes(symbol=symbol)
8.3 数据缓存import picklefrom pathlib import Pathdef cache_data(data, filename):    '''缓存数据到文献'''    with open(filename, 'wb') as f:        pickle.dump(data, f)def load_cached_data(filename):    '''从缓存加载数据'''    if Path(filename).exists():        with open(filename, 'rb') as f:            return pickle.load(f)    returnNone# 使用缓存cache_file = 'stocks_cache.pkl'stocks = load_cached_data(cache_file)if stocks isNone:    client = Quotes.factory(market='std')    stocks = client.stock_all()    cache_data(stocks, cache_file)    client.close()print(f'股票数目: {len(stocks)}')9. 细隐衷项网罗连结: 在线行情需要网罗连结,淡薄修复安妥的超一样间数据频率: K线数据单次最多得到800条商场代码: 细心划分上海(1)、深圳(0)、北交所(2)商场资源措置: 使用齐全后实时关闭连结十分处理: 网罗不踏实时要作念好十分处理数据姿色: 复返数据为pandas DataFrame姿色复权数据: 需要复权数据时指定adjust参数10. 常见问题Q1: 连结超时怎么办?
# 加多超一样间和重试机制client = Quotes.factory(    market='std',     timeout=30,    auto_retry=True,    bestip=True  # 自动接受最好IP)
Q2: 怎么得到更多历史数据?# 分批得到历史数据def get_more_history(symbol, total_days=2000):    client = Quotes.factory(market='std')    all_data = []        batch_size = 800    for start in range(0, total_days, batch_size):        data = client.bars(symbol=symbol, start=start, offset=batch_size)        if data.empty:            break        all_data.append(data)        client.close()    return pd.concat(all_data, ignore_index=True) if all_data else pd.DataFrame()Q3: 如那处理股票代码姿色?
from mootdx.utils import get_stock_market# 自动识别商场def normalize_symbol(symbol):    '''门径化股票代码'''    symbol = symbol.strip().upper()        # 移除商场前缀    if symbol.startswith(('SH', 'SZ')):        symbol = symbol[2:]        # 补都6位数字    symbol = symbol.zfill(6)        return symbol# 使用示例symbols = ['sh600036', 'SZ000001', '1', '600519']normalized = [normalize_symbol(s) for s in symbols]print(normalized)  # ['600036', '000001', '000001', '600519']
Q4: 如那处理停牌和ST股票?from mootdx.quotes import Quotesimport pandas as pddef check_stock_status(symbols):    '''查抄股票现象(停牌、ST等)'''    client = Quotes.factory(market='std')        try:        results = []        for symbol in symbols:            try:                # 得到实时行情                quotes = client.quotes(symbol=symbol)                                if quotes.empty:                    results.append({'symbol': symbol, 'status': '多数据'})                    continue                                stock_info = quotes.iloc[0]                                # 查抄是否停牌(成交量为0且价钱无变化)                if stock_info.get('vol', 0) == 0:                    results.append({'symbol': symbol, 'status': '可能停牌'})                elif'ST'in stock_info.get('name', ''):                    results.append({'symbol': symbol, 'status': 'ST股票'})                else:                    results.append({'symbol': symbol, 'status': '平淡'})                                except Exception as e:                results.append({'symbol': symbol, 'status': f'失实: {e}'})                return pd.DataFrame(results)            finally:        client.close()# 使用示例test_symbols = ['600036', '000001', '000002', '600519']status_df = check_stock_status(test_symbols)print(status_df)Q5: 怎么得到涨跌停板数据?
from mootdx.quotes import Quotesimport pandas as pddef find_limit_stocks(market=1):    '''查找涨跌停股票'''    client = Quotes.factory(market='std')        try:        # 得到股票列表        stocks = client.stocks(market=market)                if stocks.empty:            return pd.DataFrame()                limit_up = []    # 涨停        limit_down = []  # 跌停                # 批量得到行情(分批处理幸免超时)        batch_size = 50        for i in range(0, len(stocks), batch_size):            batch_stocks = stocks.iloc[i:i+batch_size]['code'].tolist()                        try:                quotes = client.quotes(symbol=batch_stocks)                                ifnot quotes.empty:                    for _, stock in quotes.iterrows():                        change_pct = stock.get('change', 0)                                                # 涨停判断(接近10%或20%)                        if change_pct >= 9.8:                            limit_up.append({                                'code': stock['code'],                                'name': stock.get('name', ''),                                'price': stock.get('price', 0),                                'change': change_pct                            })                                                # 跌停判断                        elif change_pct <= -9.8:                            limit_down.append({                                'code': stock['code'],                                'name': stock.get('name', ''),                                'price': stock.get('price', 0),                                'change': change_pct                            })                        except Exception as e:                print(f'处理第 {i//batch_size + 1} 批股票时出错: {e}')                continue                result = {            'limit_up': pd.DataFrame(limit_up),            'limit_down': pd.DataFrame(limit_down)        }                return result            finally:        client.close()# 使用示例print('查找涨跌停股票...')limit_data = find_limit_stocks(market=1)  # 上海商场print(f'涨停股票 {len(limit_data['limit_up'])} 只:')ifnot limit_data['limit_up'].empty:    print(limit_data['limit_up'].head())print(f'\n跌停股票 {len(limit_data['limit_down'])} 只:')ifnot limit_data['limit_down'].empty:    print(limit_data['limit_down'].head())
本站仅提供存储职业,通盘试验均由用户发布,如发现存害或侵权试验,请点击举报。
邮箱

274535ef@outlook.com

官网

www.hengfengxs.com

地址

新闻世界科技园1178号

Powered by 2024欧洲杯官网- 欢迎您& RSS地图 HTML地图


2024欧洲杯官网- 欢迎您&-支持:64/128bit🍏系统类型:kaiyun欧洲杯appApp官方下载 begin=&#039;20230101&#039;-2024欧洲杯官网- 欢迎您&amp;