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

TradingView自定义DataFeed中getMarks与getTimescaleMarks未调用求助

解决TradingView自定义DataFeed标记无输出问题

核心排查步骤

  • 先确认函数是否触发
    直接在getMarks和getTimescaleMarks最顶部加console.log('getMarks被调用了', startDate, endDate),刷新图表看控制台输出。要是没输出,先查这几点:

    • DataFeed类里有没有写supportsMarks() { return true; }和supportsTimescaleMarks() { return true; }——没这俩返回true,TradingView根本不会触发标记请求
    • 当前图表时间范围是否包含你标记数据的时间戳,只有可视时间段才会触发标记函数
    • 图表设置的「标记」选项卡,有没有打开股息、会议这类标记的显示开关
  • 再检查函数实现合规性

    • 函数必须用async/await或返回Promise,TradingView只认异步结果
    • 返回的标记数据格式不能错:
      • getMarks每条数据需包含id(字符串/数字)、time(秒级时间戳!别用毫秒)、color、text、label
      • getTimescaleMarks每条数据需包含id、time(秒级)、color、label
    • 一定要过滤掉超出请求startDate和endDate范围的标记数据,否则可能不显示
  • 最后校验数据有效性

    • 确认标记时间戳是秒级,存的是毫秒就除以1000转换
    • 检查id有没有重复,重复ID会导致标记不显示

修正后的代码示例

// 必须添加这俩函数,告知TradingView支持标记
supportsMarks() {
  return true;
}

supportsTimescaleMarks() {
  return true;
}

// 正确实现getMarks
async getMarks(symbolInfo, startDate, endDate, onDataCallback, resolution) {
  console.log('getMarks触发', startDate, endDate);
  // 替换为你的实际数据获取逻辑
  const rawMarks = await fetch('/api/dividend-and-meeting', {
    method: 'POST',
    body: JSON.stringify({ symbol: symbolInfo.ticker })
  }).then(res => res.json());

  // 过滤可视范围标记并转换格式
  const validMarks = rawMarks.filter(mark => mark.timestamp >= startDate && mark.timestamp <= endDate)
    .map(mark => ({
      id: mark.id,
      time: mark.timestamp, // 确保是秒级时间戳
      color: mark.type === 'dividend' ? '#27ae60' : '#3498db',
      text: mark.type === 'dividend' ? `股息: $${mark.amount}` : '年度股东大会',
      label: mark.type === 'dividend' ? 'D' : 'M'
    }));

  onDataCallback(validMarks);
}

常见踩坑点

  • 漏写supportsMarks/supportsTimescaleMarks,直接导致标记函数不被调用
  • 时间戳用毫秒级,标记要么显示在错误时间要么完全不出来
  • 函数未做异步处理,TradingView拿不到返回数据
  • 标记数据超出当前图表可视范围,自然不会显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:52:51