Python量化交易平台开发教程系列1-类CTP交易API的工作原理

CTP行情API实战:用Python搞定期货行情登录与订阅(附SimNow与实盘地址配置) 本文详细介绍了如何使用Python通过CTP-API实现期货行情登录与订阅,包括SimNow与实盘地址配置、环境准备、核心架构解析及完整代码实现。文章还提供了实战技巧与异常处理方案,帮助开发者构建稳定的期货行情接收系统。 阅读详情

原创文章,转载请注明出处:用Python的交易员

类CTP交易API简介

国内程序化交易技术的爆发式发展几乎就是起源于上期技术公司基于CTP柜台推出了交易API,使得用户可以随意开发自己的交易软件直接连接到交易柜台上进行交易,同时CTP API的设计模式也成为了许多其他柜台上交易API的设计标准,本人已知的类CTP交易API包括:

  1. 上期CTP

  2. 飞马

  3. 华宝证券LTS

  4. 飞创Xspeed

  5. 金仕达

  6. 恒生UFT

所以这个教程系列选择从类CTP交易API中的LTS API开始来介绍API的Python封装方法,真正掌握了以后想要做其他类型API(比如恒生的T2)的封装也只是大同小异而已。

LTS API文件说明

通常当用户从网上下载API的压缩包,解压后会看到以下的文件: 

  • .h文件:C++的头文件,包含了API的内部结构信息,开发C++程序时需要包含在项目内
  • .dll文件:windows下的动态链接库文件,API的实体,开发C++程序编译和链接时用,使用开发好的程序时也必须放在程序的文件夹内
  • .lib文件:windows下的库文件,编译和链接时用,程序开发好后无需放在程序的文件夹内
  • .so文件:linux下的动态链接库文件,其他同.dll文件

找不到压缩包的读者可以在这里直接看https://github.com/vnpy/vnpy/tree/master/vn.lts/ltsapi。

.h头文件介绍

.dll、.lib、.so文件都是编译好的二进制文件,无法打开,所以从用户角度我们只需关注.h文件中的内容。对于不同的API而言,.h文件的前缀可能有所区别,如LTS是SecurityFtdc,CTP是ThostFtdc,下面分别介绍这4个.h文件。

ApiDataType.h

该文件中包含了对API中用到的常量的定义,如以下代码定义了一个产品类型常量对应的字符:

#define SECURITY_FTDC_PC_Futures '1'

以及类型的定义,如以下代码定义了产品名称类型是一个长度为21个字符的字符串:

typedef char TSecurityFtdcProductNameType[21];

ApiStruct.h

该文件中包含了API中用到的结构体的定义,如以下代码定义了交易所这个结构体的构成:

///交易所
struct CSecurityFtdcExchangeField
{
    ///交易所代码
    TSecurityFtdcExchangeIDType ExchangeID;
    ///交易所名称
    TSecurityFtdcExchangeNameType   ExchangeName;
    ///交易所属性
    TSecurityFtdcExchangePropertyType   ExchangeProperty;
};

例如TSecurityFtdcExchangeIDType这个类型的定义,可以在ApiDataType.h中找到。

MdApi.h

该文件中包含了API中的行情相关组件的定义,文件通常开头会有一段这样的内容:

#if !defined(SECURITY_FTDCMDAPI_H)
#define SECURITY_FTDCMDAPI_H

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "SecurityFtdcUserApiStruct.h"

#if defined(ISLIB) && defined(WIN32)
#ifdef LIB_MD_API_EXPORT
#define MD_API_EXPORT __declspec(dllexport)
#else
#define MD_API_EXPORT __declspec(dllimport)
#endif
#else
#define MD_API_EXPORT 
#endif

这些内容主要是一些和操作系统、编译环境相关的定义,一般用户忽略就好(作者其实也不太懂...)。

然后是两个类CSecurityFtdcMdSpi和CSecurityFtdcMdApi的定义。

CSecurityFtdcMdSpi

MdSpi类中包含了行情功能相关的回调函数接口,什么是回调函数呢?简单来说就是由于柜台端向用户端发送信息后才会被系统自动调用的函数(非用户主动调用),对应的主动函数会在下面介绍。CSecurityFtdcMdSpi大概看起来是这么个样子:

class CSecurityFtdcMdSpi
{
public:
    ......

    ///登录请求响应
    virtual void OnRspUserLogin(CSecurityFtdcRspUserLoginField *pRspUserLogin, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

    ......

    ///深度行情通知
    virtual void OnRtnDepthMarketData(CSecurityFtdcDepthMarketDataField *pDepthMarketData) {};
};

......省略了部分代码。从上面的代码中可以注意到:

  1. 回调函数都是以On开头。

  2. 柜台端向用户端发送的信息经过API处理后,传给我们的是一个结构体的指针,如CSecurityFtdcRspUserLoginField *pRspUserLogin,这里的pRspUserLogin就是一个C++的指针类型,其指向的结构体对象是CSecurityFtdcRspUserLoginField结构的,而该结构的定义可以在ApiStruct.h中找到。

  3. 不同的回调函数,传过来的参数数量是不同的,OnRspUserLogin中传入的参数包括两个结构体指针,以及一个整数(代表该响应对应的用户请求号)和一个布尔值(该响应是否是这个请求号的最后一次响应)。

CSecurityFtdcMdApi

MdApi类中包含了行情功能相关的主动函数结构,顾名思义,主动函数指的是由用户负责进行调用的函数,用于向柜台端发送各种请求和指令,大概样子如下:

class MD_API_EXPORT CSecurityFtdcMdApi
{
public:
    ///创建MdApi
    ///@param pszFlowPath 存贮订阅信息文件的目录,默认为当前目录
    ///@return 创建出的UserApi
    ///modify for udp marketdata
    static CSecurityFtdcMdApi *CreateFtdcMdApi(const char *pszFlowPath = "");

    ......

    ///注册回调接口
    ///@param pSpi 派生自回调接口类的实例
    virtual void RegisterSpi(CSecurityFtdcMdSpi *pSpi) = 0;

    ///订阅行情。
    ///@param ppInstrumentID 合约ID  
    ///@param nCount 要订阅/退订行情的合约个数
    ///@remark 
    virtual int SubscribeMarketData(char *ppInstrumentID[], int nCount, char* pExchageID) = 0;

    ......

    ///用户登录请求
    virtual int ReqUserLogin(CSecurityFtdcReqUserLoginField *pReqUserLoginField, int nRequestID) = 0;

    ......
};

以上代码中,需要注意的重点包括:

  1. MdApi对象不应该直接创建,而应该通过调用类的静态方法CreateFtdcMdApi创建,传入参数为你希望保存API的通讯用的.con文件的目录(可以选择留空,则.con文件会被放在程序所在的文件夹下)。

  2. 创建MdSpi对象后,需要使用MdApi对象的RegisterSpi方法将该MdSpi对象的指针注册到MdApi上,也就是告诉MdApi从柜台端收到数据后应该通过哪个对象的回调函数推送给用户。从API的这个设计上作者猜测MdApi中后包含了和柜台端通讯、接收和发送数据包的功能,而MdSpi仅仅是用来实现一个通过回调函数向用户程序推送数据的接口。

  3. 绝大部分主动函数(以Req开头)在调用时都会用到一个整数类型的参数nRequestID,该参数在整个API的调用中应当保持递增唯一性,从而在收到回调函数推送的数据时,可以知道是由哪次操作引起的。

TraderApi.h

该文件中包含了API中的交易相关组件的定义,文件同样以一段看不懂的定义开头,然后包含了两个类CSecurityFtdcTraderSpi和CSecurityFtdcTraderApi,这两个类和MdApi中的两个类在结构上非常接近,区别仅仅在于类包含的方法函数上。

CSecurityFtdcTraderSpi
class CSecurityFtdcTraderSpi
{
public:
    ///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。
    virtual void OnFrontConnected(){};

    ...

    ///错误应答
    virtual void OnRspError(CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

    ///登录请求响应
    virtual void OnRspUserLogin(CSecurityFtdcRspUserLoginField *pRspUserLogin, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

    ...

    ///报单通知
    virtual void OnRtnOrder(CSecurityFtdcOrderField *pOrder) {};

    ...

    ///报单录入错误回报
    virtual void OnErrRtnOrderInsert(CSecurityFtdcInputOrderField *pInputOrder, CSecurityFtdcRspInfoField *pRspInfo) {};

    ...
};

Spi(包括MdSpi和TraderSpi)类的回调函数基本上可以分为以下四种:

  1. 以On...开头,这种回调函数通常是返回API连接相关的信息内容,与业务逻辑无关,返回值(即回调函数的参数)通常为空或是简单的整数类型。

  2. 以OnRsp...开头,这种回调函数通常是针对用户的某次特定业务逻辑操作返回信息内容,返回值通常会包括4个参数:业务逻辑相关结构体的指针,错误信息结构体的指针,本次操作的请求号整数,是否是本次操作最后返回信息的布尔值。其中OnRspError主要用于一些通用错误信息的返回,因此返回的值中不包含业务逻辑相关结构体指针,只有3个返回值。

  3. 以OnRtn...开头,这种回调函数返回的通常是由柜台向用户主动推送的信息内容,如客户报单状态的变化、成交情况的变化、市场行情等等,因此返回值通常只有1个参数,为推送信息内容结构体的指针。

  4. 以OnErrRtn...开头,这种回调函数通常由于用户进行的某种业务逻辑操作请求(挂单、撤单等等)在交易所端触发了错误,如用户发出撤单指令、但是该订单在交易所端已经成交,返回值通常是2个参数,即业务逻辑相关结构体的指针和错误信息的指针。

CSecurityFtdcTraderApi
class TRADER_API_EXPORT CSecurityFtdcTraderApi
{
public:
    ///创建TraderApi
    ///@param pszFlowPath 存贮订阅信息文件的目录,默认为当前目录
    ///@return 创建出的UserApi
    static CSecurityFtdcTraderApi *CreateFtdcTraderApi(const char *pszFlowPath = "");

    ...

    ///初始化
    ///@remark 初始化运行环境,只有调用后,接口才开始工作
    virtual void Init() = 0;

    ...

    ///用户登录请求
    virtual int ReqUserLogin(CSecurityFtdcReqUserLoginField *pReqUserLoginField, int nRequestID) = 0;

    ...
};

Api类包括的主动函数通常分为以下三种: 1. Create...,类的静态方法,用于创建API对象,传入参数是用来保存API通讯.con文件的文件夹路径。

  1. Req...开头的函数,可以由用户主动调用的业务逻辑请求,传入参数通常包括2个:业务请求结构体指针和一个请求号的整数。

  2. 其他非Req...开头的函数,包括初始化、订阅数据流等等参数较为简单的功能,传入参数的数量和类型视乎函数功能不一定。

API工作流程

简单介绍一下MdApi和TraderApi的一般工作流程,这里不会包含太多细节,仅仅是让读者有一个概念。

MdApi

  1. 创建MdSpi对象

  2. 调用MdApi类以Create开头的静态方法,创建MdApi对象

  3. 调用MdApi对象的RegisterSpi方法注册MdSpi对象的指针

  4. 调用MdApi对象的RegisterFront方法注册行情柜台的前置机地址

  5. 调用MdApi对象的Init方法初始化到前置机的连接,连接成功后会通过MdSpi对象的OnFrontConnected回调函数通知用户

  6. 等待连接成功的通知后,可以调用MdApi的ReqUserLogin方法登陆,登陆成功后会通过MdSpi对象的OnRspUserLogin通知用户

  7. 登陆成功后就可以开始订阅合约了,使用MdApi对象的SubscribeMarketData方法,传入参数为想要订阅的合约的代码

  8. 订阅成功后,当合约有新的行情时,会通过MdApi的OnRtnDepthMarketData回调函数通知用户

  9. 用户的某次请求发生错误时,会通过OnRspError通知用户。

  10. MdApi同样提供了退订合约、登出的功能,一般退出程序时就直接杀进程(不太安全)

TraderApi

  1. TraderApi和MdApi类似,以下仅仅介绍不同点

  2. 注册TraderSpi对象的指针后,需要调用TraderApi对象的SubscribePrivateTopic和SubscribePublicTopic方法去选择公开和私有数据流的重传方法(这一步MdApi没有)

  3. 对于期货柜台而言(CTP、恒生UFT期货等),在每日第一次登陆成功后需要先查询前一日的结算单,等待结算单查询结果返回后,确认结算单,才可以进行后面的操作;而证券柜台LTS无此要求

  4. 上一步完成后,用户可以调用ReqQryInstrument的方法查询柜台上所有可以交易的合约信息(包括代码、中文名、涨跌停、最小价位变动、合约乘数等大量细节),一般是在这里获得合约信息列表后,再去MdApi中订阅合约;经常有人问为什么在MdApi中找不到查询可供订阅的合约代码的函数,这里尤其要注意,必须通过TraderApi来获取

  5. 当用户的报单、成交状态发生变化时,TraderApi会自动通过OnRtnOrder、OnRtnTrade通知用户,无需额外订阅

总结

第一篇教程到这里已经接近结束了,如果你是一个没有任何交易API开发经验的读者,并且坚持看了下来,此时你心中很可能有这么个想法:我X,API开发这么复杂???!!!

相信我,这是人之常情(某些读者如果觉得很好理解那作者真是佩服你了),作者刚开始的时候大概在CTP API的头文件和网上的教程资料、示例中纠结了3个多月而不得入门,当时也没有任何C++的开发经验(我是金融工程出生,大学里编程只学了VBA和Matlab,还几乎都是些算法方面的内容),边学语言边研究怎么开发,真心痛苦。

在这里,我想告诉读者的一个好消息是:还剩两篇教程,我们基本就可以和C++ say goodbye,进入Python灵活快速开发的世界了。同时对于绝大部分不打算自己去封装API的读者,这三篇文章可以走马观花的过一遍,不会影响任何你未来对于vn.py框架的使用。

当然,对于有恒心和毅力的读者,100%自己掌握API的封装技术是一项绝对值得投入时间和精力的事情。在很多人的观念中Python并不适合用来开发低延迟的交易平台,这里作者可以用亲身经验告诉你:那只是在纯用Python的情况下。作为一门胶水语言,Python最大的特点之一就是易于通过混合编程来进行拓展,用户可以在真正需要优化的地方进行最深度的定制优化,把自己有限的时间、精力花在刀刃上。在交易API层面,可以定制的地方包括C++层面的数据结构改变、数据预处理、回调函数传递顺序调整等等诸多的优化,这些只有在你完全掌握API的封装后才能办得到

量化交易接口全解析:从券商直连到第三方平台与开源工具 量化交易系统的核心在于稳定、高效的数据获取与交易执行接口。其原理是通过API连接数据源与交易柜台,实现策略的自动化运行。技术价值在于为策略研究、回测和实盘提供关键基础设施,直接影响策略的可行性与盈利能力。应用场景广泛,从个人研究、中低频策略实盘到对延迟敏感的高频交易均有不同解决方案。本文聚焦于量化交易接口的深度对比,详细剖析了券商官方接口、第三方平台接口以及开源数据接口在数据质量、交易功能、开发成本与稳定性上的差异,并结合AkShare、聚宽等具体工具,为不同阶段的开发者提供了清晰的选型指南与实战避坑建议。 阅读详情

相关推荐

金仕达API接口

金仕达API接口说明文档,用于使用API开发第三方交易系统

上期mysql的ctp_上海期货CTP回调函数数据插入mysql的时候报错

OnRtnDepthMarketData在执行上面一句43个字段的时候31条数据数据插入到mysql的时候报错而执行下面一段插入,源码如下:voidCMdSpi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataF...OnRtnDepthMarketData在执行上面一句43个字段的时候31条数据数据插入到mysql的时候报错 而执行下面一段插入,源码...

weixin_33586619的博客 615

abaqus 6.13安装(ubuntu 16.04LTS)

1。从iso将文件拷贝出来 2。chmod 777 -R ./* 给文件权限 3。sudo /home/xx/A/setup 4。安装licenseserver 5。拷贝lic,log文件 6。打开license sudo ./lmgrd -c path 7. 27011@xx or 27011@localhost ...

a1099313374的博客 1951

期货CTP接口与K线模块的对接(3)

生成K线的流程 (下文中所说的示范程序,点击这里下载) 某合约的行情数据来到本机后: 1.在C++部分,触发“OnRtnDepthMarketData”; 2.通过已注册的函数指针,找到C#中关于处理行情数据的回调函数; 3.在这个回调函数中,与生成K线有关的操作是: (1)生成本机所需的K线(仅供本机交易使用); (2)如果当前合约要参与指数的计算,就计算指数,然后: 算出来的指数,递归调用处理...

grayhat2005的博客 1529

ContextCapture导入点云进行重建

ContextCapture导入点云进行重建

天桥飞熊的博客 1万+

浮栅晶体管原理深度解析:热电子注入与FN隧穿如何实现1/0存储

本文深入解析了浮栅晶体管的工作原理,重点探讨了热电子注入与FN隧穿机制如何实现1/0存储。作为现代闪存芯片的核心技术,浮栅晶体管通过独特的结构设计实现非易失性存储,文章详细分析了其编程与擦除的物理过程,并对比了两种机制的优缺点,为闪存性能优化提供了理论基础。

weixin_30363285的博客 377

量化之行,始于数据

“`机会和风险相关的全部信息都蕴藏于数据之中`”是一个量化交易员的基础信仰。所以,一直以来我都有一个执念,就是想要收集全市场的实时交易数据。

AlgoPlus的博客 2515

TeraTerm 使用技巧

⏹TeraTerm 使用技巧

菜鸟记录 1万+

[转载]Python量化交易平台开发教程系列1-类CTP交易API的工作原理

原文出处:http://vnpy.org/2015/03/05/20150305_Python%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93%E5%B9%B3%E5%8F%B0%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B%E7%B3%BB%E5%88%971-%E7%B1%BBCTP%E4%BA%A4%E6%98%93API%E7%9...

dijiesa4351的博客 988

微信小程序消息推送实战:从模板消息到订阅消息的进阶指南

本文详细解析了微信小程序消息推送的核心机制,重点对比了模板消息与订阅消息的差异与应用场景。模板消息适用于支付成功等强即时性业务回执,而订阅消息则需用户授权,更适合物流提醒等可预期通知。文章提供了从授权、配置到发送的完整实战指南,并分享了常见的避坑技巧与性能优化建议,帮助开发者构建高效、合规的用户触达体系。

weixin_29231027的博客 597

YOLOv8 轴承缺陷检测 使用YOLOv8进行训练、评估和可视化预测结果 包含1440张图片的轴承缺陷检测数据集 YOLO格式或XML格式

本文介绍了一个基于YOLOv8的轴承缺陷检测项目。数据集包含1440张图片,标注了4类缺陷(凹槽、凹陷、卡伤、划痕),按8:1:1比例划分为训练集(1152张)、验证集(144张)和测试集(144张)。标注文件支持YOLO格式和XML格式,可直接用于模型训练。项目实现了数据准备、模型训练、评估及可视化预测结果的全流程,使用YOLOv8n预训练模型进行50个epoch的训练,并提供了数据格式转换(XML转YOLO)的代码示例。最终模型可自动检测轴承表面缺陷,并保存预测结果。

OICQQ67658008的博客 1451

【量化】Python量化交易平台vnpy开发-汇总笔记

文章目录0.引言1.类CTP交易API的工作原理2.类CTP交易API的Python封装设计3.vn.py项目中API封装的编译4.事件驱动引擎原理和使用5.底层接口对接6.中层引擎设计7.顶层GUI界面开发(1)8.顶层GUI界面开发(2) 文章专栏:https://zhuanlan.zhihu.com/vn-py 开源代码:https://github.com/vnpy/vnpy [5年前的文...

GreatXiang888的博客 3643

优化点列图(RMS半径)的操作数

优化点列图(RMS半径)的操作数

weixin_72050316的博客 2262

python量化交易平台开发教程系列_Python量化交易平台开发教程系列0-引言

原创文章,转载请注明出处:用Python的交易员为什么用Python来开发量化交易平台目前本人所在的公司一共有三款平台,分别基于C++, C#和Python。其中C#和Python平台都是由交易员开发;C++平台则是由专职IT团队作为一个通用平台开发,内部组件进行了封装(交易员不可见),对外提供行情、交易的API用于策略开发(除了C++ 外也包括C#和Python可用的API)。理论上这款C++平...

weixin_39695490的博客 288

arcgis计算栅格平均值

打开FC栅格数据和非水体矢量数据 利用矢量数据提取对应栅格的非水体部分 2.1打开空间分析工具à提取分析à按掩膜提取 输入对应栅格数据和矢量数据 2.2提取结果如下 进行计算FC平均值 3.1打开空间分析工具à多元分析à波段集统计 输入对应栅格和输出路径 3.2统计结果如下 ...

Z_W_H_的博客 5371

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

CTP收集行情数据封装接口方法集合

基于C++/CLI开发和封装CTP接口供C#托管代码进行调用 https://blog.youkuaiyun.com/u011439313/article/details/81175342 Python量化交易平台开发教程系列1-类CTP交易API的工作原理 https://blog.youkuaiyun.com/Trader_Python/article/details/52856760 CTP入门: https://...

weixin_40975356的博客 2116

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VeighNa框架入门:构建你的第一个Python量化交易系统

VeighNa框架入门:构建你的第一个Python量化交易系统 【免费下载链接】vnpy 基于Python的开源量化交易平台开发框架 项目地址: https://gitcode.com/vnpy/vnpy ...

gitblog_00600的博客 2028

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

CTP接口封装相关贴---集合

https://blog.youkuaiyun.com/u011439313/article/details/81175342

代码过客 1617

VNPY_IB API封装

作者:吴咸樾 目录 背景介绍 API的特点 基本配置 建立连接 合约 订单 行情 Python封装的结构设计 Python封装的函数实现 ibGateway.py介绍 参考文献 背景介绍 IB API能成为许多量化平台的首选对接通道,不外乎一个原因:Created by traders, for traders。 公司创始人Thomas Peterffy的传奇背景就不多介...

IAlexanderI的专栏 5658

如何用Python量化交易框架VeighNa构建专业交易系统

想要从零开始构建自己的量化交易系统,却不知从何入手?VeighNa作为一套基于Python的开源量化交易平台开发框架,为你提供了一站式的解决方案。无论你是个人投资者、创业型私募,还是机构交易员,都能通过这个强大的Python量化交易框架快速搭建专属的交易系统,实现从策略开发到实盘交易的全流程自动化。 ## 🎯 量化交易的核心挑战与VeighNa的解决方案 在量化交易领域,开发者常常面临三大挑

gitblog_00043的博客 1062

【vn.py学习笔记(二)】vn.py底层接口 学习笔记

【vn.py学习笔记(二)】vn.py底层接口 学习笔记CTP API的工作原理CTP介绍API功能介绍CTP API文件API 通用规则CTP API的Python封装设计封装设计思路封装后API工作流程CTP API对接中层引擎原理参考资料   笔者刚接触量化投资,对量化投资挺感兴趣,在闲暇时间进行量化投资的学习,只能进行少量资金进行量化实践。目前在进行基于vnpy的A股市场的量化策略学习,主要尝试攻克的技术难点在:A股市场日线数据的免费获取维护、自动下单交易、全市场选股程序、选股策略的回测程序、基于机

PAN_Andy的博客 4527

量化交易平台—事件驱动原理

【前言】在搞定交易接口后,我们开发交易系统的第一步就是要弄清楚系统的工作原理。本文是我看的公司的中频平台文档的总结,公司是基于开源的vn.py修改而来,但是驱动引擎是一样的。   会参考vn.py官方文档,公司是参考其修改的。但在正在研发的高频交易平台上是根据CTP接口接发数据的格式,合并成单线程,配合solarflare的网卡,速度不吃亏。本文以及下面的三篇文章主要是现有的中频平台的,当然高频...

weixin_30569153的博客 1258

CTPWrapper:轻松对接期货交易接口的Python库

是一个开源的Python库,旨在简化期货交易系统的开发和维护,它提供了一个简洁易用的接口,用于对接中国金融期货交易所(CFFEX)的CTP(China Trading Platform)交易系统。对于需要进行自动化交易或者策略回测的开发者而言,这是一个非常实用的工具。 ## 技术分析 - **易于使用**:CTPWrapper 使用了Python的面向对象编程,将复杂的CTP API封装成了简

gitblog_00061的博客 643
上一篇: Python量化交易平台开发教程系列0-引言
下一篇: Python量化交易平台开发教程系列2-类CTP交易API的Python封装设计
Trader_Python
博客等级 码龄11年 392粉丝 0原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值