システムトレード構築編

【QuickFix/J】FIX API で発注クライアント構築を試みる -2- UsernameとPasswordの送信

前回の続きをやっていきます。

今回は、ログオン時にUsernameとPasswordを送信するところまで実装してみました。

アカウント追加

ブローカーから送られてくるFIXの接続情報には、Pricing用とTrading用の2つあることがあります。つまり、レート取得と発注で、2セッション張る必要があります。

テスト開発段階でも、それを見越して2セッション張るようにしておきます。

test.cfg に下記を追加します。

SocketConnectHostの192.168.100.99は、私の環境の場合です。ローカルにQuickFixサーバを構築している場合は、127.0.0.1とします。

サーバ側の executor.cfg には、最初から CLIENT2 も定義されているので編集不要です。

動作確認します。

<20181216-14:29:02.504018000, GLOBAL, event>
(Accepted connection from 192.168.100.50 on port 5001)
<20181216-14:29:02.514019000, GLOBAL, event>
(Accepted connection from 192.168.100.50 on port 5001)
<20181216-14:29:03.562370000, FIX.4.4:EXECUTOR->CLIENT1, incoming>
(8=FIX.4.49=7635=A34=149=CLIENT152=20181216-14:29:03.51756=EXECUTOR98=0108=30141=Y10=148)
<20181216-14:29:03.562416000, FIX.4.4:EXECUTOR->CLIENT1, event>
(Logon contains ResetSeqNumFlag=Y, reseting sequence numbers to 1)
<20181216-14:29:03.562596000, FIX.4.4:EXECUTOR->CLIENT1, event>
(Received logon request)
<20181216-14:29:03.562633000, FIX.4.4:EXECUTOR->CLIENT1, outgoing>
(8=FIX.4.49=7935=A34=149=EXECUTOR52=20181216-14:29:03.56261156=CLIENT198=0108=30141=Y10=047)
<20181216-14:29:03.562661000, FIX.4.4:EXECUTOR->CLIENT1, event>
(Responding to logon request)
<20181216-14:29:03.583218000, FIX.4.4:EXECUTOR->CLIENT2, incoming>
(8=FIX.4.49=7635=A34=149=CLIENT252=20181216-14:29:03.54756=EXECUTOR98=0108=30141=Y10=152)
<20181216-14:29:03.583250000, FIX.4.4:EXECUTOR->CLIENT2, event>
(Logon contains ResetSeqNumFlag=Y, reseting sequence numbers to 1)
<20181216-14:29:03.583382000, FIX.4.4:EXECUTOR->CLIENT2, event>
(Received logon request)
<20181216-14:29:03.583416000, FIX.4.4:EXECUTOR->CLIENT2, outgoing>
(8=FIX.4.49=7935=A34=149=EXECUTOR52=20181216-14:29:03.58339556=CLIENT298=0108=30141=Y10=060)
<20181216-14:29:03.583438000, FIX.4.4:EXECUTOR->CLIENT2, event>
(Responding to logon request)

CLIENT1 と CLIENT2 の両方が接続されていることが確認できました。

ログオン時にUsernameとPasswordを追加

ブローカーから送られてくるFIXの接続情報には、UsernamePasswordが付いていることがほとんどです。

でも、サンプルアプリの Banzai では、UsernameやPasswordは使っていないので、参考にできるものがありません。

ググってみると、Application の toAdmin() で、「メッセージタイプが LOGON の場合は、Username(553)とPassword(554)のフィールドを追加する」という処理をするのが、一般的なようです。

なので、以下のQ/Aを参考に、Applicationクラスの toAdmin() を下記のように変更します。

http://quickfix-j.364392.n2.nabble.com/Logon-message-userid-password-td364927.html

また、import文には新たに下記を追加しておきます。

UsernameとPasswordは、configファイル未対応なようなので、とりあえずハードコーディングしておきました。

QuickFixサーバを起動して、動作を確認しておきます。

<20181216-13:53:39.776652000, GLOBAL, event>
(Accepted connection from 192.168.100.50 on port 5001)
<20181216-13:53:40.849035000, FIX.4.4:EXECUTOR->CLIENT1, incoming>
(8=FIX.4.49=10135=A34=149=CLIENT152=20181216-13:53:40.80256=EXECUTOR98=0108=30141=Y553=learner554=ABCD123410=039)

メッセージに、 553=learner554=ABCD1234 が追加されていることが確認できました。

受信メッセージの表示

QuickFixのサンプルクライアントの様に、受信したFIXメッセージをコンソールに垂れ流すようにしておきます。Applicationクラスの fromAdmin() を以下のようにします。

接続中は、Intellijのコンソールで定期的に下記のようなメッセージが垂れ流れるようになりました。

FIX.4.4:CLIENT1->EXECUTOR | 8=FIX.4.49=6135=034=349=EXECUTOR52=20181216-15:55:52.87540856=CLIENT110=224


短いですが、今回はここまでです。

次は、ブローカーのデモ環境に接続して Test Request を送ることにトライしたいと思います。

COMMENT

メールアドレスが公開されることはありません。