1

我正在尝试使用 JavaScript API 在 TradingView 屏幕中绘制一个形状(trend_line使用图表方法),该形状具有两个任意日期点。createMultipointShape()我可以在屏幕上放置带有已经过去的时间戳的形状;这没有任何问题。

但是,在未来绘制带有时间戳的形状时,TradingView 会在当前日期切断形状。

例如,带有点:{time: 1567330140, price: 11500}(2019-09-01) 和{time: 1569835740, price: 11500}(2019-09-30) TradingView 显示以下输出: TradingView 图表,在当前日期截断线;洋红色虚线是绘制的,当前日期是 2019-09-16

当我手工绘制这个形状时,没有这样的限制。看来我将来无法绘制任何形状,而不仅仅是trend_line。有没有办法解决?该文档仅指定了这一点:

createMultipointShape(点,选项)

points : 对象数组 [{time, [price], [channel]},...]

 time: unix time. The only mandatory argument.

horizontal_ray确实有效(根据定义,这条线永远持续下去),但它并没有解决我在点之间有一条线的问题。

4

1 回答 1

0

要在未来绘制形状,您必须确保与当前正在打印的任何 bin/interval 蜡烛线对齐,并且具有time未来蜡烛打开时间的确切时间戳。pointtime

在您的示例中,1569835740 * 1000(时间戳转换为毫秒)是Mon Sep 30 2019 09:29:00- 所以如果我们打印 1 小时条,时间戳需要完全9:00:00而不是9:29:00.

首先以 ms (x1000) 为单位获取您的时间:1569835740000

知道 ms 中的 1 小时是 3600000,我们可以找到余数,看看我们有多少:

1569835740000 % 3600000 = 1740000

删除其余部分以获得我们良好的时间戳(以毫秒为单位),然后转换回所需的电视格式:

time = (1569835740-1740000) / 1000

如果使用多个不兼容的时间框架,您可能必须根据当前图表间隔动态调整余数计算。

完整代码:

let time = 1569835740

time = time * 1000

let rem = time % 3600000

time = (time - rem) / 1000

widget.chart().createMultipointShape([
            {
                time: 1567330140
                , price: 10500
            },
            {
                time: time
                , price: 10500
            }
        ], {
            shape: 'trend_line',
        })

结果:

于 2019-09-16T23:55:32.637 回答