Skip to main content
Glama

get_price_chart

Retrieve price chart data for specified currency pairs and timeframes to support trading decisions, trend analysis, and technical calculations. Ideal for identifying patterns, support/resistance levels, and market trends.

Instructions

指定期間の価格チャートデータを取得し、投資判断やトレンド分析に活用します。 このツールは以下の用途で使用されます: - 価格トレンドの分析とパターン認識 - 買い時・売り時の判断材料として - サポート・レジスタンスレベルの特定 - テクニカル分析(移動平均、RSI等の計算基礎データ) - 価格変動の要因分析 期間指定のガイドライン: - 1分足・5分足: 数時間~1日分のデータが適切です - 1時間足: 1週間~1ヶ月分のデータが適切です - 日足: 1ヶ月~6ヶ月分のデータが適切です - 週足: 6ヶ月~2年分のデータが適切です 注意: 極端に長い期間(例: 1分足で1年分)を指定すると、 データ量が膨大になり処理に時間がかかる場合があります。 Args: currency_pair: 通貨ペア('btc_jpy': ビットコイン/円、'eth_jpy': イーサリアム/円、'xym_jpy': シンボル/円) timeframe: 時間足('1': 1分足、'5': 5分足、'15': 15分足、'30': 30分足、'60': 1時間足、 '240': 4時間足、'480': 8時間足、'720': 12時間足、'D': 日足、'W': 週足) start_date: 開始日時(ISO形式: 'YYYY-MM-DDTHH:MM:SS') end_date: 終了日時(ISO形式: 'YYYY-MM-DDTHH:MM:SS') Returns: PriceChartData: 価格チャートデータ - currency_pair: 通貨ペア - timeframe: 時間足の表示名(例: '1時間足') - start_date: 開始日時(ISO 8601形式) - end_date: 終了日時(ISO 8601形式) - candlesticks: ローソク足データのリスト(時系列順) - timestamp: ISO 8601形式の日時文字列 - open_price: 始値 - high_price: 高値 - low_price: 安値 - close_price: 終値 - volume: 出来高 - data_count: データ件数 Raises: ValueError: 日付形式が不正な場合や、APIエラーが発生した場合

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
currency_pairYes
end_dateYes
start_dateYes
timeframeYes

Implementation Reference

  • The core handler function for the 'get_price_chart' tool. It validates dates, calls the Zaif API for OHLC data, and returns a PriceChartData object.
    @mcp.tool() def get_price_chart(currency_pair: SupportedPair, timeframe: SupportedPeriod, start_date: str, end_date: str) -> PriceChartData: """ 指定期間の価格チャートデータを取得し、投資判断やトレンド分析に活用します。 このツールは以下の用途で使用されます: - 価格トレンドの分析とパターン認識 - 買い時・売り時の判断材料として - サポート・レジスタンスレベルの特定 - テクニカル分析(移動平均、RSI等の計算基礎データ) - 価格変動の要因分析 期間指定のガイドライン: - 1分足・5分足: 数時間~1日分のデータが適切です - 1時間足: 1週間~1ヶ月分のデータが適切です - 日足: 1ヶ月~6ヶ月分のデータが適切です - 週足: 6ヶ月~2年分のデータが適切です 注意: 極端に長い期間(例: 1分足で1年分)を指定すると、 データ量が膨大になり処理に時間がかかる場合があります。 Args: currency_pair: 通貨ペア('btc_jpy': ビットコイン/円、'eth_jpy': イーサリアム/円、'xym_jpy': シンボル/円) timeframe: 時間足('1': 1分足、'5': 5分足、'15': 15分足、'30': 30分足、'60': 1時間足、 '240': 4時間足、'480': 8時間足、'720': 12時間足、'D': 日足、'W': 週足) start_date: 開始日時(ISO形式: 'YYYY-MM-DDTHH:MM:SS') end_date: 終了日時(ISO形式: 'YYYY-MM-DDTHH:MM:SS') Returns: PriceChartData: 価格チャートデータ - currency_pair: 通貨ペア - timeframe: 時間足の表示名(例: '1時間足') - start_date: 開始日時(ISO 8601形式) - end_date: 終了日時(ISO 8601形式) - candlesticks: ローソク足データのリスト(時系列順) - timestamp: ISO 8601形式の日時文字列 - open_price: 始値 - high_price: 高値 - low_price: 安値 - close_price: 終値 - volume: 出来高 - data_count: データ件数 Raises: ValueError: 日付形式が不正な場合や、APIエラーが発生した場合 """ try: from_dt = datetime.fromisoformat(start_date) to_dt = datetime.fromisoformat(end_date) except ValueError: raise ValueError("日付形式が不正です。'YYYY-MM-DDTHH:MM:SS'形式で指定してください。") # APIからデータを取得 api_response = api.chart.get_ohlc( currency_pair=currency_pair, period=timeframe, from_datetime=from_dt, to_datetime=to_dt ) # 新しいモデル形式に変換 return PriceChartData.from_dict( data=api_response.to_dict(), currency_pair=currency_pair, timeframe=timeframe, start_date=start_date, end_date=end_date )
  • The import and invocation of register_chart_tools, which registers the get_price_chart tool on the MCP server.
    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)
  • Output schema (PriceChartData dataclass) for the get_price_chart tool, explicitly noted as corresponding to its return value.
    class PriceChartData: """ 価格チャートデータ全体を表すデータクラス。 get_price_chartの戻り値に対応します。 Attributes: currency_pair: 通貨ペア(例: 'btc_jpy') timeframe: 時間足(例: '1時間足') start_date: 開始日時(ISO 8601形式) end_date: 終了日時(ISO 8601形式) candlesticks: ローソク足データ(時系列順) data_count: データ件数 """ currency_pair: str timeframe: str start_date: str end_date: str candlesticks: List[CandlestickData] data_count: int
  • Input schema type literals (SupportedPair, SupportedPeriod) used as parameter types in get_price_chart.
    # 対応する通貨ペアを明示的に制限 SupportedPair = Literal["btc_jpy", "eth_jpy", "xym_jpy"] # 対応する通貨を明示的に制限 SupportedCurrency = Literal["btc", "eth", "xym", "jpy"] # 対応する期間を明示的に制限 SupportedPeriod = Literal["1", "5", "15", "30", "60", "240", "480", "720", "D", "W"]
  • Helper method to convert Zaif API response dictionary to PriceChartData instance, used directly in the handler.
    @classmethod def from_dict(cls, data: Dict[str, Any], currency_pair: str, timeframe: str, start_date: str, end_date: str) -> 'PriceChartData': """ APIレスポンスからPriceChartDataインスタンスを作成します。 Args: data: APIレスポンスの辞書 currency_pair: 通貨ペア timeframe: 時間足 start_date: 開始日時(ISO 8601形式) end_date: 終了日時(ISO 8601形式) Returns: PriceChartDataインスタンス """ candlesticks = [] for item in data.get('ohlc_data', []): # ミリ秒単位のタイムスタンプをISO 8601形式に変換 timestamp_ms = int(item.get('time', 0)) timestamp_iso = datetime.fromtimestamp(timestamp_ms / 1000).isoformat() candlesticks.append(CandlestickData( timestamp=timestamp_iso, open_price=Decimal(str(item.get('open', '0'))), high_price=Decimal(str(item.get('high', '0'))), low_price=Decimal(str(item.get('low', '0'))), close_price=Decimal(str(item.get('close', '0'))), volume=Decimal(str(item.get('volume', '0'))) )) # 時間足の表示名を生成 timeframe_names = { "1": "1分足", "5": "5分足", "15": "15分足", "30": "30分足", "60": "1時間足", "240": "4時間足", "480": "8時間足", "720": "12時間足", "D": "日足", "W": "週足" } timeframe_display = timeframe_names.get(timeframe, f"{timeframe}足") return cls( currency_pair=currency_pair, timeframe=timeframe_display, start_date=start_date, end_date=end_date, candlesticks=candlesticks, data_count=int(data.get('data_count', 0)) )

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/curio184/zaifer-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server