You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在lightweight-charts或TradingView嵌入图表中用JS绘制线条、文本与图形?

在TradingView嵌入图表中绘制自定义图形的方法

你使用的TradingView嵌入组件支持通过Widget API实现线条、文本、图形的绘制,核心是调用createShape方法,以下是具体实现步骤:

1. 等待图表初始化完成

图表是异步加载的,必须在初始化完成后才能调用绘制API,通过onChartReady事件监听:

widget.onChartReady(function() {
  // 所有绘制操作放在这里执行
});

2. 各类图形的绘制示例

绘制水平线

widget.createShape({
  price: 30000,          // 线条对应的价格位置
  time: Date.now()/1000 - 3600, // 时间锚点(Unix时间戳,单位秒)
  shape: 'horizontal_line',
  color: '#FF0000',      // 线条颜色
  style: 2,              // 线条样式:1=实线,2=虚线,3=点线
  width: 2,              // 线条宽度
  text: '阻力位'         // 线条旁的标注文本
});

绘制文本标签

widget.createShape({
  price: 28000,
  time: Date.now()/1000,
  shape: 'label',
  text: '支撑区域',
  color: '#00FF00',      // 文本颜色
  background: '#000000', // 文本背景色
  fontSize: 12           // 字号大小
});

绘制矩形

widget.createShape({
  time: Date.now()/1000 - 7200,  // 矩形起始时间
  time2: Date.now()/1000,        // 矩形结束时间
  price: 27000,                  // 矩形起始价格
  price2: 29000,                 // 矩形结束价格
  shape: 'rectangle',
  color: '#0000FF',
  fill: true,                    // 是否填充
  fillColor: '#0000FF',
  fillTransparency: 50           // 填充透明度(0-100)
});

3. 整合到你的现有代码中

修改后的完整代码如下:

<div class="tradingview-widget-container">
  <div id="main"></div>
  <div class="tradingview-widget-copyright"><a href="https://www.tradingview.com/symbols/BTCUSDT/?exchange=BINANCE"
      rel="noopener" target="_blank"><span class="blue-text">BTCUSDT chart</span></a> by TradingView</div>
  <script type="text/javascript" src="https://s3.tradingview.com/tv.js"></script>
  <script type="text/javascript">
    widget = new TradingView.widget(
      {
        "autosize": true,
        "symbol": "BINANCE:BTCUSDT",
        "interval": "1",
        "timezone": "Etc/UTC",
        "theme": "dark",
        "style": "1",
        "locale": "en",
        "toolbar_bg": "#f1f3f6",
        "enable_publishing": true,
        "withdateranges": true,
        "hide_side_toolbar": false,
        "allow_symbol_change": true,
        "details": true,
        "hotlist": true,
        "calendar": true,
        "container_id": "main"
      }
    );

    // 图表加载完成后执行绘制
    widget.onChartReady(function() {
      // 绘制阻力位水平线
      widget.createShape({
        price: 30000,
        time: Date.now()/1000 - 3600,
        shape: 'horizontal_line',
        color: '#FF0000',
        style: 2,
        width: 2,
        text: '阻力位'
      });

      // 绘制支撑区文本标签
      widget.createShape({
        price: 28000,
        time: Date.now()/1000,
        shape: 'label',
        text: '支撑区域',
        color: '#00FF00',
        background: '#000000',
        fontSize: 12
      });
    });
  </script>
</div>

4. 支持的图形类型

shape参数可取值包括:

  • horizontal_line(水平线)、vertical_line(垂直线)
  • label(文本标签)
  • rectangle(矩形)、ellipse(椭圆)
  • triangle_up(向上三角形)、triangle_down(向下三角形)
  • arrow_up(向上箭头)、arrow_down(向下箭头)

内容的提问来源于stack exchange,提问作者kamran shalilian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:55:39