Files
QTradeProgram/include/Proto/Trd_Common.proto

444 lines
20 KiB
Protocol Buffer
Raw Permalink Normal View History

2025-08-15 15:57:31 +08:00
syntax = "proto2";
package Trd_Common;
option java_package = "com.futu.openapi.pb";
option go_package = "github.com/futuopen/ftapi4go/pb/trdcommon";
import "Common.proto";
//交易环境
enum TrdEnv
{
TrdEnv_Simulate = 0; //仿真环境(模拟环境)
TrdEnv_Real = 1; //真实环境
}
//交易品类
enum TrdCategory
{
TrdCategory_Unknown = 0; //未知品类
TrdCategory_Security = 1; //证券
TrdCategory_Future = 2; //期货
}
//交易市场,是大的市场,不是具体品种
enum TrdMarket
{
TrdMarket_Unknown = 0; //未知市场
TrdMarket_HK = 1; //香港市场
TrdMarket_US = 2; //美国市场
TrdMarket_CN = 3; //大陆市场
TrdMarket_HKCC = 4; //香港A股通市场
TrdMarket_Futures = 5; //期货市场
TrdMarket_SG = 6; //期货市场
TrdMarket_AU = 8; //澳洲市场
TrdMarket_Futures_Simulate_HK = 10; // 模拟交易期货市场
TrdMarket_Futures_Simulate_US = 11;
TrdMarket_Futures_Simulate_SG = 12;
TrdMarket_Futures_Simulate_JP = 13;
TrdMarket_JP = 15;
TrdMarket_MY = 111;
TrdMarket_CA = 112;
TrdMarket_HK_Fund = 113; //香港基金市场
TrdMarket_US_Fund = 123; //美国基金市场
}
//可交易证券所属市场目前主要是区分A股的沪市和深市香港和美国暂不需要细分
enum TrdSecMarket
{
TrdSecMarket_Unknown = 0; //未知市场
TrdSecMarket_HK = 1; //香港市场(股票、窝轮、牛熊、期权、期货等)
TrdSecMarket_US = 2; //美国市场(股票、期权、期货等)
TrdSecMarket_CN_SH = 31; //沪股市场(股票)
TrdSecMarket_CN_SZ = 32; //深股市场(股票)
TrdSecMarket_SG = 41; //新加坡市场(期货)
TrdSecMarket_JP = 51; //日本市场(期货)
TrdSecMarket_AU = 61; // 澳大利亚
TrdSecMarket_MY = 71; // 马来西亚
TrdSecMarket_CA = 81; // 加拿大
TrdSecMarket_FX = 91; // 外汇
}
//交易方向
enum TrdSide
{
//客户端下单只传Buy或Sell即可SellShort是美股订单时服务器返回有此方向BuyBack目前不存在但也不排除服务器会传
TrdSide_Unknown = 0; //未知方向
TrdSide_Buy = 1; //买入
TrdSide_Sell = 2; //卖出
TrdSide_SellShort = 3; //卖空
TrdSide_BuyBack = 4; //买回
}
//订单类型
enum OrderType
{
OrderType_Unknown = 0; //未知类型
OrderType_Normal = 1; //普通订单(港股的增强限价单、港股期权的限价单A股限价委托、美股的限价单港股期货的限价单CME期货的限价单)。目前港股期权只能指定此订单类型。
OrderType_Market = 2; //市价订单(目前支持美股、港股正股、涡轮、牛熊、界内证)
OrderType_AbsoluteLimit = 5; //绝对限价订单(目前仅港股)只有价格完全匹配才成交否则下单失败比如你下价格为5元的买单卖单价格必须也要是5元才能成交低于5元也不能成交下单失败。卖出同理
OrderType_Auction = 6; //竞价订单(目前仅港股)仅港股早盘竞价和收盘竞价有效A股的早盘竞价订单类型不变还是OrderType_Normal
OrderType_AuctionLimit = 7; //竞价限价订单(目前仅港股),仅早盘竞价和收盘竞价有效,参与竞价,且要求满足指定价格才会成交
OrderType_SpecialLimit = 8; //特别限价订单(目前仅港股),成交规则同增强限价订单,且部分成交后,交易所自动撤销订单
OrderType_SpecialLimit_All = 9; //特别限价且要求全部成交订单(目前仅港股),要么全部成交,要么自动撤单
OrderType_Stop = 10; // 止损市价单
OrderType_StopLimit = 11; // 止损限价单
OrderType_MarketifTouched = 12; // 触及市价单(止盈)
OrderType_LimitifTouched = 13; // 触及限价单(止盈)
OrderType_TrailingStop = 14; // 跟踪止损市价单
OrderType_TrailingStopLimit = 15; // 跟踪止损限价单
OrderType_TWAP_MARKET = 16; // TWAP 市价单
OrderType_TWAP_LIMIT = 17; // TWAP 限订单
OrderType_VWAP_MARKET = 18; // VWAP 市价单
OrderType_VWAP_LIMIT = 19; // VWAP 限订单
}
//跟踪类型
enum TrailType
{
TrailType_Unknown = 0; //未知类型
TrailType_Ratio = 1; //比例
TrailType_Amount = 2; //金额
}
//订单状态
enum OrderStatus
{
OrderStatus_Unsubmitted = 0; //未提交
OrderStatus_Unknown = -1; //未知状态
OrderStatus_WaitingSubmit = 1; //等待提交
OrderStatus_Submitting = 2; //提交中
OrderStatus_SubmitFailed = 3; //提交失败,下单失败
OrderStatus_TimeOut = 4; //处理超时,结果未知
OrderStatus_Submitted = 5; //已提交,等待成交
OrderStatus_Filled_Part = 10; //部分成交
OrderStatus_Filled_All = 11; //全部已成
OrderStatus_Cancelling_Part = 12; //正在撤单_部分(部分已成交,正在撤销剩余部分)
OrderStatus_Cancelling_All = 13; //正在撤单_全部
OrderStatus_Cancelled_Part = 14; //部分成交,剩余部分已撤单
OrderStatus_Cancelled_All = 15; //全部已撤单,无成交
OrderStatus_Failed = 21; //下单失败,服务拒绝
OrderStatus_Disabled = 22; //已失效
OrderStatus_Deleted = 23; //已删除,无成交的订单才能删除
OrderStatus_FillCancelled = 24; //成交被撤销,一般遇不到,意思是已经成交的订单被回滚撤销,成交无效变为废单
};
//一笔成交的状态
enum OrderFillStatus
{
OrderFillStatus_OK = 0; //正常
OrderFillStatus_Cancelled = 1; //成交被取消
OrderFillStatus_Changed = 2; //成交被更改
}
//持仓方向类型
enum PositionSide
{
PositionSide_Long = 0; //多仓,默认情况是多仓
PositionSide_Unknown = -1; //未知方向
PositionSide_Short = 1; //空仓
};
//修改订单的操作类型
enum ModifyOrderOp
{
//港股支持全部操作美股目前仅支持ModifyOrderOp_Normal和ModifyOrderOp_Cancel
ModifyOrderOp_Unknown = 0; //未知操作
ModifyOrderOp_Normal = 1; //修改订单的价格、数量等,即以前的改单
ModifyOrderOp_Cancel = 2; //撤单
ModifyOrderOp_Disable = 3; //失效
ModifyOrderOp_Enable = 4; //生效
ModifyOrderOp_Delete = 5; //删除
};
//交易账户类型
enum TrdAccType
{
TrdAccType_Unknown = 0; //未知类型
TrdAccType_Cash = 1; //现金账户
TrdAccType_Margin = 2; //保证金账户
};
//交易账户状态
enum TrdAccStatus
{
TrdAccStatus_Active = 0;
TrdAccStatus_Disabled = 1;
}
//货币种类
enum Currency
{
Currency_Unknown = 0; //未知货币
Currency_HKD = 1; // 港币
Currency_USD = 2; // 美元
Currency_CNH = 3; // 离岸人民币
Currency_JPY = 4; // 日元
Currency_SGD = 5; // 新币
Currency_AUD = 6; // 澳元
Currency_CAD = 7; // 加拿大元
Currency_MYR = 8; // 马来西亚林吉特
}
//账户风险控制等级
enum CltRiskLevel
{
CltRiskLevel_Unknown = -1; // 未知
CltRiskLevel_Safe = 0; // 安全
CltRiskLevel_Warning = 1; // 预警
CltRiskLevel_Danger = 2; // 危险
CltRiskLevel_AbsoluteSafe = 3; // 绝对安全
CltRiskLevel_OptDanger = 4; // 危险, 期权相关
}
//订单有效期
enum TimeInForce
{
TimeInForce_DAY = 0; // 当日有效
TimeInForce_GTC = 1; // 撤单前有效最多持续90自然日。
}
//券商
enum SecurityFirm
{
SecurityFirm_Unknown = 0; //未知
SecurityFirm_FutuSecurities = 1; //富途证券(香港)
SecurityFirm_FutuInc = 2; //富途证券(美国)
SecurityFirm_FutuSG = 3; //富途证券(新加坡)
SecurityFirm_FutuAU = 4; //富途证券(澳洲)
}
//模拟交易账户类型
enum SimAccType
{
SimAccType_Unknown = 0; //未知
SimAccType_Stock = 1; //股票模拟账户(仅用于交易证券类产品,不支持交易期权)
SimAccType_Option = 2; //期权模拟账户(仅用于交易期权,不支持交易股票证券类产品)
SimAccType_Futures = 3; //期货模拟账户
}
//风险状态,共分 9 个等级LEVEL1是最安全LEVEL9是最危险
enum CltRiskStatus
{
CltRiskStatus_Unknown = 0; //未知
CltRiskStatus_Level1 = 1; //非常安全
CltRiskStatus_Level2 = 2; //安全
CltRiskStatus_Level3 = 3; //较安全
CltRiskStatus_Level4 = 4; //较低风险
CltRiskStatus_Level5 = 5; //中等风险
CltRiskStatus_Level6 = 6; //较高风险
CltRiskStatus_Level7 = 7; //预警
CltRiskStatus_Level8 = 8; //预警
CltRiskStatus_Level9 = 9; //预警
}
//日内交易限制情况
enum DTStatus
{
DTStatus_Unknown = 0; //未知
DTStatus_Unlimited = 1; //无限次(当前可以无限次日内交易,注意留意剩余日内交易购买力)
DTStatus_EMCall = 2; //EM Call(当前状态不能新建仓位,需要补充资产净值至$25000以上否则会被禁止新建仓位90天)
DTStatus_DTCall = 3; //DT Call(当前状态有未补平的日内交易追缴金额DTCall需要在5个交易日内足额入金来补平 DTCall否则会被禁止新建仓位直到足额存入资金才会解禁)
}
//账户现金信息,目前仅用于期货账户
message AccCashInfo
{
optional int32 currency = 1; // 货币类型,取值参考 Currency
optional double cash = 2; // 现金结余
optional double availableBalance = 3; // 现金可提金额
optional double netCashPower = 4; // 现金购买力
}
//分市场资产信息
message AccMarketInfo
{
optional int32 trdMarket = 1; // 交易市场, 参见TrdMarket的枚举定义
optional double assets = 2; // 分市场资产信息
}
//交易协议公共参数头
message TrdHeader
{
required int32 trdEnv = 1; //交易环境, 参见TrdEnv的枚举定义
required uint64 accID = 2; //业务账号, 业务账号与交易环境、市场权限需要匹配,否则会返回错误
required int32 trdMarket = 3; //交易市场, 参见TrdMarket的枚举定义
}
//交易业务账户结构
message TrdAcc
{
required int32 trdEnv = 1; //交易环境参见TrdEnv的枚举定义
required uint64 accID = 2; //业务账号
repeated int32 trdMarketAuthList = 3; //业务账户支持的交易市场权限,即此账户能交易那些市场, 可拥有多个交易市场权限目前仅单个取值参见TrdMarket的枚举定义
optional int32 accType = 4; //账户类型取值见TrdAccType
optional string cardNum = 5; //卡号
optional int32 securityFirm = 6; //所属券商取值见SecurityFirm
optional int32 simAccType = 7; //模拟交易账号类型取值见SimAccType
optional string uniCardNum = 8; //所属综合账户卡号
optional int32 accStatus = 9; //账号状态取值见TrdAccStatus
}
//账户资金结构
message Funds
{
required double power = 1; //最大购买力做多3位精度下同。
required double totalAssets = 2; //资产净值
required double cash = 3; //现金
required double marketVal = 4; //证券市值, 仅证券账户适用
required double frozenCash = 5; //冻结资金
required double debtCash = 6; //计息金额
required double avlWithdrawalCash = 7; //现金可提,仅证券账户适用
optional int32 currency = 8; //币种,本结构体资金相关的货币类型,取值参见 Currency期货适用
optional double availableFunds = 9; //可用资金,期货适用
optional double unrealizedPL = 10; //未实现盈亏,期货适用
optional double realizedPL = 11; //已实现盈亏,期货适用
optional int32 riskLevel = 12; //风控状态,参见 CltRiskLevel, 期货适用
optional double initialMargin = 13; //初始保证金
optional double maintenanceMargin = 14; //维持保证金
repeated AccCashInfo cashInfoList = 15; //分币种的现金信息,期货适用
optional double maxPowerShort = 16; //卖空购买力
optional double netCashPower = 17; //现金购买力
optional double longMv = 18; //多头市值
optional double shortMv = 19; //空头市值
optional double pendingAsset = 20; //在途资产
optional double maxWithdrawal = 21; //融资可提,仅证券账户适用
optional int32 riskStatus = 22; //风险状态,参见 [CltRiskStatus],证券账户适用,共分 9 个等级LEVEL1是最安全LEVEL9是最危险
optional double marginCallMargin = 23; // Margin Call 保证金
optional bool isPdt = 24; //是否PDT账户仅富途证券美国账户适用
optional string pdtSeq = 25; //剩余日内交易次数
optional double beginningDTBP = 26; //初始日内交易购买力
optional double remainingDTBP = 27; //剩余日内交易购买力
optional double dtCallAmount = 28; //日内交易待缴金额
optional int32 dtStatus = 29; //日内交易限制情况取值见DTStatus
optional double securitiesAssets = 30; // 证券资产净值
optional double fundAssets = 31; // 基金资产净值
optional double bondAssets = 32; // 债券资产净值
repeated AccMarketInfo marketInfoList = 33; //分市场资产信息
}
//账户持仓结构
message Position
{
required uint64 positionID = 1; //持仓ID一条持仓的唯一标识
required int32 positionSide = 2; //持仓方向参见PositionSide的枚举定义
required string code = 3; //代码
required string name = 4; //名称
required double qty = 5; //持有数量2位精度期权单位是"张",下同
required double canSellQty = 6; //可卖数量
required double price = 7; //市价3位精度期货为2位精度
optional double costPrice = 8; //成本价无精度限制期货为2位精度如果没传代表此时此值无效,
required double val = 9; //市值3位精度, 期货此字段值为0
required double plVal = 10; //盈亏金额3位精度期货为2位精度
optional double plRatio = 11; //盈亏百分比(如plRatio等于8.8代表涨8.8%),无精度限制,如果没传,代表此时此值无效
optional int32 secMarket = 12; //证券所属市场参见TrdSecMarket的枚举定义
//以下是此持仓今日统计
optional double td_plVal = 21; //今日盈亏金额3位精度下同, 期货为2位精度
optional double td_trdVal = 22; //今日交易额,期货不适用
optional double td_buyVal = 23; //今日买入总额,期货不适用
optional double td_buyQty = 24; //今日买入总量,期货不适用
optional double td_sellVal = 25; //今日卖出总额,期货不适用
optional double td_sellQty = 26; //今日卖出总量,期货不适用
optional double unrealizedPL = 28; //未实现盈亏,期货适用
optional double realizedPL = 29; //已实现盈亏,期货适用
optional int32 currency = 30; // 货币类型,取值参考 Currency
optional int32 trdMarket = 31; //交易市场, 参见TrdMarket的枚举定义
}
//订单结构
message Order
{
required int32 trdSide = 1; //交易方向, 参见TrdSide的枚举定义
required int32 orderType = 2; //订单类型, 参见OrderType的枚举定义
required int32 orderStatus = 3; //订单状态, 参见OrderStatus的枚举定义
required uint64 orderID = 4; //订单号
required string orderIDEx = 5; //扩展订单号(仅查问题时备用)
required string code = 6; //代码
required string name = 7; //名称
required double qty = 8; //订单数量2位精度期权单位是"张"
optional double price = 9; //订单价格3位精度
required string createTime = 10; //创建时间严格按YYYY-MM-DD HH:MM:SS或YYYY-MM-DD HH:MM:SS.MS格式传
required string updateTime = 11; //最后更新时间严格按YYYY-MM-DD HH:MM:SS或YYYY-MM-DD HH:MM:SS.MS格式传
optional double fillQty = 12; //成交数量2位精度期权单位是"张"
optional double fillAvgPrice = 13; //成交均价,无精度限制
optional string lastErrMsg = 14; //最后的错误描述,如果有错误,会有此描述最后一次错误的原因,无错误为空
optional int32 secMarket = 15; //证券所属市场参见TrdSecMarket的枚举定义
optional double createTimestamp = 16; //创建时间戳
optional double updateTimestamp = 17; //最后更新时间戳
optional string remark = 18; //用户备注字符串最大长度64字节
optional int32 timeInForce = 19; //订单期限,参考 TimeInForce 类的定义
optional bool fillOutsideRTH = 20; //是否允许美股订单盘前盘后成交
optional double auxPrice = 21; //触发价格
optional int32 trailType = 22; //跟踪类型, 参见Trd_Common.TrailType的枚举定义
optional double trailValue = 23; //跟踪金额/百分比
optional double trailSpread = 24; //指定价差
optional int32 currency = 25; // 货币类型,取值参考 Currency
optional int32 trdMarket = 26; //交易市场, 参见TrdMarket的枚举定义
}
message OrderFeeItem
{
optional string title = 1; //费用名字
optional double value = 2; //费用金额
}
message OrderFee
{
required string orderIDEx = 1; //扩展订单号
optional double feeAmount = 2; //费用总额
repeated OrderFeeItem feeList = 3; //费用明细
}
//成交结构
message OrderFill
{
required int32 trdSide = 1; //交易方向, 参见TrdSide的枚举定义
required uint64 fillID = 2; //成交号
required string fillIDEx = 3; //扩展成交号(仅查问题时备用)
optional uint64 orderID = 4; //订单号
optional string orderIDEx = 5; //扩展订单号(仅查问题时备用)
required string code = 6; //代码
required string name = 7; //名称
required double qty = 8; //成交数量2位精度期权单位是"张"
required double price = 9; //成交价格3位精度
required string createTime = 10; //创建时间成交时间严格按YYYY-MM-DD HH:MM:SS或YYYY-MM-DD HH:MM:SS.MS格式传
optional int32 counterBrokerID = 11; //对手经纪号,港股有效
optional string counterBrokerName = 12; //对手经纪名称,港股有效
optional int32 secMarket = 13; //证券所属市场参见TrdSecMarket的枚举定义
optional double createTimestamp = 14; //创建时间戳
optional double updateTimestamp = 15; //最后更新时间戳
optional int32 status = 16; //成交状态, 参见OrderFillStatus的枚举定义
optional int32 trdMarket = 17; //交易市场, 参见TrdMarket的枚举定义
}
//最大可交易数量
message MaxTrdQtys
{
//因目前服务器实现的问题,卖空需要先卖掉持仓才能再卖空,是分开两步卖的,买回来同样是逆向两步;而看多的买是可以现金加融资一起一步买的,请注意这个差异
required double maxCashBuy = 1; //不使用融资仅自己的现金最大可买整手股数期货此字段值为0
optional double maxCashAndMarginBuy = 2; //使用融资,自己的现金 + 融资资金总共的最大可买整手股数,期货不适用
required double maxPositionSell = 3; //不使用融券(卖空),仅自己的持仓最大可卖整手股数
optional double maxSellShort = 4; //使用融券(卖空),最大可卖空整手股数,不包括多仓,期货不适用
optional double maxBuyBack = 5; //卖空后,需要买回的最大整手股数。因为卖空后,必须先买回已卖空的股数,还掉股票,才能再继续买多。期货不适用
optional double longRequiredIM = 6; //开多仓每张合约初始保证金。当前仅期货和期权适用(最低 FutuOpenD 版本要求5.0.1310
optional double shortRequiredIM = 7; //开空仓每张合约初始保证金。当前仅期货和期权适用(最低 FutuOpenD 版本要求5.0.1310
}
//过滤条件,条件组合是"与"不是"或",用于获取订单、成交、持仓等时二次过滤
message TrdFilterConditions
{
repeated string codeList = 1; //代码过滤,只返回包含这些代码的数据,没传不过滤
repeated uint64 idList = 2; //ID主键过滤只返回包含这些ID的数据没传不过滤订单是orderID、成交是fillID、持仓是positionID
optional string beginTime = 3; //开始时间严格按YYYY-MM-DD HH:MM:SS或YYYY-MM-DD HH:MM:SS.MS格式传对持仓无效拉历史数据必须填
optional string endTime = 4; //结束时间严格按YYYY-MM-DD HH:MM:SS或YYYY-MM-DD HH:MM:SS.MS格式传对持仓无效拉历史数据必须填
repeated string orderIDExList = 5; // 服务器订单ID可以用来替代orderID二选一
optional int32 filterMarket = 6; //指定交易市场, 参见TrdMarket的枚举定义
}