当前位置:首页>行情>工具学习:获取期权实时行情的尝试1-pytdx

工具学习:获取期权实时行情的尝试1-pytdx

  • 2026-11-13 08:08:07
工具学习:获取期权实时行情的尝试1-pytdx
如何免费获取期权的实时数据,搜索了一下最常用的就是如下几个途径:
  1. pytdx
  2. mootdx
  3. akshare
  4. 自己写爬虫爬取
我也不知道哪个更好用,因此决定逐个试一下,积累一些一手资料,从而辅助自己做选择。那就先从pytdx开始吧。
1. pytdx简介
我发现这是一个废弃的库,已经7年多没更新了,说实话,一开始我是不报任何希望的,有谁愿意相信一个躺了7年多的躯体还能正常工作。当它成功输出行情信息的那一刻,我就像深夜盗墓遇到诈尸一样,惊愕不已,回过神来的第一反应就是赶紧把源码备份一份,生怕下一刻该源码便会消融无迹。
经过简单的测试后,我觉得pytdx的最大特点是直连通达信行情服务器,然后解析从服务器返回的请求信息,这注定了它获取行情数据的速度在理论上可以和安装在你电脑上的通达信并驾齐驱。
2. 测试代码
以下是用于测试pytdx的代码,目的就是想看看是不是可以获取自己最需要的核心数据:期权行情和标的行情。由于返回数据量比较大,所以只输出了返回结果的最后几项数据。
from pytdx.hq import TdxHq_APIfrom pytdx.exhq import TdxExHq_APIfrom pytdx.params import TDXParamsif __name__ == "__main__":    print("0. 测试开始")    print("测试目标:获取期权的五档和1M数据,以及对应标的的当前价格")    print()    print("1. 测试获取标准行情的股票数据")    print()    try:        std_api = TdxHq_API()        std_ip = '109.244.35.28'        std_port = 7709        with std_api.connect(std_ip, std_port):            print("1.1 成功连接标准行情服务器")            print("IP:" + std_ip + ", Port:" + str(std_port))            print()            print("1.2 获取标的指数数据-000300")            stock_data = std_api.get_security_quotes([(TDXParams.MARKET_SH, '000300')])            print(stock_data)            print()            print("1.3 获取标的股票数据-510300")            print("注意:返回的价格为实际价格*10,需要自己对返回结果进行特殊处理")            stock_data = std_api.get_security_quotes([ (TDXParams.MARKET_SH, '510300')])            print(stock_data)            print()        print()        print("2. 测试获取扩展行情的期权数据")        print()        ext_api = TdxExHq_API()        ext_ip = '109.244.35.23'        ext_port = 7722        with ext_api.connect(ext_ip, ext_port):            print("2.1 成功连接扩展行情服务器")            print("IP:" + ext_ip + ", Port:" + str(ext_port))            print()            print("2.2 获取扩展行情服务器支持的市场。可以从中查找市场ID以供获取行情之用。")            all_markets = ext_api.get_markets()            first_six_markets = all_markets[:5]            for market in first_six_markets:                print(market)            print()            print("2.3 获取上交所股票期权五档行情")            call_2606_4800 = ext_api.get_instrument_quote(8, "10011316")            print(call_2606_4800)            print()            print("2.4 获取上交所股票期权当天1分钟数据")            all_minutes = ext_api.get_minute_time_data(8, "10011316")            last_six_minutes = all_minutes[-6:]            for minute_data in last_six_minutes:                print(minute_data)        print()        print("3. 测试结束")        print("测试结果:成功获取期权五档和1M数据,同时也能成功获取标的的当前价格")        print()    except Exception as e:        print()        print(f"测试失败。异常信息: {e}")        print()
以下是测试程序输出结果,从这些测试结果可以看出,pytdx依旧有能力获取我们所需要的各种行情数据。
3. 注意事项
在我初步使用的过程中,觉得最大的注意事项就是对通达信行情服务器IP和Port的获取。我在这里记录一下我是怎么获取这些信息的。
“Window + R”打开命令行窗口,然后输入“resmon”打开“资源监视器”,resmon应该就是resource monitor的缩写。
在“网络”选项中,勾选TdxW.exe进程,你便能看到所有通达信的TCP链接,其中端口为7709的用于标准行情,端口为7722的用于扩展行情,我不清楚是不是一定是这样,如果拿不准,反正就3个地址,一个一个试就行了。
4. 优点缺点
优点:可以快速获取大量行情数据。
缺点:
  • 服务器地址可能经常变动。一个缓解这个缺点的方法是:你可以把用过的有效地址记录下来,然后在连接时轮询地址簿。
  • 通达信的底层通信协议可能会发生变动,从而导致整个工具失效。这个担心可能多余,庞大的用户基础几乎封死了底层协议出现重大改动的可能,也许这就解释了为什么会出现这个现象:躺尸7年仍能保持活力。
5. 结论
我只是浮于表面地试用了一下,因此只能给出以下初步的判断:
想快速大量获取国内市场行情数据,它是一个有竞争力的选择。
再次强调:本文仅仅限于可行性分析的层面,如果你想获取更多的信息,请自行研究,谢谢!
全文完

最新文章

随机文章