XTB API Update sgcWebSockets

· 機能
Delphi 向け XTB xStation5 取引 API 統合

XTB はヨーロッパを代表するオンライン取引プラットフォームの一つで、xStation5 プラットフォームを通じて Forex・指数・商品・株式・暗号資産へのアクセスを提供します。TsgcWSAPI_XTB コンポーネントは単一の WebSocket 接続で xStation5 API との完全な Delphi 統合を提供し、認証・市場データ取得・口座管理・取引実行・リアルタイムストリーミングサブスクリプションをカバーします。この記事では利用可能なすべてのメソッドを解説し、数分で開始する方法を示します。

目次

アーキテクチャ概要

多くの暗号資産取引所が REST エンドポイントと WebSocket チャネルに機能を分割しているのとは異なり、XTB xStation5 API は完全に単一の WebSocket 接続で動作します。シンボルリストの取得から取引の発注まで、すべてのリクエストは同じソケット上で JSON メッセージとして送受信されます。リアルタイムサブスクリプション(残高・ローソク足・ティック・取引など)用の2番目のストリーミングソケットは自動的に管理されます。

TsgcWSAPI_XTB コンポーネントはこれらすべてを抽象化します。TsgcWebSocketClient を割り当て、認証情報を設定し、クライアントをアクティブにして、GetAllSymbolsSubscribeTickPrices などの高レベルメソッドを呼び出すだけです。

認証

認証は WebSocket クライアントが接続したときに、XTB プロパティグループに設定した認証情報を使用して自動的に処理されます。必要に応じてこれらのメソッドを明示的に呼び出すこともできます。

メソッド 説明
Login UserId と Password を使用して xStation5 サーバーに認証します。接続時に自動的に呼び出されます。
Logout 認証済みセッションを終了してサーバーから切断します。

市場データメソッド

これらのメソッドは xStation5 サーバーから銘柄情報・価格・チャート・ニュース・取引時間を取得します。すべての呼び出しは WebSocket 接続上のリクエスト・レスポンス方式です。

メソッド 説明
GetAllSymbols プラットフォームで利用可能なすべての銘柄のリストを返します。
GetSymbol 特定のシンボルの詳細情報を返します。
GetTickPrices 指定したシンボルの現在のティック価格(ビッド・アスク)を返します。
GetTradingHours 指定した銘柄の取引時間を返します。
GetCalendar 今後のイベントの経済カレンダーを返します。
GetChartLastRequest 指定したタイムスタンプから現在までのチャートローソク足データを返します。
GetChartRangeRequest 特定の日付範囲のチャートローソク足データを返します。
GetNews XTB 取引プラットフォームのニューストピックを返します。
GetStepRules 出来高計算のステップルールを返します。
GetServerTime 現在のサーバー時刻を返します。
GetVersion API バージョン番号を返します。

口座メソッド

口座メソッドは WebSocket セッションを離れることなく、ユーザープロファイル・証拠金レベル・損益計算を確認できます。

メソッド 説明
GetCurrentUserData 現在ログインしているユーザーの情報(名前・通貨・レバレッジなど)を返します。
GetMarginLevel 現在の口座証拠金レベル・資産・残高を返します。
GetMarginTrade 指定した銘柄と出来高の予想証拠金を計算します。
GetIbsHistory 紹介ブローカー(IB)手数料履歴を返します。
GetProfitCalculation 指定した取引シナリオの推定損益を計算します。

取引メソッド

これらのメソッドは、建玉・過去のポジションの確認から取引トランザクションの発注・監視まで、あらゆる操作をカバーします。

メソッド 説明
GetTrades 現在の建玉リストを返します。建玉のみを含める場合は True を渡してください。
GetTradesHistory 指定した時間範囲内のクローズ済み取引を返します。
GetTradeRecords 指定した注文番号の取引記録を返します。
TradeTransaction 取引トランザクションを実行します(注文のオープン・クローズ・修正・削除)。
TradeTransactionStatus 以前に送信した取引トランザクションの現在のステータスを確認します。

ストリーミングサブスクリプション

ストリーミングメソッドは専用のストリーミング接続でリアルタイムデータチャネルを開きます。各サブスクリプションには更新受信を停止するための対応する Unsubscribe メソッドがあります。

サブスクライブ アンサブスクライブ 説明
SubscribeBalance UnSubscribeBalance リアルタイムの残高・資産更新。
SubscribeCandles UnSubscribeCandles シンボルのライブローソク足・チャート更新。
SubscribeKeepAlive UnSubscribeKeepAlive 定期的なキープアライブハートビートメッセージ。
SubscribeNews UnSubscribeNews プラットフォームからのリアルタイムニュースフィード。
SubscribeProfits UnSubscribeProfits 建玉のリアルタイム損益更新。
SubscribeTickPrices UnSubscribeTickPrices シンボルのライブビッド・アスクティック価格。
SubscribeTrades UnSubscribeTrades 取引がオープン・クローズ・修正されたときのリアルタイム更新。
SubscribeTradeStatus UnSubscribeTradeStatus リアルタイムの取引トランザクションステータス変更。
SubscribePing 接続を維持するためのストリーミング ping にサブスクライブします(アンサブスクライブ不要)。
注意: ストリーミングサブスクリプションには最初にログインが成功している必要があります。ストリーミングセッション ID は認証中に自動的に取得されます。

ユーティリティメソッド

メソッド 説明
Ping 接続が生きていることを確認しタイムアウトを防ぐためにサーバーへ ping を送信します。

はじめに — コード例

以下の例では、XTB デモサーバーへの接続を作成し、認証してシンボルとユーザーデータを取得し、ライブティック価格と残高更新をサブスクライブして建玉を取得する方法を示します。

var
  oClient: TsgcWebSocketClient;
  oXTB: TsgcWSAPI_XTB;
begin
  // Create the WebSocket client
  oClient := TsgcWebSocketClient.Create(nil);
  // Create the XTB API component
  oXTB := TsgcWSAPI_XTB.Create(nil);
  oXTB.Client := oClient;
  // Configure credentials
  oXTB.XTB.UserId := 'your_user_id';
  oXTB.XTB.Password := 'your_password';
  oXTB.XTB.Demo := True;
  // Connect and authenticate
  oClient.Active := True;
  // After the login event fires, call API methods:
  oXTB.GetAllSymbols;
  oXTB.GetCurrentUserData;
  // Subscribe to real-time tick prices for EURUSD
  oXTB.SubscribeTickPrices('EURUSD', 0, 0);
  // Subscribe to balance updates
  oXTB.SubscribeBalance;
  // Get all open trades
  oXTB.GetTrades(False);
end;

レスポンスの処理

すべてのレスポンスはコンポーネントのイベントを通じて非同期に届きます。返された JSON データを処理するために OnXTBResponseOnXTBStreamingResponse などのイベントにハンドラーを割り当てます。各レスポンスにはコマンド識別子が含まれているため、適切な処理ロジックにルーティングできます。

設定リファレンス

すべての設定は TsgcWSAPI_XTB コンポーネントの XTB プロパティにまとめられています。

プロパティ 説明
XTB.UserId String XTB アカウントのユーザー ID。
XTB.Password String XTB アカウントのパスワード。
XTB.Demo Boolean デモサーバーに接続するには True に設定します。本番稼働サーバーには False です。

ヒントとメモ

デモ vs. 本番

常に XTB.Demo := True で開発・テストしてください。デモサーバーは本番と同じ API を使用しますが、仮想資金を持つサンドボックス環境に接続します。本番取引の準備が整ったときのみ False に切り替えてください。

接続キープアライブ

XTB サーバーはタイムアウト期間後にアイドルセッションを切断します。接続を維持するために SubscribePing を使用するか、定期的に Ping を呼び出してください。ストリーミング接続の SubscribeKeepAlive メソッドも同様の目的を果たします。

シングル接続アーキテクチャ

独立した REST エンドポイントを持つ取引所とは異なり、XTB はすべてのコマンドを WebSocket メッセージでルーティングします。これによりコンポーネントアーキテクチャが簡素化されます:TsgcWebSocketClientTsgcWSAPI_XTB のみが必要で、追加の HTTP コンポーネントは不要です。

エラーハンドリング

リクエストが失敗した場合、サーバーはエラーコードと説明を含む JSON エラーレスポンスを返します。status フィールドを確認してレスポンスイベントでこれらを処理してください。一般的な問題には、無効な認証情報・期限切れセッション・過剰なリクエストへのレート制限があります。

レート制限: XTB API は1秒あたりのリクエスト数を制限しています。ループで大量のリクエストを送信しないでください。呼び出しを分散させるか、頻繁に更新されるデータにはストリーミングサブスクリプションを使用してください。