使用MOOTDX库在Python中读取通达信数据,解决最新问题

M项目概述 – MOOTDXhttps://www.mootdx.com/zh-cn/latest/​​​​​​​​​​​​​​​​​​​​​

  • 库的安装
  • 注:我这的安装过程必须要ROOT权限,所以我用管理员的权限运行了控制台

    pip install mootdx==0.3.21

    不知道这里为啥要一定要带上版本,不带版本不行。

    基于源码安装

    python -m pip install git+https://github.com/mootdx/mootdx.git

    本机(windows)没有GIT的基于源码安装

    (这个过程是成功的,但是使用过程是失败的,所以不建议做,作为研究可以进行)

    https://gitee.com/beolee/mootdx/tree/master

    用ZIP的方式下载源码,解压到本地,例如 D:\quantization\mootdx-master

    mootdx-master目录下建立如下几个空文件

    requirements.txt

    README.rst

    HISTORY.rst

    setup.py

    setup.cfg

    在GITEE中复制上述文件内容,并生成文件(GITEE直接右键另存为是不行的)

    修改行情列表:修改文件mootdx-master\mootdx\consts.py(为什么要修改,有什么用,看后面)

    注:

    MOOTDX无论是源码中还是配置文件中的地址都太老了,不可用,会引起错误

    装一个通达信,找到目录下的connect.cfg,可以获得最新的行情服务器列表

    将HQ地址替换为

    #('银河证券阿里云行情','120.76.1.198',7709),
    #('银河证券上证云行情','222.73.48.27',7709),
    #('银河证券金融终端阿里云','120.76.4.28',7719),
    #('银河证券富丰电信', '1.202.143.37',7709),
    #('银河证券富丰联通', '111.203.134.118',7709),
    #('银河证券富丰移动', '117.133.128.226',7709),
    #('银河证券上证云上海一', '103.251.85.214',7709),
    #('银河证券上证云上海二', '114.141.177.40',7709),
    #('银河证券上证云福州一', '27.151.2.113',7709),
    #('银河证券上证云福州二', '27.151.2.38',7709),
    #('银河证券上证云新疆', '202.100.166.12',7709),
    #('银河证券上证云上海二', '114.141.177.40',7709),
    #('银河证券上证云福州一', '27.151.2.113',7709),
    #('银河证券上证云福州二', '27.151.2.38',7709),
    #('银河证券上证云新疆', '202.100.166.12',7709)

    完成通过源码安装

    d:
    cd D:\quantization\mootdx-master\mootdx
    python setup.py install 

    但是,在编写代码的时候,使用源码安装后会出现

    ModuleNotFoundError: No module named 'mootdx.quotes'

     这个问题,还没深入去检查并解决,所以这里不推荐源码的方式进行安装

    后续通过部分修改,PIP 在线安装的版本可以正常使用

  • 进行线路测试(下面的操作)
  • mootdx bestip -v

    这时候会出现错误

    查看磁盘目录发现

    C:\Users\turui\.mootdx

    C:\Users\turui\mootdx

    都存在,并且都有config.json

    但是,重点来了,这两个地址,不管哪个config.json如何修改,都不会被读取。

  • 修改行情列表,创造一个可用的在线行情读取环境
  • 找到文件(需要管理员权限)

    C:\ProgramData\Anaconda3\lib\site-packages\mootdx\consts.py

    修改行情列表

    进行服务器测试

    mootdx bestip -v 

     经过上面的修改,这个命令一切正常接下来就可以进行程序编写、测试。

  • 本地数据读取
  • from mootdx.reader import Reader
    
    # market: 参数 `std` 为标准市场(就是股票), `ext` 为扩展市场(期货,黄金等)
    # tdxdir: 是通达信的数据目录, 根据自己的情况修改
    # 本地要下载的有相应的文件,否则会报错
    reader = Reader.factory(market='std', tdxdir='C:\海王星金融终端-中国银河证券')
    
    # 读取日线数据
    reader.daily(symbol='300264')
    
    # 读取1分钟数据
    reader.minute(symbol='300264')
    
    # 读取5分钟数据
    reader.fzline(symbol='300264')
  • 在线数据读取
  • client = Quotes.factory(market='std', multithread=True, heartbeat=True, bestip=False, timeout=15)
    # multithread 多线程
    # heartbeat 开启心跳包
    # bestip 重新测试最快服务器
    # server 自行设置服务器IP, 格式 `server=('127.0.0.1', 7727)`
    # timeout 设置超时时间
    # quiet 日志静默方式, 默认False, 设置为 True 则不打印日志信息
    # verbose 日志显示等级 0, 静默模式, 1 一般级别, 2 详细级别
    
    
    from mootdx.consts import MARKET_SH
    #指数 client.index
    #股票 client.bars
    #分钟 client.minute
    #frequency: K线种类
    #    0 => 5分钟K线 => 5m 
    #    1 => 15分钟K线 => 15m 
    #    2 => 30分钟K线 => 30m 
    #    3 => 小时K线 => 1h 
    #    4 => 日K线 (小数点x100) => days 
    #    5 => 周K线 => week 
    #    6 => 月K线 => mon 
    #    7 => 1分钟K线(好像一样) => 1m 
    #    8 => 1分钟K线(好像一样) => 1m 
    #    9 => 日K线 => day 
    #    10 => 季K线 => 3mon 
    #    11 => 年K线 => year
    #market: 市场代码. 0 - 深圳, 1 - 上海 (可以使用常量 MARKET_SZ, MARKET_SH 代替)
    #start: 开始位置
    #offset: 用户要请求的 K 线数目,最大值为 800
    
    client.index(frequency=9, market=MARKET_SH, symbol='000001', start=1, offset=2)
    
    # 读取K线,前复权
    client.bars(symbol='300264', adjust='qfq')
    
    # 读取多支票
    client.quotes(symbol=["000001", "300264"])
    
    # 读取分时数据
    client.minute(symbol='300264')
    
    # 读取历史分时
    client.minutes(symbol='300264', date='20240119')
    
    
    
    

    client返回的数据格式为 DataFrame格式。

    作者:turui

    物联沃分享整理
    物联沃-IOTWORD物联网 » 使用MOOTDX库在Python中读取通达信数据,解决最新问题

    发表回复