get_24hr_ticker
Retrieve 24-hour price change statistics for cryptocurrency trading pairs from Binance. Use this tool to monitor market movements, analyze price fluctuations, and track trading pair performance over a full day period.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Trading pair symbol, e.g. BTCUSDT | |
| symbols | No | Array of multiple trading pair symbols |
Implementation Reference
- src/index.ts:244-266 (handler)The main handler function that executes the get_24hr_ticker tool. It accepts optional 'symbol' or 'symbols' parameters, constructs the appropriate request parameters, makes an HTTP GET request to Binance's /api/v3/ticker/24hr endpoint with proxy support, and returns the 24hr price statistics as formatted JSON or an error message.
async (args: { symbol?: string; symbols?: string[] }) => { try { let params = {}; if (args.symbol) { params = { symbol: args.symbol }; } else if (args.symbols) { params = { symbols: JSON.stringify(args.symbols) }; } const response = await axios.get(`${BASE_URL}/api/v3/ticker/24hr`, { params, ...getProxyConfig(), }); return { content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }] }; } catch (error: any) { return { content: [{ type: "text", text: `Failed to get 24hr price statistics: ${error.message}` }], isError: true }; } } - src/index.ts:240-243 (schema)Zod schema definition for the get_24hr_ticker tool input parameters. Defines two optional parameters: 'symbol' for a single trading pair (e.g., BTCUSDT) and 'symbols' for an array of multiple trading pair symbols.
{ symbol: z.string().optional().describe("Trading pair symbol, e.g. BTCUSDT"), symbols: z.array(z.string()).optional().describe("Array of multiple trading pair symbols") }, - src/index.ts:237-267 (registration)Complete registration of the get_24hr_ticker tool using server.tool() method. Includes the tool name, input validation schema, and the async handler function that makes the API call to Binance.
// 24hr Price Change Statistics server.tool( "get_24hr_ticker", { symbol: z.string().optional().describe("Trading pair symbol, e.g. BTCUSDT"), symbols: z.array(z.string()).optional().describe("Array of multiple trading pair symbols") }, async (args: { symbol?: string; symbols?: string[] }) => { try { let params = {}; if (args.symbol) { params = { symbol: args.symbol }; } else if (args.symbols) { params = { symbols: JSON.stringify(args.symbols) }; } const response = await axios.get(`${BASE_URL}/api/v3/ticker/24hr`, { params, ...getProxyConfig(), }); return { content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }] }; } catch (error: any) { return { content: [{ type: "text", text: `Failed to get 24hr price statistics: ${error.message}` }], isError: true }; } } ); - src/index.ts:406-434 (helper)Helper function getProxyConfig() that configures proxy settings for HTTP requests. It prioritizes SOCKS5 proxy (if SOCKS_PROXY or SOCKS5_PROXY env var is set), falls back to HTTP proxy (if HTTP_PROXY or HTTPS_PROXY env var is set), and returns an empty object if no proxy is configured.
function getProxyConfig(): any { // 优先使用SOCKS5代理 if (socksProxyURL) { try { const agent = new SocksProxyAgent(socksProxyURL); return { httpsAgent: agent, httpAgent: agent }; } catch (error) { console.error(`Failed to create SOCKS proxy agent: ${error}`); } } // 回退到HTTP代理 if (httpProxyURL) { try { const urlInfo = new URL(httpProxyURL); return { proxy: { host: urlInfo.hostname, port: parseInt(urlInfo.port) || (urlInfo.protocol === 'https:' ? 443 : 80), protocol: urlInfo.protocol.replace(":", "") } }; } catch (error) { console.error(`Failed to parse HTTP proxy URL: ${error}`); } } return {}; } - src/index.ts:9-13 (helper)Base configuration constants used by the get_24hr_ticker handler: BASE_URL for the Binance API endpoint, and environment variable configurations for HTTP and SOCKS proxy support.
const BASE_URL = "https://api.binance.com"; // 支持多种代理类型 const httpProxyURL = process.env.HTTP_PROXY || process.env.HTTPS_PROXY; const socksProxyURL = process.env.SOCKS_PROXY || process.env.SOCKS5_PROXY;