2016-05-09 4 views
0

最近、新しいトレーダーのための基本的な取引プラットフォームを作成する作業が行われました。私は銀行のFIX 4.4の実装に接続しています。QUICKFIXの特定のセッションへのメッセージの送信N

銀行は2セッションを指定しています。 1つは見積もりデータ用、もう1つは取引実行用です。

私はQuickfixNを使用して、私はそれに両方のセッションを持っている私のイニシエータセッションの設定を設定している

C#でコーディングしています。ポートが異なり、ターゲットcompidと送信者compidが異なっています。私は両方にうまく接続することができます。私が苦労しているのは、注文リクエストを1つのセッションで送信する方法で、他のセッションでは要求しない方法です。

両方のセッションでは、FIX 4.4が必要です。デフォルトでは、最初のセッションだけが使用されます。

答えて

3

イニシエータを作成するときは、セッションオブジェクトを変数に保存します。 (おそらくOnCreateコールバック経由で、完了済みとしてhere

これらの変数をメッセージ送信クラスにアクセス可能にします。

その後、メッセージを送信するために、ただの1呼び出す:ここにヘッダを設定

quoteSession.send(msg) 
tradeSession.send(msg) 
+1

ありがとう! onCreateは必要な部分でした! – Brett

0

メッセージを送信するセッションのSessionIdを多重化し、メッセージヘッダーを設定する必要があります。このようなもの(Javaの場合):

public void mySend (Message m) throws FieldNotFound 
{  
    String beginString = "FIX.4.4"; 
    String sender = "SENDER"; 
    String target = "TARGET"; 

    // Set the message headers 
    m.getHeader().setField(new SenderCompID(sender)); 
    m.getHeader().setField(new TargetCompID(target)); 

    // Set the correct session for the initiator to send out to 
    SessionID s = new SessionID(beginString, sender, target); 

    // Lookup the relevant QF session 
    _session = Session.lookupSession(s); 

    // Send the FIX message 
    try 
    { 
      if (_session != null) 
      { 
       _session.send(m); 
      } 
      else 
      { 
       log("Can't send message: FIX session not created."); 
       log(" " + m.toString()); 
      } 
    } 
    catch (Exception e) 
    { 
      errorHandler(e); 
    } 
} 
+1

することは無意味です。彼らは '_session.send(m)'の間にセッションの値で争うでしょう。また、送信ごとにセッションルックアップを行う必要はありません。セッションを外部の可視値に保存し、発信者がどちらを使用するかを決定させる方がよいでしょう。 –

+0

ありがとう、QFメッセージの送信者comp idとtarget comp idタグがsendを呼び出して上書きされることはわかりませんでした。右?上記と同様のコードは、多くの異なるアクセプタセッションとイニシエータセッション(すなわち、価格分布と多くのFIXクライアントへの更新)間の多重化を解決する素早い方法であると考えられていました。 (あなたはどのくらいのセッションが動的に接続されるかわからない/ディスコなど) – rupweb

+0

正しい。ほとんどの場合、ヘッダーフィールドをまったく設定せずにメッセージを作成します。あなたはセッションに基づいてそれを行うためにエンジンに頼っているだけです。 QuickFIX/nでは、BeginString/SenderCompID/TargetCompIDがすべてクローバされます。 Javaでは、私は100%確信していませんが、私はそれが同じであると考えています。 –