XTB はヨーロッパを代表するオンライン取引プラットフォームの一つで、xStation5 プラットフォームを通じて Forex・指数・商品・株式・暗号資産へのアクセスを提供します。TsgcWSAPI_XTB コンポーネントは単一の WebSocket 接続で xStation5 API との完全な Delphi 統合を提供し、認証・市場データ取得・口座管理・取引実行・リアルタイムストリーミングサブスクリプションをカバーします。この記事では利用可能なすべてのメソッドを解説し、数分で開始する方法を示します。
目次
アーキテクチャ概要
多くの暗号資産取引所が REST エンドポイントと WebSocket チャネルに機能を分割しているのとは異なり、XTB xStation5 API は完全に単一の WebSocket 接続で動作します。シンボルリストの取得から取引の発注まで、すべてのリクエストは同じソケット上で JSON メッセージとして送受信されます。リアルタイムサブスクリプション(残高・ローソク足・ティック・取引など)用の2番目のストリーミングソケットは自動的に管理されます。
TsgcWSAPI_XTB コンポーネントはこれらすべてを抽象化します。TsgcWebSocketClient を割り当て、認証情報を設定し、クライアントをアクティブにして、GetAllSymbols や SubscribeTickPrices などの高レベルメソッドを呼び出すだけです。
認証
認証は 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 にサブスクライブします(アンサブスクライブ不要)。 |
ユーティリティメソッド
| メソッド | 説明 |
|---|---|
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 データを処理するために OnXTBResponse や OnXTBStreamingResponse などのイベントにハンドラーを割り当てます。各レスポンスにはコマンド識別子が含まれているため、適切な処理ロジックにルーティングできます。
設定リファレンス
すべての設定は 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 メッセージでルーティングします。これによりコンポーネントアーキテクチャが簡素化されます:TsgcWebSocketClient と TsgcWSAPI_XTB のみが必要で、追加の HTTP コンポーネントは不要です。
エラーハンドリング
リクエストが失敗した場合、サーバーはエラーコードと説明を含む JSON エラーレスポンスを返します。status フィールドを確認してレスポンスイベントでこれらを処理してください。一般的な問題には、無効な認証情報・期限切れセッション・過剰なリクエストへのレート制限があります。
