# 交易定义

# 账户风控状态

CltRiskLevel

  • NONE

    未知

  • SAFE

    安全

  • WARNING

    预警

  • DANGER

    危险

  • ABSOLUTE_SAFE

    绝对安全

  • OPT_DANGER

    危险

提示

  • 查询期货账户的风险状态,建议使用 risk_status 字段, 返回结果详见 CltRiskStatus

# 货币类型

Currency

  • NONE

    未知货币

  • HKD

    港元

  • USD

    美元

  • CNH

    离岸人民币

  • JPY

    日元

  • SGD

    新元

  • AUD

    澳元

# 跟踪类型

TrailType

  • NONE

    未知

  • RATIO

    比例

  • AMOUNT

    金额

# 修改订单操作

ModifyOrderOp

  • NONE

    未知操作

  • NORMAL

    修改订单

  • CANCEL

    撤单

  • DISABLE

    使失效

  • ENABLE

    使生效

  • DELETE

    删除

# 成交状态

DealStatus

  • OK

    正常

  • CANCELLED

    成交被取消

  • CHANGED

    成交被更改

# 订单状态

OrderStatus

  • NONE

    未知状态

  • UNSUBMITTED

    未提交(已废弃)

  • WAITING_SUBMIT

    等待提交

  • SUBMITTING

    提交中

  • SUBMIT_FAILED

    提交失败,下单失败(已废弃)

  • TIMEOUT

    处理超时,结果未知(已废弃)

  • SUBMITTED

    已提交,等待成交

  • FILLED_PART

    部分成交

  • FILLED_ALL

    全部已成

  • CANCELLING_PART

    正在撤单_部分

    (已废弃)

  • CANCELLING_ALL

    正在撤单_全部(已废弃)

  • CANCELLED_PART

    部分成交,剩余部分已撤单

  • CANCELLED_ALL

    全部已撤单,无成交

  • FAILED

    下单失败,服务拒绝

  • DISABLED

    已失效

  • DELETED

    已删除,无成交的订单才能删除

  • FILL_CANCELLED

    成交被撤销(已废弃)

# 订单类型

OrderType

  • NONE

    未知类型

  • NORMAL

    限价单

  • MARKET

    市价单

  • ABSOLUTE_LIMIT

    绝对限价订单(仅港股)

  • AUCTION

    竞价市价单(仅港股)

  • AUCTION_LIMIT

    竞价限价单(仅港股)

  • SPECIAL_LIMIT

    特别限价单(仅港股)

  • SPECIAL_LIMIT_ALL

    特别限价且要求全部成交订单(仅港股)

  • STOP

    止损市价单

  • STOP_LIMIT

    止损限价单

  • MARKET_IF_TOUCHED

    触及市价单(止盈)

  • LIMIT_IF_TOUCHED

    触及限价单(止盈)

  • TRAILING_STOP

    跟踪止损市价单

  • TRAILING_STOP_LIMIT

    跟踪止损限价单

  • TWAP_LIMIT

    时间加权限价算法单 (港股和美股)

  • TWAP

    时间加权市价算法单(仅美股)

  • VWAP_LIMIT

    成交量加权限价算法单 (港股和美股)

  • VWAP

    成交量加权市价算法单(仅美股)

提示

  • 模拟交易仅支持限价单(NORMAL)和市价单(MARKET)。

# 持仓方向

PositionSide

  • NONE

    未知方向

  • LONG

    多仓

  • SHORT

    空仓

# 账户类型

TrdAccType

  • NONE

    未知类型

  • CASH

    现金账户

  • MARGIN

    保证金账户

# 交易环境

TrdEnv

  • SIMULATE

    模拟环境

  • REAL

    真实环境

# 交易市场

TrdMarket

  • NONE

    未知市场

  • HK

    香港市场

  • US

    美国市场

  • CN

    A 股市场

  • HKCC

    香港 A 股通市场

  • FUTURES

    期货市场

  • FUTURES_SIMULATE_US

    美国期货模拟市场

  • FUTURES_SIMULATE_HK

    香港期货模拟市场

  • FUTURES_SIMULATE_SG

    新加坡期货模拟市场

  • FUTURES_SIMULATE_JP

    日本期货模拟市场

  • HKFUND

    香港基金市场

  • USFUND

    美国基金市场

# 交易证券市场

# 交易方向

TrdSide

  • NONE

    未知方向

  • BUY

    买入

  • SELL

    卖出

  • SELL_SHORT

    卖空

  • BUY_BACK

    买回

提示

下单 接口的交易方向 ,建议仅使用 买入卖出 两个方向作为入参。
卖空买回 仅用于 查询今日订单查询历史订单 接口的返回字段展示。

# 订单有效期

TimeInForce

  • DAY

    当日有效

  • GTC

    撤单前有效

# 账户所属券商

SecurityFirm

  • NONE

    未知

  • FUTUSECURITIES

    富途证券(香港)

  • FUTUINC

    moomoo证券(美国)

  • FUTUSG
    moomoo证券(新加坡)

  • FUTUAU
    moomoo证券(澳大利亚)

# 模拟交易账户类型

SimAccType

  • NONE

    未知

  • STOCK

    股票模拟账户

  • OPTION

    期权模拟账户

  • FUTURES

    期货模拟账户

# 风险状态

CltRiskStatus

  • NONE

    未知

  • LEVEL1

    非常安全

  • LEVEL2

    安全

  • LEVEL3

    较安全

  • LEVEL4

    较低风险

  • LEVEL5

    中等风险

  • LEVEL6

    偏高风险

  • LEVEL7

    预警

  • LEVEL8

    危险

  • LEVEL9

    危险

# 日内交易限制情况

DtStatus

  • NONE

    未知

  • Unlimited

    无限次

  • EM_Call

    EM-Call

  • DT_Call

    DT-Call

# 交易品类

TrdCategory

enum TrdCategory
{
    TrdCategory_Unknown = 0; //未知品类
    TrdCategory_Security = 1; //证券
    TrdCategory_Future = 2; //期货
}
1
2
3
4
5
6

# 账户现金信息

AccCashInfo

message AccCashInfo
{
    optional int32 currency = 1;        // 货币类型,取值参考 Currency
    optional double cash = 2;           // 现金结余
    optional double availableBalance = 3;   // 现金可提金额
}
1
2
3
4
5
6

# 交易协议公共参数头

TrdHeader

message TrdHeader
{
  required int32 trdEnv = 1; //交易环境, 参见 TrdEnv 的枚举定义
  required uint64 accID = 2; //业务账号, 业务账号与交易环境、市场权限需要匹配,否则会返回错误
  required int32 trdMarket = 3; //交易市场, 参见 TrdMarket 的枚举定义
}
1
2
3
4
5
6

# 交易业务账户

TrdAcc

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;  //所属综合账户卡号
}
1
2
3
4
5
6
7
8
9
10
11

# 账户资金

Funds

message Funds
{
  required double power = 1; //最大购买力(此字段是按照 50% 的融资初始保证金率计算得到的 近似值。但事实上,每个标的的融资初始保证金率并不相同。我们建议您使用 查询最大可买可卖 接口返回的 最大可买 字段,来判断实际可买入的最大数量)
  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, 期货适用。建议统一使用 riskStatus 字段获取证券、期货账户的风险状态
  optional double initialMargin = 13;      //初始保证金
  optional double maintenanceMargin = 14;  //维持保证金
  repeated AccCashInfo cashInfoList = 15;  //分币种的现金信息,期货适用
  optional double maxPowerShort = 16; //卖空购买力(此字段是按照 60% 的融券保证金率计算得到的近似值。但事实上,每个标的的融券保证金率并不相同。我们建议您使用 查询最大可买可卖 接口返回的 可卖空 字段,来判断实际可卖空的最大数量。)
  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账户,仅moomoo证券(美国)账户适用
  optional string pdtSeq = 25;			//剩余日内交易次数,仅被标记为 PDT 的moomoo证券(美国)账户适用
  optional double beginningDTBP = 26;		//初始日内交易购买力,仅被标记为 PDT 的moomoo证券(美国)账户适用
  optional double remainingDTBP = 27;		//剩余日内交易购买力,仅被标记为 PDT 的moomoo证券(美国)账户适用
  optional double dtCallAmount = 28;		//日内交易待缴金额,仅被标记为 PDT 的moomoo证券(美国)账户适用
  optional int32 dtStatus = 29;				//日内交易限制情况,取值见 DTStatus。仅被标记为 PDT 的moomoo证券(美国)账户适用
  
  optional double securitiesAssets = 30; // 证券资产净值
  optional double fundAssets = 31; // 基金资产净值
  optional double bondAssets = 32; // 债券资产净值
}
1
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

# 账户持仓

Position

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 等于0.088代表涨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 的枚举定义

}
1
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

# 订单

Order

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

# 订单费用条目

OrderFeeItem

message OrderFeeItem
{
    optional string title = 1; //费用名字
    optional double value = 2; //费用金额
}
1
2
3
4
5

# 订单费用

OrderFee

message OrderFee
{
    required string orderIDEx = 1; //扩展订单号
    optional double feeAmount = 2; //费用总额
    repeated OrderFeeItem feeList = 3; //费用明细
}
1
2
3
4
5
6

# 成交

OrderFill

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 的枚举定义
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 最大可交易数量

MaxTrdQtys

message MaxTrdQtys
{
	//因目前服务器实现的问题,卖空需要先卖掉多头持仓才能再卖空,是分开两步卖的,买回来同样是逆向两步;而看多的买是可以现金加融资一起一步买的,请注意这个差异
	required double maxCashBuy = 1;             //现金可买(期权的单位是“张”,期货账户不适用)
    optional double maxCashAndMarginBuy = 2;    //最大可买(期权的单位是“张”,期货账户不适用)
    required double maxPositionSell = 3;        //持仓可卖(期权的单位是“张”)
    optional double maxSellShort = 4;           //可卖空(期权的单位是“张”,期货账户不适用)
    optional double maxBuyBack = 5;             //平仓需买入(当持有净空仓时,必须先买回空头持仓的股数,才能再继续买多。期货、期权的单位是“张”)
    optional double longRequiredIM = 6;         //开多仓每张合约初始保证金。当前仅期货和期权适用(最低 OpenD 版本要求:5.0.1310)
    optional double shortRequiredIM = 7;        //开空仓每张合约初始保证金。当前仅期货和期权适用(最低 OpenD 版本要求:5.0.1310)
}
1
2
3
4
5
6
7
8
9
10
11

# 过滤条件

TrdFilterConditions

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列表,二选一
}
1
2
3
4
5
6
7
8