📅  最后修改于: 2023-12-03 15:35:22.097000             🧑  作者: Mango
TradingView是一款非常受欢迎的在线图表工具,它提供了各种各样的技术指标和交易工具,帮助交易者分析市场。同时,TradingView也支持自定义数据馈送,这意味着你可以使用自己的数据源,而不仅仅是TradingView提供的数据源。
在本篇文章中,我们将介绍如何使用Javascript编写自定义数据馈送代码,并将其集成到TradingView中,以供交易者使用。
在介绍如何编写自定义数据馈送代码之前,我们需要了解一下基本的原理。在TradingView中,所有的数据源都以JavaScript的形式呈现。而自定义数据馈送就是编写一个JavaScript程序,用于从你的数据源中获取数据,并将其转换为符合TradingView要求的数据格式。
具体来说,自定义数据馈送需要实现以下两个函数:
// 获取数据
function getData(symbol, resolution, from, to, callback) {
// 从数据源获取数据
var data = yourDataSource.getData(symbol, resolution, from, to);
// 将数据转换为TradingView格式
var bars = convertToTradingViewData(data);
// 返回结果
callback(bars);
}
// 订阅实时数据
function subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID) {
// 订阅数据源的实时推送
yourDataSource.subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID);
}
getData()
函数用于获取历史数据,其中参数symbol
表示股票代码,resolution
表示K线的时间间隔,from
和to
表示查询范围,callback
是一个回调函数,用于返回结果。
subscribeBars()
函数用于订阅实时数据,其中参数symbolInfo
表示股票代码,resolution
表示K线时间间隔,onRealtimeCallback
是一个回调函数,用于接收实时推送数据,subscriberUID
是订阅者的唯一标识。
以上两个函数都需要实现,才能完成自定义数据馈送。
在编写自定义数据馈送代码前,我们需要先定义一个数据源对象,其中包含了获取历史数据和订阅实时数据的函数。
var YourDataSource = {
// 获取历史数据
getData: function (symbol, resolution, from, to) {
// 从你的数据源获取数据...
},
// 订阅实时数据
subscribeBars: function (symbolInfo, resolution, onRealtimeCallback, subscriberUID) {
// 订阅你的数据源实时推送...
}
};
在实现getData()
和subscribeBars()
函数中,我们需要从你的数据源获取数据,并将其转换为TradingView所需的数据格式。具体的数据格式可以参考TradingView官方文档中的说明。
// 将数据转换为TradingView格式
function convertToTradingViewData(data) {
var bars = [];
for (var i = 0; i < data.length; i++) {
var item = data[i];
var bar = {
time: item.timestamp,
open: item.open,
high: item.high,
low: item.low,
close: item.close,
volume: item.volume
};
bars.push(bar);
}
return bars;
}
// 获取数据
function getData(symbol, resolution, from, to, callback) {
// 从数据源获取数据
var data = YourDataSource.getData(symbol, resolution, from, to);
// 将数据转换为TradingView格式
var bars = convertToTradingViewData(data);
// 返回结果
callback(bars);
}
// 订阅实时数据
function subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID) {
// 订阅数据源的实时推送
YourDataSource.subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID);
}
完成以上代码后,我们就可以将其集成到TradingView中,并提供给交易者使用。
要将自定义数据馈送集成到TradingView中,我们需要通过TradingView的API来注册数据源。
TradingView.onready(function() {
var widget = window.tvWidget = new TradingView.widget({
...
// 注册数据源
datafeed: {
getData: getData,
subscribeBars: subscribeBars
}
...
});
});
以上代码中,getData
和subscribeBars
分别对应前面编写的两个函数,通过将其传递给datafeed
属性,完成了数据源的注册。
在本篇文章中,我们介绍了如何使用Javascript编写自定义数据馈送代码,并将其集成到TradingView中。自定义数据馈送可以让交易者使用自己的数据源进行市场分析,从而更好地理解市场。