# 账户交易开放 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
  • 返回参数
参数名称 类型 说明 必填
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

返回示例

{
    "code": 0,
    "message": null,
    "updateMsg": null,
    "id": null,
    "result": {
        "eventId": 19628
    }
}
1
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
  • 返回示例
{
    "code": 0,
    "message": null,
    "updateMsg": null,
    "id": null,
   "result": {
        "validateCode": "1"
    }
}
1
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
  • 返回示例
{
    "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

# 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
  • 返回示例
{
	"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

# 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
  • 返回示例
{
	"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

# 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 特别限价盘