CEX.IO はリアルタイム市場データとトレーディング機能を WebSocket API で提供する実績ある暗号通貨取引所です。TsgcWSAPI_Cex コンポーネントは CEX.IO への接続のためのネイティブ Delphi インターフェースを提供し、開発者がライブティッカー更新のサブスクライブ・注文板の管理・注文の発注とキャンセル・口座ポジションの管理を永続的な WebSocket 接続で行えます。
目次
概要
CEX.IO WebSocket API は 2 つのカテゴリの機能を提供します:認証なしで市場データをストリーミングするパブリックチャンネルと、トレーディングと口座管理のために API キー認証が必要なプライベートメソッド。TsgcWSAPI_Cex コンポーネントは両カテゴリをラップし、ライブ価格フィードから注文実行まですべてを処理する単一の Delphi コンポーネントを提供します。
はじめに
CEX.IO に接続するには、フォームに TsgcWebSocketClient と TsgcWSAPI_Cex コンポーネントをドロップするか、コードで作成します。クライアントを API コンポーネントに割り当て、認証情報を設定して接続をアクティブにします。
oClient := TsgcWebSocketClient.Create(nil);
oCex := TsgcWSAPI_Cex.Create(nil);
oCex.Client := oClient;
oCex.Cex.ApiKey := 'your_api_key';
oCex.Cex.ApiSecret := 'your_api_secret';
oClient.Active := True;
注意:ティッカーサブスクリプションなどのパブリックメソッドは API 認証情報を必要としません。注文の発注や残高確認などのプライベート(認証済み)メソッドを使用する場合にのみ ApiKey と ApiSecret を設定する必要があります。
パブリック WebSocket メソッド
パブリックメソッドを使用すると認証なしでリアルタイム市場データを受信できます。ダッシュボード・チャートツール・価格アラートシステムの構築に最適です。
| メソッド | 説明 |
|---|---|
SubscribeTickers |
通貨ペア(例:BTC/USD)のリアルタイムティッカー更新にサブスクライブします。 |
SubscribeChart |
指定した取引ペアのチャート/ローソク足データにサブスクライブします。 |
SubscribePair |
特定の取引ペアの更新にサブスクライブします。 |
UnSubscribePair |
以前にサブスクライブした取引ペアからアンサブスクライブします。 |
SubscribeOrderBook |
ペアの注文板スナップショットとインクリメンタル更新にサブスクライブします。 |
UnSubscribeOrderBook |
注文板更新からアンサブスクライブします。 |
ティッカーへのサブスクライブ
SubscribeTickers メソッドは通貨ペアの価格データのライブストリームを開きます。最初のパラメーターはベース通貨、2 番目はクォート通貨です。
// Subscribe to BTC/USD ticker updates
oCex.SubscribeTickers('BTC', 'USD');
注文板の操作
注文板サブスクリプションは初期スナップショットとその後のインクリメンタル更新の両方を提供します。データの受信を開始するには SubscribeOrderBook、不要になったら UnSubscribeOrderBook を使用します。
// Subscribe to the BTC/USD order book
oCex.SubscribeOrderBook('BTC', 'USD');
// Later, unsubscribe when no longer needed
oCex.UnSubscribeOrderBook('BTC', 'USD');
プライベート WebSocket メソッド(認証済み)
プライベートメソッドは CEX.IO API キーとシークレットによる認証が必要です。コンポーネントは認証ハンドシェイクを自動的に処理しますが、プライベートメソッドを呼び出す前に Authenticate を呼び出す必要があります。
| メソッド | 説明 |
|---|---|
Authenticate |
API キーとシークレットを使用して WebSocket セッションを認証します。 |
GetTicker |
特定の通貨ペアの現在のティッカーを取得します。 |
GetBalance |
すべての通貨の口座残高を取得します。 |
Ping |
WebSocket 接続を維持するためのキープアライブ Ping を送信します。 |
GetOpenOrders |
口座のすべての現在のオープン注文を取得します。 |
PlaceOrder |
指定した金額と価格で新しい買いまたは売り注文を発注します。 |
CancelReplaceOrder |
既存の注文をキャンセルし、アトミックに新しい注文に置き換えます。 |
GetOrderRequest |
識別子で特定の注文の詳細を取得します。 |
CancelOrderRequest |
識別子で特定の注文をキャンセルします。 |
GetArchivedOrders |
履歴(完了/キャンセル済み)注文を取得します。 |
OpenPosition |
新しい信用取引ポジションを開きます。 |
GetPosition |
特定のオープンポジションの詳細を取得します。 |
GetOpenPositions |
現在のすべてのオープン信用取引ポジションを取得します。 |
ClosePosition |
既存の信用取引ポジションをクローズします。 |
コード例
以下の例は完全なワークフローを示しています:CEX.IO への接続・ティッカーへのサブスクライブ・買い注文の発注・口座残高の取得。
oClient := TsgcWebSocketClient.Create(nil);
oCex := TsgcWSAPI_Cex.Create(nil);
oCex.Client := oClient;
oCex.Cex.ApiKey := 'your_api_key';
oCex.Cex.ApiSecret := 'your_api_secret';
oClient.Active := True;
// Subscribe to ticker
oCex.SubscribeTickers('BTC', 'USD');
// Place an order
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Get balance
oCex.GetBalance;
注文の発注
PlaceOrder メソッドはベース通貨・クォート通貨・金額・価格・注文タイプを受け取ります。注文タイプパラメーターは ctBuy または ctSell の列挙型値を使用します。
// Place a buy order: 0.01 BTC at $30,000
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Place a sell order: 0.05 ETH at $2,000
oCex.PlaceOrder('ETH', 'USD', 0.05, 2000, ctSell);
ポジションの管理
CEX.IO はポジション管理メソッドを通じた信用取引をサポートしています。WebSocket 接続を通じてポジションを直接開く・照会する・クローズできます。
// Retrieve all open positions
oCex.GetOpenPositions;
// Close a specific position by ID
oCex.ClosePosition(positionId);
イベントとコールバック
TsgcWSAPI_Cex コンポーネントは取引所からデータを受信すると イベントを発生させます。ティッカー更新・注文確認・残高情報などの受信メッセージを処理するハンドラーを割り当てます。
| イベント | 発生タイミング |
|---|---|
OnCexMessage |
CEX.IO WebSocket サーバーからメッセージを受信したとき。 |
OnCexConnect |
CEX.IO への WebSocket 接続が確立されたとき。 |
OnCexDisconnect |
WebSocket 接続がクローズされたとき。 |
OnCexError |
取引所からエラーレスポンスを受信したとき。 |
設定と注意事項
API 認証情報
CEX.IO のアカウント設定から API キーとシークレットを取得します。認証情報を安全に保存し、本番コードにハードコードしないでください。暗号化された設定ファイルや環境変数から読み込むことを検討してください。
接続管理
WebSocket 接続は TsgcWebSocketClient コンポーネントで管理されます。接続するには Active := True、切断するには Active := False を設定します。クライアントの再接続プロパティで設定した場合、コンポーネントは自動再接続をサポートします。
認証フロー
プライベートメソッドを呼び出す前に認証を完了する必要があります。接続確立後に Authenticate を呼び出すか、OnCexConnect イベント内で処理します。コンポーネントは API キーとシークレットから必要な HMAC 署名を自動的に生成します。
キープアライブ
認証済みセッションを維持するために定期的に Ping メソッドを使用してください。CEX.IO はタイムアウト後にアイドルセッションを切断する場合があります。
