# Get Today's Deals
- Python
 - Proto
 - C#
 - Java
 - C++
 - JavaScript
 
deal_list_query(code="", deal_market= TrdMarket.NONE, trd_env=TrdEnv.REAL, acc_id=0, acc_index=0, refresh_cache=False)
Description
Query today's deal list of a specific trading account.
This feature is only available for live trading and not for paper trading.Parameters
Parameter Type Description code str Security symbol. Only return orders whose related security symbols correspond to these codes.
If this parameter is not passed, return all.deal_market TrdMarket Filter deals by security market. - Return today's deals for the specified market.
 - If this parameter is not passed or the default NONE is used, return today's deals for all markets.
 
trd_env TrdEnv Trading environment. acc_id int Trading account ID. - When acc_id is 0, the account specified by acc_index is chosen.
 - When acc_id is set the ID number (not 0), the account specified by acc_id is chosen.
 - Using acc_id to query and trade is strongly recommended, acc_index will change when adding/closing an account, result in the account you specify is inconsistent with the actual trading account.
 
acc_index int The account number in the trading account list. The default is 0, which means the first trading account.refresh_cache bool Whether to refresh the cache. - True: Re-request data from the Futu server immediately, without using the OpenD cache. At this time, it will be restricted by the interface frequency limit.
 - False: Use OpenD's cache (the cache needs to be refreshed if it is not updated in rare circumstances).
 
Return
Field Type Description ret RET_CODE Interface result. data pd.DataFrame If ret == RET_OK, transaction list is returned. str If ret != RET_OK, error description is returned. - Transaction list format as follows:
Field Type Description trd_side TrdSide Trading direction. deal_id str Deal number. order_id str Order ID. code str Security code. stock_name str Security name. deal_market TrdMarket Deal market. qty float Quantity of shares bought/sold on this fill. Option futures unit is "Contract".price float Fill price. 3 decimal place accuracy, excess part will be rounded.create_time str Create time. For time zone of futures, please refer to OpenD Configuration.counter_broker_id int Counter broker ID. Only valid for HK stocks.counter_broker_name str Counter broker name. Only valid for HK stocks.status DealStatus Deal status.  
- Transaction list format as follows:
 Example
from futu import *
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.HK, host='127.0.0.1', port=11111, security_firm=SecurityFirm.FUTUSECURITIES)
ret, data = trd_ctx.deal_list_query()
if ret == RET_OK:
    print(data)
    if data.shape[0] > 0:  # If the order fill list is not empty
        print(data['order_id'][0])  # Get the first order ID of the transaction list
        print(data['order_id'].values.tolist())  # Convert to list
else:
    print('deal_list_query error: ', data)
trd_ctx.close()
 2
3
4
5
6
7
8
9
10
11
- Output
 
    code stock_name                        deal_market       deal_id             order_id    qty  price trd_side              create_time  counter_broker_id counter_broker_name status
0  HK.00388      Hong Kong Exchanges and Clearing   HK  5056208452274069375  4665291631090960915  100.0  370.0      BUY  2020-09-17 21:15:59.979                  5                         OK)    
4665291631090960915
['4665291631090960915']
 2
3
4
# Trd_GetOrderFillList.proto
Description
Query the transaction list of the specified trading account of the day.
This feature is only available for live trading and not for paper trading.Parameters
message C2S
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    optional Trd_Common.TrdFilterConditions filterConditions = 2; //Filter conditions
    optional bool refreshCache = 3; //Refresh the data cached by OpenD immediately, it is not filled by default. True gets the latest data from the server to update the cache and returns. If this field is flase or blank, it returns the data cached by OpenD, and will not request the server.
    //Under normal circumstances,  the cached data of OpenD is in sync with server, so there is no need to force an update. It's faster to use the local cached data, and will not cause any pressure on server.
    //If you encounter packet loss, etc., the cached data may be inconsistent with the server. If the user finds that the data is not the latest, they can set this flag to true to update the cache and get latest data.
}
message Request
{
    required C2S c2s = 1;
}
 2
3
4
5
6
7
8
9
10
11
12
13
- For protocol header, refer to TrdHeader
 - For filter condition structure, refer to TrdFilterConditions
 
- Return
 
message S2C
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    repeated Trd_Common.OrderFill orderFillList = 2; //Order list
}
message Response
{
    //The following 3 fields are available in all protocols, and the notes are in InitConnect.proto
	required int32 retType = 1 [default = -400];
	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
Protocol ID
2211
uint GetOrderFillList(TrdGetOrderFillList.Request req);
 virtual void OnReply_GetOrderFillList(FTAPI_Conn client, uint nSerialNo, TrdGetOrderFillList.Response rsp);
Description
Query the transaction list of the specified trading account of the day.
This feature is only available for live trading and not for paper trading.Parameters
message C2S
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    optional Trd_Common.TrdFilterConditions filterConditions = 2; //Filter conditions
    optional bool refreshCache = 3; //Refresh the data cached by OpenD immediately, it is not filled by default. True gets the latest data from the server to update the cache and returns. If this field is flase or blank, it returns the data cached by OpenD, and will not request the server.
    //Under normal circumstances,  the cached data of OpenD is in sync with server, so there is no need to force an update. It's faster to use the local cached data, and will not cause any pressure on server.
    //If you encounter packet loss, etc., the cached data may be inconsistent with the server. If the user finds that the data is not the latest, they can set this flag to true to update the cache and get latest data.
}
message Request
{
    required C2S c2s = 1;
}
 2
3
4
5
6
7
8
9
10
11
12
13
- For protocol header, refer to TrdHeader
 - For filter condition structure, refer to TrdFilterConditions
 
- Return
 
message S2C
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    repeated Trd_Common.OrderFill orderFillList = 2; //Order list
}
message Response
{
    //The following 3 fields are available in all protocols, and the notes are in InitConnect.proto
	required int32 retType = 1 [default = -400];
	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
- Example
 
public class Program: FTSPI_Trd, FTSPI_Conn {
    FTAPI_Trd trd = new FTAPI_Trd();
    public Program() {
        trd.SetClientInfo("csharp", 1); //Set client information
        trd.SetConnCallback(this); //Set connection callback
        trd.SetTrdCallback(this); //Set transaction callback
    }
    public void Start() {
        trd.InitConnect("127.0.0.1", (ushort)11111, false);
    }
    
    public void OnInitConnect(FTAPI_Conn client, long errCode, String desc)
    {
        Console.Write("Trd onInitConnect: ret={0} desc={1} connID={2}\n", errCode, desc, client.GetConnectID());
        if (errCode != 0)
            return;
        TrdCommon.TrdHeader header = TrdCommon.TrdHeader.CreateBuilder()
                .SetAccID(281756457888247915L)
                .SetTrdEnv((int)TrdCommon.TrdEnv.TrdEnv_Real)
                .SetTrdMarket((int)TrdCommon.TrdMarket.TrdMarket_HK)
                .Build();
        TrdGetOrderFillList.C2S c2s = TrdGetOrderFillList.C2S.CreateBuilder()
                .SetHeader(header)
                .Build();
        TrdGetOrderFillList.Request req = TrdGetOrderFillList.Request.CreateBuilder().SetC2S(c2s).Build();
        uint seqNo = trd.GetOrderFillList(req);
        Console.Write("Send TrdGetOrderFillList: {0}\n", seqNo);
    }
    
    public void OnDisconnect(FTAPI_Conn client, long errCode) {
        Console.Write("Trd onDisConnect: {0}\n", errCode);
    }
    public void OnReply_GetOrderFillList(FTAPI_Conn client, uint nSerialNo, TrdGetOrderFillList.Response rsp)
    {
        Console.Write("Reply: TrdGetOrderFillList: {0}\n", nSerialNo);
        Console.Write("accID: {0}\n", rsp.S2C.Header.AccID);
    }
    public static void Main(String[] args) {
        FTAPI.Init();
        Program trd = new Program();
        trd.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
- Output
 
Trd onInitConnect: ret=0 desc= connID=6827860510342510288
Send TrdGetOrderFillList: 3
Reply: TrdGetOrderFillList: 3
accID: 281756457888247915
 2
3
4
int getOrderFillList(TrdGetOrderFillList.Request req);
 void onReply_GetOrderFillList(FTAPI_Conn client, int nSerialNo, TrdGetOrderFillList.Response rsp);
Description
Query the transaction list of the specified trading account of the day.
This feature is only available for live trading and not for paper trading.Parameters
message C2S
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    optional Trd_Common.TrdFilterConditions filterConditions = 2; //Filter conditions
    optional bool refreshCache = 3; //Refresh the data cached by OpenD immediately, it is not filled by default. True gets the latest data from the server to update the cache and returns. If this field is flase or blank, it returns the data cached by OpenD, and will not request the server.
    //Under normal circumstances,  the cached data of OpenD is in sync with server, so there is no need to force an update. It's faster to use the local cached data, and will not cause any pressure on server.
    //If you encounter packet loss, etc., the cached data may be inconsistent with the server. If the user finds that the data is not the latest, they can set this flag to true to update the cache and get latest data.
}
message Request
{
    required C2S c2s = 1;
}
 2
3
4
5
6
7
8
9
10
11
12
13
- For protocol header, refer to TrdHeader
 - For filter condition structure, refer to TrdFilterConditions
 
- Return
 
message S2C
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    repeated Trd_Common.OrderFill orderFillList = 2; //Order list
}
message Response
{
    //The following 3 fields are available in all protocols, and the notes are in InitConnect.proto
	required int32 retType = 1 [default = -400];
	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
- Example
 
public class TrdDemo implements FTSPI_Trd, FTSPI_Conn {
    FTAPI_Conn_Trd trd = new FTAPI_Conn_Trd();
    public TrdDemo() {
        trd.setClientInfo("javaclient", 1); //Set client information
        trd.setConnSpi(this); //Set connection callback
        trd.setTrdSpi(this); //Set transaction callback
    }
    public void start() {
        trd.initConnect("127.0.0.1", (short)11111, false);
    }
    @Override
    public void onInitConnect(FTAPI_Conn client, long errCode, String desc)
    {
        System.out.printf("Trd onInitConnect: ret=%b desc=%s connID=%d\n", errCode, desc, client.getConnectID());
        if (errCode != 0)
            return;
        TrdCommon.TrdHeader header = TrdCommon.TrdHeader.newBuilder()
                .setAccID(281756457888247915L)
                .setTrdEnv(TrdCommon.TrdEnv.TrdEnv_Real_VALUE)
                .setTrdMarket(TrdCommon.TrdMarket.TrdMarket_HK_VALUE)
                .build();
        TrdGetOrderFillList.C2S c2s = TrdGetOrderFillList.C2S.newBuilder()
                .setHeader(header)
                .build();
        TrdGetOrderFillList.Request req = TrdGetOrderFillList.Request.newBuilder().setC2S(c2s).build();
        int seqNo = trd.getOrderFillList(req);
        System.out.printf("Send TrdGetOrderFillList: %d\n", seqNo);
    }
    @Override
    public void onDisconnect(FTAPI_Conn client, long errCode) {
        System.out.printf("Trd onDisConnect: %d\n", errCode);
    }
    @Override
    public void onReply_GetOrderFillList(FTAPI_Conn client, int nSerialNo, TrdGetOrderFillList.Response rsp) {
        if (rsp.getRetType() != 0) {
            System.out.printf("TrdGetOrderFillList failed: %s\n", rsp.getRetMsg());
        }
        else {
            try {
                String json = JsonFormat.printer().print(rsp);
                System.out.printf("Receive TrdGetOrderFillList: %s\n", json);
            } catch (InvalidProtocolBufferException e) {
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args) {
        FTAPI.init();
        TrdDemo trd = new TrdDemo();
        trd.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
67
- Output
 
Send TrdGetOrderFillList: 2
Receive TrdGetOrderFillList: {
  "retType": 0,
  "retMsg": "",
  "errCode": 0,
  "s2c": {
    "header": {
      "trdEnv": 1,
      "accID": "281756457888247915",
      "trdMarket": 2
    },
    "orderFillList": [{
      "trdSide": 1,
      "fillID": "449150869556176742",
      "fillIDEx": "20210330_15680495_SQSWWgSYCStLVb7BDmx7kgAARgy31Nc1_SQSWWgSYCStLVb7BDmx7kgAARgy31Nc1.4",
      "orderID": "6664320708369556828",
      "orderIDEx": "20210330_15680495_SQSWWgSYCStLVb7BDmx7kgAARgy31Nc1",
      "code": "FUTU",
      "name": "Futu Holdings Limited",
      "qty": 34.0,
      "price": 127.64,
      "createTime": "2021-03-30 09:34:24.019",
      "secMarket": 2,
      "createTimestamp": 1.617111264019109E9,
      "updateTimestamp": 1.617111264019109E9,
      "status": 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
Futu::u32_t GetOrderFillList(const Trd_GetOrderFillList::Request &stReq);
 virtual void OnReply_GetOrderFillList(Futu::u32_t nSerialNo, const Trd_GetOrderFillList::Response &stRsp) = 0;
Description
Query the transaction list of the specified trading account of the day.
This feature is only available for live trading and not for paper trading.Parameters
message C2S
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    optional Trd_Common.TrdFilterConditions filterConditions = 2; //Filter conditions
    optional bool refreshCache = 3; //Refresh the data cached by OpenD immediately, it is not filled by default. True gets the latest data from the server to update the cache and returns. If this field is flase or blank, it returns the data cached by OpenD, and will not request the server.
    //Under normal circumstances,  the cached data of OpenD is in sync with server, so there is no need to force an update. It's faster to use the local cached data, and will not cause any pressure on server.
    //If you encounter packet loss, etc., the cached data may be inconsistent with the server. If the user finds that the data is not the latest, they can set this flag to true to update the cache and get latest data.
}
message Request
{
    required C2S c2s = 1;
}
 2
3
4
5
6
7
8
9
10
11
12
13
- For protocol header, refer to TrdHeader
 - For filter condition structure, refer to TrdFilterConditions
 
- Return
 
message S2C
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    repeated Trd_Common.OrderFill orderFillList = 2; //Order list
}
message Response
{
    //The following 3 fields are available in all protocols, and the notes are in InitConnect.proto
	required int32 retType = 1 [default = -400];
	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
- Example
 
class Program : public FTSPI_Qot, public FTSPI_Trd, public FTSPI_Conn
{
public:
	Program() {
		m_pTrdApi = FTAPI::CreateTrdApi();
		m_pTrdApi->RegisterTrdSpi(this);
		m_pTrdApi->RegisterConnSpi(this);
	}
	~Program() {
		if (m_pTrdApi != nullptr)
		{
			m_pTrdApi->UnregisterTrdSpi();
			m_pTrdApi->UnregisterConnSpi();
			FTAPI::ReleaseTrdApi(m_pTrdApi);
			m_pTrdApi = nullptr;
		}
	}
	void Start() {
		m_pTrdApi->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
		Trd_GetOrderFillList::Request req;
		Trd_GetOrderFillList::C2S *c2s = req.mutable_c2s();
		Trd_Common::TrdHeader *header = c2s->mutable_header();
		header->set_accid(281756456003951537L);
		header->set_trdenv(1);
		header->set_trdmarket(1);
        m_GetOrderFillListSerialNo = m_pTrdApi->GetOrderFillList(req);
        cout << "Request GetOrderFillList SerialNo: " << m_GetOrderFillListSerialNo << endl;
	}
	virtual void OnReply_GetOrderFillList(Futu::u32_t nSerialNo, const Trd_GetOrderFillList::Response &stRsp){
        if(nSerialNo == m_GetOrderFillListSerialNo)
        {
            cout << "OnReply_GetOrderFillList 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_Trd *m_pTrdApi;
    Futu::u32_t m_GetOrderFillListSerialNo;
};
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
70
71
72
- Output
 
connect
Request GetOrderFillList SerialNo: 4
OnReply_GetOrderFillList SerialNo: 4
{
 "retType": 0,
 "retMsg": "",
 "errCode": 0,
 "s2c": {
  "header": {
   "trdEnv": 1,
   "accID": "281756456003951537",
   "trdMarket": 1
  }
 }
}
 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
GetOrderFillList(req);
Description
Query the transaction list of the specified trading account of the day.
This feature is only available for live trading and not for paper trading.Parameters
message C2S
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    optional Trd_Common.TrdFilterConditions filterConditions = 2; //Filter conditions
    optional bool refreshCache = 3; //Refresh the data cached by OpenD immediately, it is not filled by default. True gets the latest data from the server to update the cache and returns. If this field is flase or blank, it returns the data cached by OpenD, and will not request the server.
    //Under normal circumstances,  the cached data of OpenD is in sync with server, so there is no need to force an update. It's faster to use the local cached data, and will not cause any pressure on server.
    //If you encounter packet loss, etc., the cached data may be inconsistent with the server. If the user finds that the data is not the latest, they can set this flag to true to update the cache and get latest data.
}
message Request
{
    required C2S c2s = 1;
}
 2
3
4
5
6
7
8
9
10
11
12
13
- For protocol header, refer to TrdHeader
 - For filter condition structure, refer to TrdFilterConditions
 
- Return
 
message S2C
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    repeated Trd_Common.OrderFill orderFillList = 2; //Order list
}
message Response
{
    //The following 3 fields are available in all protocols, and the notes are in InitConnect.proto
	required int32 retType = 1 [default = -400];
	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
- Example
 
import ftWebsocket from "futu-api";
import { ftCmdID } from "futu-api";
import { Common, Qot_Common, Trd_Common } from "futu-api/proto";
import beautify from "js-beautify";
function TrdGetOrderFillList(){
    const { RetType } = Common
    const { TrdEnv, TrdMarket } = Trd_Common
    let [addr, port, enable_ssl, key] = ["127.0.0.1", 33333, false, 'ec16fde057a2e7a0'];
    let websocket = new ftWebsocket();
    websocket.onlogin = (ret, msg)=>{
        if (ret) {  
            websocket.GetAccList({
                c2s: {
                    userID: 0,
                },
            }).then((res) => {
                let { retType,s2c: { accList } } = res
                if(retType == RetType.RetType_Succeed){
                    let acc = accList.filter((item)=>{ 
                        return item.trdEnv != TrdEnv.TrdEnv_Simulate && item.trdMarketAuthList.some((auth)=>{ return auth == TrdMarket.TrdMarket_HK})
                    })[0]; // The sample takes the first HK live trading environment account
                    const req = {
                        c2s: {
                            header: {
                                trdEnv: acc.trdEnv,
                                accID: acc.accID,
                                trdMarket: TrdMarket.TrdMarket_HK,
                            },
                        },
                    };
                    websocket.GetOrderFillList(req)
                    .then((res) => {
                        let { errCode, retMsg, retType,s2c } = res
                        console.log("GetOrderFillList: 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);
                    });
                }
            })
            .catch((error) => {
                console.log("GetAccList 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
- Output
 
GetOrderFillList: errCode 0, retMsg , retType 0
{
  "header": {
    "trdEnv": 1,
    "accID": "281756455988249902",
    "trdMarket": 1
  },
  "orderFillList": [{
    "trdSide": 1,
    "fillID": "2611798069690910040",
    "fillIDEx": "20210913_5915950_OD|rILqM3WaKl2rXYpRYuigcJmBKtRld_OD|rILqM3WaKl2rXYpRYuigcJmBKtRld.2",
    "orderID": "9128832000130556480",
    "orderIDEx": "20210913_5915950_OD|rILqM3WaKl2rXYpRYuigcJmBKtRld",
    "code": "00700",
    "name": "Tencent",
    "qty": 100,
    "price": 480,
    "createTime": "2021-09-13 16:40:19.183",
    "counterBrokerID": 5,
    "counterBrokerName": "",
    "secMarket": 1,
    "createTimestamp": 1631522419.18269,
    "updateTimestamp": 1631522419.005,
    "status": 0
  }, {
    "trdSide": 1,
    "fillID": "932511865781776209",
    "fillIDEx": "20210913_5915950_OD|pM+9NqXZAaxnZYpScrsjT4zHWtlk1_OD|pM+9NqXZAaxnZYpScrsjT4zHWtlk1.2",
    "orderID": "4883217202603317248",
    "orderIDEx": "20210913_5915950_OD|pM+9NqXZAaxnZYpScrsjT4zHWtlk1",
    "code": "00700",
    "name": "Tencent",
    "qty": 100,
    "price": 480,
    "createTime": "2021-09-13 16:45:00.606",
    "counterBrokerID": 5,
    "counterBrokerName": "",
    "secMarket": 1,
    "createTimestamp": 1631522700.605828,
    "updateTimestamp": 1631522700.531,
    "status": 0
  }]
}
stop
 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
Interface Limitations
- A maximum of 10 requests per 30 seconds under a single account ID (acc_id).
 - It will be restricted by the frequency limit for this interface only when refresh_cache is True
 
Tips
- Today's deals are arranged in chronological order: earlier deals return first, followed by later deals.
 
- Python
 - Proto
 - C#
 - Java
 - C++
 - JavaScript
 
deal_list_query(code="", deal_market= TrdMarket.NONE, trd_env=TrdEnv.REAL, acc_id=0, acc_index=0, refresh_cache=False)
Description
Query today's deal list of a specific trading account.
This feature is only available for live trading and not for paper trading.Parameters
Parameter Type Description code str Security symbol. Only return orders whose related security symbols correspond to these codes.
If this parameter is not passed, return all.deal_market TrdMarket Filter deals by security market. - Return today's deals for the specified market.
 - If this parameter is not passed or the default NONE is used, return today's deals for all markets.
 
trd_env TrdEnv Trading environment. acc_id int Trading account ID. - When acc_id is 0, the account specified by acc_index is chosen.
 - When acc_id is set the ID number (not 0), the account specified by acc_id is chosen.
 - Using acc_id to query and trade is strongly recommended, acc_index will change when adding/closing an account, result in the account you specify is inconsistent with the actual trading account.
 
acc_index int The account number in the trading account list. The default is 0, which means the first trading account.refresh_cache bool Whether to refresh the cache. - True: Re-request data from the moomoo server immediately, without using the OpenD cache. At this time, it will be restricted by the interface frequency limit.
 - False: Use OpenD's cache (the cache needs to be refreshed if it is not updated in rare circumstances).
 
Return
Field Type Description ret RET_CODE Interface result. data pd.DataFrame If ret == RET_OK, transaction list is returned. str If ret != RET_OK, error description is returned. - Transaction list format as follows:
Field Type Description trd_side TrdSide Trading direction. deal_id str Deal number. order_id str Order ID. code str Security code. stock_name str Security name. deal_market TrdMarket Deal market. qty float Quantity of shares bought/sold on this fill. Option futures unit is "Contract".price float Fill price. 3 decimal place accuracy, excess part will be rounded.create_time str Create time. For time zone of futures, please refer to OpenD Configuration.counter_broker_id int Counter broker ID. Only valid for HK stocks.counter_broker_name str Counter broker name. Only valid for HK stocks.status DealStatus Deal status.  
- Transaction list format as follows:
 Example
from moomoo import *
trd_ctx = OpenSecTradeContext(filter_trdmarket=TrdMarket.HK, host='127.0.0.1', port=11111, security_firm=SecurityFirm.FUTUSECURITIES)
ret, data = trd_ctx.deal_list_query()
if ret == RET_OK:
    print(data)
    if data.shape[0] > 0:  # If the order fill list is not empty
        print(data['order_id'][0])  # Get the first order ID of the transaction list
        print(data['order_id'].values.tolist())  # Convert to list
else:
    print('deal_list_query error: ', data)
trd_ctx.close()
 2
3
4
5
6
7
8
9
10
11
- Output
 
    code stock_name                            deal_market     deal_id             order_id    qty  price trd_side              create_time  counter_broker_id counter_broker_name status
0  HK.00388      Hong Kong Exchanges and Clearing    HK  5056208452274069375  4665291631090960915  100.0  370.0      BUY  2020-09-17 21:15:59.979                  5                         OK)    
4665291631090960915
['4665291631090960915']
 2
3
4
# Trd_GetOrderFillList.proto
Description
Query the transaction list of the specified trading account of the day.
This feature is only available for live trading and not for paper trading.Parameters
message C2S
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    optional Trd_Common.TrdFilterConditions filterConditions = 2; //Filter conditions
    optional bool refreshCache = 3; //Refresh the data cached by OpenD immediately, it is not filled by default. True gets the latest data from the server to update the cache and returns. If this field is flase or blank, it returns the data cached by OpenD, and will not request the server.
    //Under normal circumstances,  the cached data of OpenD is in sync with server, so there is no need to force an update. It's faster to use the local cached data, and will not cause any pressure on server.
    //If you encounter packet loss, etc., the cached data may be inconsistent with the server. If the user finds that the data is not the latest, they can set this flag to true to update the cache and get latest data.
}
message Request
{
    required C2S c2s = 1;
}
 2
3
4
5
6
7
8
9
10
11
12
13
- For protocol header, refer to TrdHeader
 - For filter condition structure, refer to TrdFilterConditions
 
- Return
 
message S2C
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    repeated Trd_Common.OrderFill orderFillList = 2; //Order list
}
message Response
{
    //The following 3 fields are available in all protocols, and the notes are in InitConnect.proto
	required int32 retType = 1 [default = -400];
	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
Protocol ID
2211
uint GetOrderFillList(TrdGetOrderFillList.Request req);
 virtual void OnReply_GetOrderFillList(MMAPI_Conn client, uint nSerialNo, TrdGetOrderFillList.Response rsp);
Description
Query the transaction list of the specified trading account of the day.
This feature is only available for live trading and not for paper trading.Parameters
message C2S
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    optional Trd_Common.TrdFilterConditions filterConditions = 2; //Filter conditions
    optional bool refreshCache = 3; //Refresh the data cached by OpenD immediately, it is not filled by default. True gets the latest data from the server to update the cache and returns. If this field is flase or blank, it returns the data cached by OpenD, and will not request the server.
    //Under normal circumstances,  the cached data of OpenD is in sync with server, so there is no need to force an update. It's faster to use the local cached data, and will not cause any pressure on server.
    //If you encounter packet loss, etc., the cached data may be inconsistent with the server. If the user finds that the data is not the latest, they can set this flag to true to update the cache and get latest data.
}
message Request
{
    required C2S c2s = 1;
}
 2
3
4
5
6
7
8
9
10
11
12
13
- For protocol header, refer to TrdHeader
 - For filter condition structure, refer to TrdFilterConditions
 
- Return
 
message S2C
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    repeated Trd_Common.OrderFill orderFillList = 2; //Order list
}
message Response
{
    //The following 3 fields are available in all protocols, and the notes are in InitConnect.proto
	required int32 retType = 1 [default = -400];
	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
- Example
 
public class Program: MMSPI_Trd, MMSPI_Conn {
    MMAPI_Trd trd = new MMAPI_Trd();
    public Program() {
        trd.SetClientInfo("csharp", 1); //Set client information
        trd.SetConnCallback(this); //Set connection callback
        trd.SetTrdCallback(this); //Set transaction callback
    }
    public void Start() {
        trd.InitConnect("127.0.0.1", (ushort)11111, false);
    }
    
    public void OnInitConnect(MMAPI_Conn client, long errCode, String desc)
    {
        Console.Write("Trd onInitConnect: ret={0} desc={1} connID={2}\n", errCode, desc, client.GetConnectID());
        if (errCode != 0)
            return;
        TrdCommon.TrdHeader header = TrdCommon.TrdHeader.CreateBuilder()
                .SetAccID(281756457888247915L)
                .SetTrdEnv((int)TrdCommon.TrdEnv.TrdEnv_Real)
                .SetTrdMarket((int)TrdCommon.TrdMarket.TrdMarket_HK)
                .Build();
        TrdGetOrderFillList.C2S c2s = TrdGetOrderFillList.C2S.CreateBuilder()
                .SetHeader(header)
                .Build();
        TrdGetOrderFillList.Request req = TrdGetOrderFillList.Request.CreateBuilder().SetC2S(c2s).Build();
        uint seqNo = trd.GetOrderFillList(req);
        Console.Write("Send TrdGetOrderFillList: {0}\n", seqNo);
    }
    
    public void OnDisconnect(MMAPI_Conn client, long errCode) {
        Console.Write("Trd onDisConnect: {0}\n", errCode);
    }
    public void OnReply_GetOrderFillList(MMAPI_Conn client, uint nSerialNo, TrdGetOrderFillList.Response rsp)
    {
        Console.Write("Reply: TrdGetOrderFillList: {0}\n", nSerialNo);
        Console.Write("accID: {0}\n", rsp.S2C.Header.AccID);
    }
    public static void Main(String[] args) {
        MMAPI.Init();
        Program trd = new Program();
        trd.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
- Output
 
Trd onInitConnect: ret=0 desc= connID=6827860510342510288
Send TrdGetOrderFillList: 3
Reply: TrdGetOrderFillList: 3
accID: 281756457888247915
 2
3
4
int getOrderFillList(TrdGetOrderFillList.Request req);
 void onReply_GetOrderFillList(MMAPI_Conn client, int nSerialNo, TrdGetOrderFillList.Response rsp);
Description
Query the transaction list of the specified trading account of the day.
This feature is only available for live trading and not for paper trading.Parameters
message C2S
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    optional Trd_Common.TrdFilterConditions filterConditions = 2; //Filter conditions
    optional bool refreshCache = 3; //Refresh the data cached by OpenD immediately, it is not filled by default. True gets the latest data from the server to update the cache and returns. If this field is flase or blank, it returns the data cached by OpenD, and will not request the server.
    //Under normal circumstances,  the cached data of OpenD is in sync with server, so there is no need to force an update. It's faster to use the local cached data, and will not cause any pressure on server.
    //If you encounter packet loss, etc., the cached data may be inconsistent with the server. If the user finds that the data is not the latest, they can set this flag to true to update the cache and get latest data.
}
message Request
{
    required C2S c2s = 1;
}
 2
3
4
5
6
7
8
9
10
11
12
13
- For protocol header, refer to TrdHeader
 - For filter condition structure, refer to TrdFilterConditions
 
- Return
 
message S2C
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    repeated Trd_Common.OrderFill orderFillList = 2; //Order list
}
message Response
{
    //The following 3 fields are available in all protocols, and the notes are in InitConnect.proto
	required int32 retType = 1 [default = -400];
	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
- Example
 
public class TrdDemo implements MMSPI_Trd, MMSPI_Conn {
    MMAPI_Conn_Trd trd = new MMAPI_Conn_Trd();
    public TrdDemo() {
        trd.setClientInfo("javaclient", 1); //Set client information
        trd.setConnSpi(this); //Set connection callback
        trd.setTrdSpi(this); //Set transaction callback
    }
    public void start() {
        trd.initConnect("127.0.0.1", (short)11111, false);
    }
    @Override
    public void onInitConnect(MMAPI_Conn client, long errCode, String desc)
    {
        System.out.printf("Trd onInitConnect: ret=%b desc=%s connID=%d\n", errCode, desc, client.getConnectID());
        if (errCode != 0)
            return;
        TrdCommon.TrdHeader header = TrdCommon.TrdHeader.newBuilder()
                .setAccID(281756457888247915L)
                .setTrdEnv(TrdCommon.TrdEnv.TrdEnv_Real_VALUE)
                .setTrdMarket(TrdCommon.TrdMarket.TrdMarket_HK_VALUE)
                .build();
        TrdGetOrderFillList.C2S c2s = TrdGetOrderFillList.C2S.newBuilder()
                .setHeader(header)
                .build();
        TrdGetOrderFillList.Request req = TrdGetOrderFillList.Request.newBuilder().setC2S(c2s).build();
        int seqNo = trd.getOrderFillList(req);
        System.out.printf("Send TrdGetOrderFillList: %d\n", seqNo);
    }
    @Override
    public void onDisconnect(MMAPI_Conn client, long errCode) {
        System.out.printf("Trd onDisConnect: %d\n", errCode);
    }
    @Override
    public void onReply_GetOrderFillList(MMAPI_Conn client, int nSerialNo, TrdGetOrderFillList.Response rsp) {
        if (rsp.getRetType() != 0) {
            System.out.printf("TrdGetOrderFillList failed: %s\n", rsp.getRetMsg());
        }
        else {
            try {
                String json = JsonFormat.printer().print(rsp);
                System.out.printf("Receive TrdGetOrderFillList: %s\n", json);
            } catch (InvalidProtocolBufferException e) {
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args) {
        MMAPI.init();
        TrdDemo trd = new TrdDemo();
        trd.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
67
- Output
 
Send TrdGetOrderFillList: 2
Receive TrdGetOrderFillList: {
  "retType": 0,
  "retMsg": "",
  "errCode": 0,
  "s2c": {
    "header": {
      "trdEnv": 1,
      "accID": "281756457888247915",
      "trdMarket": 2
    },
    "orderFillList": [{
      "trdSide": 1,
      "fillID": "449150869556176742",
      "fillIDEx": "20210330_15680495_SQSWWgSYCStLVb7BDmx7kgAARgy31Nc1_SQSWWgSYCStLVb7BDmx7kgAARgy31Nc1.4",
      "orderID": "6664320708369556828",
      "orderIDEx": "20210330_15680495_SQSWWgSYCStLVb7BDmx7kgAARgy31Nc1",
      "code": "FUTU",
      "name": "Futu Holdings Limited",
      "qty": 34.0,
      "price": 127.64,
      "createTime": "2021-03-30 09:34:24.019",
      "secMarket": 2,
      "createTimestamp": 1.617111264019109E9,
      "updateTimestamp": 1.617111264019109E9,
      "status": 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
moomoo::u32_t GetOrderFillList(const Trd_GetOrderFillList::Request &stReq);
 virtual void OnReply_GetOrderFillList(moomoo::u32_t nSerialNo, const Trd_GetOrderFillList::Response &stRsp) = 0;
Description
Query the transaction list of the specified trading account of the day.
This feature is only available for live trading and not for paper trading.Parameters
message C2S
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    optional Trd_Common.TrdFilterConditions filterConditions = 2; //Filter conditions
    optional bool refreshCache = 3; //Refresh the data cached by OpenD immediately, it is not filled by default. True gets the latest data from the server to update the cache and returns. If this field is flase or blank, it returns the data cached by OpenD, and will not request the server.
    //Under normal circumstances,  the cached data of OpenD is in sync with server, so there is no need to force an update. It's faster to use the local cached data, and will not cause any pressure on server.
    //If you encounter packet loss, etc., the cached data may be inconsistent with the server. If the user finds that the data is not the latest, they can set this flag to true to update the cache and get latest data.
}
message Request
{
    required C2S c2s = 1;
}
 2
3
4
5
6
7
8
9
10
11
12
13
- For protocol header, refer to TrdHeader
 - For filter condition structure, refer to TrdFilterConditions
 
- Return
 
message S2C
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    repeated Trd_Common.OrderFill orderFillList = 2; //Order list
}
message Response
{
    //The following 3 fields are available in all protocols, and the notes are in InitConnect.proto
	required int32 retType = 1 [default = -400];
	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
- Example
 
class Program : public MMSPI_Qot, public MMSPI_Trd, public MMSPI_Conn
{
public:
	Program() {
		m_pTrdApi = MMAPI::CreateTrdApi();
		m_pTrdApi->RegisterTrdSpi(this);
		m_pTrdApi->RegisterConnSpi(this);
	}
	~Program() {
		if (m_pTrdApi != nullptr)
		{
			m_pTrdApi->UnregisterTrdSpi();
			m_pTrdApi->UnregisterConnSpi();
			MMAPI::ReleaseTrdApi(m_pTrdApi);
			m_pTrdApi = nullptr;
		}
	}
	void Start() {
		m_pTrdApi->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
		Trd_GetOrderFillList::Request req;
		Trd_GetOrderFillList::C2S *c2s = req.mutable_c2s();
		Trd_Common::TrdHeader *header = c2s->mutable_header();
		header->set_accid(281756456003951537L);
		header->set_trdenv(1);
		header->set_trdmarket(1);
        m_GetOrderFillListSerialNo = m_pTrdApi->GetOrderFillList(req);
        cout << "Request GetOrderFillList SerialNo: " << m_GetOrderFillListSerialNo << endl;
	}
	virtual void OnReply_GetOrderFillList(moomoo::u32_t nSerialNo, const Trd_GetOrderFillList::Response &stRsp){
        if(nSerialNo == m_GetOrderFillListSerialNo)
        {
            cout << "OnReply_GetOrderFillList 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_Trd *m_pTrdApi;
    moomoo::u32_t m_GetOrderFillListSerialNo;
};
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
70
71
72
- Output
 
connect
Request GetOrderFillList SerialNo: 4
OnReply_GetOrderFillList SerialNo: 4
{
 "retType": 0,
 "retMsg": "",
 "errCode": 0,
 "s2c": {
  "header": {
   "trdEnv": 1,
   "accID": "281756456003951537",
   "trdMarket": 1
  }
 }
}
 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
GetOrderFillList(req);
Description
Query the transaction list of the specified trading account of the day.
This feature is only available for live trading and not for paper trading.Parameters
message C2S
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    optional Trd_Common.TrdFilterConditions filterConditions = 2; //Filter conditions
    optional bool refreshCache = 3; //Refresh the data cached by OpenD immediately, it is not filled by default. True gets the latest data from the server to update the cache and returns. If this field is flase or blank, it returns the data cached by OpenD, and will not request the server.
    //Under normal circumstances,  the cached data of OpenD is in sync with server, so there is no need to force an update. It's faster to use the local cached data, and will not cause any pressure on server.
    //If you encounter packet loss, etc., the cached data may be inconsistent with the server. If the user finds that the data is not the latest, they can set this flag to true to update the cache and get latest data.
}
message Request
{
    required C2S c2s = 1;
}
 2
3
4
5
6
7
8
9
10
11
12
13
- For protocol header, refer to TrdHeader
 - For filter condition structure, refer to TrdFilterConditions
 
- Return
 
message S2C
{
    required Trd_Common.TrdHeader header = 1; //Transaction common header
    repeated Trd_Common.OrderFill orderFillList = 2; //Order list
}
message Response
{
    //The following 3 fields are available in all protocols, and the notes are in InitConnect.proto
	required int32 retType = 1 [default = -400];
	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
- Example
 
import mmWebsocket from "moomoo-api";
import { mmCmdID } from "moomoo-api";
import { Common, Qot_Common, Trd_Common } from "moomoo-api/proto";
import beautify from "js-beautify";
function TrdGetOrderFillList(){
    const { RetType } = Common
    const { TrdEnv, TrdMarket } = Trd_Common
    let [addr, port, enable_ssl, key] = ["127.0.0.1", 33333, false, 'ec16fde057a2e7a0'];
    let websocket = new mmWebsocket();
    websocket.onlogin = (ret, msg)=>{
        if (ret) {  
            websocket.GetAccList({
                c2s: {
                    userID: 0,
                },
            }).then((res) => {
                let { retType,s2c: { accList } } = res
                if(retType == RetType.RetType_Succeed){
                    let acc = accList.filter((item)=>{ 
                        return item.trdEnv != TrdEnv.TrdEnv_Simulate && item.trdMarketAuthList.some((auth)=>{ return auth == TrdMarket.TrdMarket_HK})
                    })[0]; // The sample takes the first HK live trading environment account
                    const req = {
                        c2s: {
                            header: {
                                trdEnv: acc.trdEnv,
                                accID: acc.accID,
                                trdMarket: TrdMarket.TrdMarket_HK,
                            },
                        },
                    };
                    websocket.GetOrderFillList(req)
                    .then((res) => {
                        let { errCode, retMsg, retType,s2c } = res
                        console.log("GetOrderFillList: 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);
                    });
                }
            })
            .catch((error) => {
                console.log("GetAccList 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
- Output
 
GetOrderFillList: errCode 0, retMsg , retType 0
{
  "header": {
    "trdEnv": 1,
    "accID": "281756455988249902",
    "trdMarket": 1
  },
  "orderFillList": [{
    "trdSide": 1,
    "fillID": "2611798069690910040",
    "fillIDEx": "20210913_5915950_OD|rILqM3WaKl2rXYpRYuigcJmBKtRld_OD|rILqM3WaKl2rXYpRYuigcJmBKtRld.2",
    "orderID": "9128832000130556480",
    "orderIDEx": "20210913_5915950_OD|rILqM3WaKl2rXYpRYuigcJmBKtRld",
    "code": "00700",
    "name": "Tencent",
    "qty": 100,
    "price": 480,
    "createTime": "2021-09-13 16:40:19.183",
    "counterBrokerID": 5,
    "counterBrokerName": "",
    "secMarket": 1,
    "createTimestamp": 1631522419.18269,
    "updateTimestamp": 1631522419.005,
    "status": 0
  }, {
    "trdSide": 1,
    "fillID": "932511865781776209",
    "fillIDEx": "20210913_5915950_OD|pM+9NqXZAaxnZYpScrsjT4zHWtlk1_OD|pM+9NqXZAaxnZYpScrsjT4zHWtlk1.2",
    "orderID": "4883217202603317248",
    "orderIDEx": "20210913_5915950_OD|pM+9NqXZAaxnZYpScrsjT4zHWtlk1",
    "code": "00700",
    "name": "Tencent",
    "qty": 100,
    "price": 480,
    "createTime": "2021-09-13 16:45:00.606",
    "counterBrokerID": 5,
    "counterBrokerName": "",
    "secMarket": 1,
    "createTimestamp": 1631522700.605828,
    "updateTimestamp": 1631522700.531,
    "status": 0
  }]
}
stop
 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
Interface Limitations
- A maximum of 10 requests per 30 seconds under a single account ID (acc_id).
 - It will be restricted by the frequency limit for this interface only when refresh_cache is True
 
Tips
- Today's deals are arranged in chronological order: earlier deals return first, followed by later deals.