diff --git a/v2-0-RC1/doc/07Examples.md b/v2-0-RC1/doc/07Examples.md index d15e57a..8e769e5 100644 --- a/v2-0-RC1/doc/07Examples.md +++ b/v2-0-RC1/doc/07Examples.md @@ -1,5 +1,4 @@ -Examples -======== +# Examples The example messages are preceded by Simple Open Framing Header. Note that SOFH encoding is always big-endian, regardless of the byte order of @@ -7,85 +6,138 @@ the SBE message body. See that FIX standard for details. Not all FIX enumeration values are listed in the samples. -Flat, fixed-length message --------------------------- - -This is an example of a simple, flat order message without repeating -groups or variable-length data. - -### Sample order message schema - +## SBE Message Schema ```xml - - - - - - - - - - - - - - - - - - - -3 - - - - - 0 - - - - 1 - 2 - 3 - 4 - - - - 1 - 2 - - - - - - - - 0 - 3 - 6 - 9 - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -3 + + + + 0 + + + + + + + 0 + 3 + 6 + 9 + + + 0 + 1 + 2 + 4 + 6 + + + 0 + 3 + 4 + 5 + 6 + 8 + A + F + + + 0 + 1 + 2 + 3 + 4 + 6 + 8 + A + E + + + 1 + 2 + 3 + 4 + + + 1 + 2 + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - ``` + +## Flat, fixed-length message + +This is an example of a simple, flat order message without repeating +groups or variable-length data. + **Notes on the message schema** In this case, there is a lot of verbiage for one message, but in @@ -130,106 +182,40 @@ those sorts of optimizations are platform dependent. Hexadecimal and ASCII representations (little-endian byte order): ``` -00 00 00 48 eb 50 36 00 63 00 5b 00 00 00 00 00 : 6 c [ +00 00 00 48 eb 50 36 00 63 00 5b 00 00 00 00 00 : H P6 c [ 00 00 4f 52 44 30 30 30 30 31 41 43 43 54 30 31 : ORD00001ACCT01 -00 00 47 45 4d 34 00 00 00 00 31 c0 13 b3 b2 22 : GEM4 1 " -b3 a9 14 07 00 00 00 32 1a 85 01 00 00 00 00 00 : 2 -00 00 00 00 00 00 00 80 +00 00 47 45 4d 34 00 00 00 00 31 00 a0 37 3a ce : GEM4 1 7: +10 40 15 07 00 00 00 32 1a 85 01 00 00 00 00 00 : @ 2 +00 00 00 00 00 00 00 80 : ``` **Interpretation** -| Wire format | Field ID | Name | Offset | Length | Interpreted value -|------------------| -------------:|----------------------------|-----------:|-----------:|:------------ -| 00000048 | | Simple Open Framing Header | | 4 | Message size=72 -| eb50 | | Simple Open Framing Header | | 2 | SBE version 1.0 little-endian -| 3600 | | messageHeader blockLength | | 2 | Root block size=54 -| 6300 | | messageHeader templateId | | 2 | Template ID=99 -| 6400 | | messageHeader schemaId | | 2 | Schema ID=91 -| 0000 | | messageHeader version | | 2 | Schema version=0 -| 0000 | | messageHeader numGroups | | 2 | 0 groups -| 0000 | | messageHeader numVarDataFields| | 2 | 0 data fields -| 4f52443030303031 | 11 | ClOrdID | 0 | 8 | ORD00001 | -| 4143435430310000 | 1 | Account | 8 | 8 | ACCT01 | -| 47454d3400000000 | 55 | Symbol | 16 | 8 | GEM4 - | -| 31 | 54 | Side | 24 | 1 | 1 Buy | -| c021ed1b04c32b13 | 60 | TransactTime | 25 | 8 | 2013-10-10 13:35:33.135 as nanoseconds since UNIX epoch | -| 07000000 | 38 | OrderQty | 33 | 4 | 7 | -| 32 | 40 | OrdType | 37 | 1 | 2 Limit | -| 1a85010000000000 | 44 | Price | 38 | 8 | 99.610 | -| 0000000000000008 | 99 | StopPx | 46 | 8 | null | +|Wire format|Field ID|Name|Offset|Length|Interpreted value| +|-----------|-------:|----|-----:|-----:|-----------------| +| `00000048` | | SOFH message length | 0 | 4 | 72 | +| `eb50` | | SOFH encoding | 4 | 2 | SBE little-endian | +| `3600` | | SBE root block length | 0 | 2 | 54 | +| `6300` | | SBE template ID | 2 | 2 | 99 | +| `5b00` | | SBE schema ID | 4 | 2 | 91 | +| `0000` | | SBE schema version | 6 | 2 | 0 | +| `0000` | | No. of groups | 8 | 2 | 0 | +| `0000` | | No. of var data | 10 | 2 | 0 | +| `4f52443030303031` | 11 | ClOrdId | 0 | 8 | ORD00001 | +| `4143435430310000` | 1 | Account | 8 | 8 | ACCT01 | +| `47454d3400000000` | 55 | Symbol | 16 | 8 | GEM4 | +| `31` | 54 | Side | 24 | 1 | Buy | +| `00a0373ace104015` | 60 | TransactTime | 25 | 8 | 2018-07-10T17:05:51.232Z | +| `07000000` | 38 | OrderQty | 33 | 4 | 7 | +| `32` | 40 | OrdType | 37 | 1 | Limit | +| `1a85010000000000` | 44 | Price | 38 | 8 | 99.610 | +| `0000000000000080` | 99 | StopPx | 46 | 8 | null | | Message with a repeating group ------------------------------ This is an example of a message with a repeating group. -### Sample execution report message schema - -Add this encoding types element to those in the previous example. - -```xml - - - - - - - - - - - - - - - - - - - 0 - 3 - 4 - 5 - 6 - 8 - A - F - - - - 0 - 1 - 2 - 3 - 4 - 6 - 8 - A - E - - - - - - - - - - - - - - - - - - - - -``` - **Notes on the message schema** The message contains a MonthYear field. It is encoded as a composite @@ -244,107 +230,72 @@ are encoding as a composite type called groupSizeEncoding. Hexadecimal and ASCII representations (little-endian byte order): ``` -00 00 00 5c eb 50 2a 00 62 00 5b 00 00 00 01 00 : +00 00 00 5c eb 50 2a 00 62 00 5b 00 00 00 01 00 : \ P* b [ 00 00 4f 30 30 30 30 30 30 31 45 58 45 43 30 30 : O0000001EXEC00 -30 30 46 31 47 45 4d 34 00 00 00 00 de 07 06 00 :00F1GEM4 +30 30 46 31 47 45 4d 34 00 00 00 00 de 07 06 ff :00F1GEM4 ff 31 01 00 00 00 06 00 00 00 75 3e 0c 00 02 00 : 1 u> -00 00 00 00 1a 85 01 00 00 00 00 00 02 00 00 00 : -24 85 01 00 00 00 00 00 04 00 00 00 : $ -``` +00 00 00 00 1a 85 01 00 00 00 00 00 02 00 00 00 : +24 85 01 00 00 00 00 00 04 00 00 00 :$ +``` ### Interpretation Offset is from beginning of block. -| Wire format | Field ID | Name | Offset | Length | Interpreted value -|------------------| -------------:|----------------------------|-----------:|-----------:|:------------ -| 0000005c | | Simple Open Framing Header | | 4 | Message size=92 -| eb50 | | Simple Open Framing Header | | 2 | SBE version 1.0 little-endian -| 2a00 | | messageHeader blockLength | | 2 | Root block size=42 -| 6200 | | messageHeader templateId | | 2 | Template ID=98 -| 5b00 | | messageHeader schemaId | | 2 | Schema ID=91 -| 0000 | | messageHeader version | | 2 | Schema version=0 -| 0100 | | messageHeader numGroups | | 2 | 1 group -| 0000 | | messageHeader numVarDataFields| | 2 | 0 data fields -| 4f30303030303031 | 37 | OrderID | 0 | 8 | O0000001 -| 4558454330303030 | 17 | ExecID | 8 | 8 | EXEC0000 -| 46 | 150 | ExecType | 16 | 1 | F Trade -| 31 | 39 | OrdStatus | 17 | 1 | 1 PartialFilled -| 47454d3400000000 | 55 | Symbol | 18 | 8 | GEM4 -| de0706ffff | 200 | MaturityMonthYear | 26 | 5 | 201406 -| 31 | 54 | Side | 31 | 1 | 1 Buy -| 01000000 | 151 | LeavesQty | 32 | 4 | 1 -| 06000000 | 14 | CumQty | 36 | 4 | 6 -| 753e | 75 | TradeDate | 40 | 2 | 2013-10-11 -| 0c00 | | groupSizeEncoding blockLength | | 2 | FillsGrp block size=12 -| 0200 | | groupSizeEncoding numInGroup | | 2| 2 entries -| 0000 | | groupSizeEncoding numGroups | | 2 | 0 nested groups -| 0000 | | groupSizeEncoding numVarDataFields| | 2 | 0 data fields -| 1a85010000000000 | 1364 | FillPx | 0 | 8 | FillsGrp instance 0 -| 02000000 | 1365 | FillQty | 8 | 4 | 2 -| 2485010000000000 | 1364 | FillPx | 0 | 8 | FillsGrp instance 1 -| 04000000 | 1365 | FillQty | 8 | 4 | 4 - +|Wire format|Field ID|Name|Offset|Length|Interpreted value| +|-----------|-------:|----|-----:|-----:|-----------------| +| `0000005c` | | SOFH message length | 0 | 4 | 92 | +| `eb50` | | SOFH encoding | 4 | 2 | SBE little-endian | +| `2a00` | | SBE root block length | 0 | 2 | 42 | +| `6200` | | SBE template ID | 2 | 2 | 98 | +| `5b00` | | SBE schema ID | 4 | 2 | 91 | +| `0000` | | SBE schema version | 6 | 2 | 0 | +| `0100` | | No. of groups | 8 | 2 | 1 | +| `0000` | | No. of var data | 10 | 2 | 0 | +| `4f30303030303031` | 37 | OrderID | 8 | 8 | O0000001 | +| `4558454330303030` | 17 | ExecID | 8 | 8 | EXEC0000 | +| `31` | 39 | OrdStatus | 1 | 1 | PartialFilled | +| `47454d3400000000` | 55 | Symbol | 18 | 8 | GEM4 | +| `de0706ffff` | 200 | MaturityMonthYear | 26 | 5 | year=2014 month=6 | +| `31` | 54 | Side | 1 | 1 | Buy | +| `01000000` | 151 | LeavesQty | 32 | 4 | 1 | +| `06000000` | 14 | CumQty | 36 | 4 | 6 | +| `753e` | 75 | TradeDate | 40 | 2 | 2013-10-11 | +| `0c00` | | Group block length | 0 | 2 | 12 | +| `0000` | | NumInGroup | 4 | 2 | 2 | +| `0000` | | No. of groups | 4 | 2 | 0 | +| `0000` | | No. of var data | 6 | 2 | 0 | +| `1a85010000000000` | 1364 | FillPx | 0 | 8 | 99.610 | +| `02000000` | 1365 | FillQty | 8 | 4 | 2 | +| `2485010000000000` | 1364 | FillPx | 0 | 8 | 99.620 | +| `04000000` | 1365 | FillQty | 8 | 4 | 4 | Message with a variable-length field ------------------------------------ -### Sample business reject message schema - -Add this encoding types element to those in the previous example. - -```xml - - - - - - - - - - > - - - 2 - 4 - 6 - - - - - - - - - - -``` - ### Wire format of a business reject message Hexadecimal and ASCII representations (little-endian byte order): ``` -00 00 00 40 eb 50 09 00 61 00 5b 00 00 00 01 00 : a [ -00 00 4f 52 44 30 30 30 30 31 06 27 00 4e 6f 74 : ORD00001 ' Not +00 00 00 44 eb 50 09 00 61 00 5b 00 00 00 00 00 : D P a [ +01 00 4f 52 44 30 30 30 30 31 06 27 00 4e 6f 74 : ORD00001 ' Not 20 61 75 74 68 6f 72 69 7a 65 64 20 74 6f 20 74 : authorized to t 72 61 64 65 20 74 68 61 74 20 69 6e 73 74 72 75 :rade that instru -6d 65 6e 74 :ment -``` +6d 65 6e 74 :ment +``` ### Interpretation -| Wire format | Field ID | Name | Offset | Length | Interpreted value -|------------------| -------------:|----------------------------|-----------:|-----------:|:------------ -| 00000044 | | Simple Open Framing Header | | 4 | Message size=68 -| eb50 | | Simple Open Framing Header | | 2 | SBE version 1.0 little-endian -| 0900 | | messageHeader blockLength | | 2 | Root block size=9 -| 6100 | | messageHeader templateId | | 2 | Template ID=100 -| 6400 | | messageHeader schemaId | | 2 | Schema ID=0 -| 0000 | | messageHeader version | | 2 | Schema version=0 -| 0000 | | messageHeader numGroups | | 2 | 0 groups -| 0000 | | messageHeader numVarDataFields| | 2 | 0 data fields -| 4f52443030303031 | 379 | BusinessRejectRefId | 0 | 8 | ORD00001 -| 06 | 380 | BusinessRejectReason | 8 | 1 | 6 NotAuthorized -| 2700 | | DATA length | | 2 | length=39 -| 4e6f742061757468 6f72697a65642074 6f20747261646520 7468617420696e73 7472756d656e74 | | DATA varData | | | 39 Not authorized to trade that instrument \ No newline at end of file +|Wire format|Field ID|Name|Offset|Length|Interpreted value| +|-----------|-------:|----|-----:|-----:|-----------------| +| `00000044` | | SOFH message length | 0 | 4 | 68 | +| `eb50` | | SOFH encoding | 4 | 2 | SBE little-endian | +| `0900` | | SBE root block length | 0 | 2 | 9 | +| `6100` | | SBE template ID | 2 | 2 | 97 | +| `5b00` | | SBE schema ID | 4 | 2 | 91 | +| `0000` | | SBE schema version | 6 | 2 | 0 | +| `0000` | | No. of groups | 8 | 2 | 0 | +| `0100` | | No. of var data | 10 | 2 | 1 | +| `4f52443030303031` | 379 | BusinesRejectRefId | 0 | 8 | ORD00001 | +| `06` | 380 | BusinessRejectReason | 8 | 1 | NotAuthorized | +| `4e6f74206175...` | 58 | Text | 0 | 39 | Not authorized to trade that instrument | diff --git a/v2-0-RC1/resources/Examples.xml b/v2-0-RC1/resources/Examples.xml index c1f233e..c517312 100644 --- a/v2-0-RC1/resources/Examples.xml +++ b/v2-0-RC1/resources/Examples.xml @@ -1,9 +1,5 @@ - + @@ -20,22 +16,22 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - + + + + + + + - - - - - - - - + + - + -3 @@ -93,17 +89,17 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - + - - + + - + @@ -116,21 +112,11 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - + - - - - - - - - - - - - USD + +