Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

tradeinterface

基于上期技术 CTP (Comprehensive Transaction Platform / ThostFtdc) API 的 C++ 期货交易接口示例。

项目包含两个独立的可执行程序:

  • md — 行情订阅程序,连接 CTP 行情前置,登录后订阅指定合约的深度行情并打印输出。
  • trader — 交易程序,连接 CTP 交易前置,登录后发送一笔限价买入报单作为示例。

两个程序共享同一份配置文件 trader.config,并使用 log4z 进行日志输出。

目录结构

.
├── ThostFtdcMdApi.h            CTP 行情 API 头文件
├── ThostFtdcTraderApi.h        CTP 交易 API 头文件
├── ThostFtdcUserApiDataType.h  CTP 数据类型定义
├── ThostFtdcUserApiStruct.h    CTP 数据结构定义
├── libthostmduserapi.so        CTP 行情 API 动态库
├── libthosttraderapi.so        CTP 交易 API 动态库
├── md.cpp / md.h               行情程序入口
├── trader.cpp / tradeapi.h     交易程序入口
├── config.cpp / config.h       配置文件解析
├── log4z.cpp / log4z.h         日志库
├── build_md.sh                 行情程序编译脚本
├── build_trader.sh             交易程序编译脚本
├── trader.config               运行时配置文件
├── error.xml                   CTP 错误码对照表
├── config/                     配置目录
└── log/                        日志输出目录

依赖

  • Linux 环境,g++ 编译器
  • pthread
  • 仓库自带的 CTP 动态库 libthostmduserapi.so 与 libthosttraderapi.so

运行前请确保系统能够找到这两个 .so,例如:

export LD_LIBRARY_PATH=$(pwd):$LD_LIBRARY_PATH

编译

仓库提供了两个简单的编译脚本:

# 编译行情程序,生成 md
sh build_md.sh

# 编译交易程序,生成 trader
sh build_trader.sh

对应的命令大致为:

g++ -lthostmduserapi  -lpthread log4z.cpp log.cpp config.cpp md.cpp     -o md
g++ -lthosttraderapi  -lpthread log4z.cpp log.cpp config.cpp trader.cpp -o trader

配置

trader.config 示例:

MD_FLOW_PATH     = ./mdflow/
TRADER_FLOW_PATH = ./tdflow/
BROKER_ID        = 2030
USER_ID          = 00000068
PASSWORD         = 123456
LOG_PATH         = ./log/
TRADER_URL       = tcp://asp-sim2-front1.financial-trading-platform.com:26205
MD_URL           = tcp://asp-sim2-md1.financial-trading-platform.com:26213

字段说明:

字段 说明
MD_FLOW_PATH 行情 API 的 flow 文件目录
TRADER_FLOW_PATH 交易 API 的 flow 文件目录
BROKER_ID 经纪商代码
USER_ID 投资者账号
PASSWORD 登录密码
LOG_PATH 日志输出目录
TRADER_URL 交易前置地址
MD_URL 行情前置地址

默认配置中的 URL 指向 SimNow 仿真环境,真实账号请替换为对应经纪商的前置地址。运行前请创建 MD_FLOW_PATH、TRADER_FLOW_PATH 与 LOG_PATH 对应目录。

运行

# 启动行情接收
./md

# 启动交易程序(会自动登录并发送一笔示例订单)
./trader

Ctrl+C 可触发 SIGINT 让程序释放 API 资源后正常退出。

行情数据格式

md 程序收到行情后会按以下顺序拼接成一行 CSV 写入日志:

TradingDay, InstrumentID, ExchangeID, ExchangeInstID,
LastPrice, PreSettlementPrice, PreClosePrice, PreOpenInterest,
OpenPrice, HighestPrice, LowestPrice, Volume, Turnover, OpenInterest,
ClosePrice, SettlementPrice, UpperLimitPrice, LowerLimitPrice,
PreDelta, CurrDelta, UpdateTime, UpdateMillisec,
BidPrice1..5, BidVolume1..5, AskPrice1..5, AskVolume1..5,
AveragePrice, ActionDay

错误码

CTP 错误码与说明位于 error.xml,可在 OnRspUserLogin、OnRspOrderInsert 等回调中根据 ErrorID 查询。

说明

本项目为 CTP API 的入门示例,订阅合约(IF1407、IF1408)、报单参数(合约 cn0601、价格 50000、数量 10)等均为硬编码,仅用于演示 API 调用流程,投入实盘前请按需修改。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages