2015-04-13 4 views
1

Я использую QuickFix с Python. На обратной стороне вопроса this, я немного изучил класс SessionID, но я удивлен поведением.Как получить SessionID в QuickFix

Класс SessionID описан here. Он сформирован из BeginString, SenderCompID и TargetCompID.

Скажите, что мой SessionID в строковой форме выглядит так: FIX.4.2: LMXTS-> TS68.

fix.SessionID().fromString() возвращает :->

Что, если вы посмотрите, являются три наполнителя символы, разделяющие BeginString, SenderCompID и TargetCompID.

fix.SessionID().getBeginString8=☺ (т. Е. BeginString нигде). То же самое относится к getSenderCompID и getTargetCompID, они возвращают 49=☺ и 56=☺ соответственно.

fix.SessionID().getTargetCompID().getValue() возвращает пустую строку ''.

Попытка другим способом, fix.SessionID().fromString('FIX.4.2:LMXTS->TS68')None.

Я пытаюсь получить эти значения после создается сеанс (который я явно вижу происходит, когда я прохожу fix.ScreenLogFactory(settings) инициатора. Так что я запутался.

+0

Что говорит вам, что сеанс создан? – Pradyot

+0

И вы вызвали start()? – Pradyot

+0

Когда я запускаю QF в режиме screenLog, он печатает это при создании '<20150413-17: 43: 15.863, FIX.4.2: LMXTS-> TS68, event> (Created session)'. И да, я также попробовал запустить инициатор, но получил те же результаты. – Wapiti

ответ

1

Метод void onLogon(const SessionID&) {} в Application.h уволен во время входа в систему и дает ссылку на SessionID. Вы можете осмотреть объект SessionID внутри onLogon, чтобы узнать, как он себя ведет.

+0

Не настоящий ответ на то, что происходит с 'fix.SessionID', но большое обходное решение. Благодарю. – Wapiti

0

Это звучит, как вы смотрите на сеанс непосредственно после его создания, до входа в систему и т. д. Таким образом, это означает, что вы не используете точку останова, например, FromApp или ToApp, чтобы посмотреть на свойства сеанса. Если вы это сделаете, вы получите свойства напрямую, например SenderCompID, или TargetCompID.

Я не могу найти метод SessionID в объектах, которые я использую. Как вы определяете свой объект «fix»?

+0

Эй, rupweb. 'fix' определяется следующим образом:' import quickfix as fix'. Метод 'SessionID' существует, поскольку он не выдает ошибку, когда я его вызываю. Я попытался напечатать 'fix.SessionID(). ToString()' и варианты в методе 'onLogon()' с теми же результатами. Я попробую 'fromApp' и' toApp' и дам вам знать, как это происходит. – Wapiti

+0

Итак, вложение 'print fix.SessionID(). ToString()' в 'toApp' и' fromApp' возвращает ': ->' в обоих случаях (когда сообщение отправлено мной и получено мной соответственно). Что дает? – Wapiti

+0

вы можете исправить.SessionID(). SenderCompID или fix.SessionID(). SenderCompID.toString() или что-то подобное? – rupweb

Смежные вопросы