Skip to content

Latest commit

 

History

History
838 lines (625 loc) · 90.1 KB

fix-api_CN.md

File metadata and controls

838 lines (625 loc) · 90.1 KB

FIX API

注意: 此 API 只能用于现货 (SPOT) 交易所。

基本信息

FIX API 订单接入会话

  • 端点为:tcp+tls://fix-oe.binance.com:9000
  • 支持下单,取消订单和查询当前限制使用情况。
  • 支持接收账户的所有 ExecutionReport<8>List Status<N>
  • 仅允许带有 FIX_API 的 API Key 连接。

FIX API Drop Copy 会话

  • 端点为:tcp+tls://fix-dc.binance.com:9000
  • 支持接收账户的所有 ExecutionReport<8>List Status<N>
  • 仅允许连接带有 FIX_APIFIX_API_READ_ONLY 的 API Key。

关于 QuickFix 模式 (Schema) 文件, 请点击 这里

FIX 连接需要 TLS 加密。请使用本地 TCP+TLS 连接或设置本地代理如 stunnel 来处理 TLS 加密。

API Key 权限

如果您需要使用 FIX API 的订单接入会话,您的 API key 必须配置 FIX_API 权限。 如果您需要使用 FIX API 的 Drop Copy 会话,您的 API key 必须配置 FIX_API_READ_ONLYFIX_API 权限。

FIX API 订单接入和 FIX API Drop Copy 会话仅支持 Ed25519 密钥。

关于如何设置 Ed25519 密钥对,请参考 本教程

关于消息处理顺序

初始消息 Logon<A> 中必需的 MessageHandling (25035) 字段被用于控制:是否在消息被撮合引擎处理前,需要重新排序消息。

  • UNORDERED(1) 允许不按顺序将来自客户端的消息发送到撮合引擎。
  • SEQUENTIAL(2) 来自客户端的消息始终以 MsgSeqNum(34) 中定义的顺序发送到撮合引擎。

Tip

在有多个消息需要从客户端传输到服务器的情况时, UNORDERED(1) 应该会提供更好的性能。

响应模式

FIX API 允许单个账户的多个并发会话(参见 连接限制)。 默认情况下,所有会话将接收该账户的所有成功 ExecutionReport<8>ListStatus<N> 消息。这被称为 ExecutionReport 推送。

用户可以在初始消息 Logon<A> 中使用 ResponseMode (25036) 字段来改变这种行为。

  • EVERYTHING(1): 默认模式。
  • ONLY_ACKS(2): 无论操作成功还是失败,都只接收 ACK 消息。禁用 ExecutionReport 推送。

如何签署 Logon<A> 请求

Logon<A> 消息用于验证您与 FIX API 的连接。 这条消息必须是客户端发送的第一条消息。

  • Username (553) 字段必须包含 API key。
  • RawData (96) 字段必须包含使用 API key 生成的有效签名。

签名 payload 是一个文本字符串。该字符串通过按以下所列顺序去连接下列字段来构成, 并且以 SOH 字符作为分隔符:

  1. MsgType (35)
  2. SenderCompId (49)
  3. TargetCompId (56)
  4. MsgSeqNum (34)
  5. SendingTime (52)

请使用您的密钥签署 payload。请使用 base64 对签名进行编码。 生成的文本字符串是 RawData (96) 字段的值。

以下是实现签名算法的 Python 代码示例:

import base64

from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
from cryptography.hazmat.primitives.serialization import load_pem_private_key

def logon_raw_data(private_key: Ed25519PrivateKey,
                   sender_comp_id: str,
                   target_comp_id: str,
                   msg_seq_num: str,
                   sending_time: str):
    """
    Computes the value of RawData (96) field in Logon<A> message.
    """
    payload = chr(1).join([
        'A',
        sender_comp_id,
        target_comp_id,
        msg_seq_num,
        sending_time,
    ])
    signature = private_key.sign(payload.encode('ASCII'))
    return base64.b64encode(signature).decode('ASCII')


with open('private_key.pem', 'rb') as f:
    private_key = load_pem_private_key(data=f.read(),
                                       password=None)

raw_data = logon_raw_data(private_key,
                          sender_comp_id='5JQmUOsm',
                          target_comp_id='SPOT',
                          msg_seq_num='1',
                          sending_time='20240612-08:52:21.613')

以下值可用于验证签名计算实现的正确性:

字段 取值
MsgType (35) A
SenderCompID (49) EXAMPLE
TargetCompID (56) SPOT
MsgSeqNum (34) 1
SendingTime (52) 20240627-11:17:25.223

示例计算中使用的 Ed25519 密钥如下所示:

Caution

以下密钥仅用于示范说明目的。请务必不要在任何实际应用中使用该密钥,因为它不安全,可能会危及您的加密实现。请在实际使用中生成属于您自己的唯一且安全的密钥。

-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIIJEYWtGBrhACmb9Dvy+qa8WEf0lQOl1s4CLIAB9m89u
-----END PRIVATE KEY-----

经过计算生成的签名:

4MHXelVVcpkdwuLbl6n73HQUXUf1dse2PCgT1DYqW9w8AVZ1RACFGM+5UdlGPrQHrgtS3CvsRURC1oj73j8gCA==

生成的 Logon <A> 消息:

8=FIX.4.4|9=247|35=A|34=1|49=EXAMPLE|52=20240627-11:17:25.223|56=SPOT|95=88|96=4MHXelVVcpkdwuLbl6n73HQUXUf1dse2PCgT1DYqW9w8AVZ1RACFGM+5UdlGPrQHrgtS3CvsRURC1oj73j8gCA==|98=0|108=30|141=Y|553=sBRXrJx2DsOraMXOaUovEhgVRcjOvCtQwnWj8VxkOh1xqboS02SPGfKi2h8spZJb|25035=2|10=227|

限制

消息限制

  • 每个连接都有一个关于 可以发送到交易所的消息数量 的限制。
  • 消息限制 不计算从接口发回到客户端的响应消息数量
  • 违反消息限制会立即导致 Logout <5> 并断开连接。
  • 要了解当前的限制和使用情况,请发送 LimitQuery<XLQ> 消息。 接口将发送 LimitResponse<XLR> 消息作为响应,其中包含了有关订单速率限制和消息限制的信息。

未成交订单计数

  • 要了解您在特定时间间隔内下了多少订单,请发送 LimitQuery<XLQ> 消息。 系统将发送一条 LimitResponse<XLR> 消息作为响应,其中会包含有关未成交订单计数和消息限制的信息。
  • 请注意,如果您的订单一直顺利完成交易,您可以在 API 持续下订单。更多信息,请参见现货未成交订单计数规则
  • 如果您超过了未成交的订单计数限制,您的消息将被拒绝,并且信息将用该接口的拒绝消息格式传回给您。
  • 未成交订单数量是按照每个账户来统计的

连接限制

  • 每个账户都有一个关于 可以同时建立的 TCP 连接数量 的限制。
  • 当 TCP 连接关闭时,限制值会减少。如果限制值没有立即减少,请等待最长不超过2倍于在 HeartBtInt (108) 内所定义的时间。 比如说,如果 HeartBtInt 的值为5, 那么请等待10秒钟。
  • 违反限制时, Reject <3> 消息会被发送给用户。该消息包含了有关违反连接限制和当前限制的信息。
  • 对于订单接入会话,其限制为每个账户 5 个并发 TCP 连接。
  • 对于 Drop Copy 会话,其限制为每个账户 10 个并发 TCP 连接。

错误处理

包含句法错误,缺少必填字段,或引用未知交易对的客户端消息将被服务器拒绝,并返回 Reject <3> 消息。

如果有效消息无法被处理并被拒绝,服务器将发送相应的拒绝响应。 请参阅各个消息的相关文档以了解可能会发生的响应。

请参阅响应中的 Text (58)ErrorCode (25016) 字段以了解拒绝原因。

错误代码列表可以在 错误代码 页面找到。

类型

仅支持可打印的 ASCII 字符和 SOH。

类型 描述
BOOLEAN Enum:YN.
CHAR 单个字符。
INT 有符号的 64 位整数。
LENGTH 无符号的 64 位整数。
NUMINGROUP 无符号的 64 位整数。
PRICE 定点数。精度取决于 symbol 定义。
QTY 定点数。精度取决于 symbol 定义。
SEQNUM 无符号的 64 位整数。
STRING 可打印的 ASCII 字符串。
UTCTIMESTAMP 表示 UTC 日期时间的字符串。

支持的 UTCTIMESTAMP 格式:

  • 20011217-09:30:47 - 秒
  • 20011217-09:30:47.123 - 毫秒
  • 20011217-09:30:47.123456 - 微秒(用于来自交易所的消息)

客户端订单 ID 字段必须符合正则表达式 ^[a-zA-Z0-9-_]{1,36}$

  • ClOrdID (11)
  • OrigClOrdID (41)
  • ClListID (25014)
  • OrigClListID (25015)
  • CancelClOrdID (25034)

消息组件

在示例消息中, | 字符用于表示 SOH 字符:

8=FIX.4.4|9=113|35=A|34=1|49=SPOT|52=20240612-08:52:21.636837|56=5JQmUOsm|98=0|108=30|25037=4392a152-3481-4499-921a-6d42c50702e2|10=051|

Header

出现在每条消息的开头。

Tag 名称 类型 是否必须 描述
8 BeginString STRING Y 始终为 FIX.4.4

必须是消息的第一个字段。
9 BodyLength LENGTH Y 消息长度(以字节为单位)。

必须是消息的第二个字段。
35 MsgType STRING Y 必须是消息的第三个字段。

可能的值:

0 - HEARTBEAT

1 - TEST_REQUEST

3 - REJECT

5 - LOGOUT

8 - EXECUTION_REPORT

9 - ORDER_CANCEL_REJECT

A - LOGON

D - NEW_ORDER_SINGLE

E - NEW_ORDER_LIST

F - ORDER_CANCEL_REQUEST

N - LIST_STATUS

q - ORDER_MASS_CANCEL_REQUEST

r - ORDER_MASS_CANCEL_REPORT

XCN - ORDER_CANCEL_REQUEST_AND_NEW_ORDER_SINGLE

XLQ - LIMIT_QUERY

XLR - LIMIT_RESPONSE
49 SenderCompID STRING Y 在账户的活动会话中必须是独特的。

必须使用正则表达式:^[a-zA-Z0-9-_]{1,8}$
56 TargetCompID STRING Y 在客户端的消息中必须设置为SPOT
34 MsgSeqNum SEQNUM Y 整数消息序列号。

会导致间隙的值将被拒绝。
52 SendingTime UTCTIMESTAMP Y 消息传输时间(始终以 UTC 表示)。
25000 RecvWindow INT N SendingTime (52) 后,用于标识请求有效时间的毫秒数。

Logon<A> 中默认为 5000 毫秒,最大值为 60000 毫秒。

Trailer

出现在每条消息的末尾。

Tag 名称 类型 是否必须 描述
10 CheckSum STRING Y 始终为3个字符的数字字符串。其取值是通过对消息中每个前导字符的 ASCII 值进行求和计算得出的,其中包括 start-of-header(SOH)。

结果总和除以 256,余数形成 CheckSum 值。

为保持固定长度,CheckSum 字段采用右对齐并按需要进行零填充。

Administrative Messages

Heartbeat <0>

如果在心跳间隔(Logon<A> 中的 HeartBtInt (108))的期间没有传出流量,则由服务器发送。

由客户端发送则用于指示会话正常。

由客户端或服务器发送,用于给予 TestRequest<1> 消息有关响应。

Tag 名称 类型 是否必须 描述
112 TestReqID STRING N 当 Heartbeat<35> 作为对 TestRequest<1> 的响应发送时,必须镜像 TestRequest<1> 中的值。

TestRequest <1>

如果在心跳间隔(Logon<A> 中的 HeartBtInt (108))的期间没有传入流量,则由服务器发送。

由客户端发送用于请求 Heartbeat<0> 响应。

注意: 如果客户端未能在超时范围内发送带有正确 TestReqID (112) 的 Heartbeat<0> 来响应 TestRequest<1> ,其连接将被断开。

Tag 名称 类型 必填 描述
112 TestReqID STRING Y 任意字符串,必须包含在 Heartbeat<0> 响应中。

Reject <3>

由服务器发送,用以响应无法处理的无效消息。

如果无法接受新连接,则由服务器发送。 请参阅 Connection Limits

请参阅 Text (58)ErrorCode (25016) 字段以了解拒绝原因。

Tag 名称 类型 必填 描述
45 RefSeqNum INT N 导致此 Reject<3> 发送的被拒绝消息的 MsgSeqNum (34)
371 RefTagID INT N 如果存在,标识直接导致此 Reject<3> 消息发送的字段。
372 RefMsgType STRING N 导致此 Reject<3> 发送的被拒绝消息的 MsgType (35)
373 SessionRejectReason INT N 拒绝的原因,可以是以下值之一。

通常伴随附加的文字描述

可能的值:

0- INVALID_TAG_NUMBER

1 - REQUIRED_TAG_MISSING

2 - TAG_NOT_DEFINED_FOR_THIS_MESSAGE_TYPE

3 - UNDEFINED_TAG

5 - VALUE_IS_INCORRECT

6 - INCORRECT_DATA_FORMAT_FOR_VALUE

8 - SIGNATURE_PROBLEM

10 - SENDINGTIME_ACCURACY_PROBLEM

12 - XML_VALIDATION_ERROR

13 - TAG_APPEARS_MORE_THAN_ONCE

14 - TAG_SPECIFIED_OUT_OF_REQUIRED_ORDER

15 - REPEATING_GROUP_FIELDS_OUT_OF_ORDER

16 - INCORRECT_NUMINGROUP_COUNT_FOR_REPEATING_GROUP

99 - OTHER
25016 ErrorCode INT N API 错误代码(参见 错误代码)。
58 Text STRING N 人类可读的错误信息。

Logon<A>

由客户端发送,用以验证连接。 Logon<A> 必须是客户端发送的第一条消息。

由服务器发送,用以响应成功的登录。

注意: Logon<A> 在整个会话期间只能发送一次。

Logon Request

Tag 名称 类型 是否必须 描述
98 EncryptMethod INT Y 必须为 0
108 HeartBtInt INT Y 必须在 [5, 60] 范围内。Heartbeat 间隔(秒)。
95 RawDataLength LENGTH Y 紧随此字段之后的 RawData (96) 字段的长度。
96 RawData DATA Y 签名。 如何签署 Logon<A> 请求
141 ResetSeqNumFlag BOOLEAN Y 必须为 Y
553 Username STRING Y API key。仅支持 Ed25519 API keys。
25035 MessageHandling INT Y 可能的值:

1 - UNORDERED

2 - SEQUENTIAL

请参阅 关于消息处理顺序 了解更多信息。
25036 ResponseMode INT N 请参阅 响应模式
9406 DropCopyFlag BOOLEAN N 登录到 Drop Copy 会话时,必须设置为"Y"。

示例消息:

8=FIX.4.4|9=248|35=A|34=1|49=5JQmUOsm|52=20240612-08:52:21.613|56=SPOT|95=88|96=KhJLbZqADWknfTAcp0ZjyNz36Kxa4ffvpNf9nTIc+K5l35h+vA1vzDRvLAEQckyl6VDOwJ53NOBnmmRYxQvQBQ==|98=0|108=30|141=Y|553=W5rcOD30c0gT4jHK8oX5d5NbzWoa0k4SFVoTHIFNJVZ3NuRpYb6ZyJznj8THyx5d|25035=1|10=000|

Logon Response

Tag 名称 类型 是否必须 描述
98 EncryptMethod INT Y 始终为 0
108 HeartBtInt INT Y 镜像 Logon 请求中的值。
25037 UUID STRING Y 提供请求服务的 FIX API 的 UUID。

示例消息:

8=FIX.4.4|9=113|35=A|34=1|49=SPOT|52=20240612-08:52:21.636837|56=5JQmUOsm|98=0|108=30|25037=4392a152-3481-4499-921a-6d42c50702e2|10=051|

Logout <5>

发送此消息以启动关闭连接的过程,并对 Logout 进行响应。

Tag 名称 类型 是否必须 描述
58 Text STRING N

示例消息:

Logout 请求

8=FIX.4.4|9=55|35=5|34=3|49=GhQHzrLR|52=20240611-09:44:25.543|56=SPOT|10=249|

Logout 响应

8=FIX.4.4|9=84|35=5|34=4|49=SPOT|52=20240611-09:44:25.544001|56=GhQHzrLR|58=Logout acknowledgment.|10=212|

Application Messages

下单消息

NewOrderSingle<D>

由客户端发送,用以提交新订单并进行执行。

请参阅 支持的订单类型 了解支持的字段组合。

注意: 许多字段会根据订单类型变为必填。 请参阅 支持的订单类型

Tag 名称 类型 是否必须 描述
11 ClOrdID STRING Y 分配给订单的 ClOrdID
38 OrderQty QTY N 订单数量
40 OrdType CHAR Y 请参阅 表格 了解支持的订单类型和所需字段。

可能的值:

1 - MARKET

2 - LIMIT

3 - STOP

4 - STOP_LIMIT
18 ExecInst CHAR N 可能的值:

6 - PARTICIPATE_DONT_INITIATE
44 Price PRICE N 订单价格
54 Side CHAR Y 订单方向。

可能的值:

1 - BUY

2 - SELL
55 Symbol STRING Y 下单的交易对。
59 TimeInForce CHAR N 可能的值:

1 - GOOD_TILL_CANCEL

3 - IMMEDIATE_OR_CANCEL

4 - FILL_OR_KILL
111 MaxFloor QTY N 用于冰山订单,指定订单在订单簿上的可见数量。
152 CashOrderQty QTY N 以报价资产单位指定的订单数量,用于反向市场订单。
847 TargetStrategy INT N
7940 StrategyID INT N 值不能小于 1000000
25001 SelfTradePreventionMode CHAR N 可能的值:

1 - NONE

2 - EXPIRE_TAKER

3 - EXPIRE_MAKER

4 - EXPIRE_BOTH
1100 TriggerType CHAR N 可能的值: 4 - PRICE_MOVEMENT
1101 TriggerAction CHAR N 可能的值:

1 - ACTIVATE
1102 TriggerPrice PRICE N 止盈止损订单的激活价格。请参阅 表格
1107 TriggerPriceType CHAR N 可能的值:

2 - LAST_TRADE
1109 TriggerPriceDirection CHAR N 用于区分 StopLoss 和 TakeProfit 订单。请参阅 表格

可能的值:

U - TRIGGER_IF_THE_PRICE_OF_THE_SPECIFIED_TYPE_GOES_UP_TO_OR_THROUGH_THE_SPECIFIED_TRIGGER_PRICE

D - TRIGGER_IF_THE_PRICE_OF_THE_SPECIFIED_TYPE_GOES_DOWN_TO_OR_THROUGH_THE_SPECIFIED_TRIGGER_PRICE
25009 TriggerTrailingDeltaBips INT N 提供以创建追踪订单。
25032 SOR BOOLEAN N 是否为此订单激活 SOR。

示例消息:

8=FIX.4.4|9=114|35=D|34=2|49=qNXO12fH|52=20240611-09:01:46.228|56=SPOT|11=1718096506197867067|38=5|40=2|44=10|54=1|55=LTCBNB|59=4|10=016|

响应:

支持的订单类型
订单名称 Binance OrderType 方向 必填字段值 用户值必填字段
Market order MARKET BUY 或 SELL 40=1|
Limit order LIMIT BUY 或 SELL 40=2|
Limit maker order LIMIT_MAKER BUY 或 SELL 40=2|18=6|
Buy stop loss order STOP_LOSS BUY 40=3|1100=4|1101=1|1107=2|1109=U| 1102
Buy trailing stop loss order STOP_LOSS BUY 40=3|1100=4|1101=1|1107=2|1109=U| 1102,25009
Buy stop loss limit order STOP_LOSS_LIMIT BUY 40=4|1100=4|1101=1|1107=2|1109=U| 1102
Buy trailing stop loss limit order STOP_LOSS_LIMIT BUY 40=4|1100=4|1101=1|1107=2|1109=U| 1102,25009
Sell stop loss order STOP_LOSS SELL 40=3|1100=4|1101=1|1107=2|1109=D| 1102
Sell trailing stop loss order STOP_LOSS SELL 40=3|1100=4|1101=1|1107=2|1109=D| 1102,25009
Sell stop loss limit order STOP_LOSS_LIMIT SELL 40=4|1100=4|1101=1|1107=2|1109=D| 1102
Sell trailing stop loss limit order STOP_LOSS_LIMIT SELL 40=4|1100=4|1101=1|1107=2|1109=D| 1102,25009
Buy take profit order TAKE_PROFIT BUY 40=3|1100=4|1101=1|1107=2|1109=D| 1102
Buy trailing take profit order TAKE_PROFIT BUY 40=3|1100=4|1101=1|1107=2|1109=D| 1102,25009
Buy trailing take profit order TAKE_PROFIT BUY 40=3|1100=4|1101=1|1107=2| 25009
Buy take profit order TAKE_PROFIT_LIMIT BUY 40=4|1100=4|1101=1|1107=2|1109=D| 1102
Buy trailing take profit limit order TAKE_PROFIT_LIMIT BUY 40=4|1100=4|1101=1|1107=2|1109=D| 1102,25009
Buy trailing take profit limit order TAKE_PROFIT_LIMIT BUY 40=4|1100=4|1101=1|1107=2| 25009
Sell take profit order TAKE_PROFIT SELL 40=3|1100=4|1101=1|1107=2|1109=U| 1102
Sell trailing take profit order TAKE_PROFIT SELL 40=3|1100=4|1101=1|1107=2|1109=U| 1102,25009
Sell trailing take profit order TAKE_PROFIT SELL 40=3|1100=4|1101=1|1107=2| 25009
Sell take profit limit order TAKE_PROFIT_LIMIT SELL 40=4|1100=4|1101=1|1107=2|1109=U| 1102
Sell trailing take profit limit order TAKE_PROFIT_LIMIT SELL 40=4|1100=4|1101=1|1107=2|1109=U| 1102,25009
Sell trailing take profit limit order TAKE_PROFIT_LIMIT SELL 40=4|1100=4|1101=1|1107=2| 25009

基于 Binance OrderType 的必填字段:

Binance OrderType 额外的必填字段 额外的信息
LIMIT 38, 44, 59
MARKET 38 或 152 MARKET 订单使用 OrderQty (38) 字段来指定用户希望以市场价格买入或卖出的 base asset 数量。

例如,用户可以使用交易对为 BTCUSDTMARKET 订单来指定买入或卖出多少 BTC。



用户使用 MARKET 订单中的 quoteOrderQty 字段来指定花费(买入时)或接收(卖出时)quote 资产。正确的 quantity 将由市场流动性和 quoteOrderQty 来决定。

用交易对 BTCUSDT来举例:

BUY 方订单将使用由 quoteOrderQty 定义的 USDT 数额来购买尽可能多的 BTC。

SELL 方订单将出售 BTC 来换取尽可能多的由 CashOrderQty(152) 定义的 USDT 数额。
STOP_LOSS 38, 1102 或 25009 当满足条件时,将执行 MARKET 订单。(例如,满足 TriggerPrice (1102) 的条件或激活 TriggerTrailingDeltaBips (25009)
STOP_LOSS_LIMIT 38, 44, 59, 1102 或 25009
TAKE_PROFIT 38, 1102 或 25009 当满足条件时,这将执行MARKET订单。(例如,满足 TriggerPrice (1102) 的条件或激活 TriggerTrailingDeltaBips (25009)
TAKE_PROFIT_LIMIT 38, 44, 59, 1102 或 25009
LIMIT_MAKER 38, 44 这是一个 LIMIT 订单。如果订单被立即匹配并作为 taker 进行交易,那么该订单将被拒绝。

这也称为 POST-ONLY 订单。

ExecutionReport<8>

每当订单状态发生变化时由服务器发送。

注意:

  • 默认情况下,ExecutionReport<8> 会发送该账户的所有订单,包括在不同连接中提交的订单。 请参阅 响应模式 来了解其他行为选项。
  • FIX API 应该为 ExecutionReport<8> 推送提供更好的性能。
Tag 名称 类型 是否必须 描述
17 ExecID STRING N 被拒绝订单时省略。
11 ClOrdID STRING N 列表中分配的 ClOrdID
41 OrigClOrdID STRING N 订单的原始 ClOrdID
37 OrderID INT N 由交易所分配。
38 OrderQty QTY N 订单数量。
40 OrdType CHAR Y 可能的值:

1 - MARKET

2 - LIMIT

3 - STOP_LOSS

4 - STOP_LIMIT
54 Side CHAR Y 可能的值:

1 - BUY

2 - SELL
55 Symbol STRING Y 订单的交易对。
18 ExecInst CHAR N 可能的值:

6 - PARTICIPATE_DONT_INITIATE
44 Price PRICE N 订单价格。
59 TimeInForce CHAR N 可能的值:

1 - GOOD_TILL_CANCEL

3 - IMMEDIATE_OR_CANCEL

4 - FILL_OR_KILL
60 TransactTime UTCTIMESTAMP N 此事件发生的时间戳。
25018 OrderCreationTime INT N
111 MaxFloor QTY N 出现在冰山订单中。
66 ListID STRING N 出现在列表订单中。
152 CashOrderQty QTY N 以 quote asset 单位指定的订单数量。
847 TargetStrategy INT N 订单提交请求中的 TargetStrategy (847)
7940 StrategyID INT N 订单提交请求中的 StrategyID (7940)
25001 SelfTradePreventionMode CHAR N 可能的值:

1 - NONE

2 - EXPIRE_TAKER

3 - EXPIRE_MAKER

4 - EXPIRE_BOTH
150 ExecType CHAR Y 注意: 如果订单因 SelfTradePreventionMode(25013) 过期,字段 PreventedMatchID(25024) 会被显示。

可能的值:

0 - NEW

4 - CANCELED

5 - REPLACED

8 - REJECTED

F - TRADE

C - EXPIRED
14 CumQty QTY Y 在此订单上交易的 base asset 总数。
151 LeavesQty QTY N 剩余的可执行数量。
25017 CumQuoteQty QTY N 在此订单上交易的 quote asset 总数。
1057 AggressorIndicator BOOLEAN N 出现在 trade execution reports 中。

指示订单在交易中是否为 taker。
1003 TradeID STRING N 出现在 trade execution reports 中。
31 LastPx PRICE N 最后一次执行的价格。
32 LastQty QTY Y 最后一次执行的数量。
39 OrdStatus CHAR Y 可能的值:

0 - NEW

1 - PARTIALLY_FILLED

2 - FILLED

4 - CANCELED 6 - PENDING_CANCEL

8 - REJECTED

A - PENDING_NEW

C - EXPIRED

注意 FIX 不支持 EXPIRED_IN_MATCH 状态,并在 FIX 中转换为 EXPIRED
70 AllocID INT N 由交易所分配的分配 ID。
574 MatchType INT N 可能的值:

1 - ONE_PARTY_TRADE_REPORT

4 - AUTO_MATCH
25021 WorkingFloor INT N 出现在可能有分配的订单中。
25022 TrailingTime UTCTIMESTAMP N 仅出现在追踪止损订单中。
636 WorkingIndicator BOOLEAN N 当此订单进入订单簿时会被设置为 Y
25023 WorkingTime UTCTIMESTAMP N 此订单出现在订单簿上的时间。
25024 PreventedMatchID INT N 仅出现在因 STP 过期的订单中。
25025 PreventedExecutionPrice PRICE N 仅出现在因 STP 过期的订单中。
25026 PreventedExecutionQty QTY N 仅出现在因 STP 过期的订单中。
25027 TradeGroupID INT N 仅出现在因 STP 过期的订单中。
25028 CounterSymbol STRING N 仅出现在因 STP 过期的订单中。
25029 CounterOrderID INT N 仅出现在因 STP 过期的订单中。
25030 PreventedQty QTY N 仅出现在因 STP 过期的订单中。
25031 LastPreventedQty QTY N 仅出现在因 STP 过期的订单中。
25032 SOR BOOLEAN N 出现在使用 SOR 的订单中。
25016 ErrorCode INT N API 错误代码(请参阅 错误代码)。
58 Text STRING N 可读的错误消息。
136 NoMiscFees NUMINGROUP N 杂费的重复组数量。
=>137 MiscFeeAmt QTY Y MiscFeeCurr(138) 资产计价的费用金额
=>138 MiscFeeCurr STRING Y 杂费的货币。
=>139 MiscFeeType INT Y 可能的值:

4 - EXCHANGE_FEES
1100 TriggerType CHAR N 可能的值:

4 - PRICE_MOVEMENT
1101 TriggerAction CHAR N 可能的值:

1 - ACTIVATE
1102 TriggerPrice PRICE N 止盈止损订单的激活价格。请参阅 表格
1107 TriggerPriceType CHAR N 可能的值:

2 - LAST_TRADE
1109 TriggerPriceDirection CHAR N 用于区分止损和止盈订单。请参阅 表格

可能的值:

U - TRIGGER_IF_THE_PRICE_OF_THE_SPECIFIED_TYPE_GOES_UP_TO_OR_THROUGH_THE_SPECIFIED_TRIGGER_PRICE

D - TRIGGER_IF_THE_PRICE_OF_THE_SPECIFIED_TYPE_GOES_DOWN_TO_OR_THROUGH_THE_SPECIFIED_TRIGGER_PRICE
25009 TriggerTrailingDeltaBips INT N 仅出现在追踪止损订单中。

示例消息:

8=FIX.4.4|9=330|35=8|34=2|49=SPOT|52=20240611-09:01:46.228950|56=qNXO12fH|11=1718096506197867067|14=0.00000000|17=144|32=0.00000000|37=76|38=5.00000000|39=0|40=2|44=10.00000000|54=1|55=LTCBNB|59=4|60=20240611-09:01:46.228000|150=0|151=5.00000000|636=Y|1057=Y|25001=1|25017=0.00000000|25018=20240611-09:01:46.228000|25023=20240611-09:01:46.228000|10=095|

OrderCancelRequest<F>

由客户发送的,用以取消订单或订单列表。

  • 要取消订单,需要 OrderID (11)OrigClOrdID (41)
  • 要取消订单列表,需要 ListID (66)OrigClListID (25015)

如果已取消的订单是订单列表的一部分,则整个订单列表将被取消。

Tag 名称 类型 是否必须 描述
11 ClOrdID STRING Y 请求的 ClOrdID
41 OrigClOrdID STRING N 要取消订单的 ClOrdID (11)
37 Order ID STRING N 要取消订单的 OrderID (37)
25015 OrigClListID STRING N 要取消订单列表的 ClListID (25014)
66 ListID STRING N 要取消订单列表的 ListID (66)
55 Symbol STRING Y 要取消订单的交易对。
25002 CancelRestrictions INT N 取消的限制。可能的值:

1 - ONLY_NEW

2 - ONLY_PARTIALLY_FILLED

示例消息:

8=FIX.4.4|9=93|35=F|34=2|49=ieBwvCKy|52=20240613-01:11:13.784|56=SPOT|11=1718241073695674483|37=2|55=LTCBNB|10=210|

响应:

OrderCancelReject <9>

OrderCancelRequest<F> 失败时,由服务器发送的消息。

Tag 名称 类型 是否必须 描述
11 ClOrdID STRING Y 来自取消请求的 ClOrdID (11)
41 OrigClOrdID STRING N 来自取消请求的 OrigClOrdID (41)
37 OrderID INT N 来自取消请求的 OrderID (37)
25015 OrigClListID STRING N 来自取消请求的 OrigClListID (25015)
66 ListID STRING N 来自取消请求的 ListID (66)
55 Symbol STRING Y 来自取消请求的 Symbol (55)
25002 CancelRestrictions INT N 来自取消请求的 CancelRestrictions (25002)
434 CxlRejResponseTo CHAR Y 此 OrderCancelReject<9> 响应的请求类型。

可能的值:

1 - ORDER_CANCEL_REQUEST
25016 ErrorCode INT Y API error code (参考 错误代码).
58 Text STRING Y 可读的错误消息。

示例消息:

8=FIX.4.4|9=137|35=9|34=2|49=SPOT|52=20240613-01:12:41.320869|56=OlZb8ht8|11=1718241161272843932|37=2|55=LTCBNB|58=Unknown order sent.|434=1|25016=-1013|10=087|

OrderCancelRequestAndNewOrderSingle<XCN>

由客户发送,用以取消订单并提交新订单以供执行。 在描述新订单时,请参阅 支持的订单类型 了解支持的字段组合。

注意: 取消始终是优先处理的,紧接着的是提交新订单。

Tag 名称 类型 是否必须 描述
25033 OrderCancelRequestAndNewOrderSingleMode INT Y 用于定义: 如果取消失败,将会采取的后续操作 。
可能的值 :
1 - STOP_ON_FAILURE

2 -ALLOW_FAILURE
25038 OrderRateLimitExceededMode INT N 用于定义: 如果超过未成交订单计数,将会如何处理取消请求。
可能的值 :
1 - DO_NOTHING

2 - CANCEL_ONLY
37 OrderID INT N 来自于取消订单的 OrderID
25034 CancelClOrdID STRING N 待取消的 ClOrdID
41 OrigClOrdID STRING N 来自待取消订单的 ClOrdID
11 ClOrdID STRING Y 用于分配给新订单的 ClOrdID
25002 CancelRestrictions INT N 取消的限制。可能值 :

1 - ONLY_NEW

2 - ONLY_PARTIALLY_FILLED
38 OrderQty QTY N 新订单的数量
40 OrdType CHAR Y 请参阅 [表格](#ordertype)以了解支持的订单类型以及相关的必填字段 。

可能的值 :

1 - MARKET

2 - LIMIT

3 - STOP

4 - STOP_LIMIT
18 ExecInst CHAR N 可能的值:

6 - PARTICIPATE_DONT_INITIATE
44 Price PRICE N 新订单的价格
54 Side CHAR Y 订单方向。

可能的值:

1 - BUY

2 - SELL
55 Symbol STRING Y 取消并下新订单所用的交易对。
59 TimeInForce CHAR N 可能的值 :

1 - GOOD_TILL_CANCEL

3 - IMMEDIATE_OR_CANCEL

4 - FILL_OR_KILL
111 MaxFloor QTY N 用于冰山订单,用于定义订单在 orderbook 上的可见数量。
152 CashOrderQty QTY N 用于反向市价单,用于定义 quote asset 单位中的订单数量。
847 TargetStrategy INT N
7940 StrategyID INT N 该值不能小于 1000000
25001 SelfTradePreventionMode CHAR N 可能的值:

1 - NONE

2 - EXPIRE_TAKER

3 - EXPIRE_MAKER

4 - EXPIRE_BOTH
1100 TriggerType CHAR N 可能的值: 4 - PRICE_MOVEMENT
1101 TriggerAction CHAR N 可能的值:

1 - ACTIVATE
1102 TriggerPrice PRICE N 止盈止损订单的激活价格。参见 表格
1107 TriggerPriceType CHAR N 可能的值

2 - LAST_TRADE
1109 TriggerPriceDirection CHAR N 用于区分止损订单和止盈订单。参考 表格 .

可能的值 :

U - TRIGGER_IF_THE_PRICE_OF_THE_SPECIFIED_TYPE_GOES_UP_TO_OR_THROUGH_THE_SPECIFIED_TRIGGER_PRICE

D -TRIGGER_IF_THE_PRICE_OF_THE_SPECIFIED_TYPE_GOES_DOWN_TO_OR_THROUGH_THE_SPECIFIED_TRIGGER_PRICE
25009 TriggerTrailingDeltaBips INT N 用以创建追踪订单。

示例消息:

8=FIX.4.4|9=160|35=XCN|34=2|49=JS8iiXK6|52=20240613-02:31:53.753|56=SPOT|11=1718245913721036458|37=8|38=5|40=2|44=4|54=1|55=LTCBNB|59=1|111=1|25033=1|25034=1718245913721036819|10=229|

响应:

OrderMassCancelRequest<q>

由客户端发送,用以取消交易品种上的所有挂单。

注意事项: 该账户的所有订单都将被取消,包括从不同连接中下的订单。

Tag 名称 类型 是否必须 描述
11 ClOrdID STRING Y 此批量取消请求的ClOrdId
55 Symbol STRING Y 取消订单的交易对。
530 MassCancelRequestType CHAR Y 可能的值:

1 - CANCEL_SYMBOL_ORDERS

示例消息:

8=FIX.4.4|9=94|35=q|34=2|49=dpYPesqv|52=20240613-01:24:36.948|56=SPOT|11=1718241876901971671|55=ABCDEF|530=1|10=110|

响应:

由服务器发送,用以响应 OrderMassCancelRequest<q>

Tag 名称 类型 是否必须 描述
55 Symbol STRING Y 取消请求中的 Symbol (55)
11 ClOrdID STRING Y 取消请求中的 ClOrdID (11)
530 MassCancelRequestType CHAR Y 取消请求中的 MassCancelRequestType (530)
531 MassCancelResponse CHAR Y 可能的值:

0 - CANCEL_REQUEST_REJECTED

1 - CANCEL_SYMBOL_ORDERS
532 MassCancelRejectReason INT N 可能的值:

99 - OTHER
533 TotalAffectedOrders INT N 取消了多少订单。
25016 ErrorCode INT N API 错误代码 (参考 错误代码).
58 Text STRING N 可读的错误消息。

示例消息:

8=FIX.4.4|9=109|35=r|34=2|49=SPOT|52=20240613-01:24:36.949763|56=dpYPesqv|11=1718241876901971671|55=LTCBNB|530=1|531=1|533=5|10=083|

NewOrderList<E>

由客户发送,用以提交需要执行的订单列表。 订单列表中的订单是相互依赖的。 欲了解支持的订单类型和触发说明,请参考支持的订单列表类型

Tag 名称 类型 是否必须 描述
25014 ClListID STRING Y ClListID,用于分配给订单列表。
1385 ContingencyType INT N 可能的值 :

1 -ONE_CANCELS_THE_OTHER

2 - ONE_TRIGGERS_THE_OTHER
73 NoOrders NUMINGROUP N Orders 数组中的元素个数。只允许输入2或者3。
=>11 ClOrdID STRING Y 用于分配给订单的ClOrdID
=>38 OrderQty QTY N 订单数量
=>40 OrdType CHAR Y 请参阅 表格 以了解支持的订单类型及相关的必填字段 。

可能的值 :

1 - MARKET

2 - LIMIT

3 - STOP

4 - STOP_LIMIT
=>18 ExecInst CHAR N 可能的值:

6 - PARTICIPATE_DONT_INITIATE
=>44 Price PRICE N 订单价格
=>54 Side CHAR Y 订单的方向。 可能的值 :

1 - BUY

2 - SELL
=>55 Symbol STRING Y 订单的交易对。
=>59 TimeInForce CHAR N 可能的值 :

1 - GOOD_TILL_CANCEL

3 - IMMEDIATE_OR_CANCEL

4 - FILL_OR_KILL
=>111 MaxFloor QTY N 用于冰山订单,这指定了订单在 order book上的可见数量。
=>152 CashOrderQty QTY N 对于反向市场订单,在报价资产单位中指定的订单数量。
=>847 TargetStrategy INT N
=>7940 StrategyID INT N 该值不能小于 1000000.
=>25001 SelfTradePreventionMode CHAR N 可能的值:

1 - NONE

2 - EXPIRE_TAKER

3 - EXPIRE_MAKER

4 - EXPIRE_BOTH
=>1100 TriggerType CHAR N 可能的值:

4 - PRICE_MOVEMENT
=>1101 TriggerAction CHAR N 可能的值:

1 - ACTIVATE
=>1102 TriggerPrice PRICE N 止盈止损订单的激活价格。参见 表格
=>1107 TriggerPriceType CHAR N 可能的值:

2 - LAST_TRADE
=>1109 TriggerPriceDirection CHAR N 用于区分止损订单和止盈订单。 参见 表格.

可能的值:

U - TRIGGER_IF_THE_PRICE_OF_THE_SPECIFIED_TYPE_GOES_UP_TO_OR_THROUGH_THE_SPECIFIED_TRIGGER_PRICE

D - TRIGGER_IF_THE_PRICE_OF_THE_SPECIFIED_TYPE_GOES_DOWN_TO_OR_THROUGH_THE_SPECIFIED_TRIGGER_PRICE
=>25009 TriggerTrailingDeltaBips INT N 用于追踪订单。
=>25010 NoListTriggeringInstructions NUMINGROUP N ListTriggeringInstructions 数组中的元素个数。
==>25011 ListTriggerType CHAR N 为了触发 pending order, working order 所需进行的操作。

可能的值:

1 - ACTIVATED

2 - PARTIALLY_FILLED

3 - FILLED
==>25012 ListTriggerTriggerIndex INT N 条件单的触发 Index:0-indexed。
==>25013 ListTriggerAction CHAR N 在满足 ListTriggerType 条件后对此订单执行的操作。

可能的值:

1 - RELEASE

2 - CANCEL

示例消息:

8=FIX.4.4|9=236|35=E|34=2|49=Eg13pOvN|52=20240607-02:19:07.836|56=SPOT|73=2|11=w1717726747805308656|55=LTCBNB|54=2|38=1|40=2|44=0.25|59=1|11=p1717726747805308656|55=LTCBNB|54=2|38=1|40=1|25010=1|25011=3|25012=0|25013=1|1385=2|25014=1717726747805308656|10=171|

支持的订单列表类型

注意: 订单必须按照下表中 订单名称 中指定的顺序排列。

订单列表名称 应急类型(1385) 订单名称 订单方 允许的币安订单类型 列出触发指令
OCO 1 1. below order



2. above order
1. below order=SELL



2. above order=SELL
1. below order=STOP_LOSSSTOP_LOSS_LIMIT



2. above order=LIMIT_MAKER
1. below order:

25010=1|25011=2|25012=1|25013=2|



2. above order:

25010=1|25011=1|25012=0|25013=2|
OCO 1 1. below order



2. above order
1. below order=BUY



2. above order=BUY
1. below order=LIMIT_MAKER



2. above order=STOP_LOSSSTOP_LOSS_LIMIT
1. below order:

25010=1|25011=1|25012=1|25013=2|



2. above order:

25010=1|25011=2|25012=0|25013=2|
OTO 2 1. working order



2. pending order
1. working order=SELLBUY



2. pending order=SELLBUY
1. working order=LIMITLIMIT_MAKER



2. pending order=ANY
1. working order:

NONE



2. pending order:

25010=1|25011=3|25012=0|25013=1|
OTOCO 2 1. working order



2. pending below order



3. pending above order
1. working order=SELLBUY



2. pending below order=SELL



3. pending above order=SELL
1. working order=LIMITLIMIT_MAKER



2. pending below order=STOP_LOSSSTOP_LOSS_LIMIT



3. pending above order=LIMIT_MAKER
1. working order:

NONE



2. pending below order:

25010=2|25011=3|25012=0|25013=2|25011=2|25012=2|25013=2|



3. pending above order:

25010=2|25011=3|25012=0|25013=2|25011=1|25012=1|25013=2|
OTOCO 2 1. working order



2. pending below order



3. pending above order
1. working order=SELLBUY



2. pending below order=BUY



3. pending above order=BUY
1. working order=LIMITLIMIT_MAKER



2. pending below order=LIMIT_MAKER



3. pending above order=STOP_LOSSSTOP_LOSS_LIMIT
1. working order:

NONE



2. pending below order:

25010=2|25011=3|25012=0|25013=2|25011=1|25012=2|25013=2|



3. pending above order:

25010=2|25011=3|25012=0|25013=2|25011=2|25012=1|25013=2|

ListStatus<N>

每当订单列表状态发生变化时,由服务器发送的消息。

注意: 默认情况下,ListStatus<N> 会含有该账户的所有订单列表,包括在不同连接中提交的订单列表。 请参阅 响应模式 来了解其他行为选项。

Tag 名称 类型 是否必须 描述
55 Symbol STRING Y 订单列表的交易对。
66 ListID STRING N 由交易所分配的订单列表 ListID
25014 ClListID STRING N 分配给请求的订单列表 ClListID
25015 OrigClListID STRING N
1385 ContingencyType INT N 可能的值:

1 - ONE_CANCELS_THE_OTHER

2 - ONE_TRIGGERS_THE_OTHER
429 ListStatusType INT Y 可能的值:

2 - RESPONSE

4 - EXEC_STARTED

5 - ALL_DONE
431 ListOrderStatus INT Y 可能的值:

3 - EXECUTING

6 - ALL_DONE

7 - REJECT
1386 ListRejectReason INT N 可能的值:

99 - OTHER
103 OrdRejReason INT N 可能的值:

99 - OTHER
60 TransactTime UTCTIMESTAMP N 发生此事件时的时间戳。
25016 ErrorCode INT N API 错误代码 (参考 错误代码 ).
58 Text STRING N 可读的错误消息。
73 NoOrders NUMINGROUP N Orders 数组中的元素个数。
=>55 Symbol STRING Y 订单的交易对。
=>37 OrderID INT Y 由交易所分配的订单 OrderID
=>11 ClOrdID STRING Y 分配给请求的订单 ClOrdID
=>25010 NoListTriggeringInstructions NUMINGROUP N ListTriggeringInstructions 数组中的元素个数。
==>25011 ListTriggerType CHAR N 可能的值:

1 - ACTIVATED

2 - PARTIALLY_FILLED

3 - FILLED
==>25012 ListTriggerTriggerIndex INT N
==>25013 ListTriggerAction CHAR N 可能的值

1 - RELEASE

2 - CANCEL

示例消息:

8=FIX.4.4|9=290|35=N|34=2|49=SPOT|52=20240607-02:19:07.837191|56=Eg13pOvN|55=ABCDEF|60=20240607-02:19:07.836000|66=25|73=2|55=LTCBNB|37=52|11=w1717726747805308656|55=ABCDEF|37=53|11=p1717726747805308656|25010=1|25011=3|25012=0|25013=1|429=4|431=3|1385=2|25014=1717726747805308656|25015=1717726747805308656|10=019|

Limit Messages

LimitQuery<XLQ>

由客户端发送,用于查询当前限制。

Tag 名称 类型 是否必须 描述
6136 ReqID STRING Y 此请求的 ID

示例消息:

8=FIX.4.4|9=82|35=XLQ|34=2|49=7buKHZxZ|52=20240614-05:35:35.357|56=SPOT|6136=1718343335357229749|10=170|

LimitResponse<XLR>

由服务器发送,以响应 LimitQuery<XLQ> 请求。

Tag 名称 类型 是否必须 描述
6136 ReqID STRING Y ReqID
25003 NoLimitIndicators NUMINGROUP Y LimitIndicator 数组中的元素个数。
=>25004 LimitType CHAR Y 可能的值

1 - ORDER_LIMIT

2 - MESSAGE_LIMIT
=>25005 LimitCount INT Y 此限制的当前使用情况。
=>25006 LimitMax INT Y 此限制允许的最大值。
=>25007 LimitResetInterval INT N 限制重置的频率。
=>25008 LimitResetIntervalResolution CHAR N LimitResetInterval 的时间单位。可能的值:

s - SECOND

m - MINUTE

h - HOUR

d - DAY

示例消息:

8=FIX.4.4|9=225|35=XLR|34=2|49=SPOT|52=20240614-05:42:42.724057|56=uGnG0ef8|6136=1718343762723730315|25003=3|25004=2|25005=1|25006=1000|25007=10|25008=s|25004=1|25005=0|25006=200|25007=10|25008=s|25004=1|25005=0|25006=200000|25007=1|25008=d|10=241|