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 | 是 | QUOTE或TRADE | String | 附加会话限定符。 可能的值为QUOTE和TRADE。 |
| 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 | 否 | Yes或No | 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 | 是 | 1或2 | 字符 | 1 = 快照加更新(订阅)。 2 = 禁用先前的快照加更新请求(取消订阅)。 |
| 264 | MarketDepth | 是 | 0或1 | Integer | 将提供完整订单簿。 0 = 深度订阅 1 = 现货订阅 |
| 265 | MDUpdateType | 是 | 任何有效值 | Integer | 仅支持增量刷新。 |
| 267 | NoMDEntryTypes | 是 | 2 | Integer | 始终设置为2(将发送买卖双方)。 |
| 269 | MDEntryType | 是 | 0或1 | 字符 | 此重复组包含请求者希望接收的所有类型的市场数据条目列表。 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 | 否 | 0或1 | 字符 | 有效值为: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 | 是 | 0 或 2 | 字符 | 市场数据更新操作的类型。 有效值为:0 = 新建 2 = 删除 |
| 269 | MDEntryType | 否 | 0或1 | 字符 | 有效值为: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 | 是 | 1或2 | Integer | 1 = Buy 2 = Sell |
| 60 | TransactTime | 是 | 任何有效值 | 时间戳 | 客户端生成的请求时间。 |
| 38 | OrderQty | 是 | 任何有效值 | 数量 | 订购的股票数量。 这代表股票的股数,或根据常规惯例,期权、期货、可转换债券等的合约数量。 最大精度为 0.01。 在 FIX 4.2 之前,此字段的类型为"整数"。 |
| 40 | OrdType | 是 | 1、2 或 3 | 字符 | 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 | 否 | 1或2 | 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 | 否 | 1或2 | 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 | 否 | 1或2 | 字符 | 1 = 市价 2 = 限价 |
| 44 | Price | 否 | 任何有效值 | 价格 | 如果在新单消息中提供,则在此执行报告消息中回显。 |
| 99 | StopPx | 否 | 任何有效值 | 价格 | 如果在新单消息中提供,则在此执行报告消息中回显。 |
| 59 | TimeInForce | 否 | 1、3 或 6 | 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 | 否 | N 或 Y | Boolean | 表示止损是否为追踪止损。 N = 止损不是追踪止损。 Y = 止损是追踪止损。 |
| 1005 | TriggerMethodSL | 否 | 任何有效值 | Integer | 指示的止损触发方法。 1 = 止损将由交易方触发。 2 = 止损将由相反方触发(买入头寸由卖出价触发,卖出头寸由买入价触发)。 3 = 止损将在交易方连续两次报价后触发。 4 = 止损将在相反方连续两次报价后触发(买入头寸在第二次卖出价报价后触发,卖出头寸在第二次买入价报价后触发)。 |
| 1006 | GuaranteedSL | 否 | N 或 Y | 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 | 是 | 0 或 2 | 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 | 是 | 1或2 | 字符 | 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 | 交易品种小数位数。 可能值为 0 到 5。 |
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|