cTrader FIX Engine, Rules of Engagement

API

はじめに

範囲

この仕様書は、cTrader FIXエンジン アプリケーション プログラミング インターフェース(API)の実装ガイドとしてソフトウェア開発者に役立つことを目的としています。

cTrader FIXバージョン

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

cTrader 接続性

接続タイプ

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

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

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

cTraderメッセージ

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に送信されるすべてのメッセージには、以下のフィールドを持つ標準ヘッダーが必要です:

Tagフィールド名必須FIX形式コメント
8BeginStringはいFIX.4.4文字列常に暗号化されていない。メッセージ内で最初のフィールドでなければならない。
9BodyLengthはい任意の有効な値整数メッセージ本文の長さ。常に暗号化されていない。メッセージ内で2番目のフィールドでなければならない。
35MsgTypeはいA文字列メッセージタイプ。常に暗号化されていない。メッセージ内で3番目のフィールドでなければならない。
49SenderCompIDはい任意の有効な値文字列トレーディングパーティのID。形式は<Environment>.<BrokerUID>.<Trader Login>Environmentはサーバーの種類(デモまたはライブ)、BrokerUIDはcTraderから提供される識別子、Trader Loginはトレーダーアカウントの数値識別子。
56TargetCompIDはいCSERVER文字列メッセージのターゲット。正しい値はCSERVER
57TargetSubIDはいQUOTEまたはTRADE文字列追加のセッション修飾子。可能な値はQUOTEおよびTRADE
50SenderSubIDいいえ任意の有効な値文字列特定のメッセージ送信元を識別するために使用される割り当てられた値。TargetSubID=QUOTEの場合、QUOTEに設定される必要があります。
34MsgSeqNumはい1整数メッセージのシーケンス番号。
52SendingTimeはい20131129-15:40:08.155UTCTimestampUTC(協定世界時、GMTとしても知られる)で表現されるメッセージ送信時刻。

標準トレーラー

各メッセージ(管理メッセージまたはアプリケーションメッセージ)は標準トレーラーで終了します。トレーラーはメッセージを区切るために使用され、CheckSum(タグ=10)値の3桁の表現を含みます。

Tagフィールド名必須FIX形式コメント
10CheckSumはい054文字列3バイトの単純なチェックサム。常にメッセージの最後のフィールド(つまり、サーブ)であり、後続の<SOH>がメッセージの終端を示す区切り文字となります。常に暗号化されていない3文字として定義されます。

セッションメッセージ

ハートビート (MsgType(35)=0)

ハートビートメッセージは、cTraderおよびクライアントアプリケーションの両方によって、ライブ接続を確認するために送信されます。

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

Tagフィールド名必須FIX形式コメント
 標準ヘッダーはい   
112TestReqIDいいえ任意の有効な値文字列ハートビートがテストリクエストメッセージの結果である場合、TestReqIDが必要です。
 標準トレーラーはい   

テストリクエスト (MsgType(35)=1)

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

Tagフィールド名必須FIX形式コメント
 標準ヘッダーはい   
112TestReqIDはい任意の有効な値文字列ハートビートメッセージID。TestReqIDは増分である必要があります。
 標準トレーラーはい   

ログオン (双方向) (MsgType(35)=A)

ログオンメッセージは、クライアント側のアプリケーションからcTrader FIXセッションを開始するために送信され、cTraderからクライアント側のアプリケーションに応答が送信されます。ログオンが完了すると、セッションのライフサイクルにわたって引用および取引フローを続行できます。

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

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

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

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

Request

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|

Response (Success)

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|

Response (Failed)

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: 

cTraderログアウト (MsgType(35)=5)

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

Tagフィールド名必須FIX形式コメント
 標準ヘッダーはい   
58Textいいえ任意の有効な値文字列ログオン拒否の詳細。無効なログオンメッセージの応答としてcTraderからクライアントへのメッセージにのみ使用されます。
 標準トレーラーはい   

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

Request

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|

Response

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|

cTrader再送リクエスト (MsgType(35)=2)

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

タグフィールド名必須FIX形式コメント
 標準ヘッダーはい   
7BeginSeqNoはい任意の有効な値整数再送範囲の最初のレコードのメッセージシーケンス番号。
16EndSeqNoはい任意の有効な値整数再送範囲の最後のレコードのメッセージシーケンス番号。
 標準トレーラーはい   

cTrader拒否 (双方向) (MsgType(35)=3)

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

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

cTraderシーケンスリセット (MsgType(35)=4)

アプリケーションレベルで使用してはならないインバウンド/アウトバウンドメッセージ。シーケンスリセットメッセージはシーケンス番号を増加させるのみです。

タグフィールド名必須FIX形式コメント
 標準ヘッダーはい   
123GapFillFlagいいえYes または No文字列シーケンスリセットメッセージが再送されない管理メッセージまたはアプリケーションメッセージを置き換えていることを示します。
36NewSeqNoはい1整数新しいシーケンス番号。
 標準トレーラーはい   

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

マーケットデータリクエスト (MsgType(35)=V)

タグフィールド名必須FIX形式コメント
 標準ヘッダーはい   
262MDReqIDはい任意の有効な値文字列一意の見積もりリクエストID。新しいサブスクリプションの場合は新しいID、サブスクリプションの削除の場合は以前に使用したID。
263SubscriptionRequestTypeはい1 または 2文字1 = スナップショットおよび更新(サブスクライブ);
2 = 前のスナップショットおよび更新リクエストの無効化(サブスクリプション解除)。
264MarketDepthはい0 または 1整数フルブックが提供されます。
0 = 深さのサブスクリプション;
1 = スポットサブスクリプション。
265MDUpdateTypeはい任意の有効な値整数インクリメンタルリフレッシュのみがサポートされています。
267NoMDEntryTypesはい2整数常に2(入札とオファーの両方が送信されます)。
269MDEntryTypeはい0 または 1文字この繰り返しグループには、要求者が受信したいマーケットデータエントリのすべてのタイプのリストが含まれます。
0 = 入札;
1 = オファー。
146NoRelatedSymはい任意の有効な値整数要求されたシンボルの数。
55Symbolはい任意の有効な値長整数スポットウェアによって提供されるインストルメント識別子。
 標準トレーラーはい   

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

スポット取引の場合

Request

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|

Response

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|

For Depths

Request

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|

Responses

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|

マーケットデータスナップショット/フルリフレッシュ (MsgType(35)=W)

Tagフィールド名必須FIXフォーマットコメント
 Standard Headerはい   
262MDReqIDいいえ任意の有効な値String以前に送信されたマーケットデータリクエストのID。
55Symbolはい任意の有効な値Long銘柄識別子はSpotwareが提供。
268NoMDEntriesはい任意の有効な値Integer以下のエントリーの数。
269MDEntryTypeいいえ0 または 1Char有効な値は:
0 = Bid;
1 = Offer.
NoMDEntries (tag=268)が 0より大きい場合のみ必須。
299QuoteEntryIDいいえ任意の有効な値StringQuoteSetの一部としての見積もりの一意の識別子。
270MDEntryPxいいえ1.2345Priceマーケットデータエントリーの価格。NoMDEntries (tag=268)が 0より大きい場合のみ必須。
271MDEntrySizeいいえ500000Volumeマーケットデータエントリーのボリューム。NoMDEntries (tag=268)が 0より大きい場合のみ必須。
278MDEntryIDいいえ任意の有効な値String一意のマーケットデータエントリー識別子。
 Standard Trailerはい   

マーケットデータインクリメンタルリフレッシュ (MsgType(35)=X)

Tagフィールド名必須FIXフォーマットコメント
 Standard Headerはい   
262MDReqIDいいえ任意の有効な値String以前に送信されたマーケットデータリクエストのID。
268NoMDEntriesはい任意の有効な値Integer以下のエントリーの数。この繰り返しグループには、リクエスターが受け取りたいすべての種類のマーケットデータエントリーのリストが含まれます。
279MDUpdateActionはい0 または 2Charマーケットデータ更新アクションのタイプ。有効な値は:
0 = 新規;
2 = 削除。
269MDEntryTypeいいえ0 または 1Char有効な値は:
0 = Bid;
1 = Offer。
278MDEntryIDはい任意の有効な値StringマーケットデータエントリーのID。
55Symbolはい任意の有効な値Long銘柄識別子はSpotwareが提供。
270MDEntryPxいいえ1.2345PriceMDUpdateAction (tag=279)が 0の場合のみ必須。
271MDEntrySizeいいえ10000DoubleMDUpdateAction (tag=279)が 0の場合のみ必須。
 Standard Trailerはい   

cTrader新規注文シングル (MsgType(35)=D)

新規注文シングルメッセージの形式は以下の通りです。

Tagフィールド名必須FIXフォーマットコメント
 Standard Headerはい   
11ClOrdIDはい任意の有効な値Stringクライアントによって割り当てられた注文の一意の識別子。
55Symbolはい任意の有効な値Long銘柄識別子はSpotwareが提供。
54Sideはい1 または 2Integer1 = 買い;
2 = 売り。
60TransactTimeはい任意の有効な値Timestampクライアントによって生成されたリクエスト時間。
38OrderQtyはい任意の有効な値Qty注文された株数。これは株式の場合は株数を、通常の慣行に基づいてオプション、先物、転換社債などの場合は契約数を表します。最大精度は0.01です。FIX 4.2以前は、このフィールドのタイプは’Integer’でした。
40OrdTypeはい12 または 3Char1 = マーケット、注文は即時またはキャンセル(IOC)スキーム(TimeInForce、タグ=59)で処理されます;
2 = リミット、注文はキャンセルまで有効(GTC)スキーム(TimeInForce、タグ=59)で処理されます;
3 = ストップ、注文はキャンセルまで有効(GTC)スキーム(TimeInForce、タグ=59)で処理されます。
44Priceいいえ任意の有効な値Priceクライアントが受け入れる最悪の価格。OrdType (tag=40)が 2の場合のみ必須、この場合、この価格が満たされるまで注文は成立しません。
99StopPxいいえ任意の有効な値Priceストップ注文を引き起こす価格。OrdType (tag=40)が 3の場合のみ必須、この場合、この価格が満たされるまで注文は成立しません。
59TimeInForceいいえ13 または 6String廃止されたため、この値は無視されます。TimeInForceは、OrdType(タグ=40)およびExpireTime(タグ=126)に依存して自動的に検出されます:
1 = キャンセルまで有効(GTC)、リミットおよびストップ注文(OrdType、タグ=40)のみで使用され、ExpireTime(タグ=126)が定義されていない場合;
3 = 即時またはキャンセル(IOC)、マーケット注文(OrdType、タグ=40)のみで使用されます;
6 = 日付まで有効(GTD)、リミットおよびストップ注文(OrdType、タグ=40)のみで使用され、ExpireTime(タグ=126)が定義されている場合。
126ExpireTimeいいえ20140215-07:24:55Timestamp‘YYYYMMDD-HH:MM:SS’形式の有効期限。割り当てられた場合、注文はGTDスキーム(TimeInForce: GTD)で処理されます。
721PosMaintRptIDいいえ任意の有効な値Stringこの注文が配置されるポジションID。設定されていない場合、新しいポジションが作成され、そのIDが実行報告メッセージで返されます。ヘッジアカウントの場合のみ指定できます。
494Designationいいえ任意の有効な値Stringカスタム注文ラベル。
 Standard Trailerはい   

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

Market Order to New Position

Request

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|

Responses

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|

既存のポジションへの市場注文

Request

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|

Responses

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

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

Request

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|

Response

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|

新しいポジションへのストップ注文

Request

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|

Response

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|

cTrader実行レポート(MsgType(35)=8)

受け入れられた注文の実行レポートメッセージの形式は次のとおりです。

タグフィールド名Req’dFIXフォーマットコメント
 標準ヘッダーはい   
37OrderIDはい任意の有効な値文字列cTrader注文ID。
11ClOrdIDいいえ任意の有効な値文字列クライアントによって割り当てられた注文の一意の識別子。
911TotNumReportsいいえ任意の有効な値整数Order Mass Status Requestメッセージへの応答として返されるレポートの総数。
150ExecTypeはい任意の有効な値文字0 = 新規;
4 = キャンセル;
5 = 置換;
8 = 拒否;
C = 期限切れ;
F = 取引;
I = 注文状態。
39OrdStatusはい任意の有効な値文字0 = 新規;
1 = 部分的に埋められた;
2 = 埋められた;
8 = 拒否;
4 = キャンセル(注文が部分的に埋められている場合、キャンセル が返され、LeavesQty がキャンセルされ、その後には埋められません);
C = 期限切れ。
55Symbolいいえ任意の有効な値ロングInstrument identificators are provided by Spotware.
54Sideいいえ1 または 2整数1 = 購入;
2 = 売却。
60TransactTimeいいえ任意の有効な値タイムスタンプ取引の実行時間を示す実行レポートメッセージ(UTC時間)。
6AvgPxいいえ任意の有効な値整数取引が埋められた価格。IOCまたはGTD注文の場合、これは埋められた注文の加重平均価格(VWAP)です。
38OrderQtyいいえ任意の有効な値数量これは、株式の場合は株式の数、オプション、先物、転換社債などの場合は通常の規則に基づく契約の数を表します。FIX 4.2以前では、このフィールドのタイプは ‘Integer’でした。
151LeavesQtyいいえ任意の有効な値数量まだ埋められていない注文の数。可能な値は0(完全に埋められた)からOrderQty(部分的に埋められた)までです。
14CumQtyいいえ任意の有効な値数量埋められた注文の合計数。
32LastQtyNo任意の有効な値数量この(最後の)取引で埋められた注文の買い注文/売り注文数量。
40OrdTypeNo1または2Char1 = マーケット;
2 = 指値。
44PriceNo任意の有効な値価格新規注文シングルメッセージで指定された場合、この実行レポートメッセージでエコーバックされます。
99StopPxNo任意の有効な値価格新規注文シングルメッセージで指定された場合、この実行レポートメッセージでエコーバックされます。
59TimeInForceNo1, 3または6文字列1 = 指値取消 (GTC);
3 = 即時取消 (IOC);
6 = 指値有効期限 (GTD)。
126ExpireTimeNo20140215-07:24:55タイムスタンプ新規注文シングルメッセージで指定された場合、この実行レポートメッセージでエコーバックされます。
58TextNo任意の有効な値文字列可能な限り、メッセージが実行レポートを説明します。
103OrdRejReasonNo0整数0 = OrdRejReason.BROKER_EXCHANGE_OPTION
721PosMaintRptIDNo任意の有効な値文字列ポジションID。
494DesignationNo任意の有効な値文字列クライアントのカスタム注文ラベル。
584MassStatusReqIDNo任意の有効な値文字列クライアントによって割り当てられたマスステータスリクエストの一意のID。
1000AbsoluteTPNo任意の有効な値価格テイクプロフィットがトリガーされる絶対価格。
1001RelativeTPNo任意の有効な値価格テイクプロフィットがトリガーされるエントリ価格からのpip単位の距離。
1002AbsoluteSLNo任意の有効な値価格ストップロスがトリガーされる絶対価格。
1003RelativeSLNo任意の有効な値価格エントリ価格からのpip単位の
1004TrailingSLNoNまたはYBooleanストップロスがトレーリングかどうかを示します。
N = ストップロスはトレーリングしていません;
Y = ストップロスはトレーリングしています。
1005TriggerMethodSLNo任意の有効な値整数ストップロスの指定されたトリガーメソッド。
1 = 取引側によってストップロスがトリガーされます;
2 = 逆側によってストップロスがトリガーされます(買いポジションに対しては買い注文、売りポジションに対しては売り注文);
3 = 取引側によって2つの連続したチック後にストップロスがトリガーされます;
4 = 逆側によって2つの連続したチック後にストップロスがトリガーされます(買いポジションに対しては2番目の買いチック、売りポジションに対しては2番目の売りチック)。
1006GuaranteedSLNoNまたはYBooleanストップロスが保証されているかどうかを示します。
N = ストップロスは保証されていません;
Y = ストップロスは保証されています。
 標準トレーラーはい   

ガイドの最後に新規注文シングルの例を参照してください。

cTraderビジネスメッセージリジェクト(MsgType(35)=j)

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

タグフィールド名Req’dFIXフォーマットコメント
 標準ヘッダーはい   
45RefSeqNumいいえ任意の有効な値整数リジェクトされたメッセージのMsgSeqNum(tag=34)。
372RefMsgTypeいいえ任意の有効な値文字列参照されているFIXメッセージのMsgType(tag=35)。
379BusinessRejectRefIDいいえ任意の有効な値文字列参照されているメッセージのビジネスレベルのIDフィールドの値。対応するIDフィールドが指定されていない場合は必須。
380BusinessRejectReasonはい0整数ビジネスメッセージリジェクトメッセージの理由を識別するコード。
0 = その他。
58Textいいえ任意の有効な値文字列可能な限り、拒否の理由を説明するメッセージ。
 標準トレーラーはい   

以下に、ビジネスメッセージリジェクトメッセージの例をご覧ください。

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

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|

Response

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|

cTraderポジションレポート(MsgType(35)=AP)

タグフィールド名Req’dFIXフォーマットコメント
 標準ヘッダーはい   
710PosReqIDはい任意の有効な値文字列ポジションリクエストメッセージのID。
721PosMaintRptIDいいえ任意の有効な値文字列PosReqResult(タグ=728)がVALID_REQUESTでない場合には設定されていません。
727TotalNumPosReportsはい任意の有効な値文字列PosReqResult(タグ=728)がVALID_REQUESTの場合、シーケンス内のポジションレポートの総数、それ以外の場合は0
728PosReqResultはい0または2文字列0 = 有効なリクエスト;
2 = 条件に一致するオープンポジションが見つかりません。
55Symbolいいえ任意の有効な値文字列現在のポジションレポートが準備されているシンボル。PosReqResult(タグ=728)がVALID_REQUESTでない場合には設定されていません。
702NoPositionsいいえ1文字列PosReqResult(タグ=728)がVALID_REQUESTの場合に1、それ以外の場合は設定されません。
704LongQtyいいえ任意の有効な値文字列買い取引側のオープンボリューム。売り取引側の場合は0に等しい。 PosReqResult(タグ=728)がVALID_REQUESTでない場合には設定されません。
705ShortQtyいいえ任意の有効な値文字列売り取引側のオープンボリューム。買い取引側の場合は0に等しい。 PosReqResult(タグ=728)がVALID_REQUESTでない場合には設定されません。
730SettlPriceいいえ任意の有効な値文字列現在のポジションレポートのオープンボリュームの平均価格。
1000AbsoluteTPいいえ任意の有効な値価格テイクプロフィットがトリガーされる絶対価格。
1002AbsoluteSLいいえ任意の有効な値価格ストップロスがトリガーされる絶対価格。
1004TrailingSLいいえ任意の有効な値ブール値ストップロスがトレーリングされているかどうかを示します。
N = ストップロスはトレーリングされていません;
Y = ストップロスはトレーリングされています。
1005TriggerMethodSLいいえ任意の有効な値整数ストップロスのトリガーメソッドを示します。
1 = トレード側によってストップロスがトリガーされます;
2 = 逆側によってストップロスがトリガーされます(買いポジションの場合は買い注文、売りポジションの場合は売り注文);
3 = トレード側によって2つの連続したティック後にストップロスがトリガーされます;
4 = 逆側によって2つの連続したティック後にストップロスがトリガーされます(買いポジションの場合は2番目の買いティック、売りポジションの場合は2番目の売りティック)。
1006GuaranteedSLいいえ任意の有効な値ブール値ストップロスが保証されているかどうかを示します。
N = ストップロスは保証されていません;
Y = ストップロスは保証されています。
 標準トレーラーはい   

cTrader注文キャンセルリクエスト(MsgType(35)=F)

タグフィールド名Req’dFIXフォーマットコメント
 標準ヘッダーはい   
41OrigClOrdIDはい任意の有効な値文字列クライアントによって割り当てられたキャンセルされる注文の一意の識別子。
37OrderIDいいえ任意の有効な値文字列cServerによって返される注文の一意のID。
11ClOrdIDはい任意の有効な値文字列クライアントによって割り当てられたキャンセルリクエストの一意のID。
 標準トレーラーはい   

以下は、注文キャンセルリクエストメッセージの例です。

リクエスト

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|

cTrader 注文キャンセルリジェクト(MsgType(35)=9)

タグフィールド名Req’dFIXフォーマットコメント
 標準ヘッダーはい   
37OrderIDはい任意の有効な値文字列システムがキャンセルできなかった注文の一意の識別子。
11ClOrdIDはい任意の有効な値文字列注文キャンセルリクエストの一意の識別子。
41OrigClOrdIDいいえ任意の有効な値文字列クライアントによって割り当てられた、キャンセルしようとした注文の一意の識別子。
39OrdStatusはい任意の有効な値文字0 = 新規;
1 = 部分的に埋められました;
2 = 埋められました;
8 = 拒否されました;
4 = キャンセルされました(注文が部分的に埋められた場合、キャンセルされましたとして返され、(tag=151)、LeavesQtyはキャンセルされ、その後は埋められません);
C = 期限切れ。
434CxlRejResponseToはい1または2文字1 = キャンセル注文を拒否;
2 = 他の端末からの修正注文を拒否。
58Textいいえ任意の有効な値文字列注文は実行中です。
 標準トレーラーはい   

以下は、注文キャンセルリジェクトメッセージの例です。

レスポンス

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|

cTrader 注文キャンセル/置換リクエスト(MsgType(35)=G)

タグフィールド名Req’dFIXフォーマットコメント
 標準ヘッダーはい   
41cTraderOrigClOrdIDはい任意の有効な値文字列クライアントによって割り当てられた、修正される注文の一意の識別子。
37OrderIDいいえ任意の有効な値文字列サーバーによって割り当てられた、修正される元の注文の一意のID。好ましい方法です。
11ClOrdIDはい任意の有効な値文字列クライアントによって割り当てられた、修正リクエストの一意のID。
38OrderQtyはい任意の有効な値数量古い値を置き換えるための既存または新しく指定された数量。
44Priceいいえ任意の有効な値価格古い値を置き換えるための既存または新しく指定された制限価格。限界注文にのみ有効です。
99StopPxいいえ任意の有効な値価格古い値を置き換えるための既存または新しく指定されたストップ価格。ストップ注文にのみ有効です。
126ExpireTimeいいえ20140215-07:24:55タイムスタンプ既存または新しく指定された有効期限。ペンディング注文にのみ有効です。
 標準トレーラーはい   

以下は、注文キャンセル/置換リクエストメッセージの例です。

Request

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|

Response (Success)

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|

Response (Failed)

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|

cTrader 市場データリクエストリジェクト(MsgType(35)=Y)

 

タグフィールド名Req’dFIXフォーマットコメント
 標準ヘッダーはい   
262MDReqIDはい任意の有効な値文字列リクエストのMDReqID(tag=262)を参照する必要があります。
281MDReqRejReasonいいえ任意の有効な値整数0 = 不明なシンボル;
4 = サポートされていないSubscriptionRequestType(tag=263);
5 = サポートされていないMarketDepth(tag=264)。
 標準トレーラーはい   

以下は、Market Data Request Rejectメッセージの例です。

Request

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|

Reject

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|

Request

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|

Reject

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|

cTrader セキュリティリストリクエスト(MsgType(35)=x)

タグフィールド名Req’dFIXフォーマットコメント
 標準ヘッダーはい   
320SecurityReqIDはい任意の有効な値文字列セキュリティ定義リクエストの一意のID。
559SecurityListRequestTypeはい0整数行われているセキュリティリストリクエストのタイプ。サポートされているのは0のみです。Symbol(tag=55)。
55Symbolいいえ任意の有効な値整数シンボル名を解決するためのID。
 標準トレーラーはい   

以下は、セキュリティリストリクエストメッセージの例です。

Request

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|

Response

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|

セキュリティリスト(MsgType(35)=y)

タグフィールド名Req’dFIXフォーマットコメント
 標準ヘッダーはい   
320SecurityReqIDはい任意の有効な値文字列セキュリティ定義リクエストの一意のID。
322SecurityResponseIDはい任意の有効な値文字列セキュリティリストの応答の一意のID。
560SecurityRequestResultはい0整数セキュリティリクエストメッセージに返される結果。有効な値は次のとおりです:
0 = 有効なリクエスト;
1 = 無効またはサポートされていないリクエスト;
2 = 選択基準に一致するインストゥルメントが見つかりません;
3 = インストゥルメントデータを取得する権限がありません;
4 = インストゥルメントデータが一時的に利用できません;
5 = インストゥルメントデータのリクエストがサポートされていません。
146NoRelatedSymいいえ任意の有効な値整数繰り返しシンボル(インストゥルメント)の数を指定します。
55Symbolいいえ任意の有効な値整数インストゥルメント識別子はSpotwareによって提供されます。
1007SymbolNameいいえ任意の有効な値文字列シンボル名。
1008SymbolDigitsいいえ任意の有効な値整数シンボルの桁数。可能な値は0から5までです。
 標準トレーラーはい   

以下は、セキュリティリストメッセージの例です。

Response

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=Sxo2Xlb

このページについて