📜  tradingview 自定义数据馈送 - Javascript (1)

📅  最后修改于: 2023-12-03 15:35:22.097000             🧑  作者: Mango

TradingView自定义数据馈送 - Javascript

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线的时间间隔,fromto表示查询范围,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中,我们需要通过TradingView的API来注册数据源。

TradingView.onready(function() {
    var widget = window.tvWidget = new TradingView.widget({
        ...
        // 注册数据源
        datafeed: {
            getData: getData,
            subscribeBars: subscribeBars
        }
        ...
    });
});

以上代码中,getDatasubscribeBars分别对应前面编写的两个函数,通过将其传递给datafeed属性,完成了数据源的注册。

总结

在本篇文章中,我们介绍了如何使用Javascript编写自定义数据馈送代码,并将其集成到TradingView中。自定义数据馈送可以让交易者使用自己的数据源进行市场分析,从而更好地理解市场。