2015-03-26 1 views
3

Im пытается реплицировать MarketDataRequest в Python, который у меня есть на Java, но не могу найти какой-либо пример кода. Кто-нибудь есть опыт работы с Python и QuickFixquickfix python marketdatarequest

код Java выглядит следующим образом:

MarketDataRequest mdr = new MarketDataRequest(); 

if (subscribed) 
{ 
    mdr.set(new SubscriptionRequestType(SubscriptionRequestType.DISABLE_PREVIOUS_SNAPSHOT_PLUS_UPDATE_REQUEST)); 
    Session.sendToTarget(mdr, sessionId); 
} 

mdr.set(new MDReqID("1")); 
mdr.set(new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES)); 
mdr.set(new MarketDepth(0)); 
mdr.set(new MDUpdateType(MDUpdateType.INCREMENTAL_REFRESH)); 

mdr.set(new NoMDEntryTypes(2)); 

MarketDataRequest.NoMDEntryTypes entries = new MarketDataRequest.NoMDEntryTypes(); 
entries.set(new MDEntryType(MDEntryType.BID)); 
mdr.addGroup(entries); 
entries.set(new MDEntryType(MDEntryType.OFFER)); 
mdr.addGroup(entries); 

mdr.set(new NoRelatedSym(pairs.size())); 

MarketDataRequest.NoRelatedSym symbols = new MarketDataRequest.NoRelatedSym(); 

for (String pair : pairs) 
{ 
    symbols.set(new Instrument(new Symbol(pair))); 
    mdr.addGroup(symbols); 
} 

Session.sendToTarget(mdr, sessionId); 

До сих пор в Python У меня есть это:

mdr = fix.Message() 
mdr.getHeader().setField(fix.BeginString(fix.BeginString_FIX44)) 
mdr.getHeader().setField(fix.MsgType(fix.MsgType_MarketDataRequest)) 

mdr.setField(fix.MDReqID('1')) 
mdr.setField(fix.SubscriptionRequestType(fix.SubscriptionRequestType_SNAPSHOT_PLUS_UPDATES)) 
mdr.setField(fix.MarketDepth(0)) 
mdr.setField(fix.NoMDEntryTypes(2)) 
mdr.setField(fix.MDUpdateType(fix.MDUpdateType_INCREMENTAL_REFRESH)) 

ответ

2

свататься! Решено моя собственная проблема

mdr = fix.Message() 
mdr.getHeader().setField(fix.BeginString(fix.BeginString_FIX44)) 
mdr.getHeader().setField(fix.MsgType(fix.MsgType_MarketDataRequest)) 

mdr.setField(fix.MDReqID('1')) 
mdr.setField(fix.SubscriptionRequestType(fix.SubscriptionRequestType_SNAPSHOT_PLUS_UPDATES)) 
mdr.setField(fix.MarketDepth(0)) 
mdr.setField(fix.NoMDEntryTypes(2)) 
mdr.setField(fix.MDUpdateType(fix.MDUpdateType_INCREMENTAL_REFRESH)) 

group = fixnn.MarketDataRequest().NoMDEntryTypes() 
group.setField(fix.MDEntryType(fix.MDEntryType_BID)) 
mdr.addGroup(group) 
group.setField(fix.MDEntryType(fix.MDEntryType_OFFER)) 
mdr.addGroup(group) 

mdr.setField(fix.NoRelatedSym(len(new_pairs))) 

symbol = fixnn.MarketDataRequest().NoRelatedSym() 
for pair in new_pairs: 
    symbol.setField(fix.Symbol(pair)) 
    mdr.addGroup(symbol) 

fix.Session.sendToTarget(mdr, sessionID) 
+0

Эй @Christian, я пытаюсь использовать этот код, но я получаю эту ошибку 'неверного номера в групповом счете для tag' – cpz

+0

@cpz - вы решить эту проблему? Помогает ли это http://stackoverflow.com/questions/15058116/incorrect-numingroup-count-for-repeating-group-quickfix – Christian

+0

спасибо @christian. У меня была еще одна проблема, которая теперь решена. Мне пришлось использовать AppDataDictionary вместо DataDictionary. – cpz