Differences
This shows you the differences between two versions of the page.
developers:fixapi:sequencereset [2025/09/12 01:10] – created chad | developers:fixapi:sequencereset [2025/09/12 02:23] (current) – chad | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
- | ===== Resetting Sequence Numbers ===== | + | The Sequence Reset message |
- | The Sequence Reset message | + | |
- | Under out-of-sequence conditions, Sequence | + | ===== Reset Modes ===== |
+ | ^ Mode ^ GapFillFlag (123) ^ Usage ^ | ||
+ | | Gap Fill | Y | Normal resend response | | ||
+ | | Reset | N or absent | Disaster | ||
- | Sequence number resets can only **increase** the sequence number. Sequence Resets attempting to reset to a sequence number less than expected can generate a Resend Request condition or a Reject condition. | + | ===== Message Specification ===== |
- | Sequence Resets are encountered in two modes: | + | **Message Direction:** Bidirectional |
- | ^ Mode ^ Tag# ^ GapFillFlag ^ | + | ^ Tag ^ Field Name ^ Type ^ Req'd ^ Description |
- | | Gap Fill | 123 | Y | | + | | | **Message |
- | | Reset | 123 | N or absent | | + | | 123 | GapFillFlag | Boolean | O | Y=Gap fill mode, N=Reset mode | |
- | + | | 36 | NewSeqNo | |
- | ---- | + | | | **Message |
- | + | ||
- | ===== Gap Fill Mode ===== | + | |
- | Gap-Fill Sequence Resets attempt to fill the sequence number gap by indicating (with **NewSeqNo** – Tag 36) the sequence number of the message that shall be expected immediately following the skipped message gap. | + | |
- | + | ||
- | Gap-Fill Sequence Resets are generated as a response to the **Resend Request** message to indicate that messages are to be skipped from the requested resend range. Messages may be ignored in a resend sequence if they are administrative (e.g. heartbeats, test requests, etc.) or the resending party chooses not to send certain messages for risk and/or age considerations. | + | |
- | + | ||
- | Message gaps where multiple messages are to be ignored should be serviced by a **single Sequence Reset** and not by one Sequence Reset per message. | + | |
- | For example: If a continuous gap exists for sequence numbers 89 to 95, one single Sequence Reset with **NewSeqNo (Tag 36)** = 96 should be sent. | + | |
- | + | ||
- | The Gap-Fill mode Sequence Reset must conform to the protocol sequencing rules. | + | |
- | Hence, the sequence number of the Gap-Fill message (**Tag 34**) must reflect the next sequence number expected by the counterparty — this should represent the beginning of the message gap. Failure to follow this rule will result in a **Resend Request**. | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== Reset Mode ===== | + | |
- | The Reset mode Sequence Reset is applicable to application failures where the traditional Gap-Fill mode Sequence Reset is not able to regain normal sequence progression. | + | |
- | Reset Mode Sequence Resets should only be used for **disaster recovery situations**. | + | |
- | + | ||
- | The Reset Mode Sequence Reset message does not have to adhere to the protocol' | + | |
- | **Note:** Use of Reset Mode Sequence Resets carries the risk of losing messages. | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== Recovery of Last Resort ===== | + | |
- | If recovery is not achievable with Sequence Resets, dropping the physical connection will terminate the current FIX session and reset sequence numbers for the next FIX session. Upon reconnection, | + | |
- | **Note:** This approach also carries the possibility of losing messages. | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== Message Dictionary ===== | + | |
- | ^ Tag ^ Field Name ^ Req'd ^ Comments | + | |
- | | *Standard | + | |
- | | 123 | GapFillFlag | N | Indicates that the Sequence | + | |
- | | 36 | NewSeqNo | + | |
- | | *Standard | + | |
- | + | ||
- | ---- | + | |
===== Sample Message ===== | ===== Sample Message ===== | ||
- | **Resetting Sequence Number | + | **Gap Fill to sequence |
< | < | ||
- | 34=2|49=T4Example|56=T4|50=TraderName|52=20120906-14: | + | 8=FIX.4.2|9=60|35=4|49=T4Example|56=T4|50=TraderName|52=20120906-14: |
+ | 36=30|123=Y|10=123| | ||
</ | </ | ||
- | < | + | ===== Notes ===== |
- | [FIXSEQUENCERESET] | + | |
- | [MsgSeqNum] 34 = 2 | + | |
- | [SenderCompID] 49 = T4Example | + | |
- | [TargetCompID] 56 = T4 | + | * Multiple skipped messages require single reset |
- | [SenderSubID] 50 = TraderName | + | |
- | [SendingTime] 52 = 20120906-14:14: | + | |
- | [NewSeqNo] 36 = 30 | + | |
- | [GapFillFlag] 123 = Y (YES) | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | [[developers: | + |