# 账户交易开放 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 | 特别限价盘 |