8

私は比較的使い慣れてpythonおりquickfix、メッセージのトランザクション時間をUTC形式にして、トランザクション時間が次のようにYYYYMMDD-HH:MM:SS.mmm なるようにしたいので、基本的にはタグ60を次のようにしたいと思い2012-02-13-08:15:35.435ます。

私は次のコードを実行しました

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

しかし、C /C++プロトタイプと一致しないエラーが発生します

  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)

私が探している結果をどのように達成できるかについての助け。ありがとう!

4

4 に答える 4

4

UtcTimeStampPython ではサポートされていないため、値を手動で設定することをお勧めします。

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

または、このようにすることもできます。

transact_time = fix.TransactTime()
transact_time.setString('20160404-03:52:24.824')
newSingle.getHeader().setField(transact_time)
于 2016-04-04T02:18:54.000 に答える
1

呼び出すfix.TransactionTime()と、デフォルトで現在の時刻のタグが作成されます。例えば:

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

カスタム タイムスタンプを設定する場合:

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'

SendingTime(52) と(60) は 2 つの異なるタグですが、動作は同じです (つまり、上記TransactionTimeと同じロジックを適用できます)。SendingTimeTransactionTime

于 2016-07-01T18:27:19.360 に答える
1

さて、新人エラー、私自身の質問に答えます:

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

これですべての作業が完了します。

于 2012-02-14T15:47:24.873 に答える