da4089 / simplefix

Simple FIX protocol implementation for Python
MIT License
229 stars 63 forks source link

Support unsigned 64-bit integers for sequence numbers #50

Closed JohnGreenan closed 1 year ago

JohnGreenan commented 1 year ago

Per https://www.fixtrading.org/groups/continuousmkts/ Sequence number resets are a bore.

The implementation proposed is to use an unsigned 64 bit integer for a sequence number.

Using 1 billion sequence numbers per second, that will last for 584 years until they run out.

So we can leave the problem to our great, great, great (more) grandchildren to solve!

Would be good to include a set of test cases so that testing with a counterpart engine that maybe uses an int32 or uint32 can be picked up quickly. And cover all the other firles that use the seqnum "datatype"

Describe alternatives you've considered See attached "Continuous Markets WG- 24x7 FIX Best Practise Working Draft_v0.015.docx" Continuous Markets WG- 24x7 FIX Best Practise Working Draft_v0.015.docx delete_me

JohnGreenan commented 1 year ago

See also https://github.com/da4089/simplefix/issues/50 https://github.com/quickfix-j/quickfixj/issues/621 https://github.com/quickfix/quickfix/issues/419 https://github.com/ferrumfix/ferrumfix/issues/108 https://github.com/connamara/quickfixn/issues/760 https://github.com/paritytrading/philadelphia/issues/365 https://github.com/jcass77/WTFIX/issues/8 https://github.com/real-logic/artio/issues/480

da4089 commented 1 year ago

@JohnGreenan thanks for the report.

Looks like there's no problem with 64 bit (or larger) sequence numbers, but I've added unit tests to ensure that any future changes don't break that.