コンテンツにスキップ

cTrader FIXエンジン(利用規約)

概要

範囲

この仕様は、ソフトウェア開発者向けのcTrader FIXエンジンAPIの実装ガイドとして機能することを目的としています。

FIXバージョン

cTraderはFIXバージョン4.4をサポートしています。 このバージョンの詳細については、これらの仕様を参照してください。

接続性

接続タイプ

cTraderのFIXエンジンへの接続は、インターネット、VPNトンネル、または英国のデータセンター施設へのクロスコネクトを介して利用できます。 詳細については、お問い合わせください。

シーケンス番号のリセット

FIXセッションのすべての側面は、FIXセッションを確立する際にシーケンス番号をリセットする必要があります。 ログオンメッセージを参照してください。

メッセージ

FIXプロトコルで定義されているように、cTrader FIXサーバーは2つの異なるデータレベル(システムとアプリケーション)を使用しています。 これは、必要なワークフローをサポートするために必要な最小限のメッセージセットであることに注意してください。 ビジネスニーズとFIX標準の両方が進化するにつれて、時間とともに変更される可能性があります。

cTrader FIXエンジン

システムメッセージ

  • ハートビート(クライアント ↔ cTrader)
  • テストリクエスト(クライアント ↔ cTrader)
  • ログオン(クライアント → cTrader)
  • ログアウト(クライアント → cTrader)
  • 再送リクエスト(クライアント ↔ cTrader)
  • リジェクト(クライアント ↔ cTrader)
  • シーケンスリセット(クライアント ↔ cTrader)

アプリケーションメッセージ

  • マーケットデータリクエスト(クライアント → cTrader)
  • マーケットデータスナップショット/フルリフレッシュ(クライアント ← cTrader)
  • マーケットデータインクリメンタルリフレッシュ(クライアント ← cTrader)
  • 新規注文シングル(クライアント → cTrader)
  • 注文ステータスリクエスト(クライアント → cTrader)
  • 注文一括ステータスリクエスト(クライアント → cTrader)
  • 約定レポート(クライアント ← cTrader)
  • ビジネスメッセージリジェクト(クライアント ← cTrader)
  • ポジションリクエスト(クライアント → cTrader)
  • ポジションレポート(クライアント ← cTrader)
  • 注文キャンセルリクエスト(クライアント → cTrader)
  • 注文キャンセルリジェクト(クライアント ← cTrader)
  • 注文キャンセル/変更リクエスト(クライアント → cTrader)
  • 銘柄リストリクエスト(クライアント → cTrader)
  • 銘柄リスト(クライアント ← cTrader)

標準ヘッダー

各管理メッセージまたはアプリケーションメッセージの前には、標準ヘッダーが付きます。 ヘッダーはメッセージタイプ、長さ、宛先、シーケンス番号、発信元、時間を識別します。

cTraderに送信されるすべてのメッセージには、以下のフィールドを含む標準ヘッダーが必要です:

タグ フィールド名 必須 FIX形式 コメント
8 BeginString FIX.4.4 String 常に暗号化されず、メッセージの最初のフィールドでなければなりません。
9 BodyLength 任意の有効な値 Integer メッセージ本文の長さ。 常に暗号化されず、メッセージの2番目のフィールドでなければなりません。
35 MsgType A String メッセージタイプ。 常に暗号化されず、メッセージの3番目のフィールドでなければなりません。
49 SenderCompID 任意の有効な値 String 以下の形式での取引当事者のID:<Environment>.<BrokerUID>.<Trader Login>、ここでEnvironmentはデモやライブなどのサーバーの決定、BrokerUIDはcTraderによって提供され、Trader Loginはトレーダーアカウントの数値識別子です。
56 TargetCompID CSERVER String メッセージのターゲット。 The valid value is CSERVER.
57 TargetSubID QUOTEまたはTRADE String 追加のセッション修飾子。 可能な値はQUOTETRADEです。
50 SenderSubID 不可 任意の有効な値 String 特定のメッセージ発信者を識別するために使用される割り当て値。 TargetSubID=QUOTEの場合、QUOTEに設定する必要があります。
34 MsgSeqNum 1 Integer メッセージのシーケンス番号。
52 SendingTime 20131129-15:40:08.155 UTCTimestamp メッセージ送信時間は常にUTC(協定世界時、GMTとしても知られる)で表現されます。

標準トレーラー

各メッセージ(管理用または応用)は標準トレーラーで終了します。 トレーラーはメッセージを分離するために使用され、CheckSum(タグ=10)値の3桁の表現を含みます。

タグ フィールド名 必須 FIX形式 コメント
10 CheckSum 054 String 3バイトの単純チェックサム。 常にメッセージの最後のフィールドであり(例えば、serves)、末尾の<SOH>がメッセージ終了デリミタとなります。 3文字として定義されます(常に暗号化されません)。

セッションメッセージ

Heartbeat (MsgType(35)=0)

ハートビートメッセージはcTraderとクライアントアプリケーションの両方から送信され、ライブ接続を確認します。

プロバイダーのクライアントアプリケーションは、ログオンメッセージのHeartBtInt(タグ=108)フィールドで定義された間隔で定期的なハートビートを送信するか、テストリクエストメッセージへの応答として送信します。

タグ フィールド名 必須 FIX形式 コメント
Standard Header
112 TestReqID 不可 任意の有効な値 String ハートビートがテストリクエストメッセージの結果である場合、TestReqIDが必要です。
Standard Trailer

Test Request (MsgType(35)=1)

これはリクエストの受信者からハートビートを強制します。 応答は受信システムからTestReqIDを含むハートビートメッセージとして送信されます。

タグ フィールド名 必須 FIX形式 コメント
Standard Header
112 TestReqID 任意の有効な値 String ハートビートメッセージID。 TestReqIDは増分する必要があります。
Standard Trailer

Logon (bidirectional) (MsgType(35)=A)

ログオンメッセージはクライアント側アプリケーションからcTrader FIXセッションを開始するために送信され、cTraderからクライアント側アプリケーションに応答が送信されます。 ログオンが完了すると、セッションのライフサイクル中、見積もりと取引のフローが進行できます。

cTraderが無効なログオンメッセージ(無効なフィールドを含む)を受信した場合、cTraderは応答としてログアウトメッセージを送信します。

タグ フィールド名 必須 FIX形式 コメント
Standard Header
98 EncryptMethod 0 Integer メッセージ暗号化スキームを定義します。 現在、トランスポートレベルのセキュリティのみがサポートされています。 有効な値は0 = NONE_OTHER(暗号化は使用されません)です。
108 HeartBtInt 任意の有効な値 Integer 秒単位のハートビート間隔。 この値はconfig.propertiesファイル(クライアント側)でSERVER.POLLING.INTERVALとして設定されます。 デフォルトの間隔値は30秒です。 HeartBtInt0に設定されている場合、ハートビートメッセージは不要です。
141 ResetSeqNumFlag 不可 Y Boolean FIXセッションのすべての側面でシーケンス番号をリセットする必要があります。 有効な値はY(リセット)です。
553 Username 不可 任意の有効な値 String 数値のユーザーID。 ユーザーはSenderCompID値(ユーザーの組織、タグ=49)にリンクされています。
554 Password 不可 任意の有効な値 String ユーザーパスワード。
Standard Trailer

注意

Usernameフィールド(タグ=553)には数値のトレーダーログイン値を含める必要があり、SenderCompID(タグ=49)には環境、BrokerUID、およびドットで区切られたトレーダーログインを含める必要があります(例:live.theBroker.12345)。

以下にログオンメッセージの例を示します。

リクエスト:

8=FIX.4.4|9=126|35=A|49=live.theBroker.12345|56=CSERVER|34=1|52=20170117-08:03:04|57=TRADE|50=any_string|98=0|108=30|141=Y|553=12345|554=passw0rd!|10=131|

応答(成功):

8=FIX.4.4|9=106|35=A|34=1|49=CSERVER|50=TRADE|52=20170117-08:03:04.509|56=live.theBroker.12345|57=any_string|98=0|108=30|141=Y|10=066|

応答(失敗):

8=FIX.4.4|9=109|35=5|34=1|49=CSERVER|50=TRADE|52=20170117-08:03:04.509|56=live.theBroker.12345|58=InternalError: RET_INVALID_DATA|10=033|

Logout (MsgType(35)=5)

ログアウトメッセージはクライアントアプリケーションからcTraderとのセッション終了を要求するために送信され、cTraderからの応答としても送信されます。 セッションログアウトは、マーケット参加者がcTraderにログアウトメッセージを送信することに応じて発生します。 セッションを終了する前に、cTraderは要求元に対してまだアクティブにストリーミングされているすべての価格をキャンセルします。 cTraderが無効なログオンメッセージ(無効なフィールドを含む)を受信した場合、cTraderはText(タグ=58)フィールドにエラーの詳細を含む応答としてログアウトメッセージを送信します。

タグ フィールド名 必須 FIX形式 コメント
Standard Header
58 Text 不可 任意の有効な値 String ログオン拒否の詳細。 無効なログオンメッセージへの応答としてのcTraderからクライアントへのメッセージにのみ使用されます。
Standard Trailer

以下にログアウトメッセージの例を示します。

リクエスト:

8=FIX.4.4|9=86|35=5|49=live.theBroker.12345|56=CSERVER|34=161|52=20170117-09:22:33|57=TRADE|50=any_string|10=102|

応答:

8=FIX.4.4|9=90|35=5|34=160|49=CSERVER|50=TRADE|52=20170117-09:22:33.077|56=live.theBroker.12345|57=any_string|10=044|

Resend Request (MsgType(35)=2)

インバウンド/アウトバウンドメッセージは、通常シーケンス番号にギャップが検出された場合に、メッセージ(または複数のメッセージ)の再送を要求するために使用されます。

タグ フィールド名 必須 FIX形式 コメント
Standard Header
7 BeginSeqNo 任意の有効な値 Integer 再送する範囲の最初のレコードのメッセージシーケンス番号。
16 EndSeqNo 任意の有効な値 Integer 再送する範囲の最後のレコードのメッセージシーケンス番号。
Standard Trailer

Reject (bidirectional) (MsgType(35)=3)

セッションレベルのルール違反により受信したメッセージを処理できない場合に送信されます。 拒否されたメッセージは記録され、受信シーケンス番号にインクリメントが適用される必要があります。

タグ フィールド名 必須 FIX形式 コメント
Standard Header
45 RefSeqNum 任意の有効な値 SeqNum 参照されるメッセージのシーケンス番号。
58 Text 不可 任意の有効な値 String 自由形式のテキスト文字列。
354 EncodedTextLen 不可 任意の有効な値 長さ EncodedText(非ASCII文字)フィールドのバイト単位の長さ。
355 EncodedText 不可 任意の有効な値 データ 標準ヘッダーのMessageEncoding(タグ=347)フィールドで指定された形式を使用してエンコードされたText(タグ=58)フィールドの表現。 ASCII表現が使用される場合、Text(タグ=58)フィールドにも指定する必要があります。
371 RefTagID 不可 任意の有効な値 Integer メッセージ拒否を開始したFIXフィールドのタグ番号。
372 RefMsgType 不可 任意の有効な値 String 参照されるFIXメッセージのMsgType(タグ=35)。
373 SessionRejectReason 不可 任意の有効な値 Integer 拒否のコード化された原因。 有効な値は以下の通りです:
0 = 無効なタグ番号
1 = 必須タグの欠落
2 = このメッセージタイプに定義されていないタグ
3 = 未定義のタグ
4 = 指定されたタグに値がない
5 = このタグの値が範囲外
6 = 値のデータ形式が不正
7 = 復号化の問題
8 = 署名エラー
9 = CompIDエラー
10 = SendingTime精度エラー
11 = MsgTypeが無効
12 = XML検証エラー
13 = タグが繰り返されている
14 = 指定されたタグが正しい順序でない
15 = 繰り返しグループのフィールドが正しい順序でない
16 = 繰り返しグループのNumInGroupカウントが不正
17 = フィールド区切り文字(SOH文字)がデータ値以外に含まれている
Standard Trailer

Sequence Reset (MsgType(35)=4)

インバウンド/アウトバウンドメッセージはアプリケーションレベルで使用すべきではありません。 シーケンスリセットメッセージはシーケンス番号を増加させることのみ可能です。

タグ フィールド名 必須 FIX形式 コメント
Standard Header
123 GapFillFlag 不可 YesまたはNo String シーケンスリセットメッセージが再送されない管理メッセージまたはアプリケーションメッセージを置き換えることを示します。
36 NewSeqNo 1 Integer 新しいシーケンス番号。
Standard Trailer

アプリケーションメッセージ

Market Data Request (MsgType(35)=V)

タグ フィールド名 必須 FIX形式 コメント
Standard Header
262 MDReqID 任意の有効な値 String 一意の見積要求ID。 新しいサブスクリプションの場合は新しいID、サブスクリプション解除の場合は以前と同じIDを使用します。
263 SubscriptionRequestType 1または2 文字 1 = スナップショットとアップデート(サブスクライブ)。
2 = 以前のスナップショットとアップデート要求を無効化(アンサブスクライブ)。
264 MarketDepth 0または1 Integer 完全な板が提供されます。
0 = デプス・サブスクリプション
1 = スポット・サブスクリプション
265 MDUpdateType 任意の有効な値 Integer インクリメンタルリフレッシュのみがサポートされています。
267 NoMDEntryTypes 2 Integer 常に2に設定されます(ビッドとアスクの両方が送信されます)。
269 MDEntryType 0または1 文字 この繰り返しグループには、要求者が受信したいすべてのタイプのマーケットデータエントリのリストが含まれています。
0 = Bid
1 = Offer
146 NoRelatedSym 任意の有効な値 Integer 要求されたシンボルの数。
55 Symbol 任意の有効な値 買い 銘柄識別子はSpotwareによって提供されます。
Standard Trailer

以下にマーケットデータ要求メッセージの例を示します。

スポットの場合

要求:

8=FIX.4.4|9=131|35=V|49=live.theBroker.12345|56=CSERVER|34=3|52=20170117-10:26:54|50=QUOTE|262=876316403|263=1|264=1|265=1|146=1|55=1|267=2|269=0|269=1|10=094|

応答:

8=FIX.4.4|9=134|35=W|34=2|49=CSERVER|50=QUOTE|52=20170117-10:26:54.630|56=live.theBroker.12345|57=any_string|55=1|268=2|269=0|270=1.06625|269=1|270=1.0663|10=118|

デプスの場合

要求:

8=FIX.4.4|9=131|35=V|49=live.theBroker.12345|56=CSERVER|34=2|52=20170117-11:13:44|50=QUOTE|262=876316411|263=1|264=0|265=1|146=1|55=1|267=2|269=0|269=1|10=087|

応答:

8=FIX.4.4|9=310|35=W|34=2|49=CSERVER|50=QUOTE|52=20180925-12:05:28.284|56=live.theBroker.12345|57=Quote|55=1|268=6|269=1|270=1.11132|271=3000000|278=16|269=1|270=1.11134|271=5000000|278=17|269=1|270=1.11133|271=3000000|278=15|269=0|270=1.1112|271=2000000|278=12|269=0|270=1.11121|271=1000000|278=13|269=0|270=1.11122|271=3000000|278=14|10=247|
8=FIX.4.4|9=693|35=X|34=2|49=CSERVER|50=QUOTE|52=20170117-11:13:44.461|56=live.theBroker.12345|57=any_string|268=12|279=0|269=1|278=7475|55=1|270=1.0691|271=2000000|279=0|269=1|278=7476|55=1|270=1.06911|271=3000000|279=0|269=1|278=7484|55=1|270=1.06931|271=34579000|279=0|269=1|278=7485|55=1|270=1.06908|271=1000000|279=0|269=1|278=7483|55=1|270=1.06906|271=500000|279=0|269=1|278=7482|55=1|270=1.06907|271=500000|279=0|269=1|278=7488|55=1|270=1.06909|271=3000000|279=0|269=0|278=7468|55=1|270=1.06898|271=500000|279=0|269=0|278=7467|55=1|270=1.06874|271=32371000|279=0|269=0|278=7457|55=1|270=1.06899|271=1000000|279=0|269=0|278=7478|55=1|270=1.06896|271=7000000|279=0|269=0|278=7477|55=1|270=1.06897|271=1500000|10=111|
8=FIX.4.4|9=376|35=X|34=3|49=CSERVER|50=QUOTE|52=20170117-11:13:44.555|56=live.theBroker.12345|57=any_string|268=8|279=0|269=0|278=7491|55=1|270=1.06897|271=1000000|279=0|269=0|278=7490|55=1|270=1.06898|271=1000000|279=0|269=0|278=7489|55=1|270=1.06874|271=32373000|279=0|269=1|278=7496|55=1|270=1.06931|271=34580000|279=2|278=7477|55=1|279=2|278=7468|55=1|279=2|278=7467|55=1|279=2|278=7484|55=1|10=192|

Market Data Snapshot/Full Refresh (MsgType(35)=W)

タグ フィールド名 必須 FIX形式 コメント
Standard Header
262 MDReqID 任意の有効な値 String 以前に送信されたマーケットデータ要求のID。
55 Symbol 任意の有効な値 買い 銘柄識別子はSpotwareによって提供されます。
268 NoMDEntries 任意の有効な値 Integer 以下のエントリの数。
269 MDEntryType 不可 0または1 文字 有効な値は以下の通りです:
0 = ビッド
1 = オファー
NoMDEntries(タグ=268)> 0の場合のみ必須。
299 QuoteEntryID 不可 任意の有効な値 String QuoteSetの一部としての見積の一意の識別。
270 MDEntryPx 不可 1.2345 価格 マーケットデータエントリーの価格。 NoMDEntries (タグ=268) > 0 の場合のみ必須。
271 MDEntrySize 不可 500000 取引高 マーケットデータエントリーの取引高。 NoMDEntries (タグ=268) > 0 の場合のみ必須。
278 MDEntryID 不可 任意の有効な値 String マーケットデータエントリーの一意の識別子。
Standard Trailer

Market Data Incremental Refresh (MsgType(35)=X)

タグ フィールド名 必須 FIX形式 コメント
Standard Header
262 MDReqID 任意の有効な値 String 以前に送信されたマーケットデータ要求のID。
268 NoMDEntries 任意の有効な値 Integer 以下のエントリの数。 この繰り返しグループには、リクエスト者が受信したいすべてのタイプのマーケットデータエントリーのリストが含まれています。
279 MDUpdateAction 0 または 2 文字 マーケットデータ更新アクションのタイプ。 有効な値は以下の通りです:
0 = 新規
2 = 削除
269 MDEntryType 不可 0または1 文字 有効な値は以下の通りです:
0 = 買い
1 = 売り
278 MDEntryID 任意の有効な値 String マーケットデータエントリーのID。
55 Symbol 任意の有効な値 買い 銘柄識別子はSpotwareによって提供されます。
270 MDEntryPx 不可 1.2345 価格 MDUpdateAction (タグ=279) = 0 の場合のみ必須。
271 MDEntrySize 不可 10000 ダブル MDUpdateAction (タグ=279) = 0 の場合のみ必須。
Standard Trailer

New Order Single (MsgType(35)=D)

新規注文メッセージは以下のフォーマットです。

タグ フィールド名 必須 FIX形式 コメント
Standard Header
11 ClOrdID 任意の有効な値 String クライアントによって割り当てられた注文の一意の識別子。
55 Symbol 任意の有効な値 買い 銘柄識別子はSpotwareによって提供されます。
54 Side 1または2 Integer 1 = Buy
2 = Sell
60 TransactTime 任意の有効な値 タイムスタンプ クライアントによって生成されたリクエスト時間。
38 OrderQty 任意の有効な値 数量 注文された株数。 これは株式の場合は株数を、オプション、先物、転換社債などの場合は通常の慣例に基づいて契約数を表します。 最大精度は0.01です。 FIX 4.2以前では、このフィールドのタイプは「整数」でした。
40 OrdType 12 または 3 文字 1 = 成行注文、注文はIOC(即時または取消)方式で処理されます(TimeInForce、タグ=59)。
2 = 指値注文、注文はGTC(キャンセルするまで有効)方式で処理されます(TimeInForce、タグ=59)。
3 = 逆指値注文、注文はGTC(キャンセルするまで有効)方式で処理されます(TimeInForce、タグ=59)。
44 Price 不可 任意の有効な値 価格 クライアントが受け入れる最悪の価格。 OrdType (タグ=40) = 2 の場合のみ必須で、この場合、この価格を満たさない限り注文は約定しません。
99 StopPx 不可 任意の有効な値 価格 逆指値注文をトリガーする価格。 OrdType (タグ=40) = 3 の場合のみ必須で、この場合、この価格を満たさない限り注文は約定しません。
59 TimeInForce 不可 1, 3 or 6 String 非推奨、この値は無視されます。 TimeInForceOrdType (タグ=40)とExpireTime (タグ=126)に応じて自動的に検出されます:
1 = GTC(キャンセルするまで有効)、ExpireTime (タグ=126)が定義されていない場合のみ指値注文と逆指値注文(OrdType、タグ=40)に使用されます。
3 = IOC(即時または取消)、成行注文(OrdType、タグ=40)にのみ使用されます。
6 = GTD(指定日時まで有効)、ExpireTime (タグ=126)が定義されている場合のみ指値注文と逆指値注文(OrdType、タグ=40)に使用されます。
126 ExpireTime 不可 20140215-07:24:55 タイムスタンプ YYYYMMDD-HH:MM:SS形式の有効期限。 設定されている場合、注文はGTD方式(TimeInForce: GTD)で処理されます。
721 PosMaintRptID 不可 任意の有効な値 String この注文を配置するポジションID。 設定されていない場合、新しいポジションが作成され、そのIDが約定報告メッセージで返されます。 ヘッジアカウントでのみ指定できます。
494 Designation 不可 任意の有効な値 String カスタム注文ラベル。
Standard Trailer

以下に新規注文メッセージの例を示します。

新規ポジションへの成行注文

リクエスト:

8=FIX.4.4|9=143|35=D|49=live.theBroker.12345|56=CSERVER|34=77|52=20170117-10:02:14|50=any_string|57=TRADE|11=876316397|55=1|54=1|60=20170117-10:02:14|40=1|38=10000|10=010|

応答:

8=FIX.4.4|9=197|35=8|34=77|49=CSERVER|50=TRADE|52=20170117-10:02:14.720|56=live.theBroker.12345|57=any_string|11=876316397|14=0|37=101|38=10000|39=0|40=1|54=1|55=1|59=3|60=20170117-10:02:14.591|150=0|151=10000|721=101|10=149|
8=FIX.4.4|9=206|35=8|34=78|49=CSERVER|50=TRADE|52=20170117-10:02:15.045|56=live.theBroker.12345|57=any_string|6=1.0674|11=876316397|14=10000|32=10000|37=101|38=10000|39=2|40=1|54=1|55=1|59=3|60=20170117-10:02:14.963|150=F|151=0|721=101|10=077|

既存ポジションへの成行注文

リクエスト:

8=FIX.4.4|9=151|35=D|49=live.theBroker.12345|56=CSERVER|34=80|52=20170117-10:02:55|50=any_string|57=TRADE|11=876316398|55=1|54=1|60=20170117-10:02:55|40=1|38=10000|721=101|10=120|

応答:

8=FIX.4.4|9=197|35=8|34=80|49=CSERVER|50=TRADE|52=20170117-10:02:56.003|56=live.theBroker.12345|57=any_string|11=876316398|14=0|37=102|38=10000|39=0|40=1|54=1|55=1|59=3|60=20170117-10:02:55.984|150=0|151=10000|721=101|10=156|
8=FIX.4.4|9=207|35=8|34=81|49=CSERVER|50=TRADE|52=20170117-10:02:56.239|56=live.theBroker.12345|57=any_string|6=1.06735|11=876316398|14=10000|32=10000|37=102|38=10000|39=2|40=1|54=1|55=1|59=3|60=20170117-10:02:56.210|150=F|151=0|721=101|10=127

既存ポジションへの指値注文

リクエスト:

8=FIX.4.4|9=162|35=D|49=live.theBroker.12345|56=CSERVER|34=89|52=20170117-10:06:22|50=any_string|57=TRADE|11=876316400|55=1|54=2|60=20170117-10:06:22|40=2|44=1.07162|38=50000|721=101|10=122|

応答:

8=FIX.4.4|9=208|35=8|34=90|49=CSERVER|50=TRADE|52=20170117-10:06:22.466|56=live.theBroker.12345|57=any_string|11=876316400|14=0|37=104|38=50000|39=0|40=2|44=1.07162|54=2|55=1|59=1|60=20170117-10:06:22.436|150=0|151=50000|721=101|10=149|

新規ポジションへの逆指値注文

リクエスト:

8=FIX.4.4|9=153|35=D|49=live.theBroker.12345|56=CSERVER|34=9|52=20170117-12:10:48|57=TRADE|50=any_string|11=876316418|55=1|54=1|60=20170117-12:10:48|40=3|38=50000|99=1.07148|10=249|

応答:

8=FIX.4.4|9=207|35=8|34=8|49=CSERVER|50=TRADE|52=20170117-12:10:48.400|56=live.theBroker.12345|57=any_string|11=876316418|14=0|37=205|38=50000|39=0|40=3|54=1|55=1|59=1|60=20170117-12:10:48.362|99=1.07148|150=0|151=50000|721=202|10=122|

Order Status Request (MsgType(35)=H)

注文状況リクエストメッセージは、機関がトレーダーから注文状況メッセージを生成するために使用します。 正しい相互作用のためには、すべての注文に対して一意のクライアント注文識別子(ClOrdID)を持つことが非常に重要です。

タグ フィールド名 必須 FIX形式 コメント
Standard Header
11 ClOrdID 任意の有効な値 String クライアントによって割り当てられた注文の一意の識別子。
54 Side 不可 1または2 Integer 1 = Buy
2 = Sell
Standard Trailer

以下に注文状況リクエストメッセージの例を示します。

リクエスト:

8=FIX.4.4|9=98|35=H|49=live.theBroker.12345|56=CSERVER|34=95|52=20170117-10:08:31|50=any_string|57=TRADE|11=876316400|10=191|

応答:

8=FIX.4.4|9=208|35=8|34=95|49=CSERVER|50=TRADE|52=20170117-10:08:31.819|56=live.theBroker.12345|57=any_string|11=876316400|14=0|37=104|38=50000|39=0|40=2|44=1.07162|54=2|55=1|59=1|60=20170117-10:06:22.436|150=0|151=50000|721=101|10=158|

Order Mass Status Request (MsgType(35)=AF)

注文一括状況リクエストメッセージは、リクエスト内で指定された基準に一致する注文の状況をリクエストします。 回答は、複数の約定報告メッセージ(各注文に対して1つ)として返されるか、注文が見つからない場合はビジネスメッセージ拒否メッセージとして返されます。

タグ フィールド名 必須 FIX形式 コメント
Standard Header
584 MassStatusReqID 任意の有効な値 String クライアントによって割り当てられたマスステータスリクエストの一意のID。
585 MassStatusReqType 任意の有効な値 Integer 7 = すべての注文のステータス。
現在、値 7 のみがサポートされています。
225 IssueDate 不可 任意の有効な値 String 設定された場合、レスポンスにはこの日付より前に作成された注文のみが含まれます。
Standard Trailer

以下に注文マスステータスリクエストメッセージの例を示します。

リクエスト:

8=FIX.4.4|9=117|35=AF|34=3|49=live.theBroker.12345|52=20170404-07:20:55.325|56=CSERVER|57=TRADE|225=20170404-07:20:44.582|584=mZzEY|585=7|10=065|

応答:

8=FIX.4.4|9=199|35=8|34=13|49=CSERVER|50=TRADE|52=20170404-07:20:55.333|56=live.theBroker.12345|14=0|37=635|38=100000|39=0|40=2|44=1.35265|54=2|55=1|59=1|60=20170404-07:20:44.582|150=I|151=100000|584=mZzEY|721=617|911=1|10=152|

Execution Report (MsgType(35)=8)

受け入れられた注文の約定報告メッセージは以下の形式になります。

タグ フィールド名 必須 FIX形式 コメント
Standard Header
37 OrderID 任意の有効な値 String cTraderの注文ID。
11 ClOrdID 不可 任意の有効な値 String クライアントによって割り当てられた注文の一意の識別子。
911 TotNumReports 不可 任意の有効な値 Integer 注文マスステータスリクエストメッセージに対するレスポンスで返される報告の総数。
150 ExecType 任意の有効な値 文字 0 = New
4 = Canceled
5 = Replace
8 = Rejected
C = Expired
F = Trade
I = Order Status
39 OrdStatus 任意の有効な値 文字 0 = 新規
1 = 部分約定
2 = 約定済み
8 = 拒否
4 = キャンセル済み(注文が部分約定の場合、Canceledが返され、(タグ=151)LeavesQtyがキャンセルされ、その後約定されません)。
C = 期限切れ
55 Symbol 不可 任意の有効な値 買い 銘柄識別子はSpotwareによって提供されます。
54 Side 不可 1または2 Integer 1 = 買い
2 = 売り
60 TransactTime 不可 任意の有効な値 タイムスタンプ 約定報告メッセージで表される取引の実行時間(UTC)。
6 AvgPx 不可 任意の有効な値 Integer 取引が約定した価格。 IOCまたはGTD注文の場合、これは約定した注文の売買高加重平均価格(VWAP)です。
38 OrderQty 不可 任意の有効な値 数量 これは株式の場合は株数を、オプション、先物、転換社債などの場合は通常の慣例に基づいて契約数を表します。 FIX 4.2以前では、このフィールドのタイプは「整数」でした。
151 LeavesQty 不可 任意の有効な値 数量 まだ約定されていない注文の数。 可能な値は 0(完全約定)から OrderQty(部分約定)の間です。
14 CumQty 不可 任意の有効な値 数量 約定済みの注文の総数。
32 LastQty 不可 任意の有効な値 数量 この(最後の)約定で約定した注文の買い/売りの数量。
40 OrdType 不可 1または2 文字 1 = 成行
2 = 指値
44 Price 不可 任意の有効な値 価格 新規注文メッセージで提供された場合、この約定報告メッセージでエコーバックされます。
99 StopPx 不可 任意の有効な値 価格 新規注文メッセージで提供された場合、この約定報告メッセージでエコーバックされます。
59 TimeInForce 不可 13 または 6 String 1 = 取り消すまで有効(GTC)
3 = 即時または取り消し(IOC)
6 = 指定日まで有効(GTD)
126 ExpireTime 不可 20140215-07:24:55 タイムスタンプ 新規注文メッセージで提供された場合、この約定報告メッセージでエコーバックされます。
58 Text 不可 任意の有効な値 String 可能な場合、メッセージは約定報告を説明します。
103 OrdRejReason 不可 0 Integer 0 = OrdRejReason.BROKER_EXCHANGE_OPTION
721 PosMaintRptID 不可 任意の有効な値 String ポジションID。
494 Designation 不可 任意の有効な値 String クライアントのカスタム注文ラベル。
584 MassStatusReqID 不可 任意の有効な値 String クライアントによって割り当てられたマスステータスリクエストの一意のID。
1000 AbsoluteTP 不可 任意の有効な値 価格 利食いがトリガーされる絶対価格。
1001 RelativeTP 不可 任意の有効な値 価格 利食いがトリガーされるエントリー価格からのpips単位の距離。
1002 AbsoluteSL 不可 任意の有効な値 価格 損切りがトリガーされる絶対価格。
1003 RelativeSL 不可 任意の有効な値 価格 損切りがトリガーされるエントリー価格からのpips単位の距離。
1004 TrailingSL 不可 N または Y Boolean 損切りがトレーリングかどうかを示します。
N = 損切りはトレーリングではありません。
Y = 損切りはトレーリングです。
1005 TriggerMethodSL 不可 任意の有効な値 Integer 損切りの指定されたトリガー方法。
1 = 損切りはトレードサイドによってトリガーされます。
2 = 損切りは反対側によってトリガーされます(買いポジションの場合は買値、売りポジションの場合は売値)。
3 = 損切りはトレードサイドに従って2回連続のティックの後にトリガーされます。
4 = 損切りは反対側に従って2回連続のティックの後にトリガーされます(買いポジションの場合は2回目の買値ティック、売りポジションの場合は2回目の売値ティック)。
1006 GuaranteedSL 不可 N または Y Boolean 損切りが保証されているかどうかを示します。
N = 損切りは保証されていません。
Y = 損切りは保証されています。
Standard Trailer

ガイドの最後にある新規注文の例をご覧ください。

Business Message Reject (MsgType(35)=j)

このメッセージタイプは、システムがサブスクリプションリクエストを処理できない場合や注文が実行できない場合に送信されます。

タグ フィールド名 必須 FIX形式 コメント
Standard Header
45 RefSeqNum 不可 任意の有効な値 Integer 拒否されたメッセージの MsgSeqNum(タグ=34)。
372 RefMsgType 不可 任意の有効な値 String 参照されているFIXメッセージの MsgType(タグ=35)。
379 BusinessRejectRefID 不可 任意の有効な値 String 参照されているメッセージのビジネスレベルIDフィールドの値。 対応するIDフィールドが指定されていない場合を除き、必須です。
380 BusinessRejectReason 0 Integer ビジネスメッセージ拒否メッセージの理由を識別するコード。
0 = その他
58 Text 不可 任意の有効な値 String 可能な場合、拒否の理由を説明するメッセージ。
Standard Trailer

以下にビジネスメッセージ拒否メッセージの例を示します。

8=FIX.4.4|9=149|35=j|34=2|49=CSERVER|52=20170105-06:36:00.912|56=live.theBroker.12345|57=any_string|58=Message to explain reason for rejection|379=u4Jr7Rr5t2VS7HSP|380=0|10=123|

Request for Positions (MsgType(35)=AN)

タグ フィールド名 必須 FIX形式 コメント
Standard Header
710 PosReqID 任意の有効な値 String 一意のリクエストID(クライアントによって設定)。
721 PosMaintRptID 不可 任意の有効な値 String リクエストするポジションID。 設定されていない場合、すべてのオープンポジションが返されます。
Standard Trailer

以下にポジションリクエストメッセージの例を示します。

リクエスト:

8=FIX.4.4|9=100|35=AN|49=live.theBroker.12345|56=CSERVER|34=99|52=20170117-10:09:54|50=any_string|57=TRADE|710=876316401|10=103|

応答:

8=FIX.4.4|9=163|35=AP|34=98|49=CSERVER|50=TRADE|52=20170117-10:09:54.076|56=live.theBroker.12345|57=any_string|55=1|710=876316401|721=101|727=1|728=0|730=1.06671|702=1|704=0|705=30000|10=182|

Position Report (MsgType(35)=AP)

タグ フィールド名 必須 FIX形式 コメント
Standard Header
710 PosReqID 任意の有効な値 String ポジションリクエストメッセージのID。
721 PosMaintRptID 不可 任意の有効な値 String ポジションID。PosReqResult(タグ=728)が VALID_REQUEST でない場合は設定されません。
727 TotalNumPosReports 任意の有効な値 String PosReqResult(タグ=728)が VALID_REQUEST の場合のシーケンス内のポジションレポートの総数、それ以外の場合は 0
728 PosReqResult 0 または 2 String 0 = 有効なリクエスト
2 = 条件に一致するオープンポジションが見つかりません。
55 Symbol 不可 任意の有効な値 String 現在のポジションレポートが作成されたシンボル。 PosReqResult(タグ=728)が VALID_REQUEST でない場合は設定されません。
702 NoPositions 不可 1 String PosReqResult(タグ=728)が VALID_REQUEST の場合は 1、それ以外の場合は設定されません。
704 LongQty 不可 任意の有効な値 String 買いトレードサイドの場合のポジションのオープンボリューム、売りトレードサイドの場合は 0PosReqResult(タグ=728)が VALID_REQUEST でない場合は設定されません。
705 ShortQty 不可 任意の有効な値 String 売りトレードサイドの場合のポジションのオープンボリューム、買いトレードサイドの場合は 0PosReqResult(タグ=728)が VALID_REQUEST でない場合は設定されません。
730 SettlPrice 不可 任意の有効な値 String 現在のポジションレポートのオープンボリュームの平均価格。
1000 AbsoluteTP 不可 任意の有効な値 価格 利食いがトリガーされる絶対価格。
1002 AbsoluteSL 不可 任意の有効な値 価格 損切りがトリガーされる絶対価格。
1004 TrailingSL 不可 任意の有効な値 Boolean 損切りがトレーリングかどうかを示します。
N = 損切りはトレーリングではありません。
Y = 損切りはトレーリングです。
1005 TriggerMethodSL 不可 任意の有効な値 Integer 損切りの指定されたトリガー方法。
1 = 損切りはトレードサイドによってトリガーされます。
2 = 損切りは反対側によってトリガーされます(買いポジションの場合は買値、売りポジションの場合は売値)。
3 = 損切りはトレードサイドに従って2回連続のティックの後にトリガーされます。
4 = 損切りは反対側に従って2回連続のティックの後にトリガーされます(買いポジションの場合は2回目の買値ティック、売りポジションの場合は2回目の売値ティック)。
1006 GuaranteedSL 不可 任意の有効な値 Boolean 損切りが保証されているかどうかを示します。
N = 損切りは保証されていません。
Y = 損切りは保証されています。
Standard Trailer

Order Cancel Request (MsgType(35)=F)

タグ フィールド名 必須 FIX形式 コメント
Standard Header
41 OrigClOrdID 任意の有効な値 String クライアントによって割り当てられた、キャンセルされる注文の一意の識別子。
37 OrderID 不可 任意の有効な値 String cServerによって返された注文の一意のID。
11 ClOrdID 任意の有効な値 String クライアントによって割り当てられたキャンセルリクエストの一意のID。
Standard Trailer

以下に注文キャンセルリクエストメッセージの例を示します。

リクエスト:

8=FIX.4.4|9=115|35=F|34=2|49=live.theBroker.12345|50=Trade|52=20170721-13:41:21.694|56=CSERVER|57=TRADE|11=jR8dBPcZEQa9|41=n9Tm8x1AavO5|10=182|

応答(成功):

8=FIX.4.4|9=221|35=8|34=3|49=CSERVER|50=TRADE|52=20170721-13:41:21.784|56=live.theBroker.12345|57=Trade|11=jR8dBPcZEQa9|14=0|37=641|38=100000|39=4|40=2|41=n9Tm8x1AavO5|44=1.499|54=1|55=1|59=1|60=20170721-13:41:21.760|150=4|151=100000|721=624|10=180|

応答(失敗):

8=FIX.4.4|9=174|35=j|34=3|49=CSERVER|50=TRADE|52=20170721-13:41:21.856|56=live.theBroker.12345|57=Trade|58=ORDER_NOT_FOUND:Order with clientOrderId=n9Tm8x1AavO5 not found.|379=jR8dBPcZEQa9|380=0|10=075|

Order Cancel Reject (MsgType(35)=9)

タグ フィールド名 必須 FIX形式 コメント
Standard Header
37 OrderID 任意の有効な値 String システムがキャンセルできなかった注文の一意の識別子。
11 ClOrdID 任意の有効な値 String 注文キャンセルリクエストの一意の識別子。
41 OrigClOrdID 不可 任意の有効な値 String クライアントによって割り当てられた、キャンセルしようとした注文の一意の識別子。
39 OrdStatus 任意の有効な値 文字 0 = 新規
1 = 部分約定
2 = 約定済み
8 = 拒否
4 = キャンセル済み(注文が部分約定の場合、Canceledが返され、(タグ=151)LeavesQtyがキャンセルされ、その後約定されません)。
C = 期限切れ
434 CxlRejResponseTo 1または2 文字 1 = キャンセル注文を拒否。
2 = 別の端末からの変更注文を拒否。
58 Text 不可 任意の有効な値 String 注文は実行中です。
Standard Trailer

以下に注文キャンセル拒否メッセージの例を示します。

応答:

8=FIX.4.4|9=156|35=9|34=3|49=CSERVER|50=TRADE|52=20181024-12:35:02.896|56=live.theBroker.12345|57=Trade|11=gBljx7YOg5jY|37=629|39=0|41=FdXLfS0tTyUL|58=Order is under execution|434=1|10=109|

Order Cancel/Replace Request (MsgType(35)=G)

タグ フィールド名 必須 FIX形式 コメント
Standard Header
41 OrigClOrdID Any valid value String クライアントによって割り当てられた、変更される注文の一意の識別子。
37 OrderID 不可 任意の有効な値 String サーバーによって割り当てられた、変更される元の注文の一意のID。 使用が推奨される方法。
11 ClOrdID 任意の有効な値 String クライアントによって割り当てられた変更リクエストの一意のID。
38 OrderQty 任意の有効な値 数量 古い値を置き換えるための既存または新しく指定された数量。
44 Price 不可 任意の有効な値 価格 古い値を置き換えるための既存または新しく指定された指値。 指値注文にのみ有効。
99 StopPx 不可 任意の有効な値 価格 古い値を置き換えるための既存または新しく指定されたストップ価格。 逆指値注文にのみ有効。
126 ExpireTime 不可 20140215-07:24:55 タイムスタンプ 既存または新しく指定された有効期限。 予約注文にのみ有効。
Standard Trailer

以下に注文キャンセル/変更リクエストメッセージの例を示します。

リクエスト:

8=FIX.4.4|9=123|35=G|34=3|49=live.theBroker.12345|50=Trade|52=20170721-13:42:17.680|56=CSERVER|57=TRADE|11=Is03AvsknNYK|38=5000|41=n9Tm8x1AavO5|44=1.1|10=010|

応答(成功):

8=FIX.4.4|9=192|35=8|34=3|49=CSERVER|50=TRADE|52=20170721-13:42:18.784|56=live.theBroker.12345|57=Trade|11=Is03AvsknNYK|14=0|37=629|38=5000|39=0|40=2|44=1.1|54=1|55=1|59=1|60=20170721-13:42:18.760|150=5|151=5000|721=624|10=150|

応答(失敗):

8=FIX.4.4|9=171|35=j|34=3|49=CSERVER|50=TRADE|52=20170721-13:42:18.784|56=live.theBroker.12345|57=Trade|58=ORDER_NOT_FOUND:Order with orderId:4429421711699105367 isn't found|379=NXek3EzJvMme|380=0|10=245|

Market Data Request Reject (MsgType(35)=Y)

タグ フィールド名 必須 FIX形式 コメント
Standard Header
262 MDReqID 任意の有効な値 String リクエストのMDReqID(タグ=262)を参照する必要があります。
281 MDReqRejReason 不可 任意の有効な値 Integer 0 = 不明な通貨ペア
4 = サポートされていないSubscriptionRequestType(タグ=263)
5 = サポートされていないMarketDepth(タグ=264)
Standard Trailer

以下に市場データリクエスト拒否メッセージの例を示します。

リクエスト:

8=FIX.4.4|9=148|35=V|34=2|49=live.theBroker.12345|50=Quote|52=20170920-09:52:13.032|56=CSERVER|57=QUOTE|262=CS8260:sXlXex|263=1|264=0|265=1|146=1|55=CS8260|267=2|269=0|269=1|10=129|

拒否:

8=FIX.4.4|9=164|35=Y|34=2|49=CSERVER|50=QUOTE|52=20170920-09:52:13.036|56=live.theBroker.12345|57=Quote|58=INVALID_REQUEST: Expected numeric symbolId, but got CS8260|262=CS8260:sXlXex|281=0|10=236|

リクエスト:

8=FIX.4.4|9=136|35=V|34=6|49=live.theBroker.12345|50=Quote|52=20170920-09:52:13.199|56=CSERVER|57=QUOTE|262=EwOhiWvMdCpc|263=1|264=3|146=1|55=1|267=2|269=0|269=1|10=182|

拒否:

8=FIX.4.4|9=157|35=Y|34=6|49=CSERVER|50=QUOTE|52=20170920-09:52:13.201|56=live.theBroker.12345|57=Quote|58=INVALID_REQUEST: MarketDepth should be either 0 or 1|262=EwOhiWvMdCpc|281=5|10=088|

Security List Request (MsgType(35)=x)

タグ フィールド名 必須 FIX形式 コメント
Standard Header
320 SecurityReqID 任意の有効な値 String 証券定義リクエストの一意のID。
559 SecurityListRequestType 0 Integer 行われている証券リストリクエストのタイプ。 サポートされているのは0 = Symbol(タグ=55)のみです。
55 Symbol 不可 任意の有効な値 Integer 通貨ペア名を解決するためのID。
Standard Trailer

以下に証券リストリクエストメッセージの例を示します。

リクエスト:

8=FIX.4.4|9=107|35=x|34=3|49=live.theBroker.12345|50=Trade|52=20180427-12:24:27.106|56=CSERVER|57=TRADE|55=39|320=ILCea0JkdQEm|559=0|10=248|

応答:

8=FIX.4.4|9=158|35=y|34=3|49=CSERVER|50=TRADE|52=20180427-12:24:27.107|56=live.theBroker.12345|57=Trade|320=ILCea0JkdQEm|322=responce:ILCea0JkdQEm|560=0|146=1|55=39|1007=NZDCHF|1008=4|10=088|

Security List (MsgType(35)=y)

タグ フィールド名 必須 FIX形式 コメント
Standard Header
320 SecurityReqID 任意の有効な値 String 証券定義リクエストの一意のID。
322 SecurityResponseID 任意の有効な値 String 証券リストレスポンスの一意のID。
560 SecurityRequestResult 0 Integer 証券リクエストメッセージに返される結果。 有効な値は以下の通りです:
0 = 有効なリクエスト。
1 = 無効またはサポートされていないリクエスト。
2 = 選択基準に一致する金融商品が見つかりません。
3 = 金融商品データの取得が許可されていません。
4 = 金融商品データが一時的に利用できません。
5 = 金融商品データのリクエストがサポートされていません。
146 NoRelatedSym 不可 任意の有効な値 Integer 繰り返される通貨ペア(金融商品)の数を指定します。
55 Symbol 不可 任意の有効な値 Integer 銘柄識別子はSpotwareによって提供されます。
1007 SymbolName 不可 任意の有効な値 String 通貨ペア名。
1008 SymbolDigits 不可 任意の有効な値 Integer 通貨ペアの小数点以下の桁数。 可能な値は0から5まで。
Standard Trailer

以下に証券リストメッセージの例を示します。

応答:

8=FIX.4.4|9=3977|35=y|34=2|49=CSERVER|50=TRADE|52=20180426-12:07:37.816|56=live.theBroker.12345|57=Trade|320=Sxo2Xlb1jzJC|322=responce:Sxo2Xlb1jzJC|560=0|146=143|55=1|1007=EURUSD|1008=5|55=2|1007=GBPUSD|1008=5|55=3|1007=EURJPY|1008=3|55=4|1007=USDJPY|1008=3|55=5|1007=AUDUSD|1008=5|55=6|1007=USDCHF|1008=5|55=7|1007=GBPJPY|1008=3|55=8|1007=USDCAD|1008=5|55=9|1007=EURGBP|1008=5|55=10|1007=EURCHF|1008=5|55=11|1007=AUDJPY|1008=2|55=12|1007=NZDUSD|1008=5|55=13|1007=CHFJPY|1008=2|55=14|1007=EURAUD|1008=4|55=15|1007=CADJPY|1008=2|55=16|1007=GBPAUD|1008=4|55=17|1007=EURCAD|1008=4|55=10001|1007=USDCFDSAX|1008=5|55=18|1007=AUDCAD|1008=4|55=10002|1007=CD3295|1008=5|55=19|1007=GBPCAD|1008=4|55=10003|1007=DU3295|1008=5|55=20|1007=AUDNZD|1008=4|55=10004|1007=CS5965|1008=2|55=21|1007=NZDJPY|1008=2|55=10005|1007=CS6014_3|1008=5|55=22|1007=USDNOK|1008=4|55=10006|1007=DU6014_3|1008=5|55=23|1007=AUDCHF|1008=4|55=10007|1007=CS6014_4|1008=5|55=24|1007=USDMXN|1008=4|55=10008|1007=DU6014_4|1008=5|55=25|1007=GBPNZD|1008=4|55=10009|1007=CS5953|1008=5|55=26|1007=EURNZD|1008=4|55=10010|1007=CS6407_01_EURUSD|1008=5|55=27|1007=CADCHF|1008=4|55=10011|1007=CS6407_01_GBPUSD|1008=5|55=28|1007=USDSGD|1008=5|55=10012|1007=CS6407_02_EURUSD|1008=5|55=29|1007=USDSEK|1008=4|55=10013|1007=CS6407_03_EURUSD|1008=5|55=30|1007=NZDCAD|1008=4|55=31|1007=EURSEK|1008=4|55=10015|1007=CS7847_01_EURUSD|1008=5|55=32|1007=GBPSGD|1008=4|55=10016|1007=CS7847_01_GBPUSD|1008=5|55=33|1007=EURNOK|1008=4|55=10017|1007=CS7847_02_EURUSD|1008=5|55=34|1007=EURHUF|1008=2|55=10018|1007=CS7847_03_EURUSD|1008=5|55=35|1007=USDPLN|1008=4|55=10019|1007=CS7847_04_GBPUSD|1008=5|55=36|1007=USDDKK|1008=4|55=10020|1007=CS9004S|1008=2|10=096|