Files
QTradeProgram/include/Proto/Trd_Common.proto
2025-08-15 15:57:31 +08:00

444 lines
20 KiB
Protocol Buffer
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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的枚举定义
}