TradingView 为 k 线柱添加标记

时间:2023-03-09 15:29:23
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)

我的代码栗子:

 Datafeeds.Container.prototype.getMarks = function (symbolInfo, startDate, endDate, onDataCallback, resolution) {
console.log('endDate: ',endDate);
var marks = that.getMarks();
setTimeout(function () {
onDataCallback(marks);
}, 0);
} getMarks(){
var that = this;
var id = 1;
var time = Date.parse(new Date())/1000;
var color = { border: '#103bff', background: '#ff00e9' };
var text = '这是标记: ';
var label = 'S';
var labelFontColor = '#ff8e53';
var minSize = 5;
var marks = [];
for(var i=0;i<15;i++){
var mark = {};
mark.id = id++;
mark.time = time;
time -= 28800;
mark.color = color;
mark.text = text + (id-1);
mark.label = label;
mark.labelFontColor = labelFontColor;
mark.minSize = minSize;
marks.push(mark);
}
return marks;
}

K 线标记