这是啥? 一套JS方法(特定的公共接口)。
我该怎么使用它? 您应该创建一个JS对象,它将以某种方式接收数据,并响应Charting Library请求。
数据缓存(历史和股票信息)在图表库中实现。当你创建一个实现描述接口的对象时,只需通过datafeed 参数将其传递给图表库Widget的构造函数。
Methods
1. onReady
2. searchSymbolsByName
3. resolveSymbol
4. getBars
5. subscribeBars
6. unsubscribeBars
7. calculateHistoryDepth
8. getMarks
9. getTimescaleMarks
10. getServerTime
交易终端专属:
1. getQuotes
2. subscribeQuotes
3. unsubscribeQuotes
4. subscribeDepth
5. unsubscribeDepth
onReady(callback)
1.callback: function(configurationData) i.configurationData: object (见下文)
此方法旨在提供填充配置数据的对象。这些数据会影响图表的行为,所以它被称为服务端定制。
ChartingLibrary 要求您使用回调函数来传递datafeed的configurationData参数。
configurationData是一个对象,现在支持以下属性:
exchanges
一个交易所数组。 Exchange是一个对象{value, name, desc} 。
value将被作为exchange参数传递给 searchSymbolsByName (见下文)。
exchanges= [] 会导致商品查询列表中看不到交易所过滤器。使用value= "" 来创建通配符筛选器(所有的交易所)。
symbols_types
一个商品类型过滤器数组。该商品类型过滤器是个对象{name, value} 。value 将被作为symbolType 参数传递给searchSymbolsByName。
symbolsTypes = [] 会导致商品查询列表中看不到商品类型过滤器。 使用value = ""来创建通配符筛选器(所有的商品类型)。
supported_resolutions
一个表示服务器支持的分辨率数组,分辨率可以是数字或字符串。如果分辨率是一个数字, 它被视为分钟数。 字符串可以是“*D”,“*W”,“_M”(_的意思是任何数字)。格式化详细参照:文章。
'resolutions'=undefined或 [] 时,分辨率拥有默认内容 (见:http://tradingview.com/e/)。例:[1, 15, 240, "D", "6M"] 您将在分辨率中得到 "1 分钟, 15 分钟, 4 小时, 1 天, 6 个月" 。
supports_marks
布尔值来标识您的 datafeed 是否支持在K线上显示标记。
supports_timescale_marks
布尔值来标识您的 datafeed 是否支持时间刻度标记。
supports_time
将此设置为true 假如您的datafeed提供服务器时间(unix时间)。 它用于调整时间刻度上的价格比例。
searchSymbolsByName(userInput,exchange, symbolType, onResultReadyCallback)
1. userInput : string,用户在商品搜索中输入的文字。
2. exchange :string,请求的交易所(由用户选择)。空值表示没有指定。
3. symbolType : string,请求的商品类型:指数、股票、外汇等等(由用户选择)。空值表示没有指定。
4. onResultReadyCallback : function(result)
i. result : 数组 (见下文)
方法介绍:提供一个匹配用户搜索的商品列表。result 为预期的商品 ,像下面这样:
[
{
"symbol": <商品缩写名>,
"full_name": <商品全称 -- 例: BTCE:BTCUSD>, "description": <商品描述>,
"exchange": < 交 易 所 名 >, "ticker": <商品代码, 可选>,
"type": "stock" | "futures" | "bitcoin" | "forex" | "index"
}, {
// .....
}
]
如果没有找到商品,则应该使用空数组来调用回调。查看更多关于ticker 值的细节在这里
resolveSymbol(symbolName,onSymbolResolvedCallback, onResolveErrorCallback)
1. symbolName : string类型,商品名称 或ticker if provided.
2. onSymbolResolvedCallback : function(SymbolInfo)
3. onResolveErrorCallback : function(reason)
方法介绍:通过商品名称解析商品信息(SymbolInfo)。
getBars(symbolInfo,resolution, from, to, onHistoryCallback, onErrorCallback, firstDataRequest)
1. symbolInfo :SymbolInfo 商品信息对象
2. resolution : string (分辨率)
3. from : unix 时间戳, 最左边必须的K线时间
4. to : unix时间戳, 最右边必须的K线时间
5.onHistoryCallback
: function(array of bar
s, meta
= { noData = false }
)
bar
: Bar对象数组{time, close, open, high, low, volume}
meta
: object {noData = true | false, nextTime - unix time}
6. onErrorCallback : function(reason:错误原因)
7. firstDataRequest : 布尔值,以标识是否第一次调用此商品/分辨率的历史记录。当设置为true 时 你可以忽略to 参数(这取决于浏览器的Date.now() ) 并返回K线数组直到当前K线(包括它)。
方法介绍:通过日期范围获取历史K线数据。图表库希望通过onHistoryCallback 仅一次调用,接收所有的请求历史。而不被多次调用。
发生不断自动刷新图表问题时,请检查from与onHistoryCallback方法返回的bars时间是否一致,没有数据时请返回noData = true
nextTime 历史中下一个K线柱的时间。 只有在请求的时间段内没有数据时,才应该被设置。
noData 只有在请求的时间段内没有数据时,才应该被设置。
Remark:bar.time 为以毫秒开始的Unix时间戳(UTC标准时区)。
Remark:bar.time 对于日K线预期一个交易日 (未开始交易时) 以 00:00 UTC为起点。 图表库会根据商品的交易(Session)时间进行匹配。
Remark:bar.time 对于月K线为这个月的第一个交易日,除去时间的部分。
subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID, onResetCacheNeededCallback)
1. symbolInfo :object SymbolInfo
2. resolution : string 分辨率
3. onRealtimeCallback : function(bar)
i. bar :object{time, close,open, high, low, volume}
4. subscriberUID : object
5. onResetCacheNeededCallback (从1.7开始): function()将在bars数据发生变化时执行方法介绍:订阅K线数据。图表库将调用onRealtimeCallback 方法以更新实时数据。
Remark: 当您调用onRealtimeCallback 且K线时间等于最近一条K线时间时,那么这条最近的
K线将被您传入的K线所替换。 例:
1. 最近一条K线为{1419411578413, 10, 12, 9, 11}
2. 您的调用onRealtimeCallback({1419411578413, 10, 14,9, 14})
3. 图表库通过时间找出K线1419411578413 已经存在,并且是最近的那一个
4. 图表库替换K线,因此现在最近一条K线为{1419411578413,10, 14, 9, 14}
Remark 2: 是否可以更新最近的K线或追加一条新的,取决于onRealtimeCallback 。 如果您调用此功能尝试更新历史记录中的一个K线,则会收到错误消息。
Remark 3: 现在,在图表接收到数据后,没有办法改变历史上的K线。
unsubscribeBars(subscriberUID)
1.subscriberUID :object
方法介绍:取消订阅K线数据。在调用subscribeBars 方法时,图表库将跳过与subscriberUID 相同的对象。
calculateHistoryDepth(resolution, resolutionBack, intervalBack)
1. resolution : 请求商品的分辨率
2. resolutionBack : 期望历史周期刻度。支持的值:
3. intervalBack :数 量
方法介绍:算出历史数据周期刻度,使您能够重写所需的历史深度。通过一些参数,让您知道要获得的是什么样数据。以下是几个例子:
calculateHistoryDepth("D", "M", 12) 调用: 图表库请求12 个月的日线数据
calculateHistoryDepth(60, "D", 15) 调用: 图表库请求15天的60分钟数据
如果你不想重写处理方法,这个函数应该返回undefined 。如果你想要重写,它应该返回一个对象{resolutionBack, intervalBack} 。
例子:
假设实现为
Datafeed.prototype.calculateHistoryDepth = function(resolution, resolutionBack, interv alBack) {
if (period == "1D") { return {
resolutionBack: 'M', intervalBack: 6
};
}
}
以上代码为当图表库将要求分辨率为1D ,历史为6个月的深度。 在其他情况下,历史深度将具有其他默认值。
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个)。不允许标记脱离K线。
Remark: 只有当您声明您的后端是支持标记时才会调用这个函数。supporting marks.
getTimescaleMarks(symbolInfo,startDate, endDate, onDataCallback, resolution)
1. symbolInfo :SymbolInfo object
2. startDate : unix时间戳 (UTC). Leftmost visible bar'stime.
3. endDate : unix时间戳 (UTC). Rightmost visible bar'stime.
4. onDataCallback :function(array ofmark s)
5. resolution : string
图表库调用此函数获取可见K线范围的时间刻度标记。图表预期您每个调用
getTimescaleMarks会调用一次onDataCallback。
mark为具有以下属性的对象:
id: 唯一标识id 。当用户点击标记时,将传递给相应的回调:respective callback
time: unix time,UTC
Color:red
| green
| blue
| yellow
| ... | #000000
label: 印在标记上的文字。单字符
tooltip: 字符串串数组。数组的每个元素都是工具提示的单独行内容。
每个K线只允许一个标记。 不允许标记脱离K线。
Remark: 只有当您声明您的后端是支持标记时才会调用这个函数。upporting marks.
getServerTime(callback)
1.callback :function(unixTime)
当图表需要知道服务器时间时,如果配置标志supports_time 设置为true ,则调用此函数。图表库预期只调用一次回调。所提供的时间没有毫秒。例子:1445324591。它是用来显示倒数的价格范围。
交易终端专属
getQuotes(symbols,onDataCallback, onErrorCallback)
1. symbols : 商品名称数组
2. onDataCallback :function(array ofdata )
i. data :商品报价数据
3. onErrorCallback : function(reason)
当图表需要报价数据时,将调用此函数。图表库预期在收到所有请求数据时调用onDataCallback。
subscribeQuotes(symbols,fastSymbols, onRealtimeCallback, listenerGUID)
1. symbols : 很少更新的商品数组(建议频率为每分钟一次)。这些商品在观察列表中,但它们目前不可见。
2. fastSymbols : 频繁更新的商品数组(一次在10秒或更快)
3. onRealtimeCallback :function(array ofdata )
i. data :商品报价数据
4. listenerGUID : 监听的唯一标识符
交易终端当需要接收商品的实时报价时调用此功能。图表预期您每次要更新报价时都会调用onRealtimeCallback 。
unsubscribeQuotes(listenerGUID)
1.listenerGUID : 监听的唯一标识符
交易终端当不需要再接收商品的实时报价时调用此函数。当图表库遇到listenerGUID 相同的对象会跳过subscribeQuotes 方法。
subscribeDepth(symbolInfo, callback):String
1. symbolInfo :SymbolInfo object
2. callback : function(depth)
i. depth :object{snapshot,asks, bids}
i. snapshot : Boolean - 如果true 时asks 和bids 具有全部深度,否则只包含更新的级别。
ii. asks : 买盘数组{price, volume}
iii. bids : 卖盘数组{price, volume}
交易终端当要接收商品的实时level 2 信息(DOM)时,调用此函数。 图表预期您每次要更新深度数据时都会调用回调。
此方法应返回唯一标识(subscriberUID),用于取消订阅数据。
unsubscribeDepth(subscriberUID)
1.subscriberUID :String
交易终端当不希望接收此监听时调用此函数。