https://github.com/openctp/webctp
将CTP接口转换成websocket+json协议对外通讯,适合web类应用。
https://github.com/openctp/webctp
ctp ctpapi finance fintech futures openctp options quant stocks trader
Last synced: about 2 months ago
JSON representation
将CTP接口转换成websocket+json协议对外通讯,适合web类应用。
- Host: GitHub
- URL: https://github.com/openctp/webctp
- Owner: openctp
- License: bsd-3-clause
- Created: 2023-02-17T13:34:14.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-24T10:05:21.000Z (11 months ago)
- Last Synced: 2024-12-09T00:12:26.644Z (10 months ago)
- Topics: ctp, ctpapi, finance, fintech, futures, openctp, options, quant, stocks, trader
- Language: Python
- Homepage: http://www.openctp.cn
- Size: 298 KB
- Stars: 45
- Watchers: 4
- Forks: 13
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# webctp
webctp是一个基于 [openctp-ctp](https://github.com/openctp/openctp-ctp-python) 开发的提供websocket+json接口的CTP服务。
---
* [安装及运行](#安装及运行)
* [环境搭建](#环境搭建)
* [运行](#运行)
* [请求示例](#请求示例)
* [Web Demo](#Web-Demo)
* [协议](#协议)
* [通用协议格式](#通用协议格式)
* [部分通用错误码说明](#部分通用错误码说明)
* [开发说明](#开发说明)
* [其他说明](#其他说明)---
## 安装及运行
### 环境搭建
1. 准备Python环境(3.10, 其他版本未测试)
2. 克隆 webctp
```bash
$ git clone https://github.com/openctp/webctp.git
$ cd webctp
```
3. 安装依赖库
```bash
$ pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host=pypi.tuna.tsinghua.edu.cn
```
> :pushpin: 默认使用 openctp-ctp 6.7.2.*, 可通过 requirements.txt 进行修改。4. 自定义配置文件
参考示例 config.example.yaml
> :pushpin: 示例中行情和交易前置地址,默认配置的是 SimNow 7x24 环境, 更多 SimNow
环境参考 [openctp环境监控](http://121.37.80.177),可根据需要变更为其他支持CTPAPI(官方实现)的柜台环境。创建自己的行情配置 config_md.yaml :
```yaml
TdFrontAddress: tcp://180.168.146.187:10130 # 交易前置地址
MdFrontAddress: tcp://180.168.146.187:10131 # 行情前置地址
BrokerID: "9999"
AuthCode: "0000000000000000"
AppID: simnow_client_test
Port: 8080 # the listening port, default 8080
Host: 0.0.0.0 # the bind ip address, default 0.0.0.0
LogLevel: INFO # NOTSET, DEBUG, INFO, WARN, ERROR, CRITICAL
```
创建自己的交易配置 config_td.yaml :
```yaml
TdFrontAddress: tcp://180.168.146.187:10130 # 交易前置地址
MdFrontAddress: tcp://180.168.146.187:10131 # 行情前置地址
BrokerID: "9999"
AuthCode: "0000000000000000"
AppID: simnow_client_test
Port: 8081 # the listening port, default 8081
Host: 0.0.0.0 # the bind ip address, default 0.0.0.0
LogLevel: INFO # NOTSET, DEBUG, INFO, WARN, ERROR, CRITICAL
```### 运行
```bash
# 启动交易服务
$ python main.py --config=config_td.yaml --app_type=td
# 启动行情服务
$ python main.py --config=config_md.yaml --app_type=md
```## 请求示例
TODO: 添加postman的请求样例
### Apifox 示例(部分)
示例是基于 [SimNow 电信1环境](http://openctp.cn/report/Simnow%A3%A8CTP%A3%A9%B7%C2%D5%E6%BB%B7%BE%B31-%B5%E7%D0%C5process%D0%D0%C7%E9.html),
不同环境的数据存在差异,以下示例数据未必可全部通过, 根据环境调整即可。登录
请求查询成交
请求查询投资者持仓
请求查询资金账户
请求查询投资者
请求查询交易编码
查询合约保证金率
请求查询合约手续费率
查询期权合约手续费
查询期权交易成本
查询报单手续费率
查询交易所保证金率
查询投资者持仓明细
查询行情
查询产品
查询交易所
查询合约
查询报单
查询最大报单数量
用户口令变更
报单录入(限价单)
报单撤销
## Web Demo
提供了一个基本 [Web 客户端示例](web/index.html),展示了对 webctp 的基本应用。
web客户端截图
![]()
## 协议
### 通用协议格式
``` python
# 请求
{
"MsgType": "{method_name}",
"{request_field}": {
"filed1": {value1},
"...": "...",
"fieldn": {valuen}
},
"RequestID": 1
}# 响应
{
"MsgType": "{rsp_of_method}",
"RspInfo": {
"ErrorID": 0,
"ErrorMsg": "OK"
},
"IsLast": true,
"RequestID": 1
"{response_filed}": {response_body} # 具体参见详细文档
}
```### 部分通用错误码说明
```bash
ErrorID="-400" ErrorMsg="参数有误"
ErrorID="-401" ErrorMsg="未登录"
ErrorID="-404" ErrorMsg="Webctp还未实现该方法"
ErrorID="-1" ErrorMsg="CTP:请求失败"
ErrorID="-2" ErrorMsg="CTP:未处理请求超过许可数"
ErrorID="-3" ErrorMsg="CTP:每秒发送请求数超过许可数"
ErrorID="0" ErrorMsg="CTP:正确"
ErrorID="1" ErrorMsg="CTP:不在已同步状态"
ErrorID="2" ErrorMsg="CTP:会话信息不一致"
ErrorID="3" ErrorMsg="CTP:不合法的登录"
ErrorID="4" ErrorMsg="CTP:用户不活跃"
ErrorID="5" ErrorMsg="CTP:重复的登录"
ErrorID="6" ErrorMsg="CTP:还没有登录"
ErrorID="7" ErrorMsg="CTP:还没有初始化"
ErrorID="8" ErrorMsg="CTP:前置不活跃"
ErrorID="9" ErrorMsg="CTP:无此权限"
ErrorID="10" ErrorMsg="CTP:修改别人的口令"
ErrorID="11" ErrorMsg="CTP:找不到该用户"
ErrorID="12" ErrorMsg="CTP:找不到该经纪公司"
ErrorID="13" ErrorMsg="CTP:找不到投资者"
ErrorID="14" ErrorMsg="CTP:原口令不匹配"
ErrorID="15" ErrorMsg="CTP:报单字段有误"
ErrorID="16" ErrorMsg="CTP:找不到合约"
```### 详细接口文档
[交易服务协议文档](./docs/td_protocol.md)
[行情服务协议文档](./docs/md_protocol.md)
# 开发说明
TODO
# 其他说明
* 由于精力有限,只进行了SimNow平台的简单的测试,请自行充分测试后再接入生产环境。
* 使用webctp进行实盘交易的后果完全有使用者自行承担。