# 獲取高管資訊
- 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: "male"
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=7459212684023350975
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: "male"
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: "male"
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": "male",
"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: "male"
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=7459212684023350975
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: "male"
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: "male"
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": "male",
"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 次。
- 支援正股及基金。