cancel_order
Cancel open cryptocurrency orders on the Zaif exchange using the specified order ID. Modify strategies, correct errors, or remove long-pending orders. Supports BTC/JPY, ETH/JPY, and XYM/JPY pairs.
Instructions
未約定の暗号資産取引注文をキャンセルします。
このツールは、既に発注済みで未約定(一部約定を含む)の注文をキャンセルするために使用します。
注文IDを指定してキャンセルでき、任意で通貨ペアも指定できます。
使用例:
- 価格変動により注文戦略を変更したい場合
- 誤った注文をキャンセルしたい場合
- 長時間約定しない注文を取り消したい場合
注意: このツールを使用するには、環境変数にAPIキーとシークレットが設定されている必要があります。
Args:
order_id: キャンセルする注文のID(get_open_ordersで取得可能)
currency_pair: 通貨ペア('btc_jpy': ビットコイン/円、'eth_jpy': イーサリアム/円、'xym_jpy': シンボル/円)
指定しない場合、システムは注文IDから自動的に判断します
Returns:
CancelOrderResponse: キャンセル結果情報
- order_id: キャンセルした注文ID
- balances: キャンセル後の各通貨の残高情報
Raises:
ValueError: 認証情報が設定されていない場合や、APIエラーが発生した場合
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| currency_pair | No | ||
| order_id | Yes |
Implementation Reference
- zaifer_mcp/tools/trade.py:78-114 (handler)The main handler function for the 'cancel_order' MCP tool. It is decorated with @mcp.tool() to register it, performs auth check, and calls the underlying Zaif API.@mcp.tool() def cancel_order( order_id: int, currency_pair: SupportedPair = None ) -> CancelOrderResponse: """ 未約定の暗号資産取引注文をキャンセルします。 このツールは、既に発注済みで未約定(一部約定を含む)の注文をキャンセルするために使用します。 注文IDを指定してキャンセルでき、任意で通貨ペアも指定できます。 使用例: - 価格変動により注文戦略を変更したい場合 - 誤った注文をキャンセルしたい場合 - 長時間約定しない注文を取り消したい場合 注意: このツールを使用するには、環境変数にAPIキーとシークレットが設定されている必要があります。 Args: order_id: キャンセルする注文のID(get_open_ordersで取得可能) currency_pair: 通貨ペア('btc_jpy': ビットコイン/円、'eth_jpy': イーサリアム/円、'xym_jpy': シンボル/円) 指定しない場合、システムは注文IDから自動的に判断します Returns: CancelOrderResponse: キャンセル結果情報 - order_id: キャンセルした注文ID - balances: キャンセル後の各通貨の残高情報 Raises: ValueError: 認証情報が設定されていない場合や、APIエラーが発生した場合 """ if not api.trade.http.auth_provider: raise ValueError( "認証情報が設定されていません。APIキーとシークレットを.envファイルに設定してください。" ) return api.trade.cancel_order(order_id, currency_pair)
- zaifer_mcp/models/trade.py:141-179 (schema)Output schema definition: dataclass CancelOrderResponse, including from_dict and to_dict for serialization.class CancelOrderResponse: """ 注文キャンセル結果を表すデータクラス。 cancel_orderの戻り値に対応します。 Attributes: order_id: キャンセルした注文ID balances: キャンセル後の各通貨の残高情報 """ order_id: int balances: Dict[str, Decimal] @classmethod def from_dict(cls, data: Dict[str, Any]) -> "CancelOrderResponse": """ APIレスポンスからCancelOrderResponseインスタンスを作成します。 Args: data: APIレスポンスの辞書 Returns: CancelOrderResponseインスタンス """ balances = {k: Decimal(str(v)) for k, v in data.get("funds", {}).items()} return cls(order_id=int(data.get("order_id", 0)), balances=balances) def to_dict(self) -> Dict[str, Any]: """ CancelOrderResponseインスタンスを辞書に変換します。 Returns: APIレスポンス形式の辞書 """ return { "order_id": self.order_id, "funds": {k: str(v) for k, v in self.balances.items()}, }
- zaifer_mcp/server.py:36-41 (registration)Registration of trade tools (including cancel_order) by calling register_trade_tools during server initialization.from zaifer_mcp.tools.trade import register_trade_tools from zaifer_mcp.tools.chart import register_chart_tools register_market_tools(mcp, zaif_api) register_account_tools(mcp, zaif_api) register_trade_tools(mcp, zaif_api)
- zaifer_mcp/models/common.py:7-7 (schema)Input schema: SupportedPair type definition, used for currency_pair parameter.SupportedPair = Literal["btc_jpy", "eth_jpy", "xym_jpy"]
- zaifer_mcp/api/client.py:462-492 (helper)Helper function: TradeApi.cancel_order method that makes the actual HTTP POST to Zaif API, called by the tool handler.def cancel_order( self, order_id: int, currency_pair: str = None, is_token: bool = None ) -> CancelOrderResponse: """ 注文をキャンセル Args: order_id: 注文ID currency_pair: 通貨ペア is_token: トークン種別(トークンの場合True) Returns: CancelOrderResponseオブジェクト Note: TODO: MCP利用者にis_tokenパラメータを意識させないように隠蔽する方法を検討する。 将来的には通貨ペアやorder_idから自動的にトークン種別を判定する機能を実装するか、 または内部的にAPIを呼び分けるなどの方法で対応する。 """ params = {"order_id": order_id} if currency_pair: params["currency_pair"] = currency_pair if is_token is not None: params["is_token"] = is_token params["method"] = "cancel_order" data = self.http.post(self.base_url, params) return CancelOrderResponse.from_dict(data)