get_open_orders
Retrieve a list of active (unexecuted) cryptocurrency orders on Zaif exchange. Filter by currency pair or view all open orders to monitor strategy progress or identify cancellations.
Instructions
現在有効な(未約定の)暗号資産取引注文一覧を取得します。
このツールは、現在板に出ている未約定注文(一部約定を含む)の一覧を確認するために使用します。
特定の通貨ペアでフィルタリングすることも、すべての通貨ペアの注文を取得することもできます。
使用例:
- 現在の注文状況を確認したい場合
- キャンセルすべき注文を特定したい場合
- 注文戦略の進捗を確認したい場合
注意: このツールを使用するには、環境変数にAPIキーとシークレットが設定されている必要があります。
Args:
currency_pair: 通貨ペア('btc_jpy': ビットコイン/円、'eth_jpy': イーサリアム/円、'xym_jpy': シンボル/円)
指定しない場合、すべての通貨ペアの注文が返されます
Returns:
OpenOrderList: 未約定注文一覧
- open_orders: 注文IDをキーとする注文情報の辞書
- currency_pair: 通貨ペア
- order_type: 注文タイプ('bid': 買い、'ask': 売り)
- price: 注文価格
- quantity: 注文数量
- order_time: 注文日時のISO 8601形式の文字列(例: '2023-05-24T15:30:45+09:00')
Raises:
ValueError: 認証情報が設定されていない場合や、APIエラーが発生した場合
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| currency_pair | No |
Implementation Reference
- zaifer_mcp/tools/trade.py:115-163 (handler)The core handler function for the 'get_open_orders' tool, decorated with @mcp.tool(). It checks authentication, calls ZaifApi to get active orders, filters for supported currency pairs (btc_jpy, eth_jpy, xym_jpy), and returns an OpenOrderList.@mcp.tool() def get_open_orders(currency_pair: SupportedPair = None) -> OpenOrderList: """ 現在有効な(未約定の)暗号資産取引注文一覧を取得します。 このツールは、現在板に出ている未約定注文(一部約定を含む)の一覧を確認するために使用します。 特定の通貨ペアでフィルタリングすることも、すべての通貨ペアの注文を取得することもできます。 使用例: - 現在の注文状況を確認したい場合 - キャンセルすべき注文を特定したい場合 - 注文戦略の進捗を確認したい場合 注意: このツールを使用するには、環境変数にAPIキーとシークレットが設定されている必要があります。 Args: currency_pair: 通貨ペア('btc_jpy': ビットコイン/円、'eth_jpy': イーサリアム/円、'xym_jpy': シンボル/円) 指定しない場合、すべての通貨ペアの注文が返されます Returns: OpenOrderList: 未約定注文一覧 - open_orders: 注文IDをキーとする注文情報の辞書 - currency_pair: 通貨ペア - order_type: 注文タイプ('bid': 買い、'ask': 売り) - price: 注文価格 - quantity: 注文数量 - order_time: 注文日時のISO 8601形式の文字列(例: '2023-05-24T15:30:45+09:00') Raises: ValueError: 認証情報が設定されていない場合や、APIエラーが発生した場合 """ if not api.trade.http.auth_provider: raise ValueError( "認証情報が設定されていません。APIキーとシークレットを.envファイルに設定してください。" ) orders = api.trade.get_active_orders(currency_pair) # 対応している通貨ペアのみをフィルタリング if orders.open_orders: filtered_orders = {} for order_id, order in orders.open_orders.items(): if order.currency_pair in ["btc_jpy", "eth_jpy", "xym_jpy"]: filtered_orders[order_id] = order # 元のオブジェクトのopen_ordersを置き換え orders.open_orders = filtered_orders return orders
- zaifer_mcp/models/trade.py:64-138 (schema)Schema definitions for the tool's output: OpenOrder (individual order) and OpenOrderList (dict of orders by ID), with methods to convert to/from Zaif API response dictionaries.class OpenOrder: """ 未約定注文の情報を表すデータクラス。 Attributes: currency_pair: 通貨ペア(例: 'btc_jpy') order_type: 注文タイプ('bid': 買い注文、'ask': 売り注文) price: 注文価格(通貨単位) quantity: 注文数量(暗号資産の量) order_time: 注文日時のISO 8601形式の文字列 """ currency_pair: str order_type: str price: Decimal quantity: Decimal order_time: str @dataclass class OpenOrderList: """ 未約定注文一覧を表すデータクラス。 get_open_ordersの戻り値に対応します。 Attributes: open_orders: 注文IDをキーとする未約定注文情報の辞書 """ open_orders: Dict[int, OpenOrder] @classmethod def from_dict(cls, data: Dict[str, Any]) -> "OpenOrderList": """ APIレスポンスからOpenOrderListインスタンスを作成します。 Args: data: APIレスポンスの辞書 Returns: OpenOrderListインスタンス """ open_orders = {} for order_id_str, order_data in data.items(): if order_id_str.isdigit(): # 注文IDのみを処理 order_id = int(order_id_str) open_orders[order_id] = OpenOrder( currency_pair=order_data.get("currency_pair", ""), order_type=order_data.get("action", ""), price=Decimal(str(order_data.get("price", "0"))), quantity=Decimal(str(order_data.get("amount", "0"))), order_time=datetime.fromtimestamp( int(order_data.get("timestamp", 0)) ).isoformat(), ) return cls(open_orders=open_orders) def to_dict(self) -> Dict[str, Any]: """ OpenOrderListインスタンスを辞書に変換します。 Returns: APIレスポンス形式の辞書 """ result = {} for order_id, order_item in self.open_orders.items(): result[str(order_id)] = { "currency_pair": order_item.currency_pair, "action": order_item.order_type, "price": str(order_item.price), "amount": str(order_item.quantity), "date": order_item.order_time, } return result
- zaifer_mcp/server.py:34-42 (registration)Top-level registration in register_all_components: imports and invokes register_trade_tools(mcp, zaif_api), which registers the get_open_orders tool among others.from zaifer_mcp.tools.market import register_market_tools from zaifer_mcp.tools.account import register_account_tools 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) register_chart_tools(mcp, zaif_api)
- zaifer_mcp/tools/trade.py:21-163 (registration)Intermediate registration function register_trade_tools that defines and registers the get_open_orders tool using @mcp.tool() decorator.def register_trade_tools(mcp: FastMCP, api: ZaifApi): """ Zaifの取引APIをMCPツールとして登録する Args: mcp: FastMCPインスタンス api: ZaifApiインスタンス """ @mcp.tool() def place_order( currency_pair: SupportedPair, order_type: OrderType, price: float, quantity: float, ) -> OrderResponse: """ 暗号資産の売買注文を発注します。 このツールは、指定した通貨ペアで新規の売買注文を市場に出すために使用します。 価格と数量を指定して、指値注文を出すことができます。 使用例: - ビットコインを指定価格で購入したい場合 - イーサリアムを売却して利益を確定したい場合 - 特定の価格で指値注文を出したい場合 注意: このツールを使用するには、環境変数にAPIキーとシークレットが設定されている必要があります。 Args: currency_pair: 取引する通貨ペア('btc_jpy': ビットコイン/円、'eth_jpy': イーサリアム/円、'xym_jpy': シンボル/円) order_type: 注文タイプ('bid': 買い注文、'ask': 売り注文) price: 注文価格(日本円)- 指値注文の場合の1単位あたりの価格 quantity: 注文数量 - 売買する暗号資産の量(例: ビットコインの場合は0.01BTCなど) Returns: OrderResponse: 注文結果情報 - filled_amount: 即時約定した数量 - unfilled_amount: 未約定の残り数量 - order_id: 注文ID(全約定の場合は0) - balances: 注文後の各通貨の残高情報 Raises: ValueError: 認証情報が設定されていない場合や、APIエラーが発生した場合 """ if not api.trade.http.auth_provider: raise ValueError( "認証情報が設定されていません。APIキーとシークレットを.envファイルに設定してください。" ) return api.trade.open_order( currency_pair=currency_pair, action=order_type, # APIの引数名は変更できないのでマッピング price=Decimal(str(price)), amount=Decimal(str(quantity)), # 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) @mcp.tool() def get_open_orders(currency_pair: SupportedPair = None) -> OpenOrderList: """ 現在有効な(未約定の)暗号資産取引注文一覧を取得します。 このツールは、現在板に出ている未約定注文(一部約定を含む)の一覧を確認するために使用します。 特定の通貨ペアでフィルタリングすることも、すべての通貨ペアの注文を取得することもできます。 使用例: - 現在の注文状況を確認したい場合 - キャンセルすべき注文を特定したい場合 - 注文戦略の進捗を確認したい場合 注意: このツールを使用するには、環境変数にAPIキーとシークレットが設定されている必要があります。 Args: currency_pair: 通貨ペア('btc_jpy': ビットコイン/円、'eth_jpy': イーサリアム/円、'xym_jpy': シンボル/円) 指定しない場合、すべての通貨ペアの注文が返されます Returns: OpenOrderList: 未約定注文一覧 - open_orders: 注文IDをキーとする注文情報の辞書 - currency_pair: 通貨ペア - order_type: 注文タイプ('bid': 買い、'ask': 売り) - price: 注文価格 - quantity: 注文数量 - order_time: 注文日時のISO 8601形式の文字列(例: '2023-05-24T15:30:45+09:00') Raises: ValueError: 認証情報が設定されていない場合や、APIエラーが発生した場合 """ if not api.trade.http.auth_provider: raise ValueError( "認証情報が設定されていません。APIキーとシークレットを.envファイルに設定してください。" ) orders = api.trade.get_active_orders(currency_pair) # 対応している通貨ペアのみをフィルタリング if orders.open_orders: filtered_orders = {} for order_id, order in orders.open_orders.items(): if order.currency_pair in ["btc_jpy", "eth_jpy", "xym_jpy"]: filtered_orders[order_id] = order # 元のオブジェクトのopen_ordersを置き換え orders.open_orders = filtered_orders return orders