拓冰建站拓冰建站
首页 / 资讯中心 / 正文

告别手工导表:用 mootdx 通达信数据接口走通取数到落盘的五个环节

告别手工导表用 mootdx 通达信数据接口走通取数到落盘的五个环节【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdxmootdx 是一套通达信数据接口的 Python 封装专为量化爱好者、数据分析师和理财软件重度用户设计让你不用打开通达信界面、不靠截图和复制粘贴就能用几行代码拿到行情、K 线、财务数据并直接进入 pandas 的世界。这篇文章不跟你谈概念只带你把取数 → 清洗 → 计算 → 存储 → 输出这条数据流水线完整跑一遍每一步都能直接复制运行。先说说每天手工导表的三个烦恼如果你和我一样曾经是通达信 Excel的重度用户下面这三个场景你一定不陌生截图靠肉眼想统计某只股票近 60 日的均线只能对着 K 线图手动数格子数完还容易算错。导出靠手点每次更新数据都要打开软件、切到日线、右键导出、另存为一天重复几十次。数据源不统一行情一个来源、财务一个来源、复权价又要去别的网站查几个表格拼起来格式还对不上。mootdx 解决的正是这堆杂事它把通达信的服务端协议和本地数据文件格式都封装好了你只需要告诉它我要什么剩下的连接、解析、格式转换它全包。下面我们直接开工。✅ 三步装好工具并锁定延迟最低的服务器先装包再测速最后验证一共三条命令# 第一步安装 mootdx推荐使用虚拟环境 python -m venv mootdx_env source mootdx_env/bin/activate pip install -U mootdx # 第二步扫描全网服务器挑出响应最快的几个 python -m mootdx bestip -vv # 第三步验证安装是否成功 python -c from mootdx.quotes import Quotes; print(mootdx 已就绪)bestip这一步很关键它会并发探测一批通达信行情服务器并给出延迟排序。网络环境不同最优服务器也不同建议定期跑一次。测完你会得到一个 IP 和端口下一节的代码里会用到。小结装好包 选好服务器你的数据管道地基就算打好了。 第一站·取数实时快照与日线数据的批量获取方法行情接口的核心入口是Quotes.factorymarketstd表示沪深股票marketext表示期货、期权等扩展市场。我们封装一个类把实时报价和日 K 拉取都收进去from mootdx.quotes import Quotes class Snapshot: 通达信线上行情客户端封装 def __init__(self, serverNone): # bestipTrue 表示自动选最快服务器heartbeat 保持长连接心跳 self.client Quotes.factory( marketstd, serverserver, bestipTrue, heartbeatTrue, timeout15 ) def spot(self, symbols): 批量获取实时快照symbols 传入代码列表 return self.client.quotes(symbolsymbols) def kline(self, symbol, freqday, count250): 拉取 K 线freq 用文字描述即可 return self.client.bars(symbolsymbol, frequencyfreq, offsetcount) snap Snapshot(server(127.0.0.1, 7709)) # 换成 bestip 给出的地址 print(snap.spot([000001, 600036])) print(snap.kline(600036, freqday, count60).tail(3))注意frequency参数既支持数字也支持文字对应关系是5m→0、15m→1、30m→2、1h→3、day→9、week→5、mon→6、1m→8、year→11。默认返回的 DataFrame 已经带好open / high / low / close / vol等标准列名直接就能用。小结一个类同时搞定实时报价和历史 K 线通达信日线数据批量获取方法到这里就算入门了。 第二站·清洗一行参数解决前复权与后复权拿到手的是不复权价除权除息日会出现价格跳空算指标和收益都会失真。mootdx 把复权处理也封装进了接口给adjust传参即可from mootdx.quotes import Quotes client Quotes.factory(marketstd, bestipTrue) # qfq 前复权以最新价为基准适合看当前走势 df_qfq client.bars(symbol600036, frequency9, offset250, adjustqfq) # hfq 后复权以首日为基准适合做历史收益回测 df_hfq client.bars(symbol600036, frequency9, offset250, adjusthfq) # 对比一下复权前后收盘价的差异 print(df_qfq[[close]].tail(3)) print(df_hfq[[close]].tail(3))如果你用的是本地数据Reader同样支持复权参数用法保持一致。这背后的实现会自动抓取除权除息信息并生成复权因子你完全不用关心细节。小结复权只是adjustqfq这一个参数的事从此告别自己找复权因子的苦日子。 第三站·计算在 pandas 里算出均线与区间涨跌幅数据进了 DataFrame剩下的就是你熟悉的 pandas 主场。下面这段把取数 → 算指标 → 生成信号串成一条链为后续策略打个底import pandas as pd from mootdx.quotes import Quotes def build_features(client, symbol600036, window20): 拉取日线并计算均线与涨跌幅 df client.bars(symbolsymbol, frequencyday, offset120, adjustqfq) # 收盘价的 N 日均线 df[ma] df[close].rolling(window).mean() # 当日涨跌幅%shift 用于错位取前一日收盘 df[pct] (df[close] / df[close].shift(1) - 1) * 100 # 简单信号收盘价站上均线记为 1 df[signal] (df[close] df[ma]).astype(int) return df.dropna() client Quotes.factory(marketstd, bestipTrue) features build_features(client, 000001, window20) print(features[[close, ma, pct, signal]].tail(5))到这里你已经能对任意股票快速产出价格 指标 信号的数据集这正是量化分析最常打交道的原料。小结mootdx 负责把数据喂到嘴边指标计算完全用你熟悉的 pandas 完成没有黑盒。 第四站·存储CSV 落盘与每日增量更新策略要跑得久数据就得存得住。下面这个类实现了全量存一次、之后只追加新数据的增量更新避免每次重复拉全量import os import pandas as pd from mootdx.quotes import Quotes class DailyStore: 日线数据本地仓库支持增量更新 def __init__(self, data_dirdata): os.makedirs(data_dir, exist_okTrue) self.data_dir data_dir self.client Quotes.factory(marketstd, bestipTrue) def _path(self, symbol): return os.path.join(self.data_dir, f{symbol}.csv) def update(self, symbol): # 本地已有的最新日期用于增量起点 latest self._last_date(symbol) if latest is None: frame self.client.bars(symbolsymbol, frequencyday, offset500) else: # 用 start 指定从第几条开始拉配合 offset 控制数量 frame self.client.bars(symbolsymbol, frequencyday, offset800) frame frame[frame[datetime] latest] if latest else frame frame.to_csv(self._path(symbol), modea, headernot os.path.exists(self._path(symbol))) return len(frame) def _last_date(self, symbol): path self._path(symbol) if not os.path.exists(path): return None return pd.read_csv(path, usecols[datetime])[datetime].max() store DailyStore(my_data) print(f本次新增 {store.update(600036)} 条记录)这样每天收盘后跑一次update本地 CSV 就自动保持最新回测和画图随时有料可用。小结文件落地 增量追加的组合让你的历史数据仓库既省流量又省时间。 第五站·输出离线文件读取与财务数据自动下载最后一站是两条高频需求不联网读本地通达信数据和自动补全财务数据。前者用Reader后者用Affairfrom mootdx.reader import Reader from mootdx.affair import Affair # 1) 离线读取tdxdir 指向通达信安装目录直接解析 vipdoc 下的二进制文件 reader Reader.factory(marketstd, tdxdirC:/new_tdx) print(reader.daily(symbol600036).tail(3)) # 日线 print(reader.fzline(symbol600036).tail(3)) # 5 分钟线 # 2) 财务数据先看远程有哪些季度报告压缩包 files Affair.files() print([f[filename] for f in files[:3]]) # 3) 下载并解析最新一期资产负债表 Affair.fetch(downdirfinance, filenamegpcw20231231.zip) df Affair.parse(downdirfinance, filenamegpcw20231231.zip) print(df.head(3))离线读取适合软件没开、数据却要更新的场景财务数据接口则能把你手工去网站翻报表的时间省到几乎为零。小结行情与财务两条数据线都齐了你的个人量化数据中台就此成型。⚠️ 收尾前记下这三个踩坑点最后分享三个最容易翻车的地方都是过来人的教训服务器别写死公共行情服务器会不定期失效跑批前先用bestip重新测一次或直接传bestipTrue让库自动选。频率别猜frequency的数字和文字映射容易记混建议代码里统一写day、1m这种文字形式可读性也更好。目录要给对Reader.factory的tdxdir必须指向通达信安装目录里面要有vipdoc子目录填错会直接抛目录不存在异常。到这里你已经完整走通了通达信数据的取数、清洗、计算、存储与输出五个环节。别光看打开终端把代码跑起来——先用bestip选一台服务器再拉一只你熟悉的股票看看数据长什么样。跑通第一行代码的瞬间你就能感受到手工导表时代正式结束了剩下的量化玩法交给你的想象力。【免费下载链接】mootdx通达信数据读取的一个简便使用封装项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门