Delphi 向け OKX WebSocket 取引 API 統合
TsgcWSAPI_OKX コンポーネントは、統一された WebSocket インターフェースを通じて OKX 取引所への包括的な Delphi アクセスを提供します。パブリック市場データストリーム、プライベートアカウントチャネル、成行・指値注文を含む直接取引操作をすべて単一コンポーネントでサポートします。このガイドでは、利用可能なすべてのメソッド、設定プロパティ、Delphi から OKX で取引を始めるための実際のコード例を解説します。
目次
WebSocket パブリックチャネル
パブリックチャネルは認証を必要とせず、接続されたすべてのクライアントに市場データをストリーミングします。銘柄・ティッカー・板情報・取引・ローソク足・ファンディングレートなどを対象としています。各 Subscribe メソッドには対応する Unsubscribe メソッドがあります。
市場データチャネル
| メソッド |
説明 |
SubscribeInstruments |
銘柄の更新(新規上場・上場廃止・ステータス変更)にサブスクライブします。 |
SubscribeTicker |
特定の銘柄のリアルタイムティッカーデータにサブスクライブします。 |
SubscribeOpenInterest |
先物・無期限契約の未建玉更新にサブスクライブします。 |
SubscribeCandlestick |
指定した間隔のローソク足/KLine データにサブスクライブします。 |
SubscribeTrades |
特定の銘柄のリアルタイム取引約定データにサブスクライブします。 |
SubscribeOrderBook |
深度を設定可能な板情報の更新にサブスクライブします。 |
価格・インデックスチャネル
| メソッド |
説明 |
SubscribeEstimatedPrices |
オプション・先物の推定受渡価格/行使価格にサブスクライブします。 |
SubscribeMarkPrice |
証拠金・損益計算に使用するマーク価格の更新にサブスクライブします。 |
SubscribeMarkPriceCandlestick |
マーク価格に基づくローソク足データにサブスクライブします。 |
SubscribePriceLimit |
銘柄の価格制限(価格帯)更新にサブスクライブします。 |
SubscribeIndexCandlestick |
指数価格に基づくローソク足データにサブスクライブします。 |
SubscribeIndexTicker |
指定したインデックスの指数ティッカー更新にサブスクライブします。 |
SubscribeFundingRate |
無期限契約のファンディングレート更新にサブスクライブします。 |
オプション・システムチャネル
| メソッド |
説明 |
SubscribeOptionSummary |
オプションのサマリーデータ(グリークス・ボラティリティ・未建玉)にサブスクライブします。 |
SubscribeStatus |
システムステータスの更新(メンテナンス・障害)にサブスクライブします。 |
SubscribePublicStructureBlockTrades |
パブリックストラクチャーブロック取引データにサブスクライブします。 |
SubscribeBlockTickers |
ブロック取引ティッカーの更新にサブスクライブします。 |
注意: 上記のすべての Subscribe メソッドには対応する
UnSubscribe メソッド(例:
UnSubscribeTicker)があり、そのチャネルの更新受信を停止できます。
WebSocket プライベートチャネル
プライベートチャネルは認証が必要で、アカウント状態・ポジション・注文・アルゴリズム取引アクティビティのリアルタイム更新を提供します。これらのチャネルをサブスクライブする前に OKX.IsPrivate := True を設定し、有効な API 認証情報を提供してください。
アカウント・ポジションチャネル
| メソッド |
説明 |
SubscribeAccount |
口座残高と資産のリアルタイム更新にサブスクライブします。 |
SubscribePositions |
ポジション更新(オープン・クローズ・サイズ変更)にサブスクライブします。 |
SubscribeBalanceAndPosition |
残高とポジションの複合更新を単一ストリームでサブスクライブします。 |
SubscribePositionRisk |
ポジションリスク警告の更新(清算近接状態)にサブスクライブします。 |
SubscribeAccountGreeks |
オプションポジションのアカウントレベルのグリークス更新にサブスクライブします。 |
注文・アルゴチャネル
| メソッド |
説明 |
SubscribeOrders |
注文ステータスの更新(発注・約定・キャンセル・部分約定)にサブスクライブします。 |
SubscribeOrdersAlgo |
アルゴリズム注文の更新(トリガー・利確ストップロス・トレイリングストップ)にサブスクライブします。 |
SubscribeAdvanceAlgo |
高度なアルゴリズム注文の更新(アイスバーグ・TWAP)にサブスクライブします。 |
RFQ・ブロック取引チャネル
| メソッド |
説明 |
SubscribeRfqs |
ブロック取引の見積もりリクエスト(RFQ)更新にサブスクライブします。 |
SubscribeQuotes |
RFQ への回答として届くクォート更新にサブスクライブします。 |
SubscribePrivateStructureBlockTrades |
プライベートストラクチャーブロック取引の更新にサブスクライブします。 |
グリッド取引チャネル
| メソッド |
説明 |
SubscribeSpotGridAlgoOrders |
Spot グリッドアルゴ注文の更新にサブスクライブします。 |
SubscribeContactGridAlgoOrders |
契約グリッドアルゴ注文の更新にサブスクライブします。 |
SubscribeGridPositions |
グリッド取引ポジションの更新にサブスクライブします。 |
SubscribeGridSubOrders |
グリッド戦略内の個々のサブ注文の更新にサブスクライブします。 |
WebSocket 取引操作
OKX は WebSocket 接続を通じて直接注文の発注・管理をサポートしており、REST API 呼び出しと比べてレイテンシーが低くなります。これらのメソッドは認証が必要です。
| メソッド |
説明 |
PlaceOrder |
すべての注文パラメーターを完全に制御して新規注文を発注します。 |
PlaceMarketOrder |
利用可能な最良価格で即時約定する成行注文を発注します。 |
PlaceLimitOrder |
市場が指定価格に達したときのみ約定する指値注文を発注します。 |
CancelOrder |
注文 ID で既存の注文をキャンセルします。 |
AmendOrder |
既存の注文を修正します(キャンセル・再発注なしで価格またはサイズを変更)。 |
注意: WebSocket ベースの取引は REST ベースの注文発注よりも大幅に低レイテンシーです。OKX は WebSocket 注文を優先的に処理するため、レイテンシーが重要な戦略に推奨される方法です。
コード例
以下の例では、TsgcWSAPI_OKX コンポーネントの作成・設定、API 認証、ティッカーデータのサブスクライブ、注文の監視、WebSocket 接続を通じた成行・指値注文の発注方法を示します。
var
oClient: TsgcWebSocketClient;
oOKX: TsgcWSAPI_OKX;
begin
// Create the WebSocket client
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
// Configure API credentials
oOKX.OKX.ApiKey := 'your_api_key';
oOKX.OKX.ApiSecret := 'your_api_secret';
oOKX.OKX.Passphrase := 'your_passphrase';
oOKX.OKX.IsPrivate := True;
// Connect to OKX
oClient.Active := True;
// Subscribe to BTC-USDT ticker
oOKX.SubscribeTicker('BTC-USDT');
// Subscribe to order updates for spot trading
oOKX.SubscribeOrders(okxitSpot);
// Place a market buy order
oOKX.PlaceMarketOrder(okxosBuy, 'BTC-USDT', 0.001);
// Place a limit buy order
oOKX.PlaceLimitOrder(okxosBuy, 'BTC-USDT', 0.001, 30000);
end;
WebSocket イベントの処理
受信 WebSocket メッセージを処理するためにイベントハンドラーを割り当てます。イベントは各更新のチャネル名と JSON ペイロードを提供します。
procedure TForm1.OnOKXEvent(Sender: TObject;
const aChannel, aData: string);
begin
// aChannel identifies the subscription (e.g., 'tickers', 'orders')
// aData contains the JSON payload
Memo1.Lines.Add(aChannel + ': ' + aData);
end;
デモ取引モードの使用
OKX はテスト用のデモ取引環境を提供しています。接続前に OKX.IsDemo := True を設定することで有効化できます。デモモードはシミュレートされた残高を持つ別のエンドポイントに接続し、実際の資金リスクなしに取引ロジックをテストできます。
// Enable demo trading mode
oOKX.OKX.IsDemo := True;
oOKX.OKX.IsPrivate := True;
oClient.Active := True;
設定とメモ
設定プロパティ
すべての設定はコンポーネントの OKX プロパティからアクセスします。
| プロパティ |
型 |
説明 |
OKX.ApiKey |
String |
OKX の API キーです。OKX API 管理ページから生成してください。 |
OKX.ApiSecret |
String |
OKX の API シークレットです。この値は安全に保管し、クライアント側のコードに公開しないでください。 |
OKX.Passphrase |
String |
API キー作成時に設定したパスフレーズです。認証が必要なすべてのリクエストに必要です。 |
OKX.IsDemo |
Boolean |
True に設定すると、シミュレートされた資金を使用した OKX デモ取引環境に接続します。デフォルトは False です。 |
OKX.IsPrivate |
Boolean |
True に設定すると、WebSocket 接続で認証を有効化します。プライベートチャネルおよび取引操作に必要です。デフォルトは False です。 |
重要なメモ
セキュリティ: API キー・シークレット・パスフレーズを本番コードに直接ハードコードしないでください。認証情報の保存には安全な設定ファイルまたは環境変数を使用してください。
- プライベートチャネルまたは取引操作が必要な場合は、接続前に
OKX.IsPrivate := True を設定してください。パブリックチャネルは認証なしで動作します。
- 本番環境に移行する前に
OKX.IsDemo := True を使用して OKX デモ環境でテストしてください。デモモードはデモプラットフォーム専用に生成された別の API 認証情報を使用します。
SubscribeOrders メソッドは取引種別で注文更新をフィルタリングするための銘柄タイプパラメーター(例:okxitSpot、okxitFutures、okxitSwap、okxitOption)を受け付けます。
PlaceMarketOrder および PlaceLimitOrder の簡易メソッドは、注文方向パラメーター(例:okxosBuy、okxosSell)、銘柄 ID、サイズ、(指値注文の場合)価格を受け付けます。
AmendOrder メソッドを使用すると、アクティブな注文をキャンセル・再発注することなく価格またはサイズを変更でき、レイテンシーを削減してキュー位置の喪失を回避できます。
- OKX は WebSocket メッセージにレート制限を適用しています。サブスクリプションおよび1秒あたりの取引リクエストの現在の制限については、OKX の公式ドキュメントを参照してください。
- WebSocket サブスクリプションは接続の有効期間中は持続します。接続が切断された場合は、再接続後に再サブスクライブする必要があります。