Public Charting Library

一个公开的图表库,支持任意站点的CORS,你可以在本地使用和构建

具体方法,可以参考官方文档 Hosting-Library-Cross-Origin

支持资源

API 接口

/api/flag/[code]

获取国旗 SVG 图标

示例:

/api/flag/US    → 美国国旗
/api/flag/cn    → 中国国旗(自动转大写)
/api/flag/jp    → 日本国旗

错误码:400(参数错误或不在白名单)、404(国旗不存在)

试一试

/api/conid-to-info/[conid]

获取 IBKR 合约信息

返回字段:

{
  "ticker": "15016059",       // conid
  "symbol": "AAPL",          // 证券代码
  "description": "APPLE INC", // 公司名称
  "exchange": "NASDAQ",      // 交易所
  "country": "US",           // 国家
  "currency": "USD",         // 货币
  "hasOptions": true         // 是否有期权
}

示例:

/api/conid-to-info/15016059  → AAPL 合约信息

错误码:400(非数字)、404(合约不存在)

试一试

/api/icon

获取股票图标

示例:

/api/icon?conid=15016059         → IBKR 图标
/api/icon?symbol=AAPL            → TipRanks 图标
/api/icon?symbol=TSLA&theme=dark → 深色主题图标

错误码:400(缺少参数)、429(速率限制)、502(获取失败)

试一试

/api/news

获取 Google News RSS 新闻

示例:

/api/news?q=AAPL&lang=zh-CN    → 苹果公司中文新闻
/api/news?q=TSLA&lang=en-US    → 特斯拉英文新闻

返回:XML 格式 RSS,客户端缓存 2 分钟

试一试

/api/marks

获取研报目标价(分析师评级)

示例:

/api/marks?symbol=AAPL    → 苹果分析师评级
/api/marks?symbol=TSLA    → 特斯拉分析师评级

返回:JSON 数组,包含评级变化和目标价,KV 缓存 24 小时

试一试

/api/timescale-marks

获取经济日历、财报、分红、分割

示例:

/api/timescale-marks?symbol=AAPL    → 苹果事件标记
/api/timescale-marks?symbol=NVDA    → 英伟达事件标记

返回:JSON 数组,包含财报(E)、分红(D)、分割(S)、经济事件,KV 缓存 24 小时

试一试

最简单的启动示例

<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>ibkr-gateway-tv</title>
</head>

<body style="margin: 0;">
  <div id="tv_chart_container" style="margin: 0;"></div>
  <script type="module">
    import { widget as tvwidget } from 'https://tv-chart-lib.pages.dev/charting_library/charting_library.esm.js';

    window.addEventListener('DOMContentLoaded', () => {
      const widget = new tvwidget({
        datafeed: Datafeed,
        // debug: true,
        container: 'tv_chart_container',
        library_path: 'https://tv-chart-lib.pages.dev/charting_library/',
        fullscreen: true,
        autosize: true,
        symbol: 'AAPL',
        interval: '1D',
        locale: 'zh',
        timezone: 'Asia/Shanghai',
        symbol_search_request_delay: 2000,
        theme: 'dark',
        widgetbar: {
          details: true, watchlist: true, news: true, datawindow: true
        },
        enabled_features: [],
        disabled_features: [],
      });
    });
  </script>
</body>

</html>