Giter VIP home page Giter VIP logo

vnpy_ctp's Introduction

VeighNa - By Traders, For Traders.

💬 Want to read this in english ? Go here

VeighNa是一套基于Python的开源量化交易系统开发框架,在开源社区持续不断的贡献下一步步成长为多功能量化交易平台,自发布以来已经积累了众多来自金融机构或相关领域的用户,包括私募基金、证券公司、期货公司等。

🚀 🚀 🚀 面向专业交易员的【VeighNa Elite量化终端】已经正式发布,针对专业交易员群体在海量策略并发、智能移仓换月、算法拆单执行、多账户交易支持等方面的需求提供了完善支持。了解更详细的信息请扫描下方二维码关注后,点击菜单栏的【社区交流 -> Elite会员服务】即可

在使用VeighNa进行二次开发(策略、模块等)的过程中有任何疑问,请查看VeighNa项目文档,如果无法解决请前往官方社区论坛的【提问求助】板块寻求帮助,也欢迎在【经验分享】板块分享你的使用心得!

想要获取更多关于VeighNa的资讯信息? 请扫描下方二维码添加小助手加入【VeighNa社区交流微信群】:

功能特点

  1. 多功能量化交易平台(trader),整合了多种交易接口,并针对具体策略算法和功能开发提供了简洁易用的API,用于快速构建交易员所需的量化交易应用。

  2. 覆盖国内外所拥有的下述交易品种的交易接口(gateway):

    • 国内市场

      • CTP(ctp):国内期货、期权

      • CTP Mini(mini):国内期货、期权

      • CTP证券(sopt):ETF期权

      • 飞马(femas):国内期货

      • 恒生UFT(uft):国内期货、ETF期权

      • 易盛(esunny):国内期货、黄金TD

      • 顶点飞创(sec):ETF期权

      • 顶点HTS(hts):ETF期权

      • 中泰XTP(xtp):国内证券(A股)、ETF期权

      • 华鑫奇点(tora):国内证券(A股)、ETF期权

      • 国泰君安(hft):国内证券(A股、两融)

      • 东证OST(ost):国内证券(A股)

      • 东方财富EMT(emt):国内证券(A股)

      • 飞鼠(sgit):黄金TD、国内期货

      • 金仕达黄金(ksgold):黄金TD

      • 融航(rohon):期货资管

      • 杰宜斯(jees):期货资管

      • 中汇亿达(comstar):银行间市场

      • 掘金(gm):国内证券(仿真)

      • 恒生云UF(uf):国内证券(仿真)

      • TTS(tts):国内期货(仿真)

    • 海外市场

      • Interactive Brokers(ib):海外证券、期货、期权、贵金属等

      • 易盛9.0外盘(tap):海外期货

      • 直达期货(da):海外期货

    • 特殊应用

      • RQData行情(rqdata):跨市场(股票、指数、ETF、期货)实时行情

      • 迅投研行情(xt):跨市场(股票、指数、可转债、ETF、期货、期权)实时行情

      • RPC服务(rpc):跨进程通讯接口,用于分布式架构

  3. 覆盖下述各类量化策略的交易应用(app):

    • cta_strategy:CTA策略引擎模块,在保持易用性的同时,允许用户针对CTA类策略运行过程中委托的报撤行为进行细粒度控制(降低交易滑点、实现高频策略)

    • cta_backtester:CTA策略回测模块,无需使用Jupyter Notebook,直接使用图形界面进行策略回测分析、参数优化等相关工作

    • spread_trading:价差交易模块,支持自定义价差,实时计算价差行情和持仓,支持价差算法交易以及自动价差策略两种模式

    • option_master:期权交易模块,针对国内期权市场设计,支持多种期权定价模型、隐含波动率曲面计算、希腊值风险跟踪等功能

    • portfolio_strategy:组合策略模块,面向同时交易多合约的量化策略(Alpha、期权套利等),提供历史数据回测和实盘自动交易功能

    • algo_trading:算法交易模块,提供多种常用的智能交易算法:TWAP、Sniper、Iceberg、BestLimit等

    • script_trader:脚本策略模块,面向多标的类量化策略和计算任务设计,同时也可以在命令行中实现REPL指令形式的交易,不支持回测功能

    • paper_account:本地仿真模块,纯本地化实现的仿真模拟交易功能,基于交易接口获取的实时行情进行委托撮合,提供委托成交推送以及持仓记录

    • chart_wizard:K线图表模块,基于RQData数据服务(期货)或者交易接口获取历史数据,并结合Tick推送显示实时行情变化

    • portfolio_manager:交易组合管理模块,以独立的策略交易组合(子账户)为基础,提供委托成交记录管理、交易仓位自动跟踪以及每日盈亏实时统计功能

    • rpc_service:RPC服务模块,允许将某一进程启动为服务端,作为统一的行情和交易路由通道,允许多客户端同时连接,实现多进程分布式系统

    • data_manager:历史数据管理模块,通过树形目录查看数据库中已有的数据概况,选择任意时间段数据查看字段细节,支持CSV文件的数据导入和导出

    • data_recorder:行情记录模块,基于图形界面进行配置,根据需求实时录制Tick或者K线行情到数据库中,用于策略回测或者实盘初始化

    • excel_rtd:Excel RTD(Real Time Data)实时数据服务,基于pyxll模块实现在Excel中获取各类数据(行情、合约、持仓等)的实时推送更新

    • risk_manager:风险管理模块,提供包括交易流控、下单数量、活动委托、撤单总数等规则的统计和限制,有效实现前端风控功能

    • web_trader:Web服务模块,针对B-S架构需求设计,实现了提供主动函数调用(REST)和被动数据推送(Websocket)的Web服务器

  4. Python交易API接口封装(api),提供上述交易接口的底层对接实现。

    • REST Client(rest):基于协程异步IO的高性能REST API客户端,采用事件消息循环的编程模型,支持高并发实时交易请求发送

    • Websocket Client(websocket):基于协程异步IO的高性能Websocket API客户端,支持和REST Client共用事件循环并发运行

  5. 简洁易用的事件驱动引擎(event),作为事件驱动型交易程序的核心。

  6. 对接各类数据库的适配器接口(database):

    • SQL类

      • SQLite(sqlite):轻量级单文件数据库,无需安装和配置数据服务程序,VeighNa的默认选项,适合入门新手用户

      • MySQL(mysql):主流的开源关系型数据库,文档资料极为丰富,且可替换其他NewSQL兼容实现(如TiDB)

      • PostgreSQL(postgresql):特性更为丰富的开源关系型数据库,支持通过扩展插件来新增功能,只推荐熟手使用

    • NoSQL类

      • DolphinDB(dolphindb):一款高性能分布式时序数据库,适用于对速度要求极高的低延时或实时性任务

      • Arctic(arctic):高性能金融时序数据库,采用了分块化储存、LZ4压缩等性能优化方案,以实现时序数据的高效读写

      • TDengine(taos):分布式、高性能、支持SQL的时序数据库,带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少研发和运维的复杂度

      • TimescaleDB(timescaledb):基于PostgreSQL开发的一款时序数据库,以插件化扩展的形式安装,支持自动按空间和时间对数据进行分区

      • MongoDB(mongodb):基于分布式文件储存(bson格式)的文档式数据库,内置的热数据内存缓存提供更快读写速度

      • InfluxDB(influxdb):针对TimeSeries Data专门设计的时序数据库,列式数据储存提供极高的读写效率和外围分析应用

      • LevelDB(leveldb):由Google推出的高性能Key/Value数据库,基于LSM算法实现进程内存储引擎,支持数十亿级别的海量数据

  7. 对接下述各类数据服务的适配器接口(datafeed):

    • 迅投研(xt):股票、期货、期权、基金、债券

    • 米筐RQData(rqdata):股票、期货、期权、基金、债券、黄金TD

    • 恒生UData(udata):股票、期货、期权

    • TuShare(tushare):股票、期货、期权、基金

    • 万得Wind(wind):股票、期货、基金、债券

    • 天软Tinysoft(tinysoft):股票、期货、基金、债券

    • 同花顺iFinD(ifind):股票、期货、基金、债券

    • 天勤TQSDK(tqsdk):期货

  8. 跨进程通讯标准组件(rpc),用于实现分布式部署的复杂交易系统。

  9. Python高性能K线图表(chart),支持大数据量图表显示以及实时数据更新功能。

  10. 社区论坛知乎专栏,内容包括VeighNa项目的开发教程和Python在量化交易领域的应用研究等内容。

  11. 官方交流群262656087(QQ),管理严格(定期清除长期潜水的成员),入群费将捐赠给VeighNa社区基金。

注:以上关于功能特点的说明为根据说明文档发布时情况罗列,后续可能存在更新或调整。若功能描述同实际存在出入,欢迎通过Issue联系进行调整。

环境准备

  • 推荐使用VeighNa团队为量化交易专门打造的Python发行版VeighNa Studio-3.9.2,集成内置了VeighNa框架以及VeighNa Station量化管理平台,无需手动安装
  • 支持的系统版本:Windows 11以上 / Windows Server 2019以上 / Ubuntu 22.04 LTS以上
  • 支持的Python版本:Python 3.10以上(64位),推荐使用Python 3.10

安装步骤

这里下载Release发布版本,解压后运行以下命令安装:

Windows

install.bat

Ubuntu

bash install.sh

Macos

bash install_osx.sh

注意:setup.cfg中列举了VeighNa框架安装所需的依赖库,requirements.txt中给出了这些依赖库的推荐安装版本。

使用指南

  1. SimNow注册CTP仿真账号,并在该页面获取经纪商代码以及交易行情服务器地址。

  2. VeighNa社区论坛注册获得VeighNa Station账号密码(论坛账号密码即是)

  3. 启动VeighNa Station(安装VeighNa Studio后会在桌面自动创建快捷方式),输入上一步的账号密码登录

  4. 点击底部的VeighNa Trader按钮,开始你的交易!!!

注意:

  • 在VeighNa Trader的运行过程中请勿关闭VeighNa Station(会自动退出)

脚本运行

除了基于VeighNa Station的图形化启动方式外,也可以在任意目录下创建run.py,写入以下示例代码:

from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp

from vnpy_ctp import CtpGateway
from vnpy_ctastrategy import CtaStrategyApp
from vnpy_ctabacktester import CtaBacktesterApp


def main():
    """Start VeighNa Trader"""
    qapp = create_qapp()

    event_engine = EventEngine()
    main_engine = MainEngine(event_engine)
    
    main_engine.add_gateway(CtpGateway)
    main_engine.add_app(CtaStrategyApp)
    main_engine.add_app(CtaBacktesterApp)

    main_window = MainWindow(main_engine, event_engine)
    main_window.showMaximized()

    qapp.exec()


if __name__ == "__main__":
    main()

在该目录下打开CMD(按住Shift->点击鼠标右键->在此处打开命令窗口/PowerShell)后运行下列命令启动VeighNa Trader:

python run.py

贡献代码

VeighNa使用Github托管其源代码,如果希望贡献代码请使用github的PR(Pull Request)的流程:

  1. 创建 Issue - 对于较大的改动(如新功能,大型重构等)建议先开issue讨论一下,较小的improvement(如文档改进,bugfix等)直接发PR即可

  2. Fork VeighNa - 点击右上角Fork按钮

  3. Clone你自己的fork: git clone https://github.com/$userid/vnpy.git

    • 如果你的fork已经过时,需要手动sync:同步方法
  4. dev创建你自己的feature branch: git checkout -b $my_feature_branch dev

  5. 在$my_feature_branch上修改并将修改push到你的fork上

  6. 创建从你的fork的$my_feature_branch分支到主项目的dev分支的[Pull Request] - 在此点击compare across forks,选择需要的fork和branch创建PR

  7. 等待review, 需要继续改进,或者被Merge!

在提交代码的时候,请遵守以下规则,以提高代码质量:

  • 使用flake8检查你的代码,确保没有error和warning。在项目根目录下运行flake8即可。

其他内容

版权说明

MIT

vnpy_ctp's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

vnpy_ctp's Issues

Mac 报错libiconv

Traceback (most recent call last):
File "/Users/zixun/Library/CloudStorage/OneDrive-个人/Python/github_projects/vnpy/run.py", line 4, in
from vnpy_ctp import CtpGateway
File "/Users/zixun/Library/CloudStorage/OneDrive-个人/Python/github_projects/vnpy/vnpy_ctp/vnpy_ctp/init.py", line 26, in
from .gateway import CtpGateway
File "/Users/zixun/Library/CloudStorage/OneDrive-个人/Python/github_projects/vnpy/vnpy_ctp/vnpy_ctp/gateway/init.py", line 1, in
from .ctp_gateway import CtpGateway
File "/Users/zixun/Library/CloudStorage/OneDrive-个人/Python/github_projects/vnpy/vnpy_ctp/vnpy_ctp/gateway/ctp_gateway.py", line 31, in
from ..api import (
File "/Users/zixun/Library/CloudStorage/OneDrive-个人/Python/github_projects/vnpy/vnpy_ctp/vnpy_ctp/api/init.py", line 1, in
from .vnctpmd import MdApi
ImportError: dlopen(/Users/zixun/Library/CloudStorage/OneDrive-个人/Python/github_projects/vnpy/vnpy_ctp/vnpy_ctp/api/vnctpmd.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '_libiconv'

无法在m1版mac上安装vnpy_ctp,报错如下

error: subprocess-exited-with-error

× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [109 lines of output]
running bdist_wheel
running build
running build_py
creating build
creating build/lib.macosx-13.0-arm64-3.8
creating build/lib.macosx-13.0-arm64-3.8/vnpy_ctp
copying vnpy_ctp/init.py -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp
creating build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api
copying vnpy_ctp/api/init.py -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api
copying vnpy_ctp/api/ctp_constant.py -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api
creating build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/gateway
copying vnpy_ctp/gateway/ctp_gateway.py -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/gateway
copying vnpy_ctp/gateway/init.py -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/gateway
running egg_info
writing vnpy_ctp.egg-info/PKG-INFO
writing dependency_links to vnpy_ctp.egg-info/dependency_links.txt
writing requirements to vnpy_ctp.egg-info/requires.txt
writing top-level names to vnpy_ctp.egg-info/top_level.txt
reading manifest file 'vnpy_ctp.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*.pyd' under directory 'vnpy_ctp'
adding license file 'LICENSE'
writing manifest file 'vnpy_ctp.egg-info/SOURCES.txt'
copying vnpy_ctp/api/libthostmduserapi_se.so -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api
copying vnpy_ctp/api/libthosttraderapi_se.so -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api
copying vnpy_ctp/api/thostmduserapi_se.dll -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api
copying vnpy_ctp/api/thosttraderapi_se.dll -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api
creating build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_md_header_define.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_md_header_function.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_md_header_on.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_md_header_process.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_md_source_function.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_md_source_module.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_md_source_on.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_md_source_process.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_md_source_switch.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_md_source_task.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_td_header_define.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_td_header_function.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_td_header_on.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_td_header_process.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_td_source_function.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_td_source_module.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_td_source_on.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_td_source_process.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_td_source_switch.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
copying vnpy_ctp/api/generator/ctp_td_source_task.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/generator
creating build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include
creating build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/ctp
copying vnpy_ctp/api/include/ctp/ThostFtdcMdApi.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/ctp
copying vnpy_ctp/api/include/ctp/ThostFtdcTraderApi.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/ctp
copying vnpy_ctp/api/include/ctp/ThostFtdcUserApiDataType.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/ctp
copying vnpy_ctp/api/include/ctp/ThostFtdcUserApiStruct.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/ctp
creating build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/attr.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/buffer_info.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/cast.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/chrono.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/common.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/complex.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/eigen.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/embed.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/eval.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/functional.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/iostream.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/numpy.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/operators.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/options.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/pybind11.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/pytypes.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/stl.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
copying vnpy_ctp/api/include/pybind11/stl_bind.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11
creating build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11/detail
copying vnpy_ctp/api/include/pybind11/detail/class.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11/detail
copying vnpy_ctp/api/include/pybind11/detail/common.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11/detail
copying vnpy_ctp/api/include/pybind11/detail/descr.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11/detail
copying vnpy_ctp/api/include/pybind11/detail/init.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11/detail
copying vnpy_ctp/api/include/pybind11/detail/internals.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11/detail
copying vnpy_ctp/api/include/pybind11/detail/typeid.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/include/pybind11/detail
creating build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/libs
copying vnpy_ctp/api/libs/thostmduserapi_se.lib -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/libs
copying vnpy_ctp/api/libs/thosttraderapi_se.lib -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/libs
creating build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp
copying vnpy_ctp/api/vnctp/vnctp.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp
creating build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctpmd
copying vnpy_ctp/api/vnctp/vnctpmd/dllmain.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctpmd
copying vnpy_ctp/api/vnctp/vnctpmd/stdafx.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctpmd
copying vnpy_ctp/api/vnctp/vnctpmd/stdafx.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctpmd
copying vnpy_ctp/api/vnctp/vnctpmd/targetver.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctpmd
copying vnpy_ctp/api/vnctp/vnctpmd/vnctpmd.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctpmd
copying vnpy_ctp/api/vnctp/vnctpmd/vnctpmd.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctpmd
creating build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctptd
copying vnpy_ctp/api/vnctp/vnctptd/dllmain.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctptd
copying vnpy_ctp/api/vnctp/vnctptd/stdafx.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctptd
copying vnpy_ctp/api/vnctp/vnctptd/stdafx.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctptd
copying vnpy_ctp/api/vnctp/vnctptd/targetver.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctptd
copying vnpy_ctp/api/vnctp/vnctptd/vnctptd.cpp -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctptd
copying vnpy_ctp/api/vnctp/vnctptd/vnctptd.h -> build/lib.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctptd
running build_ext
building 'vnpy_ctp.api.vnctptd' extension
creating build/temp.macosx-13.0-arm64-3.8
creating build/temp.macosx-13.0-arm64-3.8/vnpy_ctp
creating build/temp.macosx-13.0-arm64-3.8/vnpy_ctp/api
creating build/temp.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp
creating build/temp.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctptd
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -Ivnpy_ctp/api/include -Ivnpy_ctp/api/vnctp -I/Users/evimacs/.pyenv/versions/vnpy_38/include -I/Users/evimacs/.pyenv/versions/3.8.13/include/python3.8 -c vnpy_ctp/api/vnctp/vnctptd/vnctptd.cpp -o build/temp.macosx-13.0-arm64-3.8/vnpy_ctp/api/vnctp/vnctptd/vnctptd.o -O2 -MT
clang: error: argument to '-MT' is missing (expected 1 value)
error: command 'clang' failed with exit status 1
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for vnpy_ctp
Running setup.py clean for vnpy_ctp
Failed to build vnpy_ctp

macos: symbol not found in flat namespace '_libiconv'

咨询下我这个是什么问题:

  • Darwin mbp.local 23.4.0 Darwin Kernel Version 23.4.0: Fri Mar 15 00:19:22 PDT 2024; root:xnu-10063.101.17~1/RELEASE_ARM64_T8112 arm64
  • 使用的main分支代码
  • python3.12,其实python3.10也是这个错误

整体操作步骤:

  1. clone仓库
  2. 创建.venv
  3. 安装vnpy
  4. pip install -e . 安装
  5. 运行run.py报错
/Users/xx/work/quant/vnpy_ctp/.venv/bin/python /Users/xx/work/quant/vnpy_ctp/script/run.py 
Traceback (most recent call last):
  File "/Users/xx/work/quant/vnpy_ctp/script/run.py", line 5, in <module>
    from vnpy_ctp import CtpGateway
  File "/Users/xx/work/quant/vnpy_ctp/vnpy_ctp/__init__.py", line 26, in <module>
    from .gateway import CtpGateway
  File "/Users/xx/work/quant/vnpy_ctp/vnpy_ctp/gateway/__init__.py", line 1, in <module>
    from .ctp_gateway import CtpGateway
  File "/Users/xx/work/quant/vnpy_ctp/vnpy_ctp/gateway/ctp_gateway.py", line 31, in <module>
    from ..api import (
  File "/Users/xx/work/quant/vnpy_ctp/vnpy_ctp/api/__init__.py", line 1, in <module>
    from .vnctpmd import MdApi
ImportError: dlopen(/Users/xx/work/quant/vnpy_ctp/vnpy_ctp/api/vnctpmd.cpython-312-darwin.so, 0x0002): symbol not found in flat namespace '_libiconv'

python3.10运行ctp接口terminate called after throwing an instance of 'std::runtime_error'

操作系统ubuntu20.04

2022-03-13 20:23:12,805 INFO: 交易风控功能启动
2022-03-13 20:23:12,865 INFO: 交易接口:CTP,交易服务器连接成功
2022-03-13 20:23:12,875 INFO: 交易接口:CTP,行情服务器连接成功
terminate called after throwing an instance of 'std::runtime_error'
what(): locale::facet::_S_create_c_locale name not valid
已放弃 (核心已转储)

Window pip install 6.5.12失败

环境:
Python 3.6 32位
Win10

报错:
ERROR: Command errored out with exit status 1:
command: 'd:\lyj\tf_o32_vnpy\env\scripts\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\Hello\AppData\Local\Temp\pip-install-lezj0iou\vnpy-ctp_8794e3c3a96a4bbf91c4c2dd0e678f5b\setup.py'"'"'; file='"'"'C:\Users\Hello\AppData\Local\Temp\pip-install-lezj0iou\vnpy-ctp_8794e3c3a96a4bbf91c4c2dd0e678f5b\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record 'C:\Users\Hello\AppData\Local\Temp\pip-record-qxsyisd1\install-record.txt' --single-version-externally-managed --compile --install-headers 'd:\lyj\tf_o32_vnpy\env\include\site\python3.6\vnpy-ctp'
cwd: C:\Users\Hello\AppData\Local\Temp\pip-install-lezj0iou\vnpy-ctp_8794e3c3a96a4bbf91c4c2dd0e678f5b
Complete output (120 lines):
running install
running build
running build_py
creating build
creating build\lib.win32-3.6
creating build\lib.win32-3.6\vnpy_ctp
copying vnpy_ctp_init_.py -> build\lib.win32-3.6\vnpy_ctp
creating build\lib.win32-3.6\vnpy_ctp\api
copying vnpy_ctp\api\ctp_constant.py -> build\lib.win32-3.6\vnpy_ctp\api
copying vnpy_ctp\api_init_.py -> build\lib.win32-3.6\vnpy_ctp\api
creating build\lib.win32-3.6\vnpy_ctp\gateway
copying vnpy_ctp\gateway\ctp_gateway.py -> build\lib.win32-3.6\vnpy_ctp\gateway
copying vnpy_ctp\gateway_init_.py -> build\lib.win32-3.6\vnpy_ctp\gateway
running egg_info
writing vnpy_ctp.egg-info\PKG-INFO
writing dependency_links to vnpy_ctp.egg-info\dependency_links.txt
writing requirements to vnpy_ctp.egg-info\requires.txt
writing top-level names to vnpy_ctp.egg-info\top_level.txt
reading manifest file 'vnpy_ctp.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*.pyd' under directory 'vnpy_ctp'
writing manifest file 'vnpy_ctp.egg-info\SOURCES.txt'
creating build\lib.win32-3.6\vnpy_ctp\api\vnctp
creating build\lib.win32-3.6\vnpy_ctp\api\vnctp\vnctpmd
copying vnpy_ctp\api\vnctp\vnctpmd\vnctpmd.cpp -> build\lib.win32-3.6\vnpy_ctp\api\vnctp\vnctpmd
creating build\lib.win32-3.6\vnpy_ctp\api\vnctp\vnctptd
copying vnpy_ctp\api\vnctp\vnctptd\vnctptd.cpp -> build\lib.win32-3.6\vnpy_ctp\api\vnctp\vnctptd
copying vnpy_ctp\api\libthostmduserapi_se.so -> build\lib.win32-3.6\vnpy_ctp\api
copying vnpy_ctp\api\libthosttraderapi_se.so -> build\lib.win32-3.6\vnpy_ctp\api
copying vnpy_ctp\api\thostmduserapi_se.dll -> build\lib.win32-3.6\vnpy_ctp\api
copying vnpy_ctp\api\thosttraderapi_se.dll -> build\lib.win32-3.6\vnpy_ctp\api
creating build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_header_define.h -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_header_function.h -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_header_on.h -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_header_process.h -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_source_function.cpp -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_source_module.cpp -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_source_on.cpp -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_source_process.cpp -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_source_switch.cpp -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_source_task.cpp -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_header_define.h -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_header_function.h -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_header_on.h -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_header_process.h -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_source_function.cpp -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_source_module.cpp -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_source_on.cpp -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_source_process.cpp -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_source_switch.cpp -> build\lib.win32-3.6\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_source_task.cpp -> build\lib.win32-3.6\vnpy_ctp\api\generator
creating build\lib.win32-3.6\vnpy_ctp\api\include
creating build\lib.win32-3.6\vnpy_ctp\api\include\ctp
copying vnpy_ctp\api\include\ctp\ThostFtdcMdApi.h -> build\lib.win32-3.6\vnpy_ctp\api\include\ctp
copying vnpy_ctp\api\include\ctp\ThostFtdcTraderApi.h -> build\lib.win32-3.6\vnpy_ctp\api\include\ctp
copying vnpy_ctp\api\include\ctp\ThostFtdcUserApiDataType.h -> build\lib.win32-3.6\vnpy_ctp\api\include\ctp
copying vnpy_ctp\api\include\ctp\ThostFtdcUserApiStruct.h -> build\lib.win32-3.6\vnpy_ctp\api\include\ctp
creating build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\attr.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\buffer_info.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\cast.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\chrono.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\common.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\complex.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\eigen.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\embed.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\eval.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\functional.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\iostream.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\numpy.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\operators.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\options.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\pybind11.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\pytypes.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\stl.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\stl_bind.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11
creating build\lib.win32-3.6\vnpy_ctp\api\include\pybind11\detail
copying vnpy_ctp\api\include\pybind11\detail\class.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11\detail
copying vnpy_ctp\api\include\pybind11\detail\common.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11\detail
copying vnpy_ctp\api\include\pybind11\detail\descr.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11\detail
copying vnpy_ctp\api\include\pybind11\detail\init.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11\detail
copying vnpy_ctp\api\include\pybind11\detail\internals.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11\detail
copying vnpy_ctp\api\include\pybind11\detail\typeid.h -> build\lib.win32-3.6\vnpy_ctp\api\include\pybind11\detail
creating build\lib.win32-3.6\vnpy_ctp\api\libs
copying vnpy_ctp\api\libs\thostmduserapi_se.lib -> build\lib.win32-3.6\vnpy_ctp\api\libs
copying vnpy_ctp\api\libs\thosttraderapi_se.lib -> build\lib.win32-3.6\vnpy_ctp\api\libs
copying vnpy_ctp\api\vnctp\vnctp.h -> build\lib.win32-3.6\vnpy_ctp\api\vnctp
copying vnpy_ctp\api\vnctp\vnctpmd\dllmain.cpp -> build\lib.win32-3.6\vnpy_ctp\api\vnctp\vnctpmd
copying vnpy_ctp\api\vnctp\vnctpmd\stdafx.cpp -> build\lib.win32-3.6\vnpy_ctp\api\vnctp\vnctpmd
copying vnpy_ctp\api\vnctp\vnctpmd\stdafx.h -> build\lib.win32-3.6\vnpy_ctp\api\vnctp\vnctpmd
copying vnpy_ctp\api\vnctp\vnctpmd\targetver.h -> build\lib.win32-3.6\vnpy_ctp\api\vnctp\vnctpmd
copying vnpy_ctp\api\vnctp\vnctpmd\vnctpmd.h -> build\lib.win32-3.6\vnpy_ctp\api\vnctp\vnctpmd
copying vnpy_ctp\api\vnctp\vnctptd\dllmain.cpp -> build\lib.win32-3.6\vnpy_ctp\api\vnctp\vnctptd
copying vnpy_ctp\api\vnctp\vnctptd\stdafx.cpp -> build\lib.win32-3.6\vnpy_ctp\api\vnctp\vnctptd
copying vnpy_ctp\api\vnctp\vnctptd\stdafx.h -> build\lib.win32-3.6\vnpy_ctp\api\vnctp\vnctptd
copying vnpy_ctp\api\vnctp\vnctptd\targetver.h -> build\lib.win32-3.6\vnpy_ctp\api\vnctp\vnctptd
copying vnpy_ctp\api\vnctp\vnctptd\vnctptd.h -> build\lib.win32-3.6\vnpy_ctp\api\vnctp\vnctptd
running build_ext
building 'vnpy_ctp.api.vnctptd' extension
creating build\temp.win32-3.6
creating build\temp.win32-3.6\Release
creating build\temp.win32-3.6\Release\vnpy_ctp
creating build\temp.win32-3.6\Release\vnpy_ctp\api
creating build\temp.win32-3.6\Release\vnpy_ctp\api\vnctp
creating build\temp.win32-3.6\Release\vnpy_ctp\api\vnctp\vnctptd
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.12.25827\bin\HostX86\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Ivnpy_ctp/api/include -Ivnpy_ctp/api/vnctp -Id:\lyj\tf_o32_vnpy\env\include -IC:\Users\Hello\AppData\Local\Programs\Python\Python36-32\include -IC:\Users\Hello\AppData\Local\Programs\Python\Python36-32\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.12.25827\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.12.25827\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt" /EHsc /Tpvnpy_ctp/api/vnctp/vnctptd/vnctptd.cpp /Fobuild\temp.win32-3.6\Release\vnpy_ctp/api/vnctp/vnctptd/vnctptd.obj -O2 -MT
cl : Command line warning D9025 : overriding '/MD' with '/MT'
vnctptd.cpp
vnpy_ctp/api/vnctp/vnctptd/vnctptd.cpp(11532): warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt\stdio.h(2261): note: see declaration of 'sscanf'
vnpy_ctp/api/vnctp\vnctp.h(117): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt\string.h(132): note: see declaration of 'strcpy'
vnpy_ctp/api/vnctp/vnctptd/vnctptd.cpp(8576): note: see reference to function template instantiation 'void getString<11>(const pybind11::dict &,const char *,char (&)[11])' being compiled
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.12.25827\bin\HostX86\x86\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:vnpy_ctp/api/libs /LIBPATH:vnpy_ctp/api /LIBPATH:d:\lyj\tf_o32_vnpy\env\libs /LIBPATH:C:\Users\Hello\AppData\Local\Programs\Python\Python36-32\libs /LIBPATH:C:\Users\Hello\AppData\Local\Programs\Python\Python36-32 /LIBPATH:d:\lyj\tf_o32_vnpy\env\PCbuild\win32 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.12.25827\ATLMFC\lib\x86" "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.12.25827\lib\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\ucrt\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\um\x86" thostmduserapi_se.lib thosttraderapi_se.lib /EXPORT:PyInit_vnctptd build\temp.win32-3.6\Release\vnpy_ctp/api/vnctp/vnctptd/vnctptd.obj /OUT:build\lib.win32-3.6\vnpy_ctp\api\vnctptd.cp36-win32.pyd /IMPLIB:build\temp.win32-3.6\Release\vnpy_ctp/api/vnctp/vnctptd\vnctptd.cp36-win32.lib
Creating library build\temp.win32-3.6\Release\vnpy_ctp/api/vnctp/vnctptd\vnctptd.cp36-win32.lib and object build\temp.win32-3.6\Release\vnpy_ctp/api/vnctp/vnctptd\vnctptd.cp36-win32.exp
vnctptd.obj : error LNK2001: unresolved external symbol "public: static char const * __cdecl CThostFtdcTraderApi::GetApiVersion(void)" (?GetApiVersion@CThostFtdcTraderApi@@SAPBDXZ)
vnctptd.obj : error LNK2001: unresolved external symbol "public: static class CThostFtdcTraderApi * __cdecl CThostFtdcTraderApi::CreateFtdcTraderApi(char const *)" (?CreateFtdcTraderApi@CThostFtdcTraderApi@@SAPAV1@PBD@Z)
build\lib.win32-3.6\vnpy_ctp\api\vnctptd.cp36-win32.pyd : fatal error LNK1120: 2 unresolved externals
error: command 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.12.25827\bin\HostX86\x86\link.exe' failed with exit status 1120
----------------------------------------
ERROR: Command errored out with exit status 1: 'd:\lyj\tf_o32_vnpy\env\scripts\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\Hello\AppData\Local\Temp\pip-install-lezj0iou\vnpy-ctp_8794e3c3a96a4bbf91c4c2dd0e678f5b\setup.py'"'"'; file='"'"'C:\Users\Hello\AppData\Local\Temp\pip-install-lezj0iou\vnpy-ctp_8794e3c3a96a4bbf91c4c2dd0e678f5b\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record 'C:\Users\Hello\AppData\Local\Temp\pip-record-qxsyisd1\install-record.txt' --single-version-externally-managed --compile --install-headers 'd:\lyj\tf_o32_vnpy\env\include\site\python3.6\vnpy-ctp' Check the logs for full command output.

linux 正常安装后无法正常 Import

设备是 Manjaro 系统,python 3.10,正常安装 vnpy 后无法安装 vnpy_ctp
通过 pip install . 或者 pip install vnpy_ctp 之后都安装正常,但是 import 之后会报错如下

image

无法在Linux中安装vnpy_ctp

  • 运行环境:
    • Ubuntu 20.4 LTS
    • Python 3.7
    • pip 21.1.2
    • gcc 9.3.0
  • 问题重现步骤:
    1. 使用 pip install vnpy_ctp安装卡住, 按ctrl+c取消后, 再次使用pip install vnpy_ctp -v 发现卡在warning信息 "cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++"
    2. 尝试下载源码后手动编译, 同样在运行python setup.py install后, 卡在上述warning
  • 问题根源分析: 参考 stackoverflow的相关文章
    个人按照上述文章进行了尝试但由于不熟悉这方面的知识未能成功解决.

详细错误信息:

running install
running bdist_egg
running egg_info
writing vnpy_ctp.egg-info/PKG-INFO
writing dependency_links to vnpy_ctp.egg-info/dependency_links.txt
writing requirements to vnpy_ctp.egg-info/requires.txt
writing top-level names to vnpy_ctp.egg-info/top_level.txt
reading manifest file 'vnpy_ctp.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'vnpy_ctp.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
running build_ext
building 'vnpy_ctp.api.vnctptd' extension
gcc -pthread -B /root/miniconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -Ivnpy_ctp/api/include -Ivnpy_ctp/api/vnctp -I/root/miniconda3/include/python3.7m -c vnpy_ctp/api/vnctp/vnctptd/vnctptd.cpp -o build/temp.linux-x86_64-3.7/vnpy_ctp/api/vnctp/vnctptd/vnctptd.o -std=c++17 -O3 -Wno-delete-incomplete -Wno-sign-compare
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++

建议版本支持python 3.11

建议版本支持3.11.现在3.11上速度对于前几个Python版本有了大幅提升。建议作者编译一个3.11版本的包。

onRspQryInstrument函数回调时变量data缺失部分字段

环境
操作系统: Windows 10
Python版本: Python 3.8.5
vn.py版本: 2.2.0
Issue类型:Bug
账户环境:SimNow和实盘均会出现
CTP版本:vnpy原项目中的CTP 6.3.15没有问题,只有本项目中CTP 6.5.1版本会出现此问题

例如,实际登陆时,data变量的实际数据如下:
{'reserve1': 'ZC201C890', 'ExchangeID': 'CZCE', 'InstrumentName': '煤201买权 ', 'reserve2': 'ZC201C890', 'reserve3': 'ZCC', 'ProductClass': '2', 'DeliveryYear': 2021, 'DeliveryMonth': 12, 'MaxMarketOrderVolume': 2, 'MinMarketOrderVolume': 1, 'MaxLimitOrderVolume': 100, 'MinLimitOrderVolume': 1, 'VolumeMultiple': 100, 'PriceTick': 0.1, 'CreateDate': '20210510', 'OpenDate': '20210510', 'ExpireDate': '20211203', 'StartDelivDate': '20211203', 'EndDelivDate': '20211203', 'InstLifePhase': '1', 'IsTrading': 1, 'PositionType': '2', 'PositionDateType': '2', 'LongMarginRatio': 0.0, 'ShortMarginRatio': 0.0, 'MaxMarginSideAlgorithm': '0', 'reserve4': 'ZC201', 'StrikePrice': 890.0, 'OptionsType': '1', 'UnderlyingMultiple': 1.0, 'CombinationType': '0', 'InstrumentID': '', 'ExchangeInstID': '', 'ProductID': '', 'UnderlyingInstrID': '\x1b\x02'}
{'reserve1': 'ZC201P890', 'ExchangeID': 'CZCE', 'InstrumentName': '煤201卖权 ', 'reserve2': 'ZC201P890', 'reserve3': 'ZCP', 'ProductClass': '2', 'DeliveryYear': 2021, 'DeliveryMonth': 12, 'MaxMarketOrderVolume': 2, 'MinMarketOrderVolume': 1, 'MaxLimitOrderVolume': 100, 'MinLimitOrderVolume': 1, 'VolumeMultiple': 100, 'PriceTick': 0.1, 'CreateDate': '20210510', 'OpenDate': '20210510', 'ExpireDate': '20211203', 'StartDelivDate': '20211203', 'EndDelivDate': '20211203', 'InstLifePhase': '1', 'IsTrading': 1, 'PositionType': '2', 'PositionDateType': '2', 'LongMarginRatio': 0.0, 'ShortMarginRatio': 0.0, 'MaxMarginSideAlgorithm': '0', 'reserve4': 'ZC201', 'StrikePrice': 890.0, 'OptionsType': '2', 'UnderlyingMultiple': 1.0, 'CombinationType': '0', 'InstrumentID': '', 'ExchangeInstID': '', 'ProductID': '', 'UnderlyingInstrID': '\x1b\x02'}

调用构建函数
contract = ContractData(
symbol=data["InstrumentID"],
exchange=EXCHANGE_CTP2VT[data["ExchangeID"]],
name=data["InstrumentName"],
product=product,
size=data["VolumeMultiple"],
pricetick=data["PriceTick"],
gateway_name=self.gateway_name
)
因“InstrumentID”字段为空,会导致MainEngine中合约数据存储错误,进一步的,订阅行情会报错:"行情接口报错,代码:825387374,信息:06"

关于CTP大商所行情的的日期问题

def onRtnDepthMarketData(self, data: dict) -> None:
"""行情数据推送"""

    # 过滤没有时间戳的异常行情数据
    if not data["UpdateTime"]:
        return

    # 过滤还没有收到合约数据前的行情推送
    symbol: str = data["InstrumentID"]
    contract: ContractData = symbol_contract_map.get(symbol, None)
    if not contract:
        return

    # 对大商所的交易日字段取本地日期
    if not data["ActionDay"] or contract.exchange == Exchange.DCE:
        date_str: str = self.current_date
    else:
        date_str: str = data["ActionDay"]

几大交易所的TradingDay和ActionDay定义都不一样,
看了一下,因为大商所的ActionDay比较特殊,它实际上应该是TradingDay,所以vnpy的CTP模块的源码里,如果是大商所的行情,日期就取本地日期。
但是这样做是否会有隐患?
虽然联网的电脑或者服务器都有网络时间校准,但是也有极端情况
比如行情是 1号 晚上23点59分59秒:500毫秒 的,但是到达本地的时候,因为网络延迟或者本地时间误差,本地时间已经是2号0点了,如果替换成本地日期,那就变成 2号 23点59分59秒了,有没有出现这种可能呢?
这是不是有问题呢?

Mac Arm芯片编译后无法运行

macOS 13.2.1版本,Anaconda Python 3.9版本环境,已安装xcode-select install,源码编译安装无报错。

通过脚本运行时,运行到gateway下的__init__.py中from .vnctpmd import MdApi语句,提示报错:

ImportError: dlopen(/Users/user/PycharmProjects/vnpy_ctp_source/vnpy_ctp/api/vnctpmd.cpython-39-darwin.so, 0x0002): symbol not found in flat namespace '_libiconv'

win10 python39 env, pip install failed

pip install vnpy_ctp
Looking in indexes: https://mirrors.aliyun.com/pypi/simple
Collecting vnpy_ctp
Using cached https://mirrors.aliyun.com/pypi/packages/91/bf/4ad355e1c0dad86e9c03fcf066ac3dab957d10a899c071b775abde95ca41/vnpy_ctp-6.6.7.2.tar.gz (12.3 MB)
Preparing metadata (setup.py) ... done
Requirement already satisfied: importlib_metadata in c:\python39\lib\site-packages (from vnpy_ctp) (4.12.0)
Requirement already satisfied: zipp>=0.5 in c:\python39\lib\site-packages (from importlib_metadata->vnpy_ctp) (3.15.0)
Building wheels for collected packages: vnpy_ctp
Building wheel for vnpy_ctp (setup.py) ... error
error: subprocess-exited-with-error

× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [139 lines of output]
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-3.9
creating build\lib.win-amd64-3.9\vnpy_ctp
copying vnpy_ctp_init_.py -> build\lib.win-amd64-3.9\vnpy_ctp
creating build\lib.win-amd64-3.9\vnpy_ctp\api
copying vnpy_ctp\api\ctp_constant.py -> build\lib.win-amd64-3.9\vnpy_ctp\api
copying vnpy_ctp\api_init_.py -> build\lib.win-amd64-3.9\vnpy_ctp\api
creating build\lib.win-amd64-3.9\vnpy_ctp\gateway
copying vnpy_ctp\gateway\ctp_gateway.py -> build\lib.win-amd64-3.9\vnpy_ctp\gateway
copying vnpy_ctp\gateway_init_.py -> build\lib.win-amd64-3.9\vnpy_ctp\gateway
running egg_info
writing vnpy_ctp.egg-info\PKG-INFO
writing dependency_links to vnpy_ctp.egg-info\dependency_links.txt
writing requirements to vnpy_ctp.egg-info\requires.txt
writing top-level names to vnpy_ctp.egg-info\top_level.txt
reading manifest file 'vnpy_ctp.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*.pyd' under directory 'vnpy_ctp'
adding license file 'LICENSE'
writing manifest file 'vnpy_ctp.egg-info\SOURCES.txt'
creating build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp
creating build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp\vnctpmd
copying vnpy_ctp\api\vnctp\vnctpmd\vnctpmd.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp\vnctpmd
creating build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp\vnctptd
copying vnpy_ctp\api\vnctp\vnctptd\vnctptd.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp\vnctptd
copying vnpy_ctp\api\libthostmduserapi_se.so -> build\lib.win-amd64-3.9\vnpy_ctp\api
copying vnpy_ctp\api\libthosttraderapi_se.so -> build\lib.win-amd64-3.9\vnpy_ctp\api
copying vnpy_ctp\api\thostmduserapi_se.dll -> build\lib.win-amd64-3.9\vnpy_ctp\api
copying vnpy_ctp\api\thosttraderapi_se.dll -> build\lib.win-amd64-3.9\vnpy_ctp\api
creating build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_header_define.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_header_function.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_header_on.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_header_process.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_source_function.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_source_module.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_source_on.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_source_process.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_source_switch.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_md_source_task.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_header_define.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_header_function.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_header_on.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_header_process.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_source_function.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_source_module.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_source_on.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_source_process.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_source_switch.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
copying vnpy_ctp\api\generator\ctp_td_source_task.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\generator
creating build\lib.win-amd64-3.9\vnpy_ctp\api\include
creating build\lib.win-amd64-3.9\vnpy_ctp\api\include\ctp
copying vnpy_ctp\api\include\ctp\ThostFtdcMdApi.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\ctp
copying vnpy_ctp\api\include\ctp\ThostFtdcTraderApi.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\ctp
copying vnpy_ctp\api\include\ctp\ThostFtdcUserApiDataType.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\ctp
copying vnpy_ctp\api\include\ctp\ThostFtdcUserApiStruct.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\ctp
creating build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac
creating build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\ctp
copying vnpy_ctp\api\include\mac\ctp\ThostFtdcMdApi.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\ctp
copying vnpy_ctp\api\include\mac\ctp\ThostFtdcTraderApi.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\ctp
copying vnpy_ctp\api\include\mac\ctp\ThostFtdcUserApiDataType.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\ctp
copying vnpy_ctp\api\include\mac\ctp\ThostFtdcUserApiStruct.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\ctp
creating build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\attr.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\buffer_info.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\cast.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\chrono.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\common.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\complex.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\eigen.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\embed.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\eval.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\functional.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\iostream.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\numpy.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\operators.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\options.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\pybind11.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\pytypes.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\stl.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
copying vnpy_ctp\api\include\mac\pybind11\stl_bind.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11
creating build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11\detail
copying vnpy_ctp\api\include\mac\pybind11\detail\class.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11\detail
copying vnpy_ctp\api\include\mac\pybind11\detail\common.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11\detail
copying vnpy_ctp\api\include\mac\pybind11\detail\descr.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11\detail
copying vnpy_ctp\api\include\mac\pybind11\detail\init.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11\detail
copying vnpy_ctp\api\include\mac\pybind11\detail\internals.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11\detail
copying vnpy_ctp\api\include\mac\pybind11\detail\typeid.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\mac\pybind11\detail
creating build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\attr.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\buffer_info.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\cast.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\chrono.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\common.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\complex.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\eigen.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\embed.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\eval.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\functional.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\iostream.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\numpy.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\operators.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\options.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\pybind11.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\pytypes.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\stl.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
copying vnpy_ctp\api\include\pybind11\stl_bind.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11
creating build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11\detail
copying vnpy_ctp\api\include\pybind11\detail\class.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11\detail
copying vnpy_ctp\api\include\pybind11\detail\common.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11\detail
copying vnpy_ctp\api\include\pybind11\detail\descr.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11\detail
copying vnpy_ctp\api\include\pybind11\detail\init.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11\detail
copying vnpy_ctp\api\include\pybind11\detail\internals.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11\detail
copying vnpy_ctp\api\include\pybind11\detail\typeid.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\include\pybind11\detail
creating build\lib.win-amd64-3.9\vnpy_ctp\api\libs
copying vnpy_ctp\api\libs\libcomunicationkey.a -> build\lib.win-amd64-3.9\vnpy_ctp\api\libs
copying vnpy_ctp\api\libs\libcrypto.a -> build\lib.win-amd64-3.9\vnpy_ctp\api\libs
copying vnpy_ctp\api\libs\libssl.a -> build\lib.win-amd64-3.9\vnpy_ctp\api\libs
copying vnpy_ctp\api\libs\libthostmduserapi_se.a -> build\lib.win-amd64-3.9\vnpy_ctp\api\libs
copying vnpy_ctp\api\libs\libthosttraderapi_se.a -> build\lib.win-amd64-3.9\vnpy_ctp\api\libs
copying vnpy_ctp\api\libs\thostmduserapi_se.lib -> build\lib.win-amd64-3.9\vnpy_ctp\api\libs
copying vnpy_ctp\api\libs\thosttraderapi_se.lib -> build\lib.win-amd64-3.9\vnpy_ctp\api\libs
copying vnpy_ctp\api\vnctp\vnctp.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp
copying vnpy_ctp\api\vnctp\vnctpmd\dllmain.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp\vnctpmd
copying vnpy_ctp\api\vnctp\vnctpmd\stdafx.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp\vnctpmd
copying vnpy_ctp\api\vnctp\vnctpmd\stdafx.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp\vnctpmd
copying vnpy_ctp\api\vnctp\vnctpmd\targetver.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp\vnctpmd
copying vnpy_ctp\api\vnctp\vnctpmd\vnctpmd.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp\vnctpmd
copying vnpy_ctp\api\vnctp\vnctptd\dllmain.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp\vnctptd
copying vnpy_ctp\api\vnctp\vnctptd\stdafx.cpp -> build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp\vnctptd
copying vnpy_ctp\api\vnctp\vnctptd\stdafx.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp\vnctptd
copying vnpy_ctp\api\vnctp\vnctptd\targetver.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp\vnctptd
copying vnpy_ctp\api\vnctp\vnctptd\vnctptd.h -> build\lib.win-amd64-3.9\vnpy_ctp\api\vnctp\vnctptd
running build_ext
building 'vnpy_ctp.api.vnctptd' extension
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for vnpy_ctp
Running setup.py clean for vnpy_ctp
Failed to build vnpy_ctp
ERROR: Could not build wheels for vnpy_ctp, which is required to install pyproject.toml-based projects

是否考虑把 cpp 的结构体也导出到 python 里?

是否考虑把 cpp 的结构体也导出到 python 里?

具体实现如下:

    py::class_<CThostFtdcUserLogoutField>(structs, "CThostFtdcUserLogoutField")
            .def(py::init<>())
            .def_property(
                    "BrokerID",
                    [](const CThostFtdcUserLogoutField &self) {
                        return py::str(self.BrokerID);
                    },
                    [](CThostFtdcUserLogoutField &self, const std::string &value) {
                        std::strncpy(self.BrokerID, value.c_str(), sizeof(CThostFtdcUserLogoutField::BrokerID));
                    }
            )
            .def_property(
                    "UserID",
                    [](const CThostFtdcUserLogoutField &self) {
                        return py::str(self.UserID);
                    },
                    [](CThostFtdcUserLogoutField &self, const std::string &value) {
                        std::strncpy(self.UserID, value.c_str(), sizeof(CThostFtdcUserLogoutField::UserID));
                    }
            )
            ;

无法更新订单状态

下单之后图形界面显示“提交中”,如下图所示:

image

底层报错如下图所示:

3d60f05eb0cac2004e30e24593772d1

运行script/run.py时出报了找不到thostmduserapi_se的错

看到刚刚的提交,是不是现在在mac下支持ctp了?

下载了最新版的代码:使用pip install .安装

site-package下的结构如图
image

完整的报错信息:

Traceback (most recent call last):
  File "/Users/gao/Workspace/python_home/vnpy_ctp/script/run.py", line 5, in <module>
    from vnpy_ctp import CtpGateway
  File "/opt/anaconda3/envs/vnpy_env_310/lib/python3.10/site-packages/vnpy_ctp/__init__.py", line 26, in <module>
    from .gateway import CtpGateway
  File "/opt/anaconda3/envs/vnpy_env_310/lib/python3.10/site-packages/vnpy_ctp/gateway/__init__.py", line 1, in <module>
    from .ctp_gateway import CtpGateway
  File "/opt/anaconda3/envs/vnpy_env_310/lib/python3.10/site-packages/vnpy_ctp/gateway/ctp_gateway.py", line 31, in <module>
    from ..api import (
  File "/opt/anaconda3/envs/vnpy_env_310/lib/python3.10/site-packages/vnpy_ctp/api/__init__.py", line 1, in <module>
    from .vnctpmd import MdApi
ImportError: dlopen(/opt/anaconda3/envs/vnpy_env_310/lib/python3.10/site-packages/vnpy_ctp/api/vnctpmd.cpython-310-darwin.so, 0x0002): Library not loaded: @rpath/thostmduserapi_se.framework/Versions/A/thostmduserapi_se
  Referenced from: <BED264D0-13AA-3CBC-8FA3-A023EB75E154> /opt/anaconda3/envs/vnpy_env_310/lib/python3.10/site-packages/vnpy_ctp/api/vnctpmd.cpython-310-darwin.so
  Reason: tried: '/Users/cxy/GitHub/vnpy_ctp/vnpy_ctp/api/thostmduserapi_se.framework/Versions/A/thostmduserapi_se' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/cxy/GitHub/vnpy_ctp/vnpy_ctp/api/thostmduserapi_se.framework/Versions/A/thostmduserapi_se' (no such file), '/Users/cxy/GitHub/vnpy_ctp/vnpy_ctp/api/thostmduserapi_se.framework/Versions/A/thostmduserapi_se' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/cxy/GitHub/vnpy_ctp/vnpy_ctp/api/thostmduserapi_se.framework/Versions/A/thostmduserapi_se' (no such file), '/opt/anaconda3/envs/vnpy_env_310/bin/../lib/thostmduserapi_se.framework/Versions/A/thostmduserapi_se' (code signature invalid in <C6A402BB-AF53-352E-A2C2-2BCF56D402BC> '/opt/anaconda3/envs/vnpy_env_310/lib/thostmduserapi_se.framework/Versions/A/thostmduserapi_se' (errno=1) sliceOffset=0x00434000, codeBlobOffset=0x003849D0, codeBlobSize=0x0000B8C0), '/opt/anaconda3/envs/vnpy_env_310/bin/../lib/thostmduserapi_se.framework/Versions/A/thostmduserapi_se' (code signature invalid in <C6A402BB-AF53-352E-A2C2-2BCF56D402BC> '/opt/anaconda3/envs/vnpy_env_310/lib/thostmduserapi_se.framework/Versions/A/thostmduserapi_se' (errno=1) sliceOffset=0x00434000, codeBlobOffset=0x003849D0, codeBlobSize=0x0000B8C0), '/Library/Frameworks/thostmduserapi_se.framework/Versions/A/thostmduserapi_se' (no such file), '/System/Library/Frameworks/thostmduserapi_se.framework/Versions/A/thostmduserapi_se' (no such file, not in dyld cache)

No module named 'vnpy_ctp.api.vnctpmd'

hello, I have install vnpy_ctp,but there is error is No module named 'vnpy_ctp.api.vnctpmd'. I open the file init.py it is that
from .vnctpmd import MdApi
from .vnctptd import TdApi
from .ctp_constant import *_
it not find MdApi, TdApi
Program environment:macos, python3.7

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.