# 交易定义

# 账户风控状态

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

    未知状态

  • WAITING_SUBMIT

    待提交

  • SUBMITTING

    提交中

  • SUBMITTED

    已提交,等待成交

  • FILLED_PART

    部分成交

  • FILLED_ALL

    全部已成交

  • CANCELLED_PART

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

  • CANCELLED_ALL

    全部已撤单,无成交

  • FAILED

    下单失败,服务拒绝

  • DISABLED

    已失效

  • DELETED

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

# 订单类型

提示

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

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

# 持仓方向

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

    美国基金市场

# 账户状态

AccStatus

  • ACTIVE

    生效账户

  • DISABLED

    失效账户

# 交易证券市场

# 交易方向

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;   // 现金可提金额
    optional double netCashPower = 4;		// 现金购买力
}
1
2
3
4
5
6
7

# 交易协议公共参数头

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;  //所属综合账户卡号
  optional int32 accStatus = 9; //账号状态,取值见TrdAccStatus
}
1
2
3
4
5
6
7
8
9
10
11
12

# 账户资金

Funds

message Funds
{
  required double power = 1; //最大购买力(此字段是按照 50% 的融资初始保证金率计算得到的 近似值。但事实上,每个标的的融资初始保证金率并不相同。我们建议您使用 查询最大可买可卖 接口返回的 最大可买 字段,来判断实际可买入的最大数量)
  required double totalAssets = 2; //资产净值
  required double cash = 3; //现金(仅单币种账户使用此字段,综合账户请使用 cashInfoList 获取分币种现金)
  required double marketVal = 4; //证券市值, 仅证券账户适用
  required double frozenCash = 5; //冻结资金
  required double debtCash = 6; //计息金额
  required double avlWithdrawalCash = 7; //现金可提(仅单币种账户使用此字段,综合账户请使用 cashInfoList 获取分币种现金可提)

  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;  //现金购买力(仅单币种账户使用此字段,综合账户请使用 cashInfoList 获取分币种现金购买力)
  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;         //买 1 张合约所带来的初始保证金变动。仅期货和期权适用。无持仓时,返回 买入 1 张的初始保证金占用(正数)。有多仓时,返回 买入1 张的初始保证金占用(正数)。有空仓时,返回 买回 1 张的初始保证金释放(负数)。
    optional double shortRequiredIM = 7;        //卖 1 张合约所带来的初始保证金变动。仅期货和期权适用。无持仓时,返回 卖空 1 张的初始保证金占用(正数)。 有多仓时,返回卖出1 张的初始保证金占用(正数)。有空仓时,返回 卖空1 张的初始保证金释放(正数)。
}
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