|
|
@ -15,7 +15,7 @@ import { |
|
|
|
|
|
|
|
|
|
|
|
// 历史数据 第一条数据的 时间撮 因为k线图一次性历史数据只拿一部分,用户吧图往前滑动,就会用这个时间撮去请求更早的 历史数据
|
|
|
|
var detafeed_historyTime = 0 |
|
|
|
var detafeed_historyTime = null |
|
|
|
// 上一次的 K线周期 切换产品的时候 需要从websock 取消订阅这个
|
|
|
|
var detafeed_lastResolution = null |
|
|
|
// 上一次的产品 切换产品的时候 需要从websock 取消订阅这个
|
|
|
@ -32,7 +32,7 @@ FeedBase.prototype.getSendSymbolName = function(symbolName) { |
|
|
|
var name = symbolName.split('/') |
|
|
|
return (name[0] + name[1]).toLocaleLowerCase() |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
FeedBase.prototype.resolveSymbol = function(symbolName, onResolve, onError) { |
|
|
|
onResolve({ |
|
|
|
"name": symbolName, |
|
|
@ -45,10 +45,15 @@ FeedBase.prototype.resolveSymbol = function(symbolName, onResolve, onError) { |
|
|
|
"session": "24x7", |
|
|
|
"type": "bitcoin", |
|
|
|
"volume_precision": 10, |
|
|
|
"has_intraday": true, |
|
|
|
"intraday_multipliers": ['1', '5', '15', '30', '60', '240', '1440'], // 时间
|
|
|
|
"has_weekly_and_monthly": false, |
|
|
|
"has_no_volume": false, |
|
|
|
"has_intraday": true, |
|
|
|
"seconds_multipliers":['1', '5', '15', '30', '60', '1D', '1W','1M'], |
|
|
|
"intraday_multipliers": ['1', '5', '15', '30', '60', '1D', '1W','1M'], |
|
|
|
"has_seconds":true, |
|
|
|
"supports_marks": true, |
|
|
|
"supports_timescale_marks": true, |
|
|
|
"supported_time": true, |
|
|
|
"has_weekly_and_monthly": true, |
|
|
|
"has_no_volume": true, |
|
|
|
"regular_session": "24x7", |
|
|
|
|
|
|
|
}) |
|
|
@ -65,7 +70,7 @@ FeedBase.prototype.resolveSymbol = function(symbolName, onResolve, onError) { |
|
|
|
const resolutionFormat = (resolution, name, to) => { |
|
|
|
let req = `market.${name}.kline.${resolution}min`; |
|
|
|
let minutes = resolution; |
|
|
|
|
|
|
|
console.log(resolution) |
|
|
|
if (resolution.includes('D')) { |
|
|
|
if (resolution.length < 2) resolution = '1' + resolution; |
|
|
|
req = `market.${name}.kline.${parseInt(resolution)}day`; |
|
|
@ -86,11 +91,12 @@ const resolutionFormat = (resolution, name, to) => { |
|
|
|
|
|
|
|
let from = null; |
|
|
|
if (to) { |
|
|
|
from = to - 50 * minutes * 60; |
|
|
|
from = to - 50 * minutes * 500; |
|
|
|
if (resolution.includes('M') || resolution.includes('W')) { // 周线月线控制条数,时间超出火币规定范围, ws报错
|
|
|
|
from = to - 50 * minutes * 60; |
|
|
|
from = to - 50 * minutes * 500; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return { |
|
|
|
minutes, |
|
|
|
req, |
|
|
@ -100,11 +106,13 @@ const resolutionFormat = (resolution, name, to) => { |
|
|
|
}; |
|
|
|
|
|
|
|
FeedBase.prototype.getBars = function(symbolInfo, resolution, periodParams, onHistoryCallback, onErrorCallback) { |
|
|
|
console.log("获取历史数据") |
|
|
|
console.log("获取历史数据",periodParams) |
|
|
|
// 切换产品周期 或者 切换产品 会执行这个函数
|
|
|
|
let reso = resolutionFormat(resolution, symbolInfo.name, periodParams.to > detafeed_historyTime ? periodParams |
|
|
|
.to : |
|
|
|
detafeed_historyTime) |
|
|
|
let reso = resolutionFormat(resolution, symbolInfo.name, periodParams.to) |
|
|
|
// if (resolution.includes('M') || resolution.includes('W')|| resolution.includes('D')) { // 周线月线控制条数,时间超出火币规定范围, ws报错
|
|
|
|
// reso = resolutionFormat(resolution, symbolInfo.name, periodParams.to)
|
|
|
|
// }
|
|
|
|
|
|
|
|
// 是历史数据
|
|
|
|
var history = true |
|
|
|
/* |
|
|
@ -127,16 +135,19 @@ FeedBase.prototype.getBars = function(symbolInfo, resolution, periodParams, onHi |
|
|
|
第二个参数订阅实时数据 |
|
|
|
第三个参数 是 是否是历史数据 |
|
|
|
*/ |
|
|
|
socket.sendData({ |
|
|
|
req: reso.req, |
|
|
|
id: "id10", |
|
|
|
from: reso.from, |
|
|
|
to: reso.to, |
|
|
|
socket.sendData({ |
|
|
|
event: "req", |
|
|
|
type: "kline", |
|
|
|
channel: [reso.req], |
|
|
|
fromDate:reso.from, |
|
|
|
toDate:reso.to |
|
|
|
}, reso.req, history) |
|
|
|
|
|
|
|
|
|
|
|
Event.off('data') |
|
|
|
|
|
|
|
Event.on('data', data => { |
|
|
|
Event.on('data', data => { |
|
|
|
|
|
|
|
if (data && Array.isArray(data)) { |
|
|
|
// 记录这次请求的时间周期
|
|
|
|
detafeed_lastResolution = resolution |
|
|
@ -151,13 +162,14 @@ FeedBase.prototype.getBars = function(symbolInfo, resolution, periodParams, onHi |
|
|
|
i.volume = i.vol |
|
|
|
datas.push(i) |
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
console.log('进来') |
|
|
|
meta = { |
|
|
|
noData: true, |
|
|
|
noData: 'no_data', |
|
|
|
nextTime: detafeed_historyTime |
|
|
|
} |
|
|
|
} |
|
|
|
onHistoryCallback(datas, meta) |
|
|
|
onHistoryCallback(datas, {noData:data.length==0}) |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|