13

私は FIX プロトコルにかなり慣れていないので、誰かがいくつかの用語を明確にするのを手伝ってくれることを望んでいました.

特に、 、 の流れ、NewOrderSingleおよびフィールド、、がこれらのメッセージ内でどのように使用されるかを (おそらく例を挙げて) 誰かが説明できますか?ExecutionReportCancelReplaceRequestClOrdIDOrdIDOrigClOrdID

4

1 に答える 1

21

フィールドの使用法について簡単に説明します。私の経験では、FIX を実装する多くの人は、若干異なる方法で実装しています。したがって、正しい使用法を説明しようとしていますが、実装によって違いがあることに気付くかもしれません。新しいブローカーに接続すると、プロトコルの使用方法を正確に詳述する FIX 仕様が得られます。それらが他の実装から逸脱した場所を確認するために、非常に注意する必要があります。

つまり、あなたが求めたものの要約をあなたに与えるということです。

もっと複雑な注文もありますが、NewOrderSingle が最もよく使われます。これにより、あらゆる資産の取引を作成できます。このオブジェクト/メッセージ タイプを使用して新しい注文を作成する必要があります。次に、メソッド sendToTarget() を使用してセッションを介して送信します。アプリケーションが quickfix.Application インターフェイスを実装していると仮定すると、この時点の後に toApp() メソッドを使用してメッセージを変更できます。

ブローカー (またはあなたが接続している相手) は、実行レポートの形式で返信を送信します。その応答が fromApp() コールバックを介してアプリケーションに入ります。そこから行う最善の方法は、MessageCracker クラスから継承するアプリを実装する (または別の場所に実装する) ことです。MessageCracker のクラック メソッドを使用すると、関連する onMessage() メソッド呼び出しがコールバックされます。これらの onMessage() メソッドをいくつか実装する必要があります (どのメソッドが必要になるかは、特に何をしているかによって異なります)。主なものは onMessage(ExecutionReport msg, SessionID session) です。このメソッドは、ブローカーから実行レポートを受け取ると、メッセージ クラッカーによって呼び出されます。これは、新規注文に対する標準的な返信です。

そこから、必要に応じて返信を処理します。

指値注文のようにすぐに約定しない注文もあります。それらは変更できます。そのためには、CancelReplaceRequest が必要です。あなたのブローカーは、特に彼らのためにこれを行う方法の詳細を提供します(ここでも違いがあり、誰もが同じことをしているわけではありません. 最初に NewOrderSingle を実行してから、この MsgType を使用して更新する必要があります。

ClOrdID は、クライアントが注文を識別するために使用する ID です。NewOrderSingle で送信され、ExecutionReport で返されます。OrdID タグは ExecutionReport メッセージにあり、ブローカーが注文を識別するために使用する ID です。OrgClOrdID は通常、(CancelReplaceRequest を使用して) 更新するときに元の注文を識別するために使用され、元の注文の ClOrdID が含まれているはずです。一部のブローカーは元の注文のみを必要とし、他のブローカーは最後の更新の ClOrdID を必要とします。そのため、最初の OrigClOrdID または NewOrderSingle の ClOrdID になり、同じ注文に対する後続の更新がある場合、それらは最後の CancelReplaceRequest の ClOrderID になります。 . 一部のブローカーは、ClOrderID ではなく、最後の OrderID を必要とします。CancelReplaceRequest には ClOrdID も必要であることに注意してください。

于 2013-01-29T16:50:27.287 に答える