仕様

API

イントロダクション

範囲

この仕様書は、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形式コメント
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.155UTCTimestampメッセージ送信時間は常にUTC(協定世界時、別名GMT)で表されます。

標準トレーラー

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

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

セッションメッセージ

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

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

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

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

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

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

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

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

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

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

タグフィールド名必須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)が含まれている必要があります。

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

リクエスト

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|

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

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

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

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

リクエスト

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|

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

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

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

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

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

タグフィールド名必須FIX形式コメント
 標準ヘッダーはい   
45RefSeqNumはい任意の有効な値シーケンス番号参照されるメッセージのシーケンス番号。
58Textいいえ任意の有効な値文字列自由形式のテキスト文字列。
354EncodedTextLenいいえ任意の有効な値長さバイト単位のEncodedText(非ASCII文字)フィールドの長さ。
355EncodedTextいいえ任意の有効な値データText(タグ=58)フィールドの表現。MessageEncoding(標準ヘッダーのタグ=347)フィールドで指定された形式を使用してエンコードされています。ASCII表現が使用される場合、Text(タグ=58)フィールドにも指定する必要があります。
371RefTagIDいいえ任意の有効な値整数メッセージ拒否を引き起こしたFIXフィールドのタグ番号。
372RefMsgTypeいいえ任意の有効な値文字列参照されるFIXメッセージのメッセージタイプ。
373SessionRejectReasonいいえ任意の有効な値整数セッションリジェクト理由。
 標準トレーラーはい   

シーケンスリセット (双方向) (MsgType(35)=4)

メッセージシーケンス番号をリセットするためにcTraderまたはプロバイダーアプリケーションが送信するインバウンド/アウトバウンドメッセージ。シーケンス番号の同期を維持するために送信されます。

タグフィールド名必須FIX形式コメント
 標準ヘッダーはい   
123GapFillFlagいいえ任意の有効な値ブール値再送要求に対してシーケンス番号のギャップを埋めるために送信されるシーケンスリセットメッセージの場合、GapFillFlagが含まれている必要があります。ギャップを埋める場合はY、新しいシーケンス番号をリセットする場合はNです。
36NewSeqNoはい任意の有効な値整数新しいシーケンス番号。
 標準トレーラーはい   

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

マーケットデータリクエストは、cTraderのマーケットデータサーバーに送信され、リクエストされたシンボルの価格ストリームが開始されます。マーケットデータリクエストは、クライアントアプリケーションが開始します。

プロバイダーのクライアントアプリケーションがマーケットデータリクエストメッセージを送信すると、cTraderは定期的なマーケットデータインクリメンタルリフレッシュまたはマーケットデータスナップショット/フルリフレッシュメッセージを送信します。

マーケットデータリクエストメッセージは、ストリーミングを停止するリクエストメッセージの送信によりキャンセルされます。

クライアントアプリケーションは、cTraderからのマーケットデータのリクエストをキャンセルする場合、同じマーケットデータリクエストIDを含むマーケットデータリクエストメッセージをSubscriptionRequestTypeフィールドで指定された値とともに送信する必要があります。

以下のテーブルは、マーケットデータリクエストメッセージの必須フィールドを示しています。

タグフィールド名必須FIX形式コメント
 標準ヘッダーはい   
262MDReqIDはい任意の有効な値文字列マーケットデータリクエストを一意に識別するために使用されます。
263SubscriptionRequestTypeはい01、または2文字列値は0=新規登録、1=ストリーミングキャンセル、2=スナップショット。
264MarketDepthはい1整数リクエストされたマーケットデータの深さ。
267NoMDEntryTypesはい1整数リクエストするエントリの数。
269MDEntryTypeはい0または1文字列マーケットデータエントリのタイプ。値は0=BID1=OFFER
146NoRelatedSymはい任意の有効な値整数リクエストするシンボルの数。
55Symbolはい任意の有効な値文字列リクエストするシンボル。
207SecurityExchangeはいFX文字列対象市場。常にFXを設定します。
 標準トレーラーはい   

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

リクエスト

8=FIX.4.4|9=112|35=V|49=live.theBroker.12345|56=CSERVER|34=161|52=20170117-09:22:33|57=TRADE|50=any_string|262=any_string|263=1|264=1|267=1|269=0|146=1|55=EURUSD|207=FX|10=131|

応答

8=FIX.4.4|9=94|35=W|34=1|49=CSERVER|50=TRADE|52=20170117-09:22:33.077|56=live.theBroker.12345|57=any_string|262=any_string|269=0|270=1.07300|271=1000000|10=222|

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

マーケットデータスナップショット/フルリフレッシュメッセージは、マーケットデータサーバーによってクライアントアプリケーションに送信され、指定されたシンボルのマーケットデータのスナップショットが提供されます。

タグフィールド名必須FIX形式コメント
 標準ヘッダーはい   
262MDReqIDはい任意の有効な値文字列マーケットデータリクエストを一意に識別するために使用されます。
55Symbolはい任意の有効な値文字列リクエストされたシンボル。
207SecurityExchangeはいFX文字列対象市場。常にFXを設定します。
268NoMDEntriesはい任意の有効な値整数リクエストされたシンボルのマーケットデータエントリの数。
269MDEntryTypeはい0または1文字列マーケットデータエントリのタイプ。値は0=BID1=OFFER
270MDEntryPxはい任意の有効な値価格マーケットデータエントリの価格。
271MDEntrySizeはい任意の有効な値数量マーケットデータエントリのサイズ。
272MDEntryDateいいえ任意の有効な値日付マーケットデータエントリの日付。
273MDEntryTimeいいえ任意の有効な値時刻マーケットデータエントリの時刻。
274TickDirectionいいえ0、1、2、または3整数ティック方向。値は0=プラスティック、1=マイナスティック、2=0ティック、3=不明。
275MDMktいいえ任意の有効な値文字列マーケットデータのマーケット。
336TradingSessionIDいいえ任意の有効な値文字列取引セッションID。
346NumberOfOrdersいいえ任意の有効な値整数オーダー数。
15Currencyいいえ任意の有効な値通貨取引通貨。
271OrderQtyいいえ任意の有効な値整数注文数量。
276QuoteConditionいいえ0、1、2、3、4、5、6、7、8、9、10、11、または12整数引用条件。値は0=通常、1=交換停止中、2=遅延、3=未承認取引、4=トレーディングハルト、5=スロー状態、6=価格設定停止、7=クローズド、8=ファーム、9=ファームと遅延、10=トレーディングハルトと遅延、11=スロー状態と遅延、12=価格設定停止と遅延。
277TradeConditionいいえ0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、21、22、23、24、25、26、27、28、または29整数取引条件。値は0=通常、1=ノーカンセル、2=ナットシン、3=オープン、4=クローズ、5=ザ・クロス、6=売り、7=買い、8=オークション、9=内々、10=スペシャル、11=クロースクロス、12=オープンクロス、13=ステップ、14=ピボット、15=ストラドル、16=バスケット、17=サイズ、18=コンティニュエーション、19=リプレースメント、20=アジャストメント、21=アジャストクロス、22=バット、23=バットストラドル、24=バットピボット、25=オルタネート、26=オルタネートクロス、27=プログラム、28=プログラムクロス、29=その他。
278MDEntryIDいいえ任意の有効な値文字列マーケットデータエントリID。
279MDUpdateActionいいえ0、1、または2整数マーケットデータ更新アクション。値は0=新規、1=変更、2=削除。
286OpenCloseSettleFlagいいえ0、1、2、または3整数オープンクローズフラグ。値は0=オープン、1=クローズ、2=未知、3=解決。
299QuoteEntryIDいいえ任意の有効な値文字列クオートエントリID。
300QuoteStatusいいえ0、1、2、3、4、5、6、7、8、または9整数引用ステータス。値は0=承認済み、1=拒否済み、2=取り消し済み、3=遅延、4=クロース、5=ストップ、6=解除、7=ホールド、8=オープン、9=スロー。
301QuoteRequestIDいいえ任意の有効な値文字列引用リクエストID。
302QuoteTypeいいえ0、1、または2整数引用タイプ。値は0=ファーム、1=ナット、2=インディケーション。
303QuoteRejectReasonいいえ

このページについて