# 账户交易开放 API
# 版本记录
| 版本 | 修订日期 | 修订说明 |
|---|---|---|
| 1.0 | 2022/02/14 |
# 1 概述
# 1.1 参数说明
# 请求参数格式定义
请求参数以 json 的形式封装到 body 里面提交
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| src | String | 请求来源, PC 版调用 src=PC,APP 调用为空(默认 APP),WEB 调用 src=WEB(后续可扩展)。src=QTGY(量化) | 否 |
| Params | CommonParams | 具体业务的参数 | 是 |
- CommonParams
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| sessionId | String | User session 唯一标识 | 是 |
| 业务参数 A | |||
| 业务参数 B |
# 返回数据定义
返回数据同样以 json 形式封装,属性有:
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| Code | Int | 状态码,0=成功,其他表示异常 | 是 |
| message | String | 状态描述 | 否 |
| result | Object | 数据内容,各个接口的数据封装在 data 属性里面返回给客户端 | 否 |
# 1.2 鉴权
# 1.3 错误代码定义
| 错误代码 | 说明 |
|---|---|
| 0 | 成功,其他状态码表示失败 |
| -1 | 客户端可直接显示 message |
| -9998 | 恒生交易系统异地登录,需要重新调用“交易解锁” |
# 2 账号相关
# 2.1 登录
同其他登录接口
接口地址 /userApi/userLogin
请求参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| certType | String | 填固定值:7 | 是 |
| certCode | String | 客户交易账号 | 是 |
| pwd | String | 密码,在 https 安全链接下传明文 | 是 |
- 请求示例
{
"src": "QTGY",
"params": {
"certType": 7,
"certCode": "1000002106",
"pwd": "xxxx"
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 返回参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| sessionId | String | 会话追踪 token | 是 |
# 2.2 获取二重认证验证码
接口地址:/userApi/fetchCaptcha
请求参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| sessionId | String | 用户登录之后生成的会话 id | 是 |
- 返回参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| code | Int | 0 表明是调用成功,其他值是异常信息 | 是 |
| message | String | 请求接口异常信息 | 是 |
| eventId | Int | 获取验证码事件 id |
- 请求示例
{
"src": "QTGY",
"params": {
"sessionId": "4957a8a41f9d4952b68d2d7a6a57793f41995"
}
}
1
2
3
4
5
6
7
2
3
4
5
6
7
返回示例
{
"code": 0,
"message": null,
"updateMsg": null,
"id": null,
"result": {
"eventId": 19628
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 2.3 验证二重认证验证码
接口地址:/userApi/smsVerify
请求参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| sessionId | String | 用户登录之后生成的会话 id | 是 |
| eventId | Int | 获取验证码事件 id | 是 |
| authCode | String | 用户手机收到的验证码 | 是 |
- 返回参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| code | Int | 0 表明是调用成功,其他值是异常信息 | 是 |
| message | String | 请求接口异常信息 | 是 |
| validateCode | String | 1:二重认证成功 |
- 请求示例
{
"src": "QTGY",
"params": {
"sessionId": "0e80926a05b8403e922e5ac1a1d76910130434",
"eventId": 35895,
"authCode": "2833"
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 返回示例
{
"code": 0,
"message": null,
"updateMsg": null,
"id": null,
"result": {
"validateCode": "1"
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 2.4 交易解锁
登录恒生系统,返回用户相关资金账号。
服务端将用户交易密码加密后保存,同时返回用于解密的字符串 tradeKey,之后若接口需要交易密码,客户端传入该 tradeKey 即可。
接口地址:/tradeApi/prepare
请求参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| sessionId | String | 登录会话 | 是 |
| clientNo | String | 交易账号 | 是 |
| password | String | 交易密码 | 是 |
- 返回参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| fundAccList | String[] | 资金账号列表 | 是 |
| tradeKey | String | 对应用户交易密码,之后若接口需要交易密码,客户端传入该 tradeKey 即可。 | 是 |
- 请求示例
{
"src": "QTGY",
"params": {
"sessionId": "0e80926a05b8403e922e5ac1a1d76910130434",
"clientNo": "1000002106",
"password": "xxx"
},
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 返回示例
{
"code": 0,
"message": null,
"updateMsg": null,
"id": null,
"result": {
"fundAccList": [
"100001862"
],
"tradeKey": "CMYZ7UI9V93sWpX3IwZLHw=="
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 3 持仓查询
# 3.1 查询客户持仓
请求地址:/tradeApi/getStockInfo
请求参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| sessionId | String | 用户登录之后生成的会话 id | 是 |
| tradeAccount | Int | 交易账号 | 是 |
| fundAccount | String | 现金账号 | 是 |
| tradeKey | String | 交易密码解密串 | 是 |
- 返回数据
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| assetId | String | 资产 ID(如 00700.HK) | 是 |
| stkName | Int | 股票名称 | 是 |
| currentAmount | double | 当前数量 | 是 |
| costPrice | double | 成本价 | 是 |
| enableAmount | double | 可卖数量 | 是 |
| marketValue | double | 市值 | 是 |
| lastPrice | double | 最新价 | 是 |
| moneyType | double | 币种类别 | 是 |
| profit | double | 盈亏 | 是 |
| profitPct | double | 盈亏百分比(如涨 2%则 profitPct=0.02) |
- 请求示例
{
"src": "QTGY",
"params": {
"sessionId": "d542fc63a4074c71b6f0e571d229938a128783",
"tradeAccount": "1000002106",
"fundAccount": "100001862",
"tradeKey": "xxx"
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- 返回示例
{
"code": 0,
"message": "调用成功",
"result": [
{
"assetId": "01628.HK",
"costPrice": 2.54,
"currency": "HKD",
"currentAmount": 1000000.0,
"enableAmount": 1000000.0,
"incomeBalance": 0.0,
"keepCostPrice": 2.54,
"lastPrice": 2.54,
"marketValue": 2540000.0,
"profit": 810000.0,
"profitPct": 0.31889763779527566,
"stkName": "禹洲地产"
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 4 交易下单
# 4.1 买入
接口地址:/tradeApi/buy
请求参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| fundAccount | String | 资金账号 | 是 |
| tradeKey | String | 交易密码解密串 | 是 |
| assetId | String | 资产 ID | 是 |
| amount | Int | 买入数量 | 是 |
| price | Double | 买入价格 | 是 |
| orderType | OrderType | 订单类型,如竞价单,限价单等(香港市场必填) |
- 返回参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| orderNo | Int | 订单号(委托编号) | 是 |
# 4.2 卖出
接口地址:/tradeApi/sell
请求参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| fundAccount | String | 资金账号 | 是 |
| tradeKey | String | 交易密码解密串 | 是 |
| opStation | String | 设备标识 | 是 |
| assetId | String | 资产 ID | 是 |
| amount | Int | 买入数量 | 是 |
| price | Double | 买入价格 | 是 |
| orderType | OrderType | 订单类型,如竞价单,限价单等(香港市场必填) |
- 返回参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| orderNo | Int | 订单号(委托编号) | 是 |
# 4.3 订单修改
接口地址:/tradeApi/modify
请求参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| fundAccount | String | 资金账号 | 是 |
| tradeKey | String | 交易密码解密串 | 是 |
| opStation | String | 设备标识 | 是 |
| orderNo | String | 订单号 | 是 |
| assetId | String | 资产 ID | 是 |
| amount | Int | 买入数量 | 是 |
| price | Double | 买入价格 | 是 |
| orderType | OrderType | 订单类型,如竞价单,限价单等(香港市场必填) |
- 返回参数
无
# 4.4 订单撤销
接口地址:/tradeApi/cancel
请求参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| fundAccount | String | 资金账号 | 是 |
| tradeKey | String | 交易密码解密串 | 是 |
| orderNo | String | 订单号 | 是 |
| assetId | String | 资产 ID | 是 |
| amount | Int | 买入数量 | 是 |
| price | Double | 买入价格 | 是 |
| orderType | OrderType | 订单类型,如竞价单,限价单等(香港市场必填) |
- 返回参数
无
# 4.5 查询可买数量
接口地址:/tradeApi/getBuyAmount
请求参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| fundAccount | String | 资金账号 | 是 |
| tradeKey | String | 交易密码解密串 | 是 |
| assetId | String | 资产 ID | 是 |
| price | Double | 买入价格 | 是 |
- 返回参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| enableAmount | Int | 可买数量,单位:股 | 是 |
# 4.6.查询可卖出数量
接口地址: /tradeApi/getSellAmount
请求参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| fundAccount | String | 资金账号 | 是 |
| tradeKey | String | 交易密码解密串 | 是 |
| assetId | String | 资产 ID | 是 |
- 返回参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| enableAmount | Int | 可卖数量,单位:股 | 是 |
# 5. 查询委托
# 5.1 当日委托
接口地址:/tradeApi/queryTodayOrder
请求参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| fundAccount | String | 资金账号 | 是 |
| tradeKey | String | 交易密码解密串 | 是 |
- 返回参数
| 参数名称 | 类型 | 说明 | 必填 |
|---|---|---|---|
| orderNo | String | 订单号 | 是 |
| assetId | String | 资产 ID | 是 |
| stkName | String | 股票名称 | 是 |
| orderAction | OrderAction | 买卖方向 | 是 |
| orderType | OrderType | 订单类型,竞价单,限价单等 | 是 |
| orderStatus | String | 状态 | 是 |
| amount | Double | 订单数量 | 是 |
| price | Double | 订单价格 | 是 |
| dealAmount | Double | 成交数量 | 是 |
| dealPrice | Double | 成交价格 | 是 |
| dealBalance | Double | 成交金额 | 是 |
| time | String | 时间,HH:mm:ss | 是 |
| cancelable | Boolean | 是否可撤 | 是 |
| modifiable | Boolean | 是否可修改 | 是 |
- 请求示例
{
"src": "QTGY",
"params": {
"sessionId": "d542fc63a4074c71b6f0e571d229938a128783",
"tradeAccount": "1000002106",
"fundAccount": "100001862",
"tradeKey": "CMYZ7UI9V93sWpX3IwZLHw=="
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- 返回示例
{
"code": 0,
"message": "调用成功",
"result": [
{
"orderType": "ELO",
"amount": 1000.0,
"orderNo": "9",
"cancelable": false,
"dealAmount": 1000.0,
"orderStatus": "8",
"dealPrice": 3.34,
"dealBalance": 3340.0,
"orderAction": "1",
"stkName": "禹洲地产",
"assetId": "01628.HK",
"price": 3.34,
"time": "14:12:51",
"modifiable": false
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 6. 数据字典
# 6.1 OrderStatus 订单状态
| 状态码 | 说明 |
|---|---|
| 0 | No Register(未报) |
| 1 | Wait to Register(待报) |
| 2 | Host Registered(已报) |
| 3 | Wait for Cancel(已报待撤) |
| 4 | Wait for Cancel [ Partially Matched ] (部成待撤) |
| 5 | Partially Cancelled(部撤) |
| 6 | Cancelled(已撤) |
| 7 | Partially Filled(部成) |
| 8 | Filled(已成) |
| 9 | Host Reject(废单) |
| G | 预埋单已撤 |
# 6.2 OrderAction 买卖方向
| 状态码 | 说明 |
|---|---|
| 1 | 买入 |
| 2 | 卖出 |
# 6.3 OrderType 订单类型
| 状态码 | 说明 |
|---|---|
| AO | 竞价盘 |
| ALO | 竞价限价盘 |
| LO | 限价盘 |
| ELO | 增强限价盘 |
| SLO | 特别限价盘 |