How to install TransactTime in QuickFix using Python format for GMT

I am relatively new to using python and quickfix , I want the transaction time for the message to be in UTC, so that the transaction time looks like YYYYMMDD-HH:MM:SS.mmm , so basically I want the tag 60 to look like 2012-02-13-08:15:35.435 for example

I made the following code

 newSingle.getHeader().setField(fix.Transacttime(time.gmtime())) 

but I get errors that don't match C / C ++ prototypes

  newSingle.getHeader().setField(fix.TransactTime(time.gmtime())) File "/usr/lib/python2.6/dist-packages/quickfix.py", line 41959, in __init__ quickfix.UtcTimeStampField.__init__(self, 60, data) File "/usr/lib/python2.6/dist-packages/quickfix.py", line 764, in __init__ this = _quickfix.new_UtcTimeStampField(*args) NotImplementedError: Wrong number of arguments for overloaded function 'new_UtcTimeStampField'. Possible C/C++ prototypes are: FIX::UtcTimeStampField(int,UtcTimeStamp const &,bool) FIX::UtcTimeStampField(int,UtcTimeStamp const &) FIX::UtcTimeStampField(int,bool) FIX::UtcTimeStampField(int) 

Any help regarding how I can achieve the result I'm looking for. Thanks!

+4
source share
3 answers

Ok, rookie mistake to answer my own question:

 newSingle.getHeader().setField(fix.SendingTime(1)) 

This will do all the work for you.

0
source

Since UtcTimeStamp not supported in Python, I suggest setting the value manually.

 newSingle.getHeader().setField(fix.StringField(60,(datetime.utcnow ().strftime ("%Y%m%d-%H:%M:%S.%f"))[:-3])) 

Or you can also do it.

 transact_time = fix.TransactTime() transact_time.setString('20160404-03:52:24.824') newSingle.getHeader().setField(transacttime) 
0
source

When you call fix.TransactionTime() , a tag with the current time is created by default. For instance:

 In [68]  fix.TransactTime().getString() Out[68]  '20160701-18:01:57' 

If you want to set a custom timestamp:

 In [135]  dnow = datetime.utcnow() In [136]  dnow.strftime('%Y%m%d-%H:%M:%S') Out[136]  '20160701-18:23:33' In [137]  tag = fix.TransactTime() In [138]  tag.getString() Out[138]  '20160701-18:23:46' In [139]  tag.setString(dnow.strftime('%Y%m%d-%H:%M:%S')) In [140]  tag.getString() Out[140]  '20160701-18:23:33' 

Note that <T23> (52) and TransactionTime (60) are two different tags, but their behavior is the same (i.e. you can apply the same logic to SendingTime in TransactionTime above).

0
source

Source: https://habr.com/ru/post/1396208/


All Articles