跳转至

cTrader FIX 引擎(参与规则)

简介

范围

本规范旨在作为 cTrader FIX 引擎 API 的实施指南,供软件开发人员使用。

FIX 版本

cTrader 支持 FIX 4.4 版本。 有关此版本的更多信息,请参阅这些 规范

连接性

连接类型

可以通过互联网、VPN 隧道或与我们在英国的数据中心设施的交叉连接来连接 cTrader 的 FIX 引擎。 联系我们以获取更多详细信息。

序列号重置

FIX 会话的所有方在建立 FIX 会话时都应重置序列号。 请参阅登录消息。

消息

如 FIX 协议中定义的,cTrader FIX 服务器使用两个不同的数据级别(系统和应用程序)。 请注意,这是支持必要工作流程所需的最小消息集。 随着业务需求和 FIX 标准的发展,它可能会随时间而变化。

cTrader FIX 引擎

系统消息

  • Heartbeat(客户端 ↔ cTrader)
  • Test Request(客户端 ↔ cTrader)
  • Logon(客户端 → cTrader)
  • Logout(客户端 → cTrader)
  • Resend Request(客户端 ↔ cTrader)
  • Reject(客户端 ↔ cTrader)
  • Sequence Reset(客户端 ↔ cTrader)

应用程序消息

  • Market Data Request(客户端 → cTrader)
  • Market Data Snapshot/Full Refresh(客户端 ← cTrader)
  • Market Data Incremental Refresh(客户端 ← cTrader)
  • New Order Single(客户端 → cTrader)
  • Order Status Request(客户端 → cTrader)
  • Order Mass Status Request(客户端 → cTrader)
  • Execution Report(客户端 ← cTrader)
  • Business Message Reject(客户端 ← cTrader)
  • Request for Positions(客户端 → cTrader)
  • Position Report(客户端 ← cTrader)
  • Order Cancel Request(客户端 → cTrader)
  • Order Cancel Reject(客户端 ← cTrader)
  • Order Cancel/Replace Request(客户端 → cTrader)
  • Security List Request(客户端 → cTrader)
  • Security List(客户端 ← cTrader)

标准头

每个管理或应用程序消息前都有一个标准头。 标头用于识别消息类型、长度、目的地、序列号、发起点和时间。

发送给cTrader的所有消息都应包含以下字段的标准标头:

Tag 字段名称 必填 FIX格式 备注
8 BeginString FIX.4.4 String 始终未加密,必须是消息中的第一个字段。
9 BodyLength 任何有效值 Integer 消息正文长度。 始终未加密,必须是消息中的第二个字段。
35 MsgType A String 消息类型。 始终未加密,必须是消息中的第三个字段。
49 SenderCompID 任何有效值 String 交易方ID,格式如下:<Environment>.<BrokerUID>,.其中Environment是服务器的确定,如demo或live;BrokerUID由cTrader提供,Trader Login是交易者账户的数字标识符。
56 TargetCompID CSERVER String 消息目标。 The valid value is CSERVER.
57 TargetSubID QUOTETRADE String 附加会话限定符。 可能的值为QUOTETRADE
50 SenderSubID 任何有效值 String 用于识别特定消息发起者的指定值。 如果TargetSubID=QUOTE,则必须设置为QUOTE
34 MsgSeqNum 1 Integer 消息的序列号。
52 SendingTime 20131129-15:40:08.155 UTCTimestamp 消息传输时间,始终以UTC(协调世界时,也称为GMT)表示。

标准尾部

每条消息(管理或应用)都以标准尾部结束。 尾部用于分隔消息,包含CheckSum(tag=10)值的三位数表示。

Tag 字段名称 必填 FIX格式 备注
10 CheckSum 054 String 简单的三字节校验和。 始终是消息中的最后一个字段(例如,用作),尾随的<SOH>作为消息结束分隔符。 定义为三个字符(始终未加密)。

会话消息

Heartbeat (MsgType(35)=0)

心跳消息由cTrader和客户端应用程序发送,以确认连接处于活动状态。

提供商的客户端应用程序以登录消息中HeartBtInt(tag=108)字段定义的间隔发送重复心跳,或作为测试请求消息的响应。

Tag 字段名称 必填 FIX格式 备注
Standard Header
112 TestReqID 任何有效值 String 如果心跳是测试请求消息的结果,则需要TestReqID
Standard Trailer

Test Request (MsgType(35)=1)

它强制请求接收方发送心跳。 接收系统从发送包含TestReqID的心跳消息作为响应。

Tag 字段名称 必填 FIX格式 备注
Standard Header
112 TestReqID 任何有效值 String 心跳消息ID。 TestReqID应该是递增的。
Standard Trailer

Logon (bidirectional) (MsgType(35)=A)

登录消息从客户端应用程序发送以开始cTrader FIX会话,cTrader向客户端应用程序发送响应。 一旦登录完成,报价和交易流程就可以在会话的生命周期内进行。

如果cTrader收到无效的登录消息(字段无效),cTrader会发送登出消息作为响应。

Tag 字段名称 必填 FIX格式 备注
Standard Header
98 EncryptMethod 0 Integer 定义消息加密方案。 目前仅支持传输级安全性。 有效值为0 = NONE_OTHER(不使用加密)。
108 HeartBtInt 任何有效值 Integer 心跳间隔(秒)。 该值在config.properties文件(客户端)中设置为SERVER.POLLING.INTERVAL。 默认间隔值为30秒。 如果HeartBtInt设置为0,则不需要心跳消息。
141 ResetSeqNumFlag Y Boolean FIX会话的所有方都应重置序列号。 有效值为Y(重置)。
553 Username 任何有效值 String 数字用户ID。 该用户与SenderCompID值(用户的组织,tag=49)相关联。
554 Password 任何有效值 String 用户密码。
Standard Trailer

注意

Username字段(tag=553)必须包含数字交易者登录值,而SenderCompID(tag=49)必须包含环境、BrokerUID和以点分隔的交易者登录(例如,live.theBroker.12345)。

请参见下面的登录消息示例。

请求:

8=FIX.4.4|9=126|35=A|49=live.theBroker.12345|56=CSERVER|34=1|52=20170117-08:03:04|57=TRADE|50=any_string|98=0|108=30|141=Y|553=12345|554=passw0rd!|10=131|

响应(成功):

8=FIX.4.4|9=106|35=A|34=1|49=CSERVER|50=TRADE|52=20170117-08:03:04.509|56=live.theBroker.12345|57=any_string|98=0|108=30|141=Y|10=066|

响应(失败):

8=FIX.4.4|9=109|35=5|34=1|49=CSERVER|50=TRADE|52=20170117-08:03:04.509|56=live.theBroker.12345|58=InternalError: RET_INVALID_DATA|10=033|

Logout (MsgType(35)=5)

登出消息从客户端应用程序发送,请求结束与cTrader的会话,并作为cTrader的响应。 当市场参与者向cTrader发送登出消息时,会发生会话登出。 在终止会话之前,cTrader将取消所有仍在主动向请求方流出的价格。 如果cTrader收到无效的登录消息(字段无效),cTrader会发送登出消息作为响应,并在Text(tag=58)字段中提供错误详情。

Tag 字段名称 必填 FIX格式 备注
Standard Header
58 Text 任何有效值 String 登录拒绝详情。 仅用于cTrader到客户端的消息,作为无效登录消息的响应。
Standard Trailer

请参阅下面的登出消息示例。

请求:

8=FIX.4.4|9=86|35=5|49=live.theBroker.12345|56=CSERVER|34=161|52=20170117-09:22:33|57=TRADE|50=any_string|10=102|

响应:

8=FIX.4.4|9=90|35=5|34=160|49=CSERVER|50=TRADE|52=20170117-09:22:33.077|56=live.theBroker.12345|57=any_string|10=044|

Resend Request (MsgType(35)=2)

入站/出站消息用于请求重新发送一条或多条消息,通常在检测到序列编号存在差距时使用。

Tag 字段名称 必填 FIX格式 备注
Standard Header
7 BeginSeqNo 任何有效值 Integer 要重新发送的范围内第一条记录的消息序列号。
16 EndSeqNo 任何有效值 Integer 要重新发送的范围内最后一条记录的消息序列号。
Standard Trailer

Reject (bidirectional) (MsgType(35)=3)

当收到的消息由于违反会话级规则而无法处理时发送。 被拒绝的消息必须被记录,并且必须对传入的序列号进行递增。

Tag 字段名称 必填 FIX格式 备注
Standard Header
45 RefSeqNum 任何有效值 SeqNum 引用消息的序列号。
58 Text 任何有效值 String 自由格式的文本字符串。
354 EncodedTextLen 任何有效值 长度 EncodedText(非ASCII字符)字段的字节长度。
355 EncodedText 任何有效值 数据 使用MessageEncoding(标签=347)字段(来自标准头)中指定的格式编码的Text(标签=58)字段的表示。 如果使用ASCII表示,也应在Text(标签=58)字段中指定。
371 RefTagID 任何有效值 Integer 引发消息拒绝的FIX字段的标签号。
372 RefMsgType 任何有效值 String 引用的FIX消息的MsgType(标签=35)。
373 SessionRejectReason 任何有效值 Integer 拒绝的编码原因。 有效值为:
0 = 无效的标签号
1 = 缺少必需的标签
2 = 此消息类型未定义标签
3 = 未定义的标签
4 = 指定标签没有值
5 = 此标签的值超出范围
6 = 值的数据格式不正确
7 = 解密问题
8 = 签名错误
9 = CompID错误
10 = SendingTime精度错误
11 = MsgType无效
12 = XML验证错误
13 = 标签重复
14 = 指定的标签顺序不正确
15 = 重复组字段顺序不正确
16 = 重复组的NumInGroup计数不正确
17 = 非数据值中包含字段分隔符(SOH字符)
Standard Trailer

Sequence Reset (MsgType(35)=4)

入站/出站消息不应在应用程序级别使用。 序列重置消息只能增加序列号。

Tag 字段名称 必填 FIX格式 备注
Standard Header
123 GapFillFlag YesNo String 表示序列重置消息正在替换不会重新发送的管理或应用程序消息。
36 NewSeqNo 1 Integer 新的序列号。
Standard Trailer

应用程序消息

Market Data Request (MsgType(35)=V)

Tag 字段名称 必填 FIX格式 备注
Standard Header
262 MDReqID 任何有效值 String 唯一的报价请求ID。 新订阅使用新ID,取消订阅时使用与之前相同的ID。
263 SubscriptionRequestType 12 字符 1 = 快照加更新(订阅)。
2 = 禁用先前的快照加更新请求(取消订阅)。
264 MarketDepth 01 Integer 将提供完整订单簿。
0 = 深度订阅
1 = 现货订阅
265 MDUpdateType 任何有效值 Integer 仅支持增量刷新。
267 NoMDEntryTypes 2 Integer 始终设置为2(将发送买卖双方)。
269 MDEntryType 01 字符 此重复组包含请求者希望接收的所有类型的市场数据条目列表。
0 = Bid
1 = Offer
146 NoRelatedSym 任何有效值 Integer 请求的符号数量。
55 Symbol 任何有效值 多头 工具标识符由Spotware提供。
Standard Trailer

请参阅下面的市场数据请求消息示例。

对于现货

请求:

8=FIX.4.4|9=131|35=V|49=live.theBroker.12345|56=CSERVER|34=3|52=20170117-10:26:54|50=QUOTE|262=876316403|263=1|264=1|265=1|146=1|55=1|267=2|269=0|269=1|10=094|

响应:

8=FIX.4.4|9=134|35=W|34=2|49=CSERVER|50=QUOTE|52=20170117-10:26:54.630|56=live.theBroker.12345|57=any_string|55=1|268=2|269=0|270=1.06625|269=1|270=1.0663|10=118|

对于深度

请求:

8=FIX.4.4|9=131|35=V|49=live.theBroker.12345|56=CSERVER|34=2|52=20170117-11:13:44|50=QUOTE|262=876316411|263=1|264=0|265=1|146=1|55=1|267=2|269=0|269=1|10=087|

响应:

8=FIX.4.4|9=310|35=W|34=2|49=CSERVER|50=QUOTE|52=20180925-12:05:28.284|56=live.theBroker.12345|57=Quote|55=1|268=6|269=1|270=1.11132|271=3000000|278=16|269=1|270=1.11134|271=5000000|278=17|269=1|270=1.11133|271=3000000|278=15|269=0|270=1.1112|271=2000000|278=12|269=0|270=1.11121|271=1000000|278=13|269=0|270=1.11122|271=3000000|278=14|10=247|
8=FIX.4.4|9=693|35=X|34=2|49=CSERVER|50=QUOTE|52=20170117-11:13:44.461|56=live.theBroker.12345|57=any_string|268=12|279=0|269=1|278=7475|55=1|270=1.0691|271=2000000|279=0|269=1|278=7476|55=1|270=1.06911|271=3000000|279=0|269=1|278=7484|55=1|270=1.06931|271=34579000|279=0|269=1|278=7485|55=1|270=1.06908|271=1000000|279=0|269=1|278=7483|55=1|270=1.06906|271=500000|279=0|269=1|278=7482|55=1|270=1.06907|271=500000|279=0|269=1|278=7488|55=1|270=1.06909|271=3000000|279=0|269=0|278=7468|55=1|270=1.06898|271=500000|279=0|269=0|278=7467|55=1|270=1.06874|271=32371000|279=0|269=0|278=7457|55=1|270=1.06899|271=1000000|279=0|269=0|278=7478|55=1|270=1.06896|271=7000000|279=0|269=0|278=7477|55=1|270=1.06897|271=1500000|10=111|
8=FIX.4.4|9=376|35=X|34=3|49=CSERVER|50=QUOTE|52=20170117-11:13:44.555|56=live.theBroker.12345|57=any_string|268=8|279=0|269=0|278=7491|55=1|270=1.06897|271=1000000|279=0|269=0|278=7490|55=1|270=1.06898|271=1000000|279=0|269=0|278=7489|55=1|270=1.06874|271=32373000|279=0|269=1|278=7496|55=1|270=1.06931|271=34580000|279=2|278=7477|55=1|279=2|278=7468|55=1|279=2|278=7467|55=1|279=2|278=7484|55=1|10=192|

Market Data Snapshot/Full Refresh (MsgType(35)=W)

Tag 字段名称 必填 FIX格式 备注
Standard Header
262 MDReqID 任何有效值 String 先前发送的市场数据请求的ID。
55 Symbol 任何有效值 多头 工具标识符由Spotware提供。
268 NoMDEntries 任何有效值 Integer 后续条目的数量。
269 MDEntryType 01 字符 有效值为:
0 = 买入
1 = 卖出
仅当NoMDEntries(标签=268)> 0时才需要。
299 QuoteEntryID 任何有效值 String 作为QuoteSet一部分的报价的唯一标识。
270 MDEntryPx 1.2345 价格 市场数据条目的价格。 仅当 NoMDEntries (标签=268) > 0 时需要。
271 MDEntrySize 500000 交易量 市场数据条目的交易量。 仅当 NoMDEntries (标签=268) > 0 时需要。
278 MDEntryID 任何有效值 String 唯一的市场数据条目标识符。
Standard Trailer

Market Data Incremental Refresh (MsgType(35)=X)

Tag 字段名称 必填 FIX格式 备注
Standard Header
262 MDReqID 任何有效值 String 先前发送的市场数据请求的ID。
268 NoMDEntries 任何有效值 Integer 后续条目的数量。 此重复组包含请求者希望接收的所有类型市场数据条目的列表。
279 MDUpdateAction 02 字符 市场数据更新操作的类型。 有效值为:
0 = 新建
2 = 删除
269 MDEntryType 01 字符 有效值为:
0 = 买入
1 = 卖出
278 MDEntryID 任何有效值 String 市场数据条目的 ID。
55 Symbol 任何有效值 多头 工具标识符由Spotware提供。
270 MDEntryPx 1.2345 价格 仅当 MDUpdateAction (标签=279) = 0 时需要。
271 MDEntrySize 10000 加倍 仅当 MDUpdateAction (标签=279) = 0 时需要。
Standard Trailer

New Order Single (MsgType(35)=D)

新单一订单消息具有以下格式。

Tag 字段名称 必填 FIX格式 备注
Standard Header
11 ClOrdID 任何有效值 String 客户端分配的订单唯一标识符。
55 Symbol 任何有效值 多头 工具标识符由Spotware提供。
54 Side 12 Integer 1 = Buy
2 = Sell
60 TransactTime 任何有效值 时间戳 客户端生成的请求时间。
38 OrderQty 任何有效值 数量 订购的股票数量。 这代表股票的股数,或根据常规惯例,期权、期货、可转换债券等的合约数量。 最大精度为 0.01。 在 FIX 4.2 之前,此字段的类型为"整数"。
40 OrdType 123 字符 1 = 市价单,订单将按立即或取消(IOC)方案处理(TimeInForce,标签=59)。
2 = 限价单,订单将按取消前有效(GTC)方案处理(TimeInForce,标签=59)。
3 = 止损单,订单将按取消前有效(GTC)方案处理(TimeInForce,标签=59)。
44 Price 任何有效值 价格 客户接受的最差客户价格。 仅当 OrdType (标签=40) = 2 时需要,在这种情况下,除非能达到此价格,否则订单不会成交。
99 StopPx 任何有效值 价格 触发止损单的价格。 仅当 OrdType (标签=40) = 3 时需要,在这种情况下,除非能达到此价格,否则订单不会成交。
59 TimeInForce 1, 3 or 6 String 已弃用,此值将被忽略。 TimeInForce 将根据 OrdType (标签=40) 和 ExpireTime (标签=126) 自动检测:
1 = 取消前有效(GTC),仅用于限价单和止损单(OrdType,标签=40),且仅当未定义 ExpireTime (标签=126) 时使用。
3 = 立即或取消(IOC),仅用于市价单(OrdType,标签=40)。
6 = 指定日期前有效(GTD),仅用于限价单和止损单(OrdType,标签=40),且仅当定义了 ExpireTime (标签=126) 时使用。
126 ExpireTime 20140215-07:24:55 时间戳 过期时间,格式为"YYYYMMDD-HH:MM:SS"。 如果指定,订单将按 GTD 方案处理(TimeInForce: GTD)。
721 PosMaintRptID 任何有效值 String 应放置此订单的头寸 ID。 如果未设置,将创建新头寸,并在执行报告消息中返回其 ID。 只能为对冲账户指定。
494 Designation 任何有效值 String 自定义订单标签。
Standard Trailer

请参阅下面的新单一订单消息示例。

新建头寸的市价单

请求:

8=FIX.4.4|9=143|35=D|49=live.theBroker.12345|56=CSERVER|34=77|52=20170117-10:02:14|50=any_string|57=TRADE|11=876316397|55=1|54=1|60=20170117-10:02:14|40=1|38=10000|10=010|

响应:

8=FIX.4.4|9=197|35=8|34=77|49=CSERVER|50=TRADE|52=20170117-10:02:14.720|56=live.theBroker.12345|57=any_string|11=876316397|14=0|37=101|38=10000|39=0|40=1|54=1|55=1|59=3|60=20170117-10:02:14.591|150=0|151=10000|721=101|10=149|
8=FIX.4.4|9=206|35=8|34=78|49=CSERVER|50=TRADE|52=20170117-10:02:15.045|56=live.theBroker.12345|57=any_string|6=1.0674|11=876316397|14=10000|32=10000|37=101|38=10000|39=2|40=1|54=1|55=1|59=3|60=20170117-10:02:14.963|150=F|151=0|721=101|10=077|

现有头寸的市价单

请求:

8=FIX.4.4|9=151|35=D|49=live.theBroker.12345|56=CSERVER|34=80|52=20170117-10:02:55|50=any_string|57=TRADE|11=876316398|55=1|54=1|60=20170117-10:02:55|40=1|38=10000|721=101|10=120|

响应:

8=FIX.4.4|9=197|35=8|34=80|49=CSERVER|50=TRADE|52=20170117-10:02:56.003|56=live.theBroker.12345|57=any_string|11=876316398|14=0|37=102|38=10000|39=0|40=1|54=1|55=1|59=3|60=20170117-10:02:55.984|150=0|151=10000|721=101|10=156|
8=FIX.4.4|9=207|35=8|34=81|49=CSERVER|50=TRADE|52=20170117-10:02:56.239|56=live.theBroker.12345|57=any_string|6=1.06735|11=876316398|14=10000|32=10000|37=102|38=10000|39=2|40=1|54=1|55=1|59=3|60=20170117-10:02:56.210|150=F|151=0|721=101|10=127

现有头寸的限价单

请求:

8=FIX.4.4|9=162|35=D|49=live.theBroker.12345|56=CSERVER|34=89|52=20170117-10:06:22|50=any_string|57=TRADE|11=876316400|55=1|54=2|60=20170117-10:06:22|40=2|44=1.07162|38=50000|721=101|10=122|

响应:

8=FIX.4.4|9=208|35=8|34=90|49=CSERVER|50=TRADE|52=20170117-10:06:22.466|56=live.theBroker.12345|57=any_string|11=876316400|14=0|37=104|38=50000|39=0|40=2|44=1.07162|54=2|55=1|59=1|60=20170117-10:06:22.436|150=0|151=50000|721=101|10=149|

新建头寸的止损单

请求:

8=FIX.4.4|9=153|35=D|49=live.theBroker.12345|56=CSERVER|34=9|52=20170117-12:10:48|57=TRADE|50=any_string|11=876316418|55=1|54=1|60=20170117-12:10:48|40=3|38=50000|99=1.07148|10=249|

响应:

8=FIX.4.4|9=207|35=8|34=8|49=CSERVER|50=TRADE|52=20170117-12:10:48.400|56=live.theBroker.12345|57=any_string|11=876316418|14=0|37=205|38=50000|39=0|40=3|54=1|55=1|59=1|60=20170117-12:10:48.362|99=1.07148|150=0|151=50000|721=202|10=122|

Order Status Request (MsgType(35)=H)

订单状态请求消息由机构用于从交易者生成订单状态消息。 为了正确交互,所有订单都必须有唯一的客户订单标识符(ClOrdID),这一点非常重要。

Tag 字段名称 必填 FIX格式 备注
Standard Header
11 ClOrdID 任何有效值 String 客户端分配的订单唯一标识符。
54 Side 12 Integer 1 = Buy
2 = Sell
Standard Trailer

请参阅下面的订单状态请求消息示例。

请求:

8=FIX.4.4|9=98|35=H|49=live.theBroker.12345|56=CSERVER|34=95|52=20170117-10:08:31|50=any_string|57=TRADE|11=876316400|10=191|

响应:

8=FIX.4.4|9=208|35=8|34=95|49=CSERVER|50=TRADE|52=20170117-10:08:31.819|56=live.theBroker.12345|57=any_string|11=876316400|14=0|37=104|38=50000|39=0|40=2|44=1.07162|54=2|55=1|59=1|60=20170117-10:06:22.436|150=0|151=50000|721=101|10=158|

Order Mass Status Request (MsgType(35)=AF)

订单批量状态请求消息请求与请求中指定的条件匹配的订单状态。 答复将以多个执行报告消息的形式返回(每个订单一个),或者如果未找到订单,则以业务消息拒绝消息的形式返回。

Tag 字段名称 必填 FIX格式 备注
Standard Header
584 MassStatusReqID 任何有效值 String 客户端分配的批量状态请求的唯一 ID。
585 MassStatusReqType 任何有效值 Integer 7 = 所有订单的状态。
目前仅支持值 7
225 IssueDate 任何有效值 String 如果设置,响应将仅包含在此日期之前创建的订单。
Standard Trailer

请参见下面的订单批量状态请求消息示例。

请求:

8=FIX.4.4|9=117|35=AF|34=3|49=live.theBroker.12345|52=20170404-07:20:55.325|56=CSERVER|57=TRADE|225=20170404-07:20:44.582|584=mZzEY|585=7|10=065|

响应:

8=FIX.4.4|9=199|35=8|34=13|49=CSERVER|50=TRADE|52=20170404-07:20:55.333|56=live.theBroker.12345|14=0|37=635|38=100000|39=0|40=2|44=1.35265|54=2|55=1|59=1|60=20170404-07:20:44.582|150=I|151=100000|584=mZzEY|721=617|911=1|10=152|

Execution Report (MsgType(35)=8)

已接受订单的执行报告消息格式如下。

Tag 字段名称 必填 FIX格式 备注
Standard Header
37 OrderID 任何有效值 String cTrader 订单 ID。
11 ClOrdID 任何有效值 String 客户端分配的订单唯一标识符。
911 TotNumReports 任何有效值 Integer 响应订单批量状态请求消息返回的报告总数。
150 ExecType 任何有效值 字符 0 = New
4 = Canceled
5 = Replace
8 = Rejected
C = Expired
F = Trade
I = Order Status
39 OrdStatus 任何有效值 字符 0 = 新建
1 = 部分成交
2 = 全部成交
8 = 拒绝
4 = 已取消 (当订单部分成交时,返回"已取消"表示 (标签=151),LeavesQty 已取消且不会继续成交)。
C = 已过期
55 Symbol 任何有效值 多头 工具标识符由Spotware提供。
54 Side 12 Integer 1 = 买入
2 = 卖出
60 TransactTime 任何有效值 时间戳 执行报告消息所代表的交易执行时间 (UTC)。
6 AvgPx 任何有效值 Integer 成交价格。 对于 IOC 或 GTD 订单,这是成交订单的成交量加权平均价 (VWAP)。
38 OrderQty 任何有效值 数量 这代表股票的股数,或根据常规惯例,期权、期货、可转换债券等的合约数量。 在 FIX 4.2 之前,此字段的类型为"整数"。
151 LeavesQty 任何有效值 数量 仍待成交的订单数量。 可能的值介于 0 (全部成交) 和 OrderQty (部分成交) 之间。
14 CumQty 任何有效值 数量 已成交的订单总数。
32 LastQty 任何有效值 数量 本次(最后)成交的买入/卖出订单数量。
40 OrdType 12 字符 1 = 市价
2 = 限价
44 Price 任何有效值 价格 如果在新单消息中提供,则在此执行报告消息中回显。
99 StopPx 任何有效值 价格 如果在新单消息中提供,则在此执行报告消息中回显。
59 TimeInForce 136 String 1 = 取消前有效 (GTC)
3 = 立即成交或取消 (IOC)
6 = 指定日期前有效 (GTD)
126 ExpireTime 20140215-07:24:55 时间戳 如果在新单消息中提供,则在此执行报告消息中回显。
58 Text 任何有效值 String 在可能的情况下,消息将解释执行报告。
103 OrdRejReason 0 Integer 0 = OrdRejReason.BROKER_EXCHANGE_OPTION
721 PosMaintRptID 任何有效值 String 头寸 ID。
494 Designation 任何有效值 String 客户的自定义订单标签。
584 MassStatusReqID 任何有效值 String 客户端分配的批量状态请求的唯一 ID。
1000 AbsoluteTP 任何有效值 价格 触发止盈的绝对价格。
1001 RelativeTP 任何有效值 价格 触发止盈的入场价格距离(以点为单位)。
1002 AbsoluteSL 任何有效值 价格 触发止损的绝对价格。
1003 RelativeSL 任何有效值 价格 触发止损的入场价格距离(以点为单位)。
1004 TrailingSL NY Boolean 表示止损是否为追踪止损。
N = 止损不是追踪止损。
Y = 止损是追踪止损。
1005 TriggerMethodSL 任何有效值 Integer 指示的止损触发方法。
1 = 止损将由交易方触发。
2 = 止损将由相反方触发(买入头寸由卖出价触发,卖出头寸由买入价触发)。
3 = 止损将在交易方连续两次报价后触发。
4 = 止损将在相反方连续两次报价后触发(买入头寸在第二次卖出价报价后触发,卖出头寸在第二次买入价报价后触发)。
1006 GuaranteedSL NY Boolean 表示止损是否为保价止损。
N = 止损不是保价止损。
Y = 止损是保价止损。
Standard Trailer

请参阅本指南末尾的新单一订单示例。

Business Message Reject (MsgType(35)=j)

当系统无法处理订阅请求或无法执行订单时,会发送此消息类型。

Tag 字段名称 必填 FIX格式 备注
Standard Header
45 RefSeqNum 任何有效值 Integer 被拒绝消息的 MsgSeqNum(标签=34)。
372 RefMsgType 任何有效值 String 被引用的 FIX 消息的 MsgType(标签=35)。
379 BusinessRejectRefID 任何有效值 String 被引用消息中业务级 ID 字段的值。 除非未指定相应的 ID 字段,否则为必填项。
380 BusinessRejectReason 0 Integer 用于识别业务消息拒绝原因的代码。
0 = 其他
58 Text 任何有效值 String 尽可能解释拒绝原因的消息。
Standard Trailer

请参阅下面的业务消息拒绝示例。

8=FIX.4.4|9=149|35=j|34=2|49=CSERVER|52=20170105-06:36:00.912|56=live.theBroker.12345|57=any_string|58=Message to explain reason for rejection|379=u4Jr7Rr5t2VS7HSP|380=0|10=123|

Request for Positions (MsgType(35)=AN)

Tag 字段名称 必填 FIX格式 备注
Standard Header
710 PosReqID 任何有效值 String 唯一请求 ID(由客户端设置)。
721 PosMaintRptID 任何有效值 String 要请求的头寸 ID。 如果未设置,将返回所有开仓头寸。
Standard Trailer

请参阅下面的头寸请求消息示例。

请求:

8=FIX.4.4|9=100|35=AN|49=live.theBroker.12345|56=CSERVER|34=99|52=20170117-10:09:54|50=any_string|57=TRADE|710=876316401|10=103|

响应:

8=FIX.4.4|9=163|35=AP|34=98|49=CSERVER|50=TRADE|52=20170117-10:09:54.076|56=live.theBroker.12345|57=any_string|55=1|710=876316401|721=101|727=1|728=0|730=1.06671|702=1|704=0|705=30000|10=182|

Position Report (MsgType(35)=AP)

Tag 字段名称 必填 FIX格式 备注
Standard Header
710 PosReqID 任何有效值 String 头寸请求消息的 ID。
721 PosMaintRptID 任何有效值 String 头寸 ID,如果 PosReqResult(标签=728)不是 VALID_REQUEST,则不设置。
727 TotalNumPosReports 任何有效值 String PosReqResult(标签=728)为 VALID_REQUEST 时,序列中头寸报告的总数,否则为 0
728 PosReqResult 02 String 0 = 有效请求
2 = 未找到符合条件的开仓头寸。
55 Symbol 任何有效值 String 当前头寸报告所针对的交易品种。 如果 PosReqResult(标签=728)不是 VALID_REQUEST,则不设置。
702 NoPositions 1 String PosReqResult(标签=728)为 VALID_REQUEST 时为 1,否则不设置。
704 LongQty 任何有效值 String 买入交易方的开仓量,卖出交易方为 0。 如果 PosReqResult(标签=728)不是 VALID_REQUEST,则不设置。
705 ShortQty 任何有效值 String 卖出交易方的开仓量,买入交易方为 0。 如果 PosReqResult(标签=728)不是 VALID_REQUEST,则不设置。
730 SettlPrice 任何有效值 String 当前头寸报告中开仓量的平均价格。
1000 AbsoluteTP 任何有效值 价格 触发止盈的绝对价格。
1002 AbsoluteSL 任何有效值 价格 触发止损的绝对价格。
1004 TrailingSL 任何有效值 Boolean 表示止损是否为追踪止损。
N = 止损不是追踪止损。
Y = 止损是追踪止损。
1005 TriggerMethodSL 任何有效值 Integer 指示的止损触发方法。
1 = 止损将由交易方触发。
2 = 止损将由相反方触发(买入头寸由卖出价触发,卖出头寸由买入价触发)。
3 = 止损将在交易方连续两次报价后触发。
4 = 止损将在相反方连续两次报价后触发(买入头寸在第二次卖出价报价后触发,卖出头寸在第二次买入价报价后触发)。
1006 GuaranteedSL 任何有效值 Boolean 表示止损是否为保价止损。
N = 止损不是保价止损。
Y = 止损是保价止损。
Standard Trailer

Order Cancel Request (MsgType(35)=F)

Tag 字段名称 必填 FIX格式 备注
Standard Header
41 OrigClOrdID 任何有效值 String 客户端分配的待取消订单的唯一标识符。
37 OrderID 任何有效值 String cServer 返回的订单唯一 ID。
11 ClOrdID 任何有效值 String 客户端分配的取消请求的唯一 ID。
Standard Trailer

请参见下方订单取消请求消息示例。

请求:

8=FIX.4.4|9=115|35=F|34=2|49=live.theBroker.12345|50=Trade|52=20170721-13:41:21.694|56=CSERVER|57=TRADE|11=jR8dBPcZEQa9|41=n9Tm8x1AavO5|10=182|

响应(成功):

8=FIX.4.4|9=221|35=8|34=3|49=CSERVER|50=TRADE|52=20170721-13:41:21.784|56=live.theBroker.12345|57=Trade|11=jR8dBPcZEQa9|14=0|37=641|38=100000|39=4|40=2|41=n9Tm8x1AavO5|44=1.499|54=1|55=1|59=1|60=20170721-13:41:21.760|150=4|151=100000|721=624|10=180|

响应(失败):

8=FIX.4.4|9=174|35=j|34=3|49=CSERVER|50=TRADE|52=20170721-13:41:21.856|56=live.theBroker.12345|57=Trade|58=ORDER_NOT_FOUND:Order with clientOrderId=n9Tm8x1AavO5 not found.|379=jR8dBPcZEQa9|380=0|10=075|

Order Cancel Reject (MsgType(35)=9)

Tag 字段名称 必填 FIX格式 备注
Standard Header
37 OrderID 任何有效值 String 系统无法取消的订单的唯一标识符。
11 ClOrdID 任何有效值 String 订单取消请求的唯一标识符。
41 OrigClOrdID 任何有效值 String 客户端分配的尝试取消的订单的唯一标识符。
39 OrdStatus 任何有效值 字符 0 = 新订单
1 = 部分成交
2 = 全部成交
8 = 被拒绝
4 = 已取消(当订单部分成交时返回"已取消",表示(tag=151)LeavesQty 已取消且不会继续成交)。
C = 已过期
434 CxlRejResponseTo 12 字符 1 = 拒绝取消订单。
2 = 拒绝来自其他终端的修改订单。
58 Text 任何有效值 String 订单正在执行中。
Standard Trailer

请参见下方订单取消拒绝消息示例。

响应:

8=FIX.4.4|9=156|35=9|34=3|49=CSERVER|50=TRADE|52=20181024-12:35:02.896|56=live.theBroker.12345|57=Trade|11=gBljx7YOg5jY|37=629|39=0|41=FdXLfS0tTyUL|58=Order is under execution|434=1|10=109|

Order Cancel/Replace Request (MsgType(35)=G)

Tag 字段名称 必填 FIX格式 备注
Standard Header
41 OrigClOrdID Any valid value String 客户端分配的待修改订单的唯一标识符。
37 OrderID 任何有效值 String 服务器分配的待修改原始订单的唯一 ID。 推荐使用的方法。
11 ClOrdID 任何有效值 String 客户端分配的修改请求的唯一 ID。
38 OrderQty 任何有效值 数量 用于替换旧值的现有或新指定数量。
44 Price 任何有效值 价格 用于替换旧值的现有或新指定限价。 仅对限价单有效。
99 StopPx 任何有效值 价格 用于替换旧值的现有或新指定止损价。 仅对止损单有效。
126 ExpireTime 20140215-07:24:55 时间戳 现有或新指定的到期时间。 仅对挂单有效。
Standard Trailer

请参见下方订单取消/替换请求消息示例。

请求:

8=FIX.4.4|9=123|35=G|34=3|49=live.theBroker.12345|50=Trade|52=20170721-13:42:17.680|56=CSERVER|57=TRADE|11=Is03AvsknNYK|38=5000|41=n9Tm8x1AavO5|44=1.1|10=010|

响应(成功):

8=FIX.4.4|9=192|35=8|34=3|49=CSERVER|50=TRADE|52=20170721-13:42:18.784|56=live.theBroker.12345|57=Trade|11=Is03AvsknNYK|14=0|37=629|38=5000|39=0|40=2|44=1.1|54=1|55=1|59=1|60=20170721-13:42:18.760|150=5|151=5000|721=624|10=150|

响应(失败):

8=FIX.4.4|9=171|35=j|34=3|49=CSERVER|50=TRADE|52=20170721-13:42:18.784|56=live.theBroker.12345|57=Trade|58=ORDER_NOT_FOUND:Order with orderId:4429421711699105367 isn't found|379=NXek3EzJvMme|380=0|10=245|

Market Data Request Reject (MsgType(35)=Y)

Tag 字段名称 必填 FIX格式 备注
Standard Header
262 MDReqID 任何有效值 String 必须引用请求的 MDReqID(tag=262)。
281 MDReqRejReason 任何有效值 Integer 0 = 未知交易品种
4 = 不支持的 SubscriptionRequestType(tag=263)
5 = 不支持的 MarketDepth(tag=264)
Standard Trailer

请参见下方市场数据请求拒绝消息示例。

请求:

8=FIX.4.4|9=148|35=V|34=2|49=live.theBroker.12345|50=Quote|52=20170920-09:52:13.032|56=CSERVER|57=QUOTE|262=CS8260:sXlXex|263=1|264=0|265=1|146=1|55=CS8260|267=2|269=0|269=1|10=129|

拒绝:

8=FIX.4.4|9=164|35=Y|34=2|49=CSERVER|50=QUOTE|52=20170920-09:52:13.036|56=live.theBroker.12345|57=Quote|58=INVALID_REQUEST: Expected numeric symbolId, but got CS8260|262=CS8260:sXlXex|281=0|10=236|

请求:

8=FIX.4.4|9=136|35=V|34=6|49=live.theBroker.12345|50=Quote|52=20170920-09:52:13.199|56=CSERVER|57=QUOTE|262=EwOhiWvMdCpc|263=1|264=3|146=1|55=1|267=2|269=0|269=1|10=182|

拒绝:

8=FIX.4.4|9=157|35=Y|34=6|49=CSERVER|50=QUOTE|52=20170920-09:52:13.201|56=live.theBroker.12345|57=Quote|58=INVALID_REQUEST: MarketDepth should be either 0 or 1|262=EwOhiWvMdCpc|281=5|10=088|

Security List Request (MsgType(35)=x)

Tag 字段名称 必填 FIX格式 备注
Standard Header
320 SecurityReqID 任何有效值 String 证券定义请求的唯一 ID。
559 SecurityListRequestType 0 Integer 正在进行的证券列表请求的类型。 仅支持 0 = Symbol(tag=55)。
55 Symbol 任何有效值 Integer 用于解析交易品种名称的 ID。
Standard Trailer

请参见下方证券列表请求消息示例。

请求:

8=FIX.4.4|9=107|35=x|34=3|49=live.theBroker.12345|50=Trade|52=20180427-12:24:27.106|56=CSERVER|57=TRADE|55=39|320=ILCea0JkdQEm|559=0|10=248|

响应:

8=FIX.4.4|9=158|35=y|34=3|49=CSERVER|50=TRADE|52=20180427-12:24:27.107|56=live.theBroker.12345|57=Trade|320=ILCea0JkdQEm|322=responce:ILCea0JkdQEm|560=0|146=1|55=39|1007=NZDCHF|1008=4|10=088|

Security List (MsgType(35)=y)

Tag 字段名称 必填 FIX格式 备注
Standard Header
320 SecurityReqID 任何有效值 String 证券定义请求的唯一 ID。
322 SecurityResponseID 任何有效值 String 证券列表响应的唯一 ID。
560 SecurityRequestResult 0 Integer 返回给证券请求消息的结果。 有效值为:
0 = 有效请求。
1 = 无效或不支持的请求。
2 = 未找到符合选择标准的工具。
3 = 未授权检索工具数据。
4 = 工具数据暂时不可用。
5 = 不支持工具数据请求。
146 NoRelatedSym 任何有效值 Integer 指定重复交易品种(工具)的数量。
55 Symbol 任何有效值 Integer 工具标识符由Spotware提供。
1007 SymbolName 任何有效值 String 交易品种名称。
1008 SymbolDigits 任何有效值 Integer 交易品种小数位数。 可能值为 05
Standard Trailer

请参见下方证券列表消息示例。

响应:

8=FIX.4.4|9=3977|35=y|34=2|49=CSERVER|50=TRADE|52=20180426-12:07:37.816|56=live.theBroker.12345|57=Trade|320=Sxo2Xlb1jzJC|322=responce:Sxo2Xlb1jzJC|560=0|146=143|55=1|1007=EURUSD|1008=5|55=2|1007=GBPUSD|1008=5|55=3|1007=EURJPY|1008=3|55=4|1007=USDJPY|1008=3|55=5|1007=AUDUSD|1008=5|55=6|1007=USDCHF|1008=5|55=7|1007=GBPJPY|1008=3|55=8|1007=USDCAD|1008=5|55=9|1007=EURGBP|1008=5|55=10|1007=EURCHF|1008=5|55=11|1007=AUDJPY|1008=2|55=12|1007=NZDUSD|1008=5|55=13|1007=CHFJPY|1008=2|55=14|1007=EURAUD|1008=4|55=15|1007=CADJPY|1008=2|55=16|1007=GBPAUD|1008=4|55=17|1007=EURCAD|1008=4|55=10001|1007=USDCFDSAX|1008=5|55=18|1007=AUDCAD|1008=4|55=10002|1007=CD3295|1008=5|55=19|1007=GBPCAD|1008=4|55=10003|1007=DU3295|1008=5|55=20|1007=AUDNZD|1008=4|55=10004|1007=CS5965|1008=2|55=21|1007=NZDJPY|1008=2|55=10005|1007=CS6014_3|1008=5|55=22|1007=USDNOK|1008=4|55=10006|1007=DU6014_3|1008=5|55=23|1007=AUDCHF|1008=4|55=10007|1007=CS6014_4|1008=5|55=24|1007=USDMXN|1008=4|55=10008|1007=DU6014_4|1008=5|55=25|1007=GBPNZD|1008=4|55=10009|1007=CS5953|1008=5|55=26|1007=EURNZD|1008=4|55=10010|1007=CS6407_01_EURUSD|1008=5|55=27|1007=CADCHF|1008=4|55=10011|1007=CS6407_01_GBPUSD|1008=5|55=28|1007=USDSGD|1008=5|55=10012|1007=CS6407_02_EURUSD|1008=5|55=29|1007=USDSEK|1008=4|55=10013|1007=CS6407_03_EURUSD|1008=5|55=30|1007=NZDCAD|1008=4|55=31|1007=EURSEK|1008=4|55=10015|1007=CS7847_01_EURUSD|1008=5|55=32|1007=GBPSGD|1008=4|55=10016|1007=CS7847_01_GBPUSD|1008=5|55=33|1007=EURNOK|1008=4|55=10017|1007=CS7847_02_EURUSD|1008=5|55=34|1007=EURHUF|1008=2|55=10018|1007=CS7847_03_EURUSD|1008=5|55=35|1007=USDPLN|1008=4|55=10019|1007=CS7847_04_GBPUSD|1008=5|55=36|1007=USDDKK|1008=4|55=10020|1007=CS9004S|1008=2|10=096|