1

QuickFixサイト(1.13.3)の最新のバイナリでQuickFix用の.NETラッパーを使用しています。

セッションはアクセプターとして構成され、毎日06:10:00から15:35:00までスケジュールされます。

問題は、相手が午前中に最初のログオンを試みたときに、エンジンが不要なLogoutメッセージを送信し、最終日からシーケンス番号をリセットしないことです。

Sessionメソッドにプロパティのカスタムログを追加しました。toAppこれは、相手が最初のLogonメッセージを送信したときにログに記録されます(toApp時間はUTC + 1です)。

20121128-06:46:14.546 : 8=FIX.4.2|9=63|35=A|49=OTHER_PARTY|56=US|34=1|52=20121128-06:46:14|98=0|108=60|141=Y|10=046

2012-11-28 07:46:14,546 [3] DEBUG FixAcceptor.FIX.4.2-US-OTHER_PARTY [(null)] <(null)> - Session 'FIX.4.2:US->OTHER_PARTY',   isLoggedOn: False,   isSessionTime: True,   sentLogon: False,   sentLogout: False,   receivedLogon: False  

20121128-06:46:14.546 : 8=FIX.4.2|9=50|35=5|34=79|49=US|52=20121128-06:46:14.546|56=OTHER_PARTY|10=225|

Logoutこのメッセージが送信される理由がわかりません。前日のセッションは、両当事者からの通常のログアウトで終了しました。相手が別のLogonメッセージを送信すると、すべてがうまくいき、通常のLogon応答が送信されます。

20121128-06:46:24.765 : 8=FIX.4.2|9=63|35=A|49=OTHER_PARTY|56=US|34=2|52=20121128-06:46:24|98=0|108=60|141=Y|10=048  
20121128-06:46:24.780 : 8=FIX.4.2|9=67|35=A|34=1|49=US|52=20121128-06:46:24.780|56=OTHER_PARTY|98=0|108=60|141=Y|10=000

なぜこれが起こっているのか、何か考えはありますか?

編集 今日もログを確認しましたが、昨日のログアウト手順は適切に実行されましたが、シーケンス番号がリセットされず、今日の朝にログアウトメッセージが再度送信されました。

20121128-15:07:22.248 : 8=FIX.4.2|9=54|35=5|49=OTHER_PARTY|56=US|34=262|52=20121128-15:07:22|58=END|10=192|  
20121128-15:07:22.248 : 8=FIX.4.2|9=51|35=5|34=262|49=US|52=20121128-15:07:22.248|56=OTHER_PARTY|10=007|  
20121129-06:23:25.326 : 8=FIX.4.2|9=63|35=A|49=OTHER_PARTY|56=US|34=1|52=20121129-06:23:25|98=0|108=60|141=Y|10=044|  
20121129-06:23:25.341 : 8=FIX.4.2|9=51|35=5|34=263|49=US|52=20121129-06:23:25.341|56=OTHER_PARTY|10=004|  
20121129-06:23:35.544 : 8=FIX.4.2|9=63|35=A|49=OTHER_PARTY|56=US|34=2|52=20121129-06:23:35|98=0|108=60|141=Y|10=046|  
20121129-06:23:35.560 : 8=FIX.4.2|9=67|35=A|34=1|49=US|52=20121129-06:23:35.560|56=OTHER_PARTY|98=0|108=60|141=Y|10=250|  

したがって、間違ったシーケンス番号がログアウトメッセージが送信される理由である場合、QuickFixがシーケンス番号をリセットしないのはなぜかという疑問が残ります。チェックしたところ、セッション構成中にStartDay / EndDay構成パラメーターが設定されておらず、StartTime/EndTimeのみが設定されています。他に確認すべきことはありますか?

4

1 に答える 1

0
Logon 34=1

Logout 34=79

予想されるシーケンス番号は、おそらく 78 です。シーケンス番号をリセットするか、イニシエータに最後に使用したシーケンス番号を使用してアクセプタにメッセージを送信するよう依頼する必要があります。

構成ファイル内の次のタグが役立ちます。それらはすべてデフォルトで N です。必要なタグを Y に変更して、ログオン/ログアウト/切断時にシーケンス番号をリセットできるようにする必要がある場合があります。

ResetOnLogon    
ResetOnLogout   
ResetOnDisconnect
RefreshOnLogon  

私の推測では、Quickfix がまだ古いシーケンス番号を保持しているため、セッションのログアウトが適切に行われないということです。そして、最初のログアウトでシーケンス番号をリセットします。ResetOnLogout が設定されている可能性があります。

于 2012-11-28T16:37:15.210 に答える