API Support Forum
OEC API > FIX Support > FAST "MarketDataSnapshotFullRefresh" question
Author Topic: FAST "MarketDataSnapshotFullRefresh" question
(2 messages, Page 1 of 1)
Moderators: VPfau
AVerbitskiy7473
Posts: 2
Joined: Aug 28, 2015


Posted: Oct 09, 2015 @ 07:43 AM             Msg. 1 of 2
My app sent a FAST message "MarketDataRequest" in order to request quotes for symbol "ES":

id=59,MsgType=V,MDReqID=«1»,
SubscriptionRequestType=1(Snapshot and subscription),
MarketDepth=1(Quote or Tick subscription),
MDUpdateType=0(Full Refresh),
SubscriptionType=null,StartTime=null,EndTime=null,
NoMDEntryTypes=2 { MDEntryType=«0»(Bid),MDEntryType=«1»(Offer),MDEntryType=«6»(High Price),MDEntryType=«7»(Low price) },
NoRelatedSym=1 { Symbol=«ES»,MaturityMonthYear=201512,StrikePrice=null,SecurityExchange=«CME»,CFICode=«FXXXXS» }


and received respond as "MarketDataSnapshotFullRefresh" message
My app decoded this messages.
decoded data log listed below.
Hex digits sorraunded by () show sbit encoded FAST fields and follow by decoded value, inital or previous value if a pmap bit absant.
But this record is not clear: (0xC0)PMap1=0x40 (0xB1)EntryType=1 ()exponent=0 (0x736F91)mantissa=-198767
There is no pmap bit for the exponent nullable field. Do we take default exponent value=0 or ignore whole decimal field with negative mantissa in this case?

14:01:40 (0xE0)PMap=Ox60 (0x82)id=2 (0xB1)MDReqID="1" (0x84)NoMDEntries=4
14:01:40 (0xE0)PMap1=0x60 (0xB0)EntryType=0 (0xFE)exponent=-2 (0xC20C7)mantissa=200775
14:01:40 (0xB6)EntrySize=53 (0x94D75E2)EntryDate=20151009 (0x344227B0)EntryTime=110138287 (0x80)EntryPositionNo=0

14:01:40 (0xC0)PMap1=0x40 (0xB1)EntryType=1 ()exponent=0 (0x736F91)mantissa=-198767
14:01:40 (0x99)EntrySize=77 (0x80)EntryDate=20151009 (0x80)EntryTime=110138287 (0x80)EntryPositionNo=0

14:01:40 (0xE0)PMap1=0x60 (0xB7)EntryType=7 (0xFF)exponent=-1 (0x1DB1)mantissa=18097
14:01:40 (0x80)EntrySize=77 (0x80)EntryDate=20151009 (0x80)EntryTime=110138287 (0x80)EntryPositionNo=0

14:01:40 (0xE0)PMap1=0x60 (0xB8)EntryType=8 (0xFE)exponent=-2 (0xA7CBA)mantissa=179770
14:01:40 (0x80)EntrySize=77 (0x80)EntryDate=20151009 (0x80)EntryTime=110138287 (0x80)EntryPositionNo=0

14:01:41 (0x80)PMap=Ox0 ()id=2 ()MDReqID="1" (0x84)NoMDEntries=4
14:01:41 (0xE0)PMap1=0x60 (0xB0)EntryType=0 (0xFE)exponent=-2 (0x784)mantissa=900
14:01:41 (0xEA)EntrySize=182 (0x81)EntryDate=20151009 (0x81)EntryTime=110138287 (0x80)EntryPositionNo=0

14:01:41 (0xC0)PMap1=0x40 (0xB1)EntryType=1 ()exponent=0 (0x736F91)mantissa=-198767
14:01:41 (0x97)EntrySize=204 (0x80)EntryDate=20151009 (0x80)EntryTime=110138287 (0x80)EntryPositionNo=0

14:01:41 (0xE0)PMap1=0x60 (0xB7)EntryType=7 (0xFF)exponent=-1 (0x1DB1)mantissa=18097
14:01:41 (0x80)EntrySize=204 (0x80)EntryDate=20151009 (0x80)EntryTime=110138287 (0x80)EntryPositionNo=0

14:01:41 (0xE0)PMap1=0x60 (0xB8)EntryType=8 (0xFE)exponent=-2 (0xA7CBA)mantissa=179770
14:01:41 (0x80)EntrySize=204 (0x80)EntryDate=20151009 (0x80)EntryTime=110138287 (0x80)EntryPositionNo=0
... e.s.


Is it possible to show a dump of hex sbit encoded FAST fields which OEC server sending to my client on my request?
My test login is My app sent a FAST message "MarketDataRequest" in order to request quotes for symbol "ES":

id=59,MsgType=V,MDReqID=«1»,
SubscriptionRequestType=1(Snapshot and subscription),
MarketDepth=1(Quote or Tick subscription),
MDUpdateType=0(Full Refresh),
SubscriptionType=null,StartTime=null,EndTime=null,
NoMDEntryTypes=2 { MDEntryType=«0»(Bid),MDEntryType=«1»(Offer),MDEntryType=«6»(High Price),MDEntryType=«7»(Low price) },
NoRelatedSym=1 { Symbol=«ES»,MaturityMonthYear=201512,StrikePrice=null,SecurityExchange=«CME»,CFICode=«FXXXXS» }


and received respond as "MarketDataSnapshotFullRefresh" message
My app decoded this messages.
decoded data log listed below.
Hex digits sorraunded by () show sbit encoded FAST fields and follow by decoded value, inital or previous value if a pmap bit absant.
But this record is not clear: (0xC0)PMap1=0x40 (0xB1)EntryType=1 ()exponent=0 (0x736F91)mantissa=-198767
There is no pmap bit for the exponent nullable field. Do we take default exponent value=0 or ignore whole decimal field with negative mantissa in this case?

14:01:40 (0xE0)PMap=Ox60 (0x82)id=2 (0xB1)MDReqID="1" (0x84)NoMDEntries=4
14:01:40 (0xE0)PMap1=0x60 (0xB0)EntryType=0 (0xFE)exponent=-2 (0xC20C7)mantissa=200775
14:01:40 (0xB6)EntrySize=53 (0x94D75E2)EntryDate=20151009 (0x344227B0)EntryTime=110138287 (0x80)EntryPositionNo=0

14:01:40 (0xC0)PMap1=0x40 (0xB1)EntryType=1 ()exponent=0 (0x736F91)mantissa=-198767
14:01:40 (0x99)EntrySize=77 (0x80)EntryDate=20151009 (0x80)EntryTime=110138287 (0x80)EntryPositionNo=0

14:01:40 (0xE0)PMap1=0x60 (0xB7)EntryType=7 (0xFF)exponent=-1 (0x1DB1)mantissa=18097
14:01:40 (0x80)EntrySize=77 (0x80)EntryDate=20151009 (0x80)EntryTime=110138287 (0x80)EntryPositionNo=0

14:01:40 (0xE0)PMap1=0x60 (0xB8)EntryType=8 (0xFE)exponent=-2 (0xA7CBA)mantissa=179770
14:01:40 (0x80)EntrySize=77 (0x80)EntryDate=20151009 (0x80)EntryTime=110138287 (0x80)EntryPositionNo=0

14:01:41 (0x80)PMap=Ox0 ()id=2 ()MDReqID="1" (0x84)NoMDEntries=4
14:01:41 (0xE0)PMap1=0x60 (0xB0)EntryType=0 (0xFE)exponent=-2 (0x784)mantissa=900
14:01:41 (0xEA)EntrySize=182 (0x81)EntryDate=20151009 (0x81)EntryTime=110138287 (0x80)EntryPositionNo=0

14:01:41 (0xC0)PMap1=0x40 (0xB1)EntryType=1 ()exponent=0 (0x736F91)mantissa=-198767
14:01:41 (0x97)EntrySize=204 (0x80)EntryDate=20151009 (0x80)EntryTime=110138287 (0x80)EntryPositionNo=0

14:01:41 (0xE0)PMap1=0x60 (0xB7)EntryType=7 (0xFF)exponent=-1 (0x1DB1)mantissa=18097
14:01:41 (0x80)EntrySize=204 (0x80)EntryDate=20151009 (0x80)EntryTime=110138287 (0x80)EntryPositionNo=0

14:01:41 (0xE0)PMap1=0x60 (0xB8)EntryType=8 (0xFE)exponent=-2 (0xA7CBA)mantissa=179770
14:01:41 (0x80)EntrySize=204 (0x80)EntryDate=20151009 (0x80)EntryTime=110138287 (0x80)EntryPositionNo=0
... e.s.


Is it possible to show a dump of hex sbit encoded FAST fields which OEC server sending to my client on my request?

Alexey Verbitskiy
AVerbitskiy7473
Posts: 2
Joined: Aug 28, 2015


Posted: Oct 15, 2015 @ 04:07 AM             Msg. 2 of 2
I found my mistake and corrected code. New my app work properly.

My app calculated new price value using formula:
new_price=prev_price+price_delta
but I must calculate new mantissa first:
new_mantissa=prev_mantissa+mantissa_delta
and then calculate new price using new mantissa and new e?ponent.

Alexey Verbitskiy