# 役員情報の取得
- Python
- Proto
- C#
- Java
- C++
- JavaScript
get_company_executives(code)
説明
指定した銘柄の取締役および役員リストを取得します。表示名、氏名、役職、就任開始日、公開日、性別、年齢、学歴、年俸などの情報が含まれます
パラメータ
パラメータ 型 説明 code str 銘柄コード 例:HK.00700;個別株および投資信託に対応戻り値
パラメータ 型 説明 ret RET_CODE API 呼び出し結果 data pd.DataFrame ret == RET_OK の場合、役員情報 DataFrame を返す str ret != RET_OK の場合、エラー説明を返す DataFrame フィールド説明:
フィールド 型 説明 display_leader_name str 表示名 表示専用。get_company_executive_background への入力には使用しない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 構造体については 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
- API 呼び出し結果の構造体については 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 構造体については 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
- API 呼び出し結果の構造体については 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(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 構造体については 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
- API 呼び出し結果の構造体については 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
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 構造体については 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
- API 呼び出し結果の構造体については 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 構造体については 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
- API 呼び出し結果の構造体については 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
API制限
- 30秒以内に最大30回のリクエストが可能です。
- 個別株および投資信託に対応しています。
- Python
- Proto
- C#
- Java
- C++
- JavaScript
get_company_executives(code)
説明
指定した銘柄の取締役および役員リストを取得します。表示名、氏名、役職、就任開始日、公開日、性別、年齢、学歴、年俸などの情報が含まれます
パラメータ
パラメータ 型 説明 code str 銘柄コード 例:HK.00700;個別株および投資信託に対応戻り値
パラメータ 型 説明 ret RET_CODE API 呼び出し結果 data pd.DataFrame ret == RET_OK の場合、役員情報 DataFrame を返す str ret != RET_OK の場合、エラー説明を返す DataFrame フィールド説明:
フィールド 型 説明 display_leader_name str 表示名 表示専用。get_company_executive_background への入力には使用しない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 構造体については 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
- API 呼び出し結果の構造体については 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 構造体については 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
- API 呼び出し結果の構造体については 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 構造体については 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
- API 呼び出し結果の構造体については 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 構造体については 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
- API 呼び出し結果の構造体については 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 構造体については 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
- API 呼び出し結果の構造体については 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
API制限
- 30秒以内に最大30回のリクエストが可能です。
- 個別株および投資信託に対応しています。