TradingView 为 k 线柱添加标记

看别人翻译的开发文档:

开发文档地址:https://zlq4863947.gitbooks.io/tradingview/

getMarks(symbolInfo, startDate, endDate, onDataCallback, resolution)

  1. symbolInfo:SymbolInfo 商品信息对象
  2. startDate: unix 时间戳, 最左边请求的K线时间
  3. endDate: unix 时间戳, 最右边请求的K线时间
  4. onDataCallback: function(标记数字marks)
  5. resolution: string

方法介绍:图表库调用这个函数来获得可见的K线范围的标记。 图表预期每调用一次getMarks就会调用一次onDataCallback。

mark为具有以下属性的对象:

  • id: 唯一标识id 。当用户点击标记时,将传递给相应的回调:respective callback
  • time: unix time, UTC
  • color:red|green|blue|yellow|{ border: '#ff0000', background: '#00ff00' }
  • text: 标记弹出式文字。 支持HTML
  • label: 印在标记上的文字。单字符
  • labelFontColor: label的文字颜色
  • minSize: 标记的最小尺寸 (diameter, pixels)

每个K线允许几个标记(现在最多为10个)。目前我测试的可以多于 10 个。不允许标记脱离K线。

Remark: 只有当您声明您的后端是支持标记时才会调用这个函数。supporting marks.

使用时注意:

  回调函数中的参数是一个列表(marks),列表中的每个元素是一个 字典(mark)

我的代码栗子:

 1 Datafeeds.Container.prototype.getMarks = function (symbolInfo, startDate, endDate, onDataCallback, resolution) {
 2     console.log('endDate: ',endDate);
 3     var marks = that.getMarks();
 4     setTimeout(function () {
 5         onDataCallback(marks);
 6     }, 0);
 7 }
 8 
 9 getMarks(){
10     var that = this;
11     var id = 1;
12     var time = Date.parse(new Date())/1000;
13     var color = { border: '#103bff', background: '#ff00e9' };
14     var text = '这是标记: ';
15     var label = 'S';
16     var labelFontColor = '#ff8e53';
17     var minSize = 5;
18     var marks = [];
19     for(var i=0;i<15;i++){
20         var mark = {};
21         mark.id = id++;
22         mark.time = time;
23         time -= 28800;
24         mark.color = color;
25         mark.text = text + (id-1);
26         mark.label = label;
27         mark.labelFontColor = labelFontColor;
28         mark.minSize = minSize;
29         marks.push(mark);
30     }
31     return marks;
32 }
K 线标记