# 获取高管信息
- Python
- Proto
- C#
- Java
- C++
- JavaScript
get_company_executives(code)
介绍
获取指定股票的董事及高管列表,包含展示名称、姓名、职位、任职起始日、发布日期、性别、年龄、学历、年薪等信息
参数
参数 类型 说明 code str 股票代码 如 HK.00700;支持正股及基金返回
参数 类型 说明 ret RET_CODE 接口调用结果 data pd.DataFrame 当 ret == RET_OK,返回高管信息 DataFrame str 当 ret != RET_OK,返回错误描述 返回 DataFrame 字段说明:
字段 类型 说明 display_leader_name str 展示名称 仅用于展示,不用于查询高管背景接口leader_name str 高管姓名 可传入 get_company_executive_background 查询背景position_name str 职位名称 begin_date int 任职起始日时间戳(秒) begin_date_str str 任职起始日 格式 YYYY-MM-DD,对应市场时区leader_gender str 性别 如 "Male" / "Female"leader_age str 年龄 highest_education str 最高学历 annual_salary int 年薪 issue_date int 发布日期时间戳(秒) issue_date_str str 发布日期 格式 YYYY-MM-DD,对应市场时区
Example
from futu import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
ret, data = quote_ctx.get_company_executives("US.AAPL")
if ret == RET_OK:
print(data[['display_leader_name', 'position_name', 'begin_date_str', 'annual_salary']].to_string(index=False))
print('count:', len(data))
else:
print('error:', data)
quote_ctx.close()
2
3
4
5
6
7
8
9
10
- Output
display_leader_name position_name begin_date_str annual_salary
Timothy D. Cook Director and Chief Executive Officer NaN 74294811.0
Sabih Khan Chief Operating Officer NaN 27031671.0
Kevan Parekh Chief Financial Officer and Senior Vice President NaN 22467309.0
Ben Borders Principal Accounting Officer and Senior Director, Corporate Accounting NaN NaN
Katherine L. Adams Senior Vice President NaN 27032248.0
Deirdre O'Brien Senior Vice President, Retail and People NaN 27047633.0
Jennifer G. Newstead Senior Vice President, General Counsel and Secretary NaN NaN
John Ternus Senior Vice President, Hardware Engineering NaN NaN
Dr. Arthur D. Levinson, PhD Chairman of the Board NaN 557231.0
Susan L. Wagner Independent Director NaN 445373.0
Monica C. Lozano Independent Director NaN 412956.0
Andrea Jung Independent Director NaN 458020.0
Alex Gorsky Independent Director NaN 416492.0
Dr. Wanda M. Austin, PhD Independent Director NaN 412850.0
Dr. Ronald D. Sugar Independent Director NaN 471283.0
count: 15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Qot_GetCompanyExecutives.proto
介绍
获取高管信息
参数
message C2S
{
required Qot_Common.Security security = 1; // 股票
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 股票结构参见 Security
- 返回
// 公司高管信息项
message DirectorInfo
{
optional string displayLeaderName = 1; // 高管展示名称(仅用于展示,不用于查询背景接口)
optional string leaderName = 2; // 高管姓名(可传入 GetCompanyExecutiveBackground 查询背景)
optional string positionName = 3; // 职位名称
optional uint64 beginDate = 4; // 任职起始日时间戳(秒)
optional string beginDateStr = 5; // 任职起始日字符串,格式 YYYY-MM-DD,对应市场时区
optional string leaderGender = 6; // 性别,如 "Male" / "Female"
optional string leaderAge = 7; // 年龄,字符串形式,如 "62"
optional string highestEducation = 8; // 最高学历
optional uint64 annualSalary = 9; // 年薪
optional uint64 issueDate = 10; // 发布日期时间戳(秒)
optional string issueDateStr = 11; // 发布日期字符串,格式 YYYY-MM-DD,对应市场时区
}
message S2C
{
repeated DirectorInfo directorList = 1; // 董事高管列表
}
message Response
{
required int32 retType = 1 [default = -400]; // 返回结果,详见 Common.RetType
optional string retMsg = 2; // 返回结果描述
optional int32 errCode = 3; // 错误码
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- 接口调用结果,结构参见 RetType
协议 ID
3244
uint GetCompanyExecutives(QotGetCompanyExecutives.Request req);
virtual void OnReply_GetCompanyExecutives(FTAPI_Conn client, uint nSerialNo, QotGetCompanyExecutives.Response rsp);
介绍
获取高管信息
参数
message C2S
{
required Qot_Common.Security security = 1; // 股票
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 股票结构参见 Security
- 返回
// 公司高管信息项
message DirectorInfo
{
optional string displayLeaderName = 1; // 高管展示名称(仅用于展示,不用于查询背景接口)
optional string leaderName = 2; // 高管姓名(可传入 GetCompanyExecutiveBackground 查询背景)
optional string positionName = 3; // 职位名称
optional uint64 beginDate = 4; // 任职起始日时间戳(秒)
optional string beginDateStr = 5; // 任职起始日字符串,格式 YYYY-MM-DD,对应市场时区
optional string leaderGender = 6; // 性别,如 "Male" / "Female"
optional string leaderAge = 7; // 年龄,字符串形式,如 "62"
optional string highestEducation = 8; // 最高学历
optional uint64 annualSalary = 9; // 年薪
optional uint64 issueDate = 10; // 发布日期时间戳(秒)
optional string issueDateStr = 11; // 发布日期字符串,格式 YYYY-MM-DD,对应市场时区
}
message S2C
{
repeated DirectorInfo directorList = 1; // 董事高管列表
}
message Response
{
required int32 retType = 1 [default = -400]; // 返回结果,详见 Common.RetType
optional string retMsg = 2; // 返回结果描述
optional int32 errCode = 3; // 错误码
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- 接口调用结果,结构参见 RetType
- Example
public class Program : FTSPI_Qot, FTSPI_Conn
{
FTAPI_Qot qot = new FTAPI_Qot();
public Program()
{
qot.SetClientInfo("csharp", 1);
qot.SetConnCallback(this);
qot.SetQotCallback(this);
}
public void Start()
{
qot.InitConnect("127.0.0.1", (ushort)11111, false);
}
public void OnInitConnect(FTAPI_Conn client, long errCode, String desc)
{
Console.Write("Qot onInitConnect: ret={0} desc={1} connID={2}\n", errCode, desc, client.GetConnectID());
if (errCode != 0)
return;
QotCommon.Security sec = QotCommon.Security.CreateBuilder()
.SetMarket((int)QotCommon.QotMarket.QotMarket_US_Security)
.SetCode("AAPL")
.Build();
QotGetCompanyExecutives.C2S c2s = QotGetCompanyExecutives.C2S.CreateBuilder()
.SetSecurity(sec)
.Build();
QotGetCompanyExecutives.Request req = QotGetCompanyExecutives.Request.CreateBuilder().SetC2S(c2s).Build();
uint seqNo = qot.GetCompanyExecutives(req);
Console.Write("Send QotGetCompanyExecutives: {0}\n", seqNo);
}
public void OnDisconnect(FTAPI_Conn client, long errCode)
{
Console.Write("Qot onDisConnect: {0}\n", errCode);
}
public void OnReply_GetCompanyExecutives(FTAPI_Conn client, uint nSerialNo, QotGetCompanyExecutives.Response rsp)
{
Console.Write("Reply: QotGetCompanyExecutives: {0} {1}\n", nSerialNo, rsp.ToString());
}
public static void Main(String[] args)
{
FTAPI.Init();
Program qot = new Program();
qot.Start();
while (true)
Thread.Sleep(1000 * 600);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
- Output
sent seqNo=3
retType: 0
retMsg: ""
errCode: 0
s2c {
directorList {
displayLeaderName: "Timothy D. Cook"
leaderName: "Mr. Timothy D. Cook"
positionName: "Director and Chief Executive Officer"
leaderGender: "男"
leaderAge: "65"
annualSalary: 74294811
issueDate: 1776614400
issueDateStr: "2026-04-19"
}
directorList {
//...
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int getCompanyExecutives(QotGetCompanyExecutives.Request req);
void onReply_GetCompanyExecutives(FTAPI_Conn client, int nSerialNo, QotGetCompanyExecutives.Response rsp);
介绍
获取高管信息
参数
message C2S
{
required Qot_Common.Security security = 1; // 股票
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 股票结构参见 Security
- 返回
// 公司高管信息项
message DirectorInfo
{
optional string displayLeaderName = 1; // 高管展示名称(仅用于展示,不用于查询背景接口)
optional string leaderName = 2; // 高管姓名(可传入 GetCompanyExecutiveBackground 查询背景)
optional string positionName = 3; // 职位名称
optional uint64 beginDate = 4; // 任职起始日时间戳(秒)
optional string beginDateStr = 5; // 任职起始日字符串,格式 YYYY-MM-DD,对应市场时区
optional string leaderGender = 6; // 性别,如 "Male" / "Female"
optional string leaderAge = 7; // 年龄,字符串形式,如 "62"
optional string highestEducation = 8; // 最高学历
optional uint64 annualSalary = 9; // 年薪
optional uint64 issueDate = 10; // 发布日期时间戳(秒)
optional string issueDateStr = 11; // 发布日期字符串,格式 YYYY-MM-DD,对应市场时区
}
message S2C
{
repeated DirectorInfo directorList = 1; // 董事高管列表
}
message Response
{
required int32 retType = 1 [default = -400]; // 返回结果,详见 Common.RetType
optional string retMsg = 2; // 返回结果描述
optional int32 errCode = 3; // 错误码
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- 接口调用结果,结构参见 RetType
- Example
public class QotDemo implements FTSPI_Qot, FTSPI_Conn {
FTAPI_Conn_Qot qot = new FTAPI_Conn_Qot();
public QotDemo() {
qot.setClientInfo("javaclient", 1);
qot.setConnSpi(this);
qot.setQotSpi(this);
}
public void start() {
qot.initConnect("127.0.0.1", (short)11111, false);
}
@Override
public void onInitConnect(FTAPI_Conn client, long errCode, String desc)
{
System.out.printf("Qot onInitConnect: ret=%b desc=%s connID=%d\n", errCode, desc, client.getConnectID());
if (errCode != 0)
return;
QotCommon.Security sec = QotCommon.Security.newBuilder()
.setMarket(QotCommon.QotMarket.QotMarket_US_Security_VALUE)
.setCode("AAPL")
.build();
QotGetCompanyExecutives.C2S c2s = QotGetCompanyExecutives.C2S.newBuilder()
.setSecurity(sec)
.build();
QotGetCompanyExecutives.Request req = QotGetCompanyExecutives.Request.newBuilder().setC2S(c2s).build();
int seqNo = qot.getCompanyExecutives(req);
System.out.printf("Send QotGetCompanyExecutives: %d\n", seqNo);
}
@Override
public void onDisconnect(FTAPI_Conn client, long errCode) {
System.out.printf("Qot onDisConnect: %d\n", errCode);
}
@Override
public void onReply_GetCompanyExecutives(FTAPI_Conn client, int nSerialNo, QotGetCompanyExecutives.Response rsp) {
if (rsp.getRetType() != 0) {
System.out.printf("QotGetCompanyExecutives failed: %s\n", rsp.getRetMsg());
}
else {
try {
String json = JsonFormat.printer().print(rsp);
System.out.printf("Receive QotGetCompanyExecutives: %s\n", json);
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
FTAPI.init();
QotDemo qot = new QotDemo();
qot.start();
while (true) {
try {
Thread.sleep(1000 * 600);
} catch (InterruptedException exc) {
}
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
- Output
Qot onInitConnect: ret=0 desc= connID=7459213627903038891
Send Qot_GetCompanyExecutives: 2
Receive Qot_GetCompanyExecutives: retType: 0
retMsg: ""
errCode: 0
s2c {
directorList {
displayLeaderName: "Timothy D. Cook"
leaderName: "Mr. Timothy D. Cook"
positionName: "Director and Chief Executive Officer"
leaderGender: "男"
leaderAge: "65"
annualSalary: 74294811
issueDate: 1776614400
issueDateStr: "2026-04-19"
}
directorList {
//...
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Futu::u32_t GetCompanyExecutives(const Qot_GetCompanyExecutives::Request &stReq);
virtual void OnReply_GetCompanyExecutives(Futu::u32_t nSerialNo, const Qot_GetCompanyExecutives::Response &stRsp) = 0;
介绍
获取高管信息
参数
message C2S
{
required Qot_Common.Security security = 1; // 股票
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 股票结构参见 Security
- 返回
// 公司高管信息项
message DirectorInfo
{
optional string displayLeaderName = 1; // 高管展示名称(仅用于展示,不用于查询背景接口)
optional string leaderName = 2; // 高管姓名(可传入 GetCompanyExecutiveBackground 查询背景)
optional string positionName = 3; // 职位名称
optional uint64 beginDate = 4; // 任职起始日时间戳(秒)
optional string beginDateStr = 5; // 任职起始日字符串,格式 YYYY-MM-DD,对应市场时区
optional string leaderGender = 6; // 性别,如 "Male" / "Female"
optional string leaderAge = 7; // 年龄,字符串形式,如 "62"
optional string highestEducation = 8; // 最高学历
optional uint64 annualSalary = 9; // 年薪
optional uint64 issueDate = 10; // 发布日期时间戳(秒)
optional string issueDateStr = 11; // 发布日期字符串,格式 YYYY-MM-DD,对应市场时区
}
message S2C
{
repeated DirectorInfo directorList = 1; // 董事高管列表
}
message Response
{
required int32 retType = 1 [default = -400]; // 返回结果,详见 Common.RetType
optional string retMsg = 2; // 返回结果描述
optional int32 errCode = 3; // 错误码
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- 接口调用结果,结构参见 RetType
- Example
class Program : public FTSPI_Qot, public FTSPI_Trd, public FTSPI_Conn
{
public:
Program() {
m_pQotApi = FTAPI::CreateQotApi();
m_pQotApi->RegisterQotSpi(this);
m_pQotApi->RegisterConnSpi(this);
}
~Program() {
if (m_pQotApi != nullptr)
{
m_pQotApi->UnregisterQotSpi();
m_pQotApi->UnregisterConnSpi();
FTAPI::ReleaseQotApi(m_pQotApi);
m_pQotApi = nullptr;
}
}
void Start() {
m_pQotApi->InitConnect("127.0.0.1", 11111, false);
}
virtual void OnInitConnect(FTAPI_Conn* pConn, Futu::i64_t nErrCode, const char* strDesc) {
cout << "connect" << endl;
// construct request message
Qot_GetCompanyExecutives::Request req;
Qot_GetCompanyExecutives::C2S *c2s = req.mutable_c2s();
Qot_Common::Security *sec = c2s->mutable_security();
sec->set_code("AAPL");
sec->set_market(Qot_Common::QotMarket::QotMarket_US_Security);
m_pQotApi->GetCompanyExecutives(req);
cout << "GetCompanyExecutives" << endl;
}
virtual void OnReply_GetCompanyExecutives(Futu::u32_t nSerialNo, const Qot_GetCompanyExecutives::Response &stRsp){
cout << "OnReply_GetCompanyExecutives:" << endl;
// print response
// ProtoBufToBodyData and UTF8ToLocal refer to tool.h in Samples
string resp_str;
ProtoBufToBodyData(stRsp, resp_str);
cout << UTF8ToLocal(resp_str) << endl;
}
protected:
FTAPI_Qot *m_pQotApi;
};
int32_t main(int32_t argc, char** argv)
{
FTAPI::Init();
{
Program program;
program.Start();
getchar();
}
protobuf::ShutdownProtobufLibrary();
FTAPI::UnInit();
return 0;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
- Output
onInitConnect: ret=0 desc=Succeed!
Send Qot_GetCompanyExecutives seqNo=3
retType: 0
retMsg: ""
errCode: 0
s2c {
directorList {
displayLeaderName: "Timothy D. Cook"
leaderName: "Mr. Timothy D. Cook"
positionName: "Director and Chief Executive Officer"
leaderGender: "男"
leaderAge: "65"
annualSalary: 74294811
issueDate: 1776614400
issueDateStr: "2026-04-19"
}
directorList {
//...
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
GetCompanyExecutives(req);
介绍
获取高管信息
参数
message C2S
{
required Qot_Common.Security security = 1; // 股票
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 股票结构参见 Security
- 返回
// 公司高管信息项
message DirectorInfo
{
optional string displayLeaderName = 1; // 高管展示名称(仅用于展示,不用于查询背景接口)
optional string leaderName = 2; // 高管姓名(可传入 GetCompanyExecutiveBackground 查询背景)
optional string positionName = 3; // 职位名称
optional uint64 beginDate = 4; // 任职起始日时间戳(秒)
optional string beginDateStr = 5; // 任职起始日字符串,格式 YYYY-MM-DD,对应市场时区
optional string leaderGender = 6; // 性别,如 "Male" / "Female"
optional string leaderAge = 7; // 年龄,字符串形式,如 "62"
optional string highestEducation = 8; // 最高学历
optional uint64 annualSalary = 9; // 年薪
optional uint64 issueDate = 10; // 发布日期时间戳(秒)
optional string issueDateStr = 11; // 发布日期字符串,格式 YYYY-MM-DD,对应市场时区
}
message S2C
{
repeated DirectorInfo directorList = 1; // 董事高管列表
}
message Response
{
required int32 retType = 1 [default = -400]; // 返回结果,详见 Common.RetType
optional string retMsg = 2; // 返回结果描述
optional int32 errCode = 3; // 错误码
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- 接口调用结果,结构参见 RetType
- Example
import ftWebsocket from "futu-api";
import { Common, Qot_Common } from "futu-api/proto";
import beautify from "js-beautify";
function QotGetCompanyExecutives(){
const { RetType } = Common
const { QotMarket } = Qot_Common
let [addr, port, enable_ssl, key] = ["127.0.0.1", 33333, false, '7522027ccf5a06b1'];
let websocket = new ftWebsocket();
websocket.onlogin = (ret, msg)=>{
if (ret) {
const req = {
c2s: {
security: {
market: QotMarket.QotMarket_US_Security,
code: "AAPL",
},
},
};
websocket.GetCompanyExecutives(req)
.then((res) => {
let { errCode, retMsg, retType,s2c } = res
console.log("GetCompanyExecutives: errCode %d, retMsg %s, retType %d", errCode, retMsg, retType);
if(retType == RetType.RetType_Succeed){
let data = beautify(JSON.stringify(s2c), {
indent_size: 2,
space_in_empty_paren: true,
});
console.log(data);
}
})
.catch((error) => {
console.log("error:", error);
});
} else {
console.log("error", msg);
}
};
websocket.start(addr, port, enable_ssl, key);
setTimeout(()=>{
websocket.stop();
console.log("stop");
}, 5000);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
- Output
GetCompanyExecutives: errCode 0, retMsg , retType 0
{
"directorList": [{
"displayLeaderName": "Timothy D. Cook",
"leaderName": "Mr. Timothy D. Cook",
"positionName": "Director and Chief Executive Officer",
"leaderGender": "男",
"leaderAge": "65",
"annualSalary": 74294811,
"issueDate": 1776614400,
"issueDateStr": "2026-04-19"
//...
}]
}
stop
2
3
4
5
6
7
8
9
10
11
12
13
14
15
接口限制
- 每 30 秒内最多请求 30 次。
- 支持正股及基金。
- Python
- Proto
- C#
- Java
- C++
- JavaScript
get_company_executives(code)
介绍
获取指定股票的董事及高管列表,包含展示名称、姓名、职位、任职起始日、发布日期、性别、年龄、学历、年薪等信息
参数
参数 类型 说明 code str 股票代码 如 HK.00700;支持正股及基金返回
参数 类型 说明 ret RET_CODE 接口调用结果 data pd.DataFrame 当 ret == RET_OK,返回高管信息 DataFrame str 当 ret != RET_OK,返回错误描述 返回 DataFrame 字段说明:
字段 类型 说明 display_leader_name str 展示名称 仅用于展示,不用于查询高管背景接口leader_name str 高管姓名 可传入 get_company_executive_background 查询背景position_name str 职位名称 begin_date int 任职起始日时间戳(秒) begin_date_str str 任职起始日 格式 YYYY-MM-DD,对应市场时区leader_gender str 性别 如 "Male" / "Female"leader_age str 年龄 highest_education str 最高学历 annual_salary int 年薪 issue_date int 发布日期时间戳(秒) issue_date_str str 发布日期 格式 YYYY-MM-DD,对应市场时区
Example
from moomoo import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
ret, data = quote_ctx.get_company_executives("US.AAPL")
if ret == RET_OK:
print(data[['display_leader_name', 'position_name', 'begin_date_str', 'annual_salary']].to_string(index=False))
print('count:', len(data))
else:
print('error:', data)
quote_ctx.close()
2
3
4
5
6
7
8
9
10
- Output
display_leader_name position_name begin_date_str annual_salary
Timothy D. Cook Director and Chief Executive Officer NaN 74294811.0
Sabih Khan Chief Operating Officer NaN 27031671.0
Kevan Parekh Chief Financial Officer and Senior Vice President NaN 22467309.0
Ben Borders Principal Accounting Officer and Senior Director, Corporate Accounting NaN NaN
Katherine L. Adams Senior Vice President NaN 27032248.0
Deirdre O'Brien Senior Vice President, Retail and People NaN 27047633.0
Jennifer G. Newstead Senior Vice President, General Counsel and Secretary NaN NaN
John Ternus Senior Vice President, Hardware Engineering NaN NaN
Dr. Arthur D. Levinson, PhD Chairman of the Board NaN 557231.0
Susan L. Wagner Independent Director NaN 445373.0
Monica C. Lozano Independent Director NaN 412956.0
Andrea Jung Independent Director NaN 458020.0
Alex Gorsky Independent Director NaN 416492.0
Dr. Wanda M. Austin, PhD Independent Director NaN 412850.0
Dr. Ronald D. Sugar Independent Director NaN 471283.0
count: 15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Qot_GetCompanyExecutives.proto
介绍
获取高管信息
参数
message C2S
{
required Qot_Common.Security security = 1; // 股票
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 股票结构参见 Security
- 返回
// 公司高管信息项
message DirectorInfo
{
optional string displayLeaderName = 1; // 高管展示名称(仅用于展示,不用于查询背景接口)
optional string leaderName = 2; // 高管姓名(可传入 GetCompanyExecutiveBackground 查询背景)
optional string positionName = 3; // 职位名称
optional uint64 beginDate = 4; // 任职起始日时间戳(秒)
optional string beginDateStr = 5; // 任职起始日字符串,格式 YYYY-MM-DD,对应市场时区
optional string leaderGender = 6; // 性别,如 "Male" / "Female"
optional string leaderAge = 7; // 年龄,字符串形式,如 "62"
optional string highestEducation = 8; // 最高学历
optional uint64 annualSalary = 9; // 年薪
optional uint64 issueDate = 10; // 发布日期时间戳(秒)
optional string issueDateStr = 11; // 发布日期字符串,格式 YYYY-MM-DD,对应市场时区
}
message S2C
{
repeated DirectorInfo directorList = 1; // 董事高管列表
}
message Response
{
required int32 retType = 1 [default = -400]; // 返回结果,详见 Common.RetType
optional string retMsg = 2; // 返回结果描述
optional int32 errCode = 3; // 错误码
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- 接口调用结果,结构参见 RetType
协议 ID
3244
uint GetCompanyExecutives(QotGetCompanyExecutives.Request req);
virtual void OnReply_GetCompanyExecutives(MMAPI_Conn client, uint nSerialNo, QotGetCompanyExecutives.Response rsp);
介绍
获取高管信息
参数
message C2S
{
required Qot_Common.Security security = 1; // 股票
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 股票结构参见 Security
- 返回
// 公司高管信息项
message DirectorInfo
{
optional string displayLeaderName = 1; // 高管展示名称(仅用于展示,不用于查询背景接口)
optional string leaderName = 2; // 高管姓名(可传入 GetCompanyExecutiveBackground 查询背景)
optional string positionName = 3; // 职位名称
optional uint64 beginDate = 4; // 任职起始日时间戳(秒)
optional string beginDateStr = 5; // 任职起始日字符串,格式 YYYY-MM-DD,对应市场时区
optional string leaderGender = 6; // 性别,如 "Male" / "Female"
optional string leaderAge = 7; // 年龄,字符串形式,如 "62"
optional string highestEducation = 8; // 最高学历
optional uint64 annualSalary = 9; // 年薪
optional uint64 issueDate = 10; // 发布日期时间戳(秒)
optional string issueDateStr = 11; // 发布日期字符串,格式 YYYY-MM-DD,对应市场时区
}
message S2C
{
repeated DirectorInfo directorList = 1; // 董事高管列表
}
message Response
{
required int32 retType = 1 [default = -400]; // 返回结果,详见 Common.RetType
optional string retMsg = 2; // 返回结果描述
optional int32 errCode = 3; // 错误码
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- 接口调用结果,结构参见 RetType
- Example
public class Program : MMSPI_Qot, MMSPI_Conn
{
MMAPI_Qot qot = new MMAPI_Qot();
public Program()
{
qot.SetClientInfo("csharp", 1);
qot.SetConnCallback(this);
qot.SetQotCallback(this);
}
public void Start()
{
qot.InitConnect("127.0.0.1", (ushort)11111, false);
}
public void OnInitConnect(MMAPI_Conn client, long errCode, String desc)
{
Console.Write("Qot onInitConnect: ret={0} desc={1} connID={2}\n", errCode, desc, client.GetConnectID());
if (errCode != 0)
return;
QotCommon.Security sec = QotCommon.Security.CreateBuilder()
.SetMarket((int)QotCommon.QotMarket.QotMarket_US_Security)
.SetCode("AAPL")
.Build();
QotGetCompanyExecutives.C2S c2s = QotGetCompanyExecutives.C2S.CreateBuilder()
.SetSecurity(sec)
.Build();
QotGetCompanyExecutives.Request req = QotGetCompanyExecutives.Request.CreateBuilder().SetC2S(c2s).Build();
uint seqNo = qot.GetCompanyExecutives(req);
Console.Write("Send QotGetCompanyExecutives: {0}\n", seqNo);
}
public void OnDisconnect(MMAPI_Conn client, long errCode)
{
Console.Write("Qot onDisConnect: {0}\n", errCode);
}
public void OnReply_GetCompanyExecutives(MMAPI_Conn client, uint nSerialNo, QotGetCompanyExecutives.Response rsp)
{
Console.Write("Reply: QotGetCompanyExecutives: {0} {1}\n", nSerialNo, rsp.ToString());
}
public static void Main(String[] args)
{
MMAPI.Init();
Program qot = new Program();
qot.Start();
while (true)
Thread.Sleep(1000 * 600);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
- Output
sent seqNo=3
retType: 0
retMsg: ""
errCode: 0
s2c {
directorList {
displayLeaderName: "Timothy D. Cook"
leaderName: "Mr. Timothy D. Cook"
positionName: "Director and Chief Executive Officer"
leaderGender: "男"
leaderAge: "65"
annualSalary: 74294811
issueDate: 1776614400
issueDateStr: "2026-04-19"
}
directorList {
//...
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int getCompanyExecutives(QotGetCompanyExecutives.Request req);
void onReply_GetCompanyExecutives(MMAPI_Conn client, int nSerialNo, QotGetCompanyExecutives.Response rsp);
介绍
获取高管信息
参数
message C2S
{
required Qot_Common.Security security = 1; // 股票
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 股票结构参见 Security
- 返回
// 公司高管信息项
message DirectorInfo
{
optional string displayLeaderName = 1; // 高管展示名称(仅用于展示,不用于查询背景接口)
optional string leaderName = 2; // 高管姓名(可传入 GetCompanyExecutiveBackground 查询背景)
optional string positionName = 3; // 职位名称
optional uint64 beginDate = 4; // 任职起始日时间戳(秒)
optional string beginDateStr = 5; // 任职起始日字符串,格式 YYYY-MM-DD,对应市场时区
optional string leaderGender = 6; // 性别,如 "Male" / "Female"
optional string leaderAge = 7; // 年龄,字符串形式,如 "62"
optional string highestEducation = 8; // 最高学历
optional uint64 annualSalary = 9; // 年薪
optional uint64 issueDate = 10; // 发布日期时间戳(秒)
optional string issueDateStr = 11; // 发布日期字符串,格式 YYYY-MM-DD,对应市场时区
}
message S2C
{
repeated DirectorInfo directorList = 1; // 董事高管列表
}
message Response
{
required int32 retType = 1 [default = -400]; // 返回结果,详见 Common.RetType
optional string retMsg = 2; // 返回结果描述
optional int32 errCode = 3; // 错误码
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- 接口调用结果,结构参见 RetType
- Example
public class QotDemo implements MMSPI_Qot, MMSPI_Conn {
MMAPI_Conn_Qot qot = new MMAPI_Conn_Qot();
public QotDemo() {
qot.setClientInfo("javaclient", 1);
qot.setConnSpi(this);
qot.setQotSpi(this);
}
public void start() {
qot.initConnect("127.0.0.1", (short)11111, false);
}
@Override
public void onInitConnect(MMAPI_Conn client, long errCode, String desc)
{
System.out.printf("Qot onInitConnect: ret=%b desc=%s connID=%d\n", errCode, desc, client.getConnectID());
if (errCode != 0)
return;
QotCommon.Security sec = QotCommon.Security.newBuilder()
.setMarket(QotCommon.QotMarket.QotMarket_US_Security_VALUE)
.setCode("AAPL")
.build();
QotGetCompanyExecutives.C2S c2s = QotGetCompanyExecutives.C2S.newBuilder()
.setSecurity(sec)
.build();
QotGetCompanyExecutives.Request req = QotGetCompanyExecutives.Request.newBuilder().setC2S(c2s).build();
int seqNo = qot.getCompanyExecutives(req);
System.out.printf("Send QotGetCompanyExecutives: %d\n", seqNo);
}
@Override
public void onDisconnect(MMAPI_Conn client, long errCode) {
System.out.printf("Qot onDisConnect: %d\n", errCode);
}
@Override
public void onReply_GetCompanyExecutives(MMAPI_Conn client, int nSerialNo, QotGetCompanyExecutives.Response rsp) {
if (rsp.getRetType() != 0) {
System.out.printf("QotGetCompanyExecutives failed: %s\n", rsp.getRetMsg());
}
else {
try {
String json = JsonFormat.printer().print(rsp);
System.out.printf("Receive QotGetCompanyExecutives: %s\n", json);
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MMAPI.init();
QotDemo qot = new QotDemo();
qot.start();
while (true) {
try {
Thread.sleep(1000 * 600);
} catch (InterruptedException exc) {
}
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
- Output
Qot onInitConnect: ret=0 desc= connID=7459213627903038891
Send Qot_GetCompanyExecutives: 2
Receive Qot_GetCompanyExecutives: retType: 0
retMsg: ""
errCode: 0
s2c {
directorList {
displayLeaderName: "Timothy D. Cook"
leaderName: "Mr. Timothy D. Cook"
positionName: "Director and Chief Executive Officer"
leaderGender: "男"
leaderAge: "65"
annualSalary: 74294811
issueDate: 1776614400
issueDateStr: "2026-04-19"
}
directorList {
//...
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
moomoo::u32_t GetCompanyExecutives(const Qot_GetCompanyExecutives::Request &stReq);
virtual void OnReply_GetCompanyExecutives(moomoo::u32_t nSerialNo, const Qot_GetCompanyExecutives::Response &stRsp) = 0;
介绍
获取高管信息
参数
message C2S
{
required Qot_Common.Security security = 1; // 股票
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 股票结构参见 Security
- 返回
// 公司高管信息项
message DirectorInfo
{
optional string displayLeaderName = 1; // 高管展示名称(仅用于展示,不用于查询背景接口)
optional string leaderName = 2; // 高管姓名(可传入 GetCompanyExecutiveBackground 查询背景)
optional string positionName = 3; // 职位名称
optional uint64 beginDate = 4; // 任职起始日时间戳(秒)
optional string beginDateStr = 5; // 任职起始日字符串,格式 YYYY-MM-DD,对应市场时区
optional string leaderGender = 6; // 性别,如 "Male" / "Female"
optional string leaderAge = 7; // 年龄,字符串形式,如 "62"
optional string highestEducation = 8; // 最高学历
optional uint64 annualSalary = 9; // 年薪
optional uint64 issueDate = 10; // 发布日期时间戳(秒)
optional string issueDateStr = 11; // 发布日期字符串,格式 YYYY-MM-DD,对应市场时区
}
message S2C
{
repeated DirectorInfo directorList = 1; // 董事高管列表
}
message Response
{
required int32 retType = 1 [default = -400]; // 返回结果,详见 Common.RetType
optional string retMsg = 2; // 返回结果描述
optional int32 errCode = 3; // 错误码
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- 接口调用结果,结构参见 RetType
- Example
class Program : public MMSPI_Qot, public MMSPI_Trd, public MMSPI_Conn
{
public:
Program() {
m_pQotApi = MMAPI::CreateQotApi();
m_pQotApi->RegisterQotSpi(this);
m_pQotApi->RegisterConnSpi(this);
}
~Program() {
if (m_pQotApi != nullptr)
{
m_pQotApi->UnregisterQotSpi();
m_pQotApi->UnregisterConnSpi();
MMAPI::ReleaseQotApi(m_pQotApi);
m_pQotApi = nullptr;
}
}
void Start() {
m_pQotApi->InitConnect("127.0.0.1", 11111, false);
}
virtual void OnInitConnect(MMAPI_Conn* pConn, moomoo::i64_t nErrCode, const char* strDesc) {
cout << "connect" << endl;
// construct request message
Qot_GetCompanyExecutives::Request req;
Qot_GetCompanyExecutives::C2S *c2s = req.mutable_c2s();
Qot_Common::Security *sec = c2s->mutable_security();
sec->set_code("AAPL");
sec->set_market(Qot_Common::QotMarket::QotMarket_US_Security);
m_pQotApi->GetCompanyExecutives(req);
cout << "GetCompanyExecutives" << endl;
}
virtual void OnReply_GetCompanyExecutives(moomoo::u32_t nSerialNo, const Qot_GetCompanyExecutives::Response &stRsp){
cout << "OnReply_GetCompanyExecutives:" << endl;
// print response
// ProtoBufToBodyData and UTF8ToLocal refer to tool.h in Samples
string resp_str;
ProtoBufToBodyData(stRsp, resp_str);
cout << UTF8ToLocal(resp_str) << endl;
}
protected:
MMAPI_Qot *m_pQotApi;
};
int32_t main(int32_t argc, char** argv)
{
MMAPI::Init();
{
Program program;
program.Start();
getchar();
}
protobuf::ShutdownProtobufLibrary();
MMAPI::UnInit();
return 0;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
- Output
onInitConnect: ret=0 desc=Succeed!
Send Qot_GetCompanyExecutives seqNo=3
retType: 0
retMsg: ""
errCode: 0
s2c {
directorList {
displayLeaderName: "Timothy D. Cook"
leaderName: "Mr. Timothy D. Cook"
positionName: "Director and Chief Executive Officer"
leaderGender: "男"
leaderAge: "65"
annualSalary: 74294811
issueDate: 1776614400
issueDateStr: "2026-04-19"
}
directorList {
//...
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
GetCompanyExecutives(req);
介绍
获取高管信息
参数
message C2S
{
required Qot_Common.Security security = 1; // 股票
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 股票结构参见 Security
- 返回
// 公司高管信息项
message DirectorInfo
{
optional string displayLeaderName = 1; // 高管展示名称(仅用于展示,不用于查询背景接口)
optional string leaderName = 2; // 高管姓名(可传入 GetCompanyExecutiveBackground 查询背景)
optional string positionName = 3; // 职位名称
optional uint64 beginDate = 4; // 任职起始日时间戳(秒)
optional string beginDateStr = 5; // 任职起始日字符串,格式 YYYY-MM-DD,对应市场时区
optional string leaderGender = 6; // 性别,如 "Male" / "Female"
optional string leaderAge = 7; // 年龄,字符串形式,如 "62"
optional string highestEducation = 8; // 最高学历
optional uint64 annualSalary = 9; // 年薪
optional uint64 issueDate = 10; // 发布日期时间戳(秒)
optional string issueDateStr = 11; // 发布日期字符串,格式 YYYY-MM-DD,对应市场时区
}
message S2C
{
repeated DirectorInfo directorList = 1; // 董事高管列表
}
message Response
{
required int32 retType = 1 [default = -400]; // 返回结果,详见 Common.RetType
optional string retMsg = 2; // 返回结果描述
optional int32 errCode = 3; // 错误码
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- 接口调用结果,结构参见 RetType
- Example
import mmWebsocket from "moomoo-api";
import { Common, Qot_Common } from "moomoo-api/proto";
import beautify from "js-beautify";
function QotGetCompanyExecutives(){
const { RetType } = Common
const { QotMarket } = Qot_Common
let [addr, port, enable_ssl, key] = ["127.0.0.1", 33333, false, '7522027ccf5a06b1'];
let websocket = new mmWebsocket();
websocket.onlogin = (ret, msg)=>{
if (ret) {
const req = {
c2s: {
security: {
market: QotMarket.QotMarket_US_Security,
code: "AAPL",
},
},
};
websocket.GetCompanyExecutives(req)
.then((res) => {
let { errCode, retMsg, retType,s2c } = res
console.log("GetCompanyExecutives: errCode %d, retMsg %s, retType %d", errCode, retMsg, retType);
if(retType == RetType.RetType_Succeed){
let data = beautify(JSON.stringify(s2c), {
indent_size: 2,
space_in_empty_paren: true,
});
console.log(data);
}
})
.catch((error) => {
console.log("error:", error);
});
} else {
console.log("error", msg);
}
};
websocket.start(addr, port, enable_ssl, key);
setTimeout(()=>{
websocket.stop();
console.log("stop");
}, 5000);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
- Output
GetCompanyExecutives: errCode 0, retMsg , retType 0
{
"directorList": [{
"displayLeaderName": "Timothy D. Cook",
"leaderName": "Mr. Timothy D. Cook",
"positionName": "Director and Chief Executive Officer",
"leaderGender": "男",
"leaderAge": "65",
"annualSalary": 74294811,
"issueDate": 1776614400,
"issueDateStr": "2026-04-19"
//...
}]
}
stop
2
3
4
5
6
7
8
9
10
11
12
13
14
15
接口限制
- 每 30 秒内最多请求 30 次。
- 支持正股及基金。