はじめに
範囲
この仕様書は、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形式 | コメント |
---|---|---|---|---|---|
8 | BeginString | はい | FIX.4.4 | 文字列 | 常に暗号化されていない。メッセージ内で最初のフィールドでなければならない。 |
9 | BodyLength | はい | 任意の有効な値 | 整数 | メッセージ本文の長さ。常に暗号化されていない。メッセージ内で2番目のフィールドでなければならない。 |
35 | MsgType | はい | A | 文字列 | メッセージタイプ。常に暗号化されていない。メッセージ内で3番目のフィールドでなければならない。 |
49 | SenderCompID | はい | 任意の有効な値 | 文字列 | トレーディングパーティのID。形式は<Environment>.<BrokerUID>.<Trader Login> 。Environment はサーバーの種類(デモまたはライブ)、BrokerUID はcTraderから提供される識別子、Trader Login はトレーダーアカウントの数値識別子。 |
56 | TargetCompID | はい | CSERVER | 文字列 | メッセージのターゲット。正しい値はCSERVER 。 |
57 | TargetSubID | はい | QUOTE またはTRADE | 文字列 | 追加のセッション修飾子。可能な値はQUOTE およびTRADE 。 |
50 | SenderSubID | いいえ | 任意の有効な値 | 文字列 | 特定のメッセージ送信元を識別するために使用される割り当てられた値。TargetSubID=QUOTE の場合、QUOTE に設定される必要があります。 |
34 | MsgSeqNum | はい | 1 | 整数 | メッセージのシーケンス番号。 |
52 | SendingTime | はい | 20131129-15:40:08.155 | UTCTimestamp | UTC(協定世界時、GMTとしても知られる)で表現されるメッセージ送信時刻。 |
標準トレーラー
各メッセージ(管理メッセージまたはアプリケーションメッセージ)は標準トレーラーで終了します。トレーラーはメッセージを区切るために使用され、CheckSum
(タグ=10)値の3桁の表現を含みます。
Tag | フィールド名 | 必須 | 値 | FIX形式 | コメント |
---|---|---|---|---|---|
10 | CheckSum | はい | 054 | 文字列 | 3バイトの単純なチェックサム。常にメッセージの最後のフィールド(つまり、サーブ)であり、後続の<SOH> がメッセージの終端を示す区切り文字となります。常に暗号化されていない3文字として定義されます。 |
セッションメッセージ
ハートビート (MsgType(35)=0)
ハートビートメッセージは、cTraderおよびクライアントアプリケーションの両方によって、ライブ接続を確認するために送信されます。
プロバイダのクライアントアプリケーションは、ログオンメッセージのHeartBtInt
(タグ=108)フィールドで定義された間隔で定期的なハートビートを送信するか、テストリクエストメッセージに応答してハートビートを送信します。
Tag | フィールド名 | 必須 | 値 | FIX形式 | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
112 | TestReqID | いいえ | 任意の有効な値 | 文字列 | ハートビートがテストリクエストメッセージの結果である場合、TestReqID が必要です。 |
標準トレーラー | はい |
テストリクエスト (MsgType(35)=1)
リクエストの受信者からのハートビートを強制します。受信システムからの応答として、TestReqID
を含むハートビートメッセージが送信されます。
Tag | フィールド名 | 必須 | 値 | FIX形式 | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
112 | TestReqID | はい | 任意の有効な値 | 文字列 | ハートビートメッセージID。TestReqID は増分である必要があります。 |
標準トレーラー | はい |
ログオン (双方向) (MsgType(35)=A)
ログオンメッセージは、クライアント側のアプリケーションからcTrader FIXセッションを開始するために送信され、cTraderからクライアント側のアプリケーションに応答が送信されます。ログオンが完了すると、セッションのライフサイクルにわたって引用および取引フローを続行できます。
無効なログオンメッセージがcTraderに受信されると(無効なフィールドを含む)、cTraderは応答としてログアウトメッセージを送信します。
Tag | フィールド名 | 必須 | 値 | FIX形式 | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
98 | EncryptMethod | はい | 0 | 整数 | メッセージ暗号化スキームを定義します。現在、トランスポートレベルのセキュリティのみがサポートされています。正しい値は0 = NONE_OTHER (暗号化は使用されていません)。 |
108 | HeartBtInt | はい | 任意の有効な値 | 整数 | 秒単位のハートビート間隔。この値はconfig.properties ファイル(クライアント側)でSERVER.POLLING.INTERVAL として設定されます。デフォルトの間隔値は30秒です。HeartBtInt が0 に設定されている場合、ハートビートメッセージは不要です。 |
141 | ResetSeqNumFlag | いいえ | Y | ブール値 | FIXセッションのすべての側がシーケンス番号をリセットする必要があります。正しい値はY (リセット)。 |
553 | Username | いいえ | 任意の有効な値 | 文字列 | 数値のユーザーID。ユーザーはSenderCompID 値(ユーザーの組織、タグ=49)にリンクされています。 |
554 | Password | いいえ | 任意の有効な値 | 文字列 | ユーザーパスワード。 |
標準トレーラー | はい |
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形式 | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
58 | Text | いいえ | 任意の有効な値 | 文字列 | ログオン拒否の詳細。無効なログオンメッセージの応答として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形式 | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
7 | BeginSeqNo | はい | 任意の有効な値 | 整数 | 再送範囲の最初のレコードのメッセージシーケンス番号。 |
16 | EndSeqNo | はい | 任意の有効な値 | 整数 | 再送範囲の最後のレコードのメッセージシーケンス番号。 |
標準トレーラー | はい |
cTrader拒否 (双方向) (MsgType(35)=3)
受信したメッセージがセッションレベルの規則違反により処理できない場合に送信されます。拒否されたメッセージは記録され、受信シーケンス番号にインクリメントが適用されなければなりません。
タグ | フィールド名 | 必須 | 値 | FIX形式 | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
45 | RefSeqNum | はい | 任意の有効な値 | SeqNum | 参照されたメッセージのシーケンス番号。 |
58 | Text | いいえ | 任意の有効な値 | 文字列 | 自由形式のテキスト文字列。 |
354 | EncodedTextLen | いいえ | 任意の有効な値 | 長さ | EncodedText (非ASCII文字)のフィールドのバイト単位の長さ。 |
355 | EncodedText | いいえ | 任意の有効な値 | データ | 標準ヘッダーのMessageEncoding (タグ=347)フィールドで指定された形式を使用してエンコードされたText (タグ=58)フィールドの表現。ASCII表現が使用される場合、Text (タグ=58)フィールドにも指定する必要があります。 |
371 | RefTagID | いいえ | 任意の有効な値 | 整数 | メッセージ拒否を引き起こしたFIXフィールドのタグ番号。 |
372 | RefMsgType | いいえ | 任意の有効な値 | 文字列 | 参照されたFIXメッセージのMsgType (タグ=35)。 |
373 | SessionRejectReason | いいえ | 任意の有効な値 | 整数 | 拒否のコード化された理由。 有効な値は次の通りです: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形式 | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
123 | GapFillFlag | いいえ | Yes または No | 文字列 | シーケンスリセットメッセージが再送されない管理メッセージまたはアプリケーションメッセージを置き換えていることを示します。 |
36 | NewSeqNo | はい | 1 | 整数 | 新しいシーケンス番号。 |
標準トレーラー | はい |
cTraderアプリケーションメッセージ
マーケットデータリクエスト (MsgType(35)=V)
タグ | フィールド名 | 必須 | 値 | FIX形式 | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
262 | MDReqID | はい | 任意の有効な値 | 文字列 | 一意の見積もりリクエストID。新しいサブスクリプションの場合は新しいID、サブスクリプションの削除の場合は以前に使用したID。 |
263 | SubscriptionRequestType | はい | 1 または 2 | 文字 | 1 = スナップショットおよび更新(サブスクライブ);2 = 前のスナップショットおよび更新リクエストの無効化(サブスクリプション解除)。 |
264 | MarketDepth | はい | 0 または 1 | 整数 | フルブックが提供されます。0 = 深さのサブスクリプション;1 = スポットサブスクリプション。 |
265 | MDUpdateType | はい | 任意の有効な値 | 整数 | インクリメンタルリフレッシュのみがサポートされています。 |
267 | NoMDEntryTypes | はい | 2 | 整数 | 常に2 (入札とオファーの両方が送信されます)。 |
269 | MDEntryType | はい | 0 または 1 | 文字 | この繰り返しグループには、要求者が受信したいマーケットデータエントリのすべてのタイプのリストが含まれます。0 = 入札;1 = オファー。 |
146 | NoRelatedSym | はい | 任意の有効な値 | 整数 | 要求されたシンボルの数。 |
55 | Symbol | はい | 任意の有効な値 | 長整数 | スポットウェアによって提供されるインストルメント識別子。 |
標準トレーラー | はい |
以下にマーケットデータリクエストメッセージの例を示します。
スポット取引の場合
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 | はい | ||||
262 | MDReqID | いいえ | 任意の有効な値 | String | 以前に送信されたマーケットデータリクエストのID。 |
55 | Symbol | はい | 任意の有効な値 | Long | 銘柄識別子はSpotwareが提供。 |
268 | NoMDEntries | はい | 任意の有効な値 | Integer | 以下のエントリーの数。 |
269 | MDEntryType | いいえ | 0 または 1 | Char | 有効な値は:0 = Bid;1 = Offer.NoMDEntries (tag=268)が 0 より大きい場合のみ必須。 |
299 | QuoteEntryID | いいえ | 任意の有効な値 | String | QuoteSet の一部としての見積もりの一意の識別子。 |
270 | MDEntryPx | いいえ | 1.2345 | Price | マーケットデータエントリーの価格。NoMDEntries (tag=268)が 0 より大きい場合のみ必須。 |
271 | MDEntrySize | いいえ | 500000 | Volume | マーケットデータエントリーのボリューム。NoMDEntries (tag=268)が 0 より大きい場合のみ必須。 |
278 | MDEntryID | いいえ | 任意の有効な値 | String | 一意のマーケットデータエントリー識別子。 |
Standard Trailer | はい |
マーケットデータインクリメンタルリフレッシュ (MsgType(35)=X)
Tag | フィールド名 | 必須 | 値 | FIXフォーマット | コメント |
---|---|---|---|---|---|
Standard Header | はい | ||||
262 | MDReqID | いいえ | 任意の有効な値 | String | 以前に送信されたマーケットデータリクエストのID。 |
268 | NoMDEntries | はい | 任意の有効な値 | Integer | 以下のエントリーの数。この繰り返しグループには、リクエスターが受け取りたいすべての種類のマーケットデータエントリーのリストが含まれます。 |
279 | MDUpdateAction | はい | 0 または 2 | Char | マーケットデータ更新アクションのタイプ。有効な値は:0 = 新規;2 = 削除。 |
269 | MDEntryType | いいえ | 0 または 1 | Char | 有効な値は:0 = Bid;1 = Offer。 |
278 | MDEntryID | はい | 任意の有効な値 | String | マーケットデータエントリーのID。 |
55 | Symbol | はい | 任意の有効な値 | Long | 銘柄識別子はSpotwareが提供。 |
270 | MDEntryPx | いいえ | 1.2345 | Price | MDUpdateAction (tag=279)が 0 の場合のみ必須。 |
271 | MDEntrySize | いいえ | 10000 | Double | MDUpdateAction (tag=279)が 0 の場合のみ必須。 |
Standard Trailer | はい |
cTrader新規注文シングル (MsgType(35)=D)
新規注文シングルメッセージの形式は以下の通りです。
Tag | フィールド名 | 必須 | 値 | FIXフォーマット | コメント |
---|---|---|---|---|---|
Standard Header | はい | ||||
11 | ClOrdID | はい | 任意の有効な値 | String | クライアントによって割り当てられた注文の一意の識別子。 |
55 | Symbol | はい | 任意の有効な値 | Long | 銘柄識別子はSpotwareが提供。 |
54 | Side | はい | 1 または 2 | Integer | 1 = 買い;2 = 売り。 |
60 | TransactTime | はい | 任意の有効な値 | Timestamp | クライアントによって生成されたリクエスト時間。 |
38 | OrderQty | はい | 任意の有効な値 | Qty | 注文された株数。これは株式の場合は株数を、通常の慣行に基づいてオプション、先物、転換社債などの場合は契約数を表します。最大精度は0.01です。FIX 4.2以前は、このフィールドのタイプは’Integer’でした。 |
40 | OrdType | はい | 1 , 2 または 3 | Char | 1 = マーケット、注文は即時またはキャンセル(IOC)スキーム(TimeInForce 、タグ=59)で処理されます;2 = リミット、注文はキャンセルまで有効(GTC)スキーム(TimeInForce 、タグ=59)で処理されます;3 = ストップ、注文はキャンセルまで有効(GTC)スキーム(TimeInForce 、タグ=59)で処理されます。 |
44 | Price | いいえ | 任意の有効な値 | Price | クライアントが受け入れる最悪の価格。OrdType (tag=40)が 2 の場合のみ必須、この場合、この価格が満たされるまで注文は成立しません。 |
99 | StopPx | いいえ | 任意の有効な値 | Price | ストップ注文を引き起こす価格。OrdType (tag=40)が 3 の場合のみ必須、この場合、この価格が満たされるまで注文は成立しません。 |
59 | TimeInForce | いいえ | 1 , 3 または 6 | String | 廃止されたため、この値は無視されます。TimeInForce は、OrdType (タグ=40)およびExpireTime (タグ=126)に依存して自動的に検出されます:1 = キャンセルまで有効(GTC)、リミットおよびストップ注文(OrdType 、タグ=40)のみで使用され、ExpireTime (タグ=126)が定義されていない場合;3 = 即時またはキャンセル(IOC)、マーケット注文(OrdType 、タグ=40)のみで使用されます;6 = 日付まで有効(GTD)、リミットおよびストップ注文(OrdType 、タグ=40)のみで使用され、ExpireTime (タグ=126)が定義されている場合。 |
126 | ExpireTime | いいえ | 20140215-07:24:55 | Timestamp | ‘YYYYMMDD-HH:MM:SS’形式の有効期限。割り当てられた場合、注文はGTDスキーム(TimeInForce : GTD)で処理されます。 |
721 | PosMaintRptID | いいえ | 任意の有効な値 | String | この注文が配置されるポジションID。設定されていない場合、新しいポジションが作成され、そのIDが実行報告メッセージで返されます。ヘッジアカウントの場合のみ指定できます。 |
494 | Designation | いいえ | 任意の有効な値 | 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’d | 値 | FIXフォーマット | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
37 | OrderID | はい | 任意の有効な値 | 文字列 | cTrader注文ID。 |
11 | ClOrdID | いいえ | 任意の有効な値 | 文字列 | クライアントによって割り当てられた注文の一意の識別子。 |
911 | TotNumReports | いいえ | 任意の有効な値 | 整数 | Order Mass Status Requestメッセージへの応答として返されるレポートの総数。 |
150 | ExecType | はい | 任意の有効な値 | 文字 | 0 = 新規;4 = キャンセル;5 = 置換;8 = 拒否;C = 期限切れ;F = 取引;I = 注文状態。 |
39 | OrdStatus | はい | 任意の有効な値 | 文字 | 0 = 新規;1 = 部分的に埋められた;2 = 埋められた;8 = 拒否;4 = キャンセル(注文が部分的に埋められている場合、キャンセル が返され、LeavesQty がキャンセルされ、その後には埋められません);C = 期限切れ。 |
55 | Symbol | いいえ | 任意の有効な値 | ロング | Instrument identificators are provided by Spotware. |
54 | Side | いいえ | 1 または 2 | 整数 | 1 = 購入;2 = 売却。 |
60 | TransactTime | いいえ | 任意の有効な値 | タイムスタンプ | 取引の実行時間を示す実行レポートメッセージ(UTC時間)。 |
6 | AvgPx | いいえ | 任意の有効な値 | 整数 | 取引が埋められた価格。IOCまたはGTD注文の場合、これは埋められた注文の加重平均価格(VWAP)です。 |
38 | OrderQty | いいえ | 任意の有効な値 | 数量 | これは、株式の場合は株式の数、オプション、先物、転換社債などの場合は通常の規則に基づく契約の数を表します。FIX 4.2以前では、このフィールドのタイプは ‘Integer’でした。 |
151 | LeavesQty | いいえ | 任意の有効な値 | 数量 | まだ埋められていない注文の数。可能な値は0 (完全に埋められた)からOrderQty (部分的に埋められた)までです。 |
14 | CumQty | いいえ | 任意の有効な値 | 数量 | 埋められた注文の合計数。 |
32 | LastQty | No | 任意の有効な値 | 数量 | この(最後の)取引で埋められた注文の買い注文/売り注文数量。 |
40 | OrdType | No | 1 または2 | Char | 1 = マーケット;2 = 指値。 |
44 | Price | No | 任意の有効な値 | 価格 | 新規注文シングルメッセージで指定された場合、この実行レポートメッセージでエコーバックされます。 |
99 | StopPx | No | 任意の有効な値 | 価格 | 新規注文シングルメッセージで指定された場合、この実行レポートメッセージでエコーバックされます。 |
59 | TimeInForce | No | 1 , 3 または6 | 文字列 | 1 = 指値取消 (GTC);3 = 即時取消 (IOC);6 = 指値有効期限 (GTD)。 |
126 | ExpireTime | No | 20140215-07:24:55 | タイムスタンプ | 新規注文シングルメッセージで指定された場合、この実行レポートメッセージでエコーバックされます。 |
58 | Text | No | 任意の有効な値 | 文字列 | 可能な限り、メッセージが実行レポートを説明します。 |
103 | OrdRejReason | No | 0 | 整数 | 0 = OrdRejReason.BROKER_EXCHANGE_OPTION |
721 | PosMaintRptID | No | 任意の有効な値 | 文字列 | ポジションID。 |
494 | Designation | No | 任意の有効な値 | 文字列 | クライアントのカスタム注文ラベル。 |
584 | MassStatusReqID | No | 任意の有効な値 | 文字列 | クライアントによって割り当てられたマスステータスリクエストの一意のID。 |
1000 | AbsoluteTP | No | 任意の有効な値 | 価格 | テイクプロフィットがトリガーされる絶対価格。 |
1001 | RelativeTP | No | 任意の有効な値 | 価格 | テイクプロフィットがトリガーされるエントリ価格からのpip単位の距離。 |
1002 | AbsoluteSL | No | 任意の有効な値 | 価格 | ストップロスがトリガーされる絶対価格。 |
1003 | RelativeSL | No | 任意の有効な値 | 価格 | エントリ価格からのpip単位の |
1004 | TrailingSL | No | N またはY | Boolean | ストップロスがトレーリングかどうかを示します。N = ストップロスはトレーリングしていません;Y = ストップロスはトレーリングしています。 |
1005 | TriggerMethodSL | No | 任意の有効な値 | 整数 | ストップロスの指定されたトリガーメソッド。1 = 取引側によってストップロスがトリガーされます;2 = 逆側によってストップロスがトリガーされます(買いポジションに対しては買い注文、売りポジションに対しては売り注文);3 = 取引側によって2つの連続したチック後にストップロスがトリガーされます;4 = 逆側によって2つの連続したチック後にストップロスがトリガーされます(買いポジションに対しては2番目の買いチック、売りポジションに対しては2番目の売りチック)。 |
1006 | GuaranteedSL | No | N またはY | Boolean | ストップロスが保証されているかどうかを示します。N = ストップロスは保証されていません;Y = ストップロスは保証されています。 |
標準トレーラー | はい |
ガイドの最後に新規注文シングルの例を参照してください。
cTraderビジネスメッセージリジェクト(MsgType(35)=j)
このメッセージタイプは、システムが購読リクエストを処理できない場合や注文が実行できない場合に送信されます。
タグ | フィールド名 | Req’d | 値 | FIXフォーマット | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
45 | RefSeqNum | いいえ | 任意の有効な値 | 整数 | リジェクトされたメッセージのMsgSeqNum (tag=34)。 |
372 | RefMsgType | いいえ | 任意の有効な値 | 文字列 | 参照されているFIXメッセージのMsgType (tag=35)。 |
379 | BusinessRejectRefID | いいえ | 任意の有効な値 | 文字列 | 参照されているメッセージのビジネスレベルのIDフィールドの値。対応するIDフィールドが指定されていない場合は必須。 |
380 | BusinessRejectReason | はい | 0 | 整数 | ビジネスメッセージリジェクトメッセージの理由を識別するコード。0 = その他。 |
58 | Text | いいえ | 任意の有効な値 | 文字列 | 可能な限り、拒否の理由を説明するメッセージ。 |
標準トレーラー | はい |
以下に、ビジネスメッセージリジェクトメッセージの例をご覧ください。
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’d | 値 | FIXフォーマット | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
710 | PosReqID | はい | 任意の有効な値 | 文字列 | ポジションリクエストメッセージのID。 |
721 | PosMaintRptID | いいえ | 任意の有効な値 | 文字列 | PosReqResult (タグ=728)がVALID_REQUEST でない場合には設定されていません。 |
727 | TotalNumPosReports | はい | 任意の有効な値 | 文字列 | PosReqResult (タグ=728)がVALID_REQUEST の場合、シーケンス内のポジションレポートの総数、それ以外の場合は0 。 |
728 | PosReqResult | はい | 0 または2 | 文字列 | 0 = 有効なリクエスト;2 = 条件に一致するオープンポジションが見つかりません。 |
55 | Symbol | いいえ | 任意の有効な値 | 文字列 | 現在のポジションレポートが準備されているシンボル。PosReqResult (タグ=728)がVALID_REQUEST でない場合には設定されていません。 |
702 | NoPositions | いいえ | 1 | 文字列 | PosReqResult (タグ=728)がVALID_REQUEST の場合に1 、それ以外の場合は設定されません。 |
704 | LongQty | いいえ | 任意の有効な値 | 文字列 | 買い取引側のオープンボリューム。売り取引側の場合は0 に等しい。 PosReqResult (タグ=728)がVALID_REQUEST でない場合には設定されません。 |
705 | ShortQty | いいえ | 任意の有効な値 | 文字列 | 売り取引側のオープンボリューム。買い取引側の場合は0 に等しい。 PosReqResult (タグ=728)がVALID_REQUEST でない場合には設定されません。 |
730 | SettlPrice | いいえ | 任意の有効な値 | 文字列 | 現在のポジションレポートのオープンボリュームの平均価格。 |
1000 | AbsoluteTP | いいえ | 任意の有効な値 | 価格 | テイクプロフィットがトリガーされる絶対価格。 |
1002 | AbsoluteSL | いいえ | 任意の有効な値 | 価格 | ストップロスがトリガーされる絶対価格。 |
1004 | TrailingSL | いいえ | 任意の有効な値 | ブール値 | ストップロスがトレーリングされているかどうかを示します。N = ストップロスはトレーリングされていません;Y = ストップロスはトレーリングされています。 |
1005 | TriggerMethodSL | いいえ | 任意の有効な値 | 整数 | ストップロスのトリガーメソッドを示します。1 = トレード側によってストップロスがトリガーされます;2 = 逆側によってストップロスがトリガーされます(買いポジションの場合は買い注文、売りポジションの場合は売り注文);3 = トレード側によって2つの連続したティック後にストップロスがトリガーされます;4 = 逆側によって2つの連続したティック後にストップロスがトリガーされます(買いポジションの場合は2番目の買いティック、売りポジションの場合は2番目の売りティック)。 |
1006 | GuaranteedSL | いいえ | 任意の有効な値 | ブール値 | ストップロスが保証されているかどうかを示します。N = ストップロスは保証されていません;Y = ストップロスは保証されています。 |
標準トレーラー | はい |
cTrader注文キャンセルリクエスト(MsgType(35)=F)
タグ | フィールド名 | Req’d | 値 | FIXフォーマット | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
41 | OrigClOrdID | はい | 任意の有効な値 | 文字列 | クライアントによって割り当てられたキャンセルされる注文の一意の識別子。 |
37 | OrderID | いいえ | 任意の有効な値 | 文字列 | cServerによって返される注文の一意のID。 |
11 | ClOrdID | はい | 任意の有効な値 | 文字列 | クライアントによって割り当てられたキャンセルリクエストの一意の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’d | 値 | FIXフォーマット | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
37 | OrderID | はい | 任意の有効な値 | 文字列 | システムがキャンセルできなかった注文の一意の識別子。 |
11 | ClOrdID | はい | 任意の有効な値 | 文字列 | 注文キャンセルリクエストの一意の識別子。 |
41 | OrigClOrdID | いいえ | 任意の有効な値 | 文字列 | クライアントによって割り当てられた、キャンセルしようとした注文の一意の識別子。 |
39 | OrdStatus | はい | 任意の有効な値 | 文字 | 0 = 新規;1 = 部分的に埋められました;2 = 埋められました;8 = 拒否されました;4 = キャンセルされました(注文が部分的に埋められた場合、キャンセルされました として返され、(tag=151)、LeavesQty はキャンセルされ、その後は埋められません);C = 期限切れ。 |
434 | CxlRejResponseTo | はい | 1 または2 | 文字 | 1 = キャンセル注文を拒否;2 = 他の端末からの修正注文を拒否。 |
58 | Text | いいえ | 任意の有効な値 | 文字列 | 注文は実行中です。 |
標準トレーラー | はい |
以下は、注文キャンセルリジェクトメッセージの例です。
レスポンス
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’d | 値 | FIXフォーマット | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
41 | cTraderOrigClOrdID | はい | 任意の有効な値 | 文字列 | クライアントによって割り当てられた、修正される注文の一意の識別子。 |
37 | OrderID | いいえ | 任意の有効な値 | 文字列 | サーバーによって割り当てられた、修正される元の注文の一意のID。好ましい方法です。 |
11 | ClOrdID | はい | 任意の有効な値 | 文字列 | クライアントによって割り当てられた、修正リクエストの一意のID。 |
38 | OrderQty | はい | 任意の有効な値 | 数量 | 古い値を置き換えるための既存または新しく指定された数量。 |
44 | Price | いいえ | 任意の有効な値 | 価格 | 古い値を置き換えるための既存または新しく指定された制限価格。限界注文にのみ有効です。 |
99 | StopPx | いいえ | 任意の有効な値 | 価格 | 古い値を置き換えるための既存または新しく指定されたストップ価格。ストップ注文にのみ有効です。 |
126 | ExpireTime | いいえ | 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’d | 値 | FIXフォーマット | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
262 | MDReqID | はい | 任意の有効な値 | 文字列 | リクエストのMDReqID (tag=262)を参照する必要があります。 |
281 | MDReqRejReason | いいえ | 任意の有効な値 | 整数 | 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’d | 値 | FIXフォーマット | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
320 | SecurityReqID | はい | 任意の有効な値 | 文字列 | セキュリティ定義リクエストの一意のID。 |
559 | SecurityListRequestType | はい | 0 | 整数 | 行われているセキュリティリストリクエストのタイプ。サポートされているのは0 のみです。Symbol (tag=55)。 |
55 | Symbol | いいえ | 任意の有効な値 | 整数 | シンボル名を解決するための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’d | 値 | FIXフォーマット | コメント |
---|---|---|---|---|---|
標準ヘッダー | はい | ||||
320 | SecurityReqID | はい | 任意の有効な値 | 文字列 | セキュリティ定義リクエストの一意のID。 |
322 | SecurityResponseID | はい | 任意の有効な値 | 文字列 | セキュリティリストの応答の一意のID。 |
560 | SecurityRequestResult | はい | 0 | 整数 | セキュリティリクエストメッセージに返される結果。有効な値は次のとおりです:0 = 有効なリクエスト;1 = 無効またはサポートされていないリクエスト;2 = 選択基準に一致するインストゥルメントが見つかりません;3 = インストゥルメントデータを取得する権限がありません;4 = インストゥルメントデータが一時的に利用できません;5 = インストゥルメントデータのリクエストがサポートされていません。 |
146 | NoRelatedSym | いいえ | 任意の有効な値 | 整数 | 繰り返しシンボル(インストゥルメント)の数を指定します。 |
55 | Symbol | いいえ | 任意の有効な値 | 整数 | インストゥルメント識別子はSpotwareによって提供されます。 |
1007 | SymbolName | いいえ | 任意の有効な値 | 文字列 | シンボル名。 |
1008 | SymbolDigits | いいえ | 任意の有効な値 | 整数 | シンボルの桁数。可能な値は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