syntax = "proto2";
package Qot_GetInstitutionHoldingList;
option java_package = "com.futu.openapi.pb";
option go_package = "github.com/futuopen/ftapi4go/pb/qotgetinstitutionholdinglist";

import "Qot_Common.proto";

// 持仓变动类型
enum HoldingChangeType {
    HoldingChangeType_Unknown = 0;
    HoldingChangeType_New = 1;          // 建仓
    HoldingChangeType_SoldOut = 2;      // 清仓
    HoldingChangeType_Increase = 3;     // 增仓
    HoldingChangeType_Decrease = 4;     // 减仓
}

// 排序字段
enum SortField {
    SortField_Unknown = 0;              // 默认(持仓市值)
    SortField_HoldingValue = 1;         // 持仓市值
    SortField_HoldingPct = 2;           // 持股比例(占股票总市值)
    SortField_LastHoldingPct = 3;       // 上期持股比例
    SortField_ChangeShares = 4;         // 变动股数
    SortField_ChangePct = 5;            // 变动比例
    SortField_PortfolioPct = 6;         // 占机构总仓位比例
    SortField_Industry = 7;             // 行业
    SortField_HoldingDate = 8;          // 持仓时间
}

// 排序方向
enum SortDir {
    SortDir_Descending = 0;     // 降序(默认)
    SortDir_Ascending = 1;      // 升序
}

message C2S {
    required int32 market = 1;              // Qot_Common.QotMarket
    required int32 institutionId = 2;       // 机构ID
    optional int32 changeType = 3;          // HoldingChangeType, 按变动类型筛选(不传=全部)
    optional int32 sortField = 4;           // SortField
    optional int32 sortDir = 5;             // SortDir
    optional int32 count = 6;               // 条数 [1,200], 默认20
    optional string page = 7;               // 翻页游标, 首次不传
    optional string keyword = 8;            // 搜索关键词(股票名/代码)
}

// 持股列表数据项
message HoldingListItem {
    required Qot_Common.Security security = 1;  // 股票
    optional string name = 2;                    // 名称
    optional string industryName = 3;            // 所属行业
    optional double holdingValue = 4;            // 持股市值
    optional double holdingPct = 5;              // 持股比例-占股票总市值(%)
    optional double lastHoldingPct = 6;          // 上期持股比例(%)
    optional int64 changeShares = 7;             // 变动股数
    optional double portfolioPct = 8;            // 占机构总仓位比例(%)
    optional double changePct = 9;               // 变动比例(%)
    optional string holdingDate = 10;            // 持仓时间(yyyy-MM-dd)
    optional string source = 11;                 // 披露来源
}

message S2C {
    repeated HoldingListItem dataList = 1;      // 数据列表
    optional int32 allCount = 2;                // 总数
    optional string nextPage = 3;               // 下一页游标, 空=无更多
    optional string currency = 4;               // 币种
}

message Request {
    required C2S c2s = 1;
}

message Response {
    required int32 retType = 1 [default = -400]; // RetType, 返回结果
    optional string retMsg = 2;
    optional int32 errCode = 3;
    optional S2C s2c = 4;
}
