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

如何在TradingView绘制bid-ask、DOM实时走势并留存bid/ask历史数据?

TradingView Bid/Ask历史走势指标实现方案

完全可以实现对应需求,核心逻辑是用Pine Script内置的实时报价变量捕获当前bid/ask值,存入变量缓存后在图表上绘制连续轨迹即可,不需要依赖TradingView官方未开放的历史bid/ask接口。

核心实现思路

  • 调用Pine Script内置变量 syminfo.bid 和 syminfo.ask 实时获取当前最优买价、卖价
  • 用 var 关键字声明数组类型的缓存变量,每根K线闭合(或者每一次报价更新时)将当前bid/ask值写入数组
  • 调用 plot() 函数将数组中存储的历史bid/ask值分别绘制为两条连续曲线,可自定义颜色区分(比如bid用绿色,ask用红色)
  • 可选优化:添加价差计算逻辑,将bid-ask的差值在副图单独绘制,更直观查看流动性变化

基础代码示例

//@version=5
indicator("Bid/Ask历史轨迹", overlay=true, max_labels_count=500)

// 实时获取bid/ask
current_bid = syminfo.bid
current_ask = syminfo.ask

// 声明数组缓存历史数据
var array<float> bid_history = array.new_float()
var array<float> ask_history = array.new_float()

// 实时更新缓存(tick级更新,也可改为barstate.islast只在K线收盘更新降低性能消耗)
if barstate.isrealtime
    array.unshift(bid_history, current_bid)
    array.unshift(ask_history, current_ask)

// 限制缓存长度避免性能溢出,最多保留最近1000条记录
if array.size(bid_history) > 1000
    array.pop(bid_history)
    array.pop(ask_history)

// 绘制曲线
plot(current_bid, color=color.new(color.green, 0), linewidth=2, title="Bid价格")
plot(current_ask, color=color.new(color.red, 0), linewidth=2, title="Ask价格")

// 可选:绘制历史点标记
for i = 0 to array.size(bid_history) - 1
    plot(array.get(bid_history, i), color=color.new(color.green, 80), style=plot.style_circles, linewidth=1)
    plot(array.get(ask_history, i), color=color.new(color.red, 80), style=plot.style_circles, linewidth=1)

注意事项

  • 该实现的数据仅存在于当前页面会话中,刷新页面后历史记录会清空,符合需求
  • 注意:该指标仅在实盘行情加载后才会开始记录数据,加载前的历史bid/ask数据无法回溯
  • 如果需要降低性能占用,可以将tick级更新改为K线级更新,仅在每根K线生成时记录一次bid/ask值
  • 数据保留长度可自行调整代码中的1000条阈值,数值越大内存占用越高

内容的提问来源于stack exchange,提问作者Augustas Šadzevičius

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:54:01