# Get Price Reminder List
- Python
- Proto
- C#
- Java
- C++
- JavaScript
get_price_reminder(code=None, market=None)
Description
Get a list of price reminders set for the specified stock or market
Parameters
Parameter Type Description code str Specified stock code. market Market Specified market type. Note that either Shanghai or Shenzhen will be regarded as the A-share market.Note: Choose either code or market, and code takes precedence if both exist.
Return
Field Type Description ret RET_CODE Interface result. data pd.DataFrame If ret == RET_OK, price reminder data is returned. str If ret != RET_OK, error description is returned. - Price reminder data format as follows:
Field Type Description code str Stock code. name str Stock name. key int Identification, used to modify the price reminder. reminder_type PriceReminderType The type of price reminder. reminder_freq PriceReminderFreq The frequency of price reminder. value float Remind value. enable bool Whether to enable. note str Note. Note supports no more than 20 Chinese characters.
- Price reminder data format as follows:
Example
from futu import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
ret, data = quote_ctx.get_price_reminder(code='HK.00700')
if ret == RET_OK:
print(data)
print(data['key'].values.tolist()) # Convert to list
else:
print('error:', data)
print('******************************************')
ret, data = quote_ctx.get_price_reminder(code=None, market=Market.HK)
if ret == RET_OK:
print(data)
if data.shape[0] > 0: # If the price remind list is not empty
print(data['code'][0]) # Take the first stock code
print(data['code'].values.tolist()) # Convert to list
else:
print('error:', data)
quote_ctx.close() # After using the connection, remember to close it to prevent the number of connections from running out
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- Output
code name key reminder_type reminder_freq value enable note
0 HK.00700 TENCENT 168923414326635701 PRICE_UP ALWAYS 349.2 True test1
1 HK.00700 TENCENT 168923414328575801 PRICE_DOWN ALWAYS 349.0 True test2
[168923414326635701, 168923414328575801]
******************************************
code name key reminder_type reminder_freq value enable note
0 HK.00700 TENCENT 168923414326635701 PRICE_UP ALWAYS 349.2 True test1
.. ... ... ... ... ... ... ... ...
3 HK.TCH230728C330000 TCH 230728 330.00 C 168923555994190207 PRICE_DOWN ALWAYS 22.0 True test2
[4 rows x 8 columns]
HK.00700
['HK.00700', 'HK.00700', 'HK.TCH230728C330000', 'HK.TCH230728C330000']
2
3
4
5
6
7
8
9
10
11
12
13
# Qot_GetPriceReminder.proto
Description
Get a list of price reminders set for the specified stock or market
Parameters
message C2S
{
//Choose one of security and market, and security will take precedence if both exist.
optional Qot_Common.Security security = 1; //Specified security
optional int32 market = 2; //Qot_Common::QotMarket. Specified market, query the price reminder items under the market, does not distinguish between Shanghai and Shenzhen
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
10
11
- Return
// List of reminders
message PriceReminderItem
{
required int64 key = 1; //The unique identifier of each reminder
required int32 type = 2; //Qot_Common::PriceReminderType, reminder type
required double value = 3; //Reminder parameter value
required string note = 4; //Note supports no more than 20 Chinese characters
required int32 freq = 5; //Qot_Common::PriceReminderFreq, reminder frequency type
required bool isEnable = 6; //Does the reminder setting take effect. False does not take effect, True takes effect
}
message PriceReminder
{
required Qot_Common.Security security = 1; //Security
optional string name = 3; // stock name
repeated PriceReminderItem itemList = 2; //List of reminder information
}
message S2C
{
repeated PriceReminder priceReminderList = 1; //Price reminder
}
message Response
{
required int32 retType = 1 [default = -400]; //RetType, returned value
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
29
30
31
- For stock structure, refer to Security
- For reminder type enumeration, refer to PriceReminderType
- For enumeration of reminder frequency, refer to PriceReminderFreq
- For interface result, refer to RetType
Protocol ID
3221
uint GetPriceReminder(QotGetPriceReminder.Request req);
virtual void OnReply_GetPriceReminder(FTAPI_Conn client, uint nSerialNo, QotGetPriceReminder.Response rsp);
Description
Get a list of price reminders set for the specified stock or market
Parameters
message C2S
{
//Choose one of security and market, and security will take precedence if both exist.
optional Qot_Common.Security security = 1; //Specified security
optional int32 market = 2; //Qot_Common::QotMarket. Specified market, query the price reminder items under the market, does not distinguish between Shanghai and Shenzhen
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
10
11
- Return
// List of reminders
message PriceReminderItem
{
required int64 key = 1; //The unique identifier of each reminder
required int32 type = 2; //Qot_Common::PriceReminderType, reminder type
required double value = 3; //Reminder parameter value
required string note = 4; //Note supports no more than 20 Chinese characters
required int32 freq = 5; //Qot_Common::PriceReminderFreq, reminder frequency type
required bool isEnable = 6; //Does the reminder setting take effect. False does not take effect, True takes effect
}
message PriceReminder
{
required Qot_Common.Security security = 1; //Security
optional string name = 3; // stock name
repeated PriceReminderItem itemList = 2; //List of reminder information
}
message S2C
{
repeated PriceReminder priceReminderList = 1; //Price reminder
}
message Response
{
required int32 retType = 1 [default = -400]; //RetType, returned value
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
29
30
31
- For stock structure, refer to Security
- For reminder type enumeration, refer to PriceReminderType
- For enumeration of reminder frequency, refer to PriceReminderFreq
- For interface result, refer to RetType
- Example
public class Program: FTSPI_Qot, FTSPI_Conn {
FTAPI_Qot qot = new FTAPI_Qot();
public Program() {
qot.SetClientInfo("csharp", 1); //Set client information
qot.SetConnCallback(this); //Set connection callback
qot.SetQotCallback(this); //Set transaction callback
}
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_HK_Security)
.SetCode("00700")
.Build();
QotGetPriceReminder.C2S c2s = QotGetPriceReminder.C2S.CreateBuilder()
.SetSecurity(sec)
.Build();
QotGetPriceReminder.Request req = QotGetPriceReminder.Request.CreateBuilder().SetC2S(c2s).Build();
uint seqNo = qot.GetPriceReminder(req);
Console.Write("Send QotGetPriceReminder: {0}\n", seqNo);
}
public void OnDisconnect(FTAPI_Conn client, long errCode) {
Console.Write("Qot onDisConnect: {0}\n", errCode);
}
public void OnReply_GetPriceReminder(FTAPI_Conn client, uint nSerialNo, QotGetPriceReminder.Response rsp)
{
Console.Write("Reply: QotGetPriceReminder: {0} {1}\n", nSerialNo, rsp.ToString());
if(rsp.S2C.PriceReminderListCount > 0)
{
Console.Write("key: {0} \n", rsp.S2C.PriceReminderListList[0].ItemListList[0].Key);
}
}
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
Reply: QotGetPriceReminder: 3 retType: 0
retMsg: ""
errCode: 0
s2c {
priceReminderList {
security {
market: 1
code: "00700"
}
itemList {
key: 162763183755472101
type: 1
value: 5
note: ""
freq: 3
isEnable: true
}
itemList {
key: 162763177551063501
type: 1
value: 5
note: ""
freq: 3
isEnable: true
}
}
}
key: 162763183755472101
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
int getPriceReminder(QotGetPriceReminder.Request req);
void onReply_GetPriceReminder(FTAPI_Conn client, int nSerialNo, QotGetPriceReminder.Response rsp);
Description
Get a list of price reminders set for the specified stock or market
Parameters
message C2S
{
//Choose one of security and market, and security will take precedence if both exist.
optional Qot_Common.Security security = 1; //Specified security
optional int32 market = 2; //Qot_Common::QotMarket. Specified market, query the price reminder items under the market, does not distinguish between Shanghai and Shenzhen
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
10
11
- Return
// List of reminders
message PriceReminderItem
{
required int64 key = 1; //The unique identifier of each reminder
required int32 type = 2; //Qot_Common::PriceReminderType, reminder type
required double value = 3; //Reminder parameter value
required string note = 4; //Note supports no more than 20 Chinese characters
required int32 freq = 5; //Qot_Common::PriceReminderFreq, reminder frequency type
required bool isEnable = 6; //Does the reminder setting take effect. False does not take effect, True takes effect
}
message PriceReminder
{
required Qot_Common.Security security = 1; //Security
optional string name = 3; // stock name
repeated PriceReminderItem itemList = 2; //List of reminder information
}
message S2C
{
repeated PriceReminder priceReminderList = 1; //Price reminder
}
message Response
{
required int32 retType = 1 [default = -400]; //RetType, returned value
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
29
30
31
- For stock structure, refer to Security
- For reminder type enumeration, refer to PriceReminderType
- For enumeration of reminder frequency, refer to PriceReminderFreq
- For interface result, refer to RetType
- Example
public class QotDemo implements FTSPI_Qot, FTSPI_Conn {
FTAPI_Conn_Qot qot = new FTAPI_Conn_Qot();
public QotDemo() {
qot.setClientInfo("javaclient", 1); //Set client information
qot.setConnSpi(this); //Set connection callback
qot.setQotSpi(this); //Set transaction callback
}
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_HK_Security_VALUE)
.setCode("00700")
.build();
QotGetPriceReminder.C2S c2s = QotGetPriceReminder.C2S.newBuilder()
.setSecurity(sec)
.build();
QotGetPriceReminder.Request req = QotGetPriceReminder.Request.newBuilder().setC2S(c2s).build();
int seqNo = qot.getPriceReminder(req);
System.out.printf("Send QotGetPriceReminder: %d\n", seqNo);
}
@Override
public void onDisconnect(FTAPI_Conn client, long errCode) {
System.out.printf("Qot onDisConnect: %d\n", errCode);
}
@Override
public void onReply_GetPriceReminder(FTAPI_Conn client, int nSerialNo, QotGetPriceReminder.Response rsp) {
if (rsp.getRetType() != 0) {
System.out.printf("QotGetPriceReminder failed: %s\n", rsp.getRetMsg());
}
else {
try {
String json = JsonFormat.printer().print(rsp);
System.out.printf("Receive QotGetPriceReminder: %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
Send QotGetPriceReminder: 2
Receive QotGetPriceReminder: {
"retType": 0,
"retMsg": "",
"errCode": 0,
"s2c": {
"priceReminderList": [{
"security": {
"market": 1,
"code": "00700"
},
"itemList": [{
"key": "162452649832682701",
"type": 1,
"value": 5.0,
"note": "",
"freq": 3,
"isEnable": true
}]
}]
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Futu::u32_t GetPriceReminder(const Qot_GetPriceReminder::Request &stReq);
virtual void OnReply_GetPriceReminder(Futu::u32_t nSerialNo, const Qot_GetPriceReminder::Response &stRsp) = 0;
Description
Get a list of price reminders set for the specified stock or market
Parameters
message C2S
{
//Choose one of security and market, and security will take precedence if both exist.
optional Qot_Common.Security security = 1; //Specified security
optional int32 market = 2; //Qot_Common::QotMarket. Specified market, query the price reminder items under the market, does not distinguish between Shanghai and Shenzhen
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
10
11
- Return
// List of reminders
message PriceReminderItem
{
required int64 key = 1; //The unique identifier of each reminder
required int32 type = 2; //Qot_Common::PriceReminderType, reminder type
required double value = 3; //Reminder parameter value
required string note = 4; //Note supports no more than 20 Chinese characters
required int32 freq = 5; //Qot_Common::PriceReminderFreq, reminder frequency type
required bool isEnable = 6; //Does the reminder setting take effect. False does not take effect, True takes effect
}
message PriceReminder
{
required Qot_Common.Security security = 1; //Security
optional string name = 3; // stock name
repeated PriceReminderItem itemList = 2; //List of reminder information
}
message S2C
{
repeated PriceReminder priceReminderList = 1; //Price reminder
}
message Response
{
required int32 retType = 1 [default = -400]; //RetType, returned value
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
29
30
31
- For stock structure, refer to Security
- For reminder type enumeration, refer to PriceReminderType
- For enumeration of reminder frequency, refer to PriceReminderFreq
- For interface result, refer to 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_GetPriceReminder::Request req;
Qot_GetPriceReminder::C2S *c2s = req.mutable_c2s();
c2s->set_market(Qot_Common::QotMarket::QotMarket_HK_Security);
m_GetPriceReminderSerialNo = m_pQotApi->GetPriceReminder(req);
cout << "Request GetPriceReminder SerialNo: " << m_GetPriceReminderSerialNo << endl;
}
virtual void OnReply_GetPriceReminder(Futu::u32_t nSerialNo, const Qot_GetPriceReminder::Response &stRsp){
if(nSerialNo == m_GetPriceReminderSerialNo)
{
cout << "OnReply_GetPriceReminder SerialNo: " << nSerialNo << 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;
Futu::u32_t m_GetPriceReminderSerialNo;
};
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
66
67
68
69
- Output
connect
Request GetPriceReminder SerialNo: 4
OnReply_GetPriceReminder SerialNo: 4
{
"retType": 0,
"retMsg": "",
"errCode": 0,
"s2c": {
"priceReminderList": [
{
"security": {
"market": 1,
"code": "00700"
},
"itemList": [
{
"key": "162320791658522901",
"type": 1,
"value": 5,
"note": "",
"freq": 3,
"isEnable": true
}
]
}
]
}
}
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
GetPriceReminder(req);
Description
Get a list of price reminders set for the specified stock or market
Parameters
message C2S
{
//Choose one of security and market, and security will take precedence if both exist.
optional Qot_Common.Security security = 1; //Specified security
optional int32 market = 2; //Qot_Common::QotMarket. Specified market, query the price reminder items under the market, does not distinguish between Shanghai and Shenzhen
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
10
11
- Return
// List of reminders
message PriceReminderItem
{
required int64 key = 1; //The unique identifier of each reminder
required int32 type = 2; //Qot_Common::PriceReminderType, reminder type
required double value = 3; //Reminder parameter value
required string note = 4; //Note supports no more than 20 Chinese characters
required int32 freq = 5; //Qot_Common::PriceReminderFreq, reminder frequency type
required bool isEnable = 6; //Does the reminder setting take effect. False does not take effect, True takes effect
}
message PriceReminder
{
required Qot_Common.Security security = 1; //Security
optional string name = 3; // stock name
repeated PriceReminderItem itemList = 2; //List of reminder information
}
message S2C
{
repeated PriceReminder priceReminderList = 1; //Price reminder
}
message Response
{
required int32 retType = 1 [default = -400]; //RetType, returned value
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
29
30
31
- For stock structure, refer to Security
- For reminder type enumeration, refer to PriceReminderType
- For enumeration of reminder frequency, refer to PriceReminderFreq
- For interface result, refer to RetType
- Example
import ftWebsocket from "futu-api";
import { ftCmdID } from "futu-api";
import { Common, Qot_Common } from "futu-api/proto";
import beautify from "js-beautify";
function QotGetPriceReminder(){
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_HK_Security,
code: "00700",
},
},
};
websocket.GetPriceReminder(req)
.then((res) => {
let { errCode, retMsg, retType,s2c } = res
console.log("PriceReminder: 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);
// After using the connection, remember to close it to prevent the number of connections from running out
setTimeout(()=>{
websocket.stop();
console.log("stop");
}, 5000); // Set the script to receive OpenD push duration to 5 seconds
}
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
- Output
PriceReminder: errCode 0, retMsg , retType 0
{
"priceReminderList": [{
"security": {
"market": 1,
"code": "00700"
},
"itemList": [{
"key": "163126377342664201",
"type": 1,
"value": 600,
"note": "",
"freq": 1,
"isEnable": true
}]
}]
}
stop
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Interface Limitations
- A maximum of 10 requests per 30 seconds
- Python
- Proto
- C#
- Java
- C++
- JavaScript
get_price_reminder(code=None, market=None)
Description
Get a list of price reminders set for the specified stock or market
Parameters
Parameter Type Description code str Specified stock code. market Market Specified market type. Note that either Shanghai or Shenzhen will be regarded as the A-share market.Note: Choose either code or market, and code takes precedence if both exist.
Return
Field Type Description ret RET_CODE Interface result. data pd.DataFrame If ret == RET_OK, price reminder data is returned. str If ret != RET_OK, error description is returned. - Price reminder data format as follows:
Field Type Description code str Stock code. name str Stock name. key int Identification, used to modify the price reminder. reminder_type PriceReminderType The type of price reminder. reminder_freq PriceReminderFreq The frequency of price reminder. value float Remind value. enable bool Whether to enable. note str Note. Note supports no more than 20 Chinese characters.
- Price reminder data format as follows:
Example
from moomoo import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
ret, data = quote_ctx.get_price_reminder(code='HK.00700')
if ret == RET_OK:
print(data)
print(data['key'].values.tolist()) # Convert to list
else:
print('error:', data)
print('******************************************')
ret, data = quote_ctx.get_price_reminder(code=None, market=Market.HK)
if ret == RET_OK:
print(data)
if data.shape[0] > 0: # If the price remind list is not empty
print(data['code'][0]) # Take the first stock code
print(data['code'].values.tolist()) # Convert to list
else:
print('error:', data)
quote_ctx.close() # After using the connection, remember to close it to prevent the number of connections from running out
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- Output
code name key reminder_type reminder_freq value enable note
0 HK.00700 TENCENT 168923414326635701 PRICE_UP ALWAYS 349.2 True test1
1 HK.00700 TENCENT 168923414328575801 PRICE_DOWN ALWAYS 349.0 True test2
[168923414326635701, 168923414328575801]
******************************************
code name key reminder_type reminder_freq value enable note
0 HK.00700 TENCENT 168923414326635701 PRICE_UP ALWAYS 349.2 True test1
.. ... ... ... ... ... ... ... ...
3 HK.TCH230728C330000 TCH 230728 330.00 C 168923555994190207 PRICE_DOWN ALWAYS 22.0 True test2
[4 rows x 8 columns]
HK.00700
['HK.00700', 'HK.00700', 'HK.TCH230728C330000', 'HK.TCH230728C330000']
2
3
4
5
6
7
8
9
10
11
12
13
# Qot_GetPriceReminder.proto
Description
Get a list of price reminders set for the specified stock or market
Parameters
message C2S
{
//Choose one of security and market, and security will take precedence if both exist.
optional Qot_Common.Security security = 1; //Specified security
optional int32 market = 2; //Qot_Common::QotMarket. Specified market, query the price reminder items under the market, does not distinguish between Shanghai and Shenzhen
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
10
11
- Return
// List of reminders
message PriceReminderItem
{
required int64 key = 1; //The unique identifier of each reminder
required int32 type = 2; //Qot_Common::PriceReminderType, reminder type
required double value = 3; //Reminder parameter value
required string note = 4; //Note supports no more than 20 Chinese characters
required int32 freq = 5; //Qot_Common::PriceReminderFreq, reminder frequency type
required bool isEnable = 6; //Does the reminder setting take effect. False does not take effect, True takes effect
}
message PriceReminder
{
required Qot_Common.Security security = 1; //Security
optional string name = 3; // stock name
repeated PriceReminderItem itemList = 2; //List of reminder information
}
message S2C
{
repeated PriceReminder priceReminderList = 1; //Price reminder
}
message Response
{
required int32 retType = 1 [default = -400]; //RetType, returned value
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
29
30
31
- For stock structure, refer to Security
- For reminder type enumeration, refer to PriceReminderType
- For enumeration of reminder frequency, refer to PriceReminderFreq
- For interface result, refer to RetType
Protocol ID
3221
uint GetPriceReminder(QotGetPriceReminder.Request req);
virtual void OnReply_GetPriceReminder(MMAPI_Conn client, uint nSerialNo, QotGetPriceReminder.Response rsp);
Description
Get a list of price reminders set for the specified stock or market
Parameters
message C2S
{
//Choose one of security and market, and security will take precedence if both exist.
optional Qot_Common.Security security = 1; //Specified security
optional int32 market = 2; //Qot_Common::QotMarket. Specified market, query the price reminder items under the market, does not distinguish between Shanghai and Shenzhen
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
10
11
- Return
// List of reminders
message PriceReminderItem
{
required int64 key = 1; //The unique identifier of each reminder
required int32 type = 2; //Qot_Common::PriceReminderType, reminder type
required double value = 3; //Reminder parameter value
required string note = 4; //Note supports no more than 20 Chinese characters
required int32 freq = 5; //Qot_Common::PriceReminderFreq, reminder frequency type
required bool isEnable = 6; //Does the reminder setting take effect. False does not take effect, True takes effect
}
message PriceReminder
{
required Qot_Common.Security security = 1; //Security
optional string name = 3; // stock name
repeated PriceReminderItem itemList = 2; //List of reminder information
}
message S2C
{
repeated PriceReminder priceReminderList = 1; //Price reminder
}
message Response
{
required int32 retType = 1 [default = -400]; //RetType, returned value
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
29
30
31
- For stock structure, refer to Security
- For reminder type enumeration, refer to PriceReminderType
- For enumeration of reminder frequency, refer to PriceReminderFreq
- For interface result, refer to RetType
- Example
public class Program: MMSPI_Qot, MMSPI_Conn {
MMAPI_Qot qot = new MMAPI_Qot();
public Program() {
qot.SetClientInfo("csharp", 1); //Set client information
qot.SetConnCallback(this); //Set connection callback
qot.SetQotCallback(this); //Set transaction callback
}
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_HK_Security)
.SetCode("00700")
.Build();
QotGetPriceReminder.C2S c2s = QotGetPriceReminder.C2S.CreateBuilder()
.SetSecurity(sec)
.Build();
QotGetPriceReminder.Request req = QotGetPriceReminder.Request.CreateBuilder().SetC2S(c2s).Build();
uint seqNo = qot.GetPriceReminder(req);
Console.Write("Send QotGetPriceReminder: {0}\n", seqNo);
}
public void OnDisconnect(MMAPI_Conn client, long errCode) {
Console.Write("Qot onDisConnect: {0}\n", errCode);
}
public void OnReply_GetPriceReminder(MMAPI_Conn client, uint nSerialNo, QotGetPriceReminder.Response rsp)
{
Console.Write("Reply: QotGetPriceReminder: {0} {1}\n", nSerialNo, rsp.ToString());
if(rsp.S2C.PriceReminderListCount > 0)
{
Console.Write("key: {0} \n", rsp.S2C.PriceReminderListList[0].ItemListList[0].Key);
}
}
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
Reply: QotGetPriceReminder: 3 retType: 0
retMsg: ""
errCode: 0
s2c {
priceReminderList {
security {
market: 1
code: "00700"
}
itemList {
key: 162763183755472101
type: 1
value: 5
note: ""
freq: 3
isEnable: true
}
itemList {
key: 162763177551063501
type: 1
value: 5
note: ""
freq: 3
isEnable: true
}
}
}
key: 162763183755472101
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
int getPriceReminder(QotGetPriceReminder.Request req);
void onReply_GetPriceReminder(MMAPI_Conn client, int nSerialNo, QotGetPriceReminder.Response rsp);
Description
Get a list of price reminders set for the specified stock or market
Parameters
message C2S
{
//Choose one of security and market, and security will take precedence if both exist.
optional Qot_Common.Security security = 1; //Specified security
optional int32 market = 2; //Qot_Common::QotMarket. Specified market, query the price reminder items under the market, does not distinguish between Shanghai and Shenzhen
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
10
11
- Return
// List of reminders
message PriceReminderItem
{
required int64 key = 1; //The unique identifier of each reminder
required int32 type = 2; //Qot_Common::PriceReminderType, reminder type
required double value = 3; //Reminder parameter value
required string note = 4; //Note supports no more than 20 Chinese characters
required int32 freq = 5; //Qot_Common::PriceReminderFreq, reminder frequency type
required bool isEnable = 6; //Does the reminder setting take effect. False does not take effect, True takes effect
}
message PriceReminder
{
required Qot_Common.Security security = 1; //Security
optional string name = 3; // stock name
repeated PriceReminderItem itemList = 2; //List of reminder information
}
message S2C
{
repeated PriceReminder priceReminderList = 1; //Price reminder
}
message Response
{
required int32 retType = 1 [default = -400]; //RetType, returned value
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
29
30
31
- For stock structure, refer to Security
- For reminder type enumeration, refer to PriceReminderType
- For enumeration of reminder frequency, refer to PriceReminderFreq
- For interface result, refer to RetType
- Example
public class QotDemo implements MMSPI_Qot, MMSPI_Conn {
MMAPI_Conn_Qot qot = new MMAPI_Conn_Qot();
public QotDemo() {
qot.setClientInfo("javaclient", 1); //Set client information
qot.setConnSpi(this); //Set connection callback
qot.setQotSpi(this); //Set transaction callback
}
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_HK_Security_VALUE)
.setCode("00700")
.build();
QotGetPriceReminder.C2S c2s = QotGetPriceReminder.C2S.newBuilder()
.setSecurity(sec)
.build();
QotGetPriceReminder.Request req = QotGetPriceReminder.Request.newBuilder().setC2S(c2s).build();
int seqNo = qot.getPriceReminder(req);
System.out.printf("Send QotGetPriceReminder: %d\n", seqNo);
}
@Override
public void onDisconnect(MMAPI_Conn client, long errCode) {
System.out.printf("Qot onDisConnect: %d\n", errCode);
}
@Override
public void onReply_GetPriceReminder(MMAPI_Conn client, int nSerialNo, QotGetPriceReminder.Response rsp) {
if (rsp.getRetType() != 0) {
System.out.printf("QotGetPriceReminder failed: %s\n", rsp.getRetMsg());
}
else {
try {
String json = JsonFormat.printer().print(rsp);
System.out.printf("Receive QotGetPriceReminder: %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
Send QotGetPriceReminder: 2
Receive QotGetPriceReminder: {
"retType": 0,
"retMsg": "",
"errCode": 0,
"s2c": {
"priceReminderList": [{
"security": {
"market": 1,
"code": "00700"
},
"itemList": [{
"key": "162452649832682701",
"type": 1,
"value": 5.0,
"note": "",
"freq": 3,
"isEnable": true
}]
}]
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
moomoo::u32_t GetPriceReminder(const Qot_GetPriceReminder::Request &stReq);
virtual void OnReply_GetPriceReminder(moomoo::u32_t nSerialNo, const Qot_GetPriceReminder::Response &stRsp) = 0;
Description
Get a list of price reminders set for the specified stock or market
Parameters
message C2S
{
//Choose one of security and market, and security will take precedence if both exist.
optional Qot_Common.Security security = 1; //Specified security
optional int32 market = 2; //Qot_Common::QotMarket. Specified market, query the price reminder items under the market, does not distinguish between Shanghai and Shenzhen
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
10
11
- Return
// List of reminders
message PriceReminderItem
{
required int64 key = 1; //The unique identifier of each reminder
required int32 type = 2; //Qot_Common::PriceReminderType, reminder type
required double value = 3; //Reminder parameter value
required string note = 4; //Note supports no more than 20 Chinese characters
required int32 freq = 5; //Qot_Common::PriceReminderFreq, reminder frequency type
required bool isEnable = 6; //Does the reminder setting take effect. False does not take effect, True takes effect
}
message PriceReminder
{
required Qot_Common.Security security = 1; //Security
optional string name = 3; // stock name
repeated PriceReminderItem itemList = 2; //List of reminder information
}
message S2C
{
repeated PriceReminder priceReminderList = 1; //Price reminder
}
message Response
{
required int32 retType = 1 [default = -400]; //RetType, returned value
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
29
30
31
- For stock structure, refer to Security
- For reminder type enumeration, refer to PriceReminderType
- For enumeration of reminder frequency, refer to PriceReminderFreq
- For interface result, refer to 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_GetPriceReminder::Request req;
Qot_GetPriceReminder::C2S *c2s = req.mutable_c2s();
c2s->set_market(Qot_Common::QotMarket::QotMarket_HK_Security);
m_GetPriceReminderSerialNo = m_pQotApi->GetPriceReminder(req);
cout << "Request GetPriceReminder SerialNo: " << m_GetPriceReminderSerialNo << endl;
}
virtual void OnReply_GetPriceReminder(moomoo::u32_t nSerialNo, const Qot_GetPriceReminder::Response &stRsp){
if(nSerialNo == m_GetPriceReminderSerialNo)
{
cout << "OnReply_GetPriceReminder SerialNo: " << nSerialNo << 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;
moomoo::u32_t m_GetPriceReminderSerialNo;
};
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
66
67
68
69
- Output
connect
Request GetPriceReminder SerialNo: 4
OnReply_GetPriceReminder SerialNo: 4
{
"retType": 0,
"retMsg": "",
"errCode": 0,
"s2c": {
"priceReminderList": [
{
"security": {
"market": 1,
"code": "00700"
},
"itemList": [
{
"key": "162320791658522901",
"type": 1,
"value": 5,
"note": "",
"freq": 3,
"isEnable": true
}
]
}
]
}
}
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
GetPriceReminder(req);
Description
Get a list of price reminders set for the specified stock or market
Parameters
message C2S
{
//Choose one of security and market, and security will take precedence if both exist.
optional Qot_Common.Security security = 1; //Specified security
optional int32 market = 2; //Qot_Common::QotMarket. Specified market, query the price reminder items under the market, does not distinguish between Shanghai and Shenzhen
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
10
11
- Return
// List of reminders
message PriceReminderItem
{
required int64 key = 1; //The unique identifier of each reminder
required int32 type = 2; //Qot_Common::PriceReminderType, reminder type
required double value = 3; //Reminder parameter value
required string note = 4; //Note supports no more than 20 Chinese characters
required int32 freq = 5; //Qot_Common::PriceReminderFreq, reminder frequency type
required bool isEnable = 6; //Does the reminder setting take effect. False does not take effect, True takes effect
}
message PriceReminder
{
required Qot_Common.Security security = 1; //Security
optional string name = 3; // stock name
repeated PriceReminderItem itemList = 2; //List of reminder information
}
message S2C
{
repeated PriceReminder priceReminderList = 1; //Price reminder
}
message Response
{
required int32 retType = 1 [default = -400]; //RetType, returned value
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
29
30
31
- For stock structure, refer to Security
- For reminder type enumeration, refer to PriceReminderType
- For enumeration of reminder frequency, refer to PriceReminderFreq
- For interface result, refer to RetType
- Example
import mmWebsocket from "moomoo-api";
import { mmCmdID } from "moomoo-api";
import { Common, Qot_Common } from "moomoo-api/proto";
import beautify from "js-beautify";
function QotGetPriceReminder(){
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_HK_Security,
code: "00700",
},
},
};
websocket.GetPriceReminder(req)
.then((res) => {
let { errCode, retMsg, retType,s2c } = res
console.log("PriceReminder: 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);
// After using the connection, remember to close it to prevent the number of connections from running out
setTimeout(()=>{
websocket.stop();
console.log("stop");
}, 5000); // Set the script to receive OpenD push duration to 5 seconds
}
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
- Output
PriceReminder: errCode 0, retMsg , retType 0
{
"priceReminderList": [{
"security": {
"market": 1,
"code": "00700"
},
"itemList": [{
"key": "163126377342664201",
"type": 1,
"value": 600,
"note": "",
"freq": 1,
"isEnable": true
}]
}]
}
stop
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Interface Limitations
- A maximum of 10 requests per 30 seconds