You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

103 lines
3.5 KiB

class Datafeed {
constructor(vm) {
this.self = vm;
}
onReady(callback) {
// console.log('onReady')
var _this = this;
return new Promise(function (resolve) {
var configuration = _this.defaultConfiguration();
if (_this.self.getConfig) {
configuration = Object.assign(
_this.defaultConfiguration(),
_this.self.getConfig()
);
}
resolve(configuration);
}).then(function (data) {
if (_this.self.onReady) {
_this.self.onReady()
}
return callback(data);
});
}
resolveSymbol(symbolName, onSymbolResolvedCallback, onResolveErrorCallback) {
var _this2 = this
return new Promise(function (resolve) {
var symbolInfo = _this2.defaultSymbol();
if (_this2.self.getSymbol) {
symbolInfo = Object.assign(_this2.defaultSymbol(), _this2.self.getSymbol());
}
resolve(symbolInfo);
}).then(function (data) {
return onSymbolResolvedCallback(data);
}).catch(function (err) {
return onResolveErrorCallback(err);
});
}
getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate, onDataCallback, onErrorCallback) {
var onLoadedCallback = function onLoadedCallback(data) {
if (data && data.length) {
onDataCallback(data, { noData: false });
} else {
onDataCallback([], { noData: true });
}
};
this.self.getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate, onLoadedCallback, onErrorCallback);
}
subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID, onResetCacheNeededCallback) {
this.self.onRealtimeCallback = onRealtimeCallback
if (this.self.subscribeBars) {
this.self.subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID, onResetCacheNeededCallback)
}
}
unsubscribeBars(subscriberUID) {
if (this.self.unsubscribeBars) {
this.self.unsubscribeBars(subscriberUID)
}
}
defaultConfiguration() {
return {
supports_search: false,
supports_group_request: false,
supported_resolutions: this.self.resolutions,
supports_marks: true,
supports_timescale_marks: true,
supports_time: true
};
}
defaultSymbol() {
return {
'name': this.self.symbol.toLocaleUpperCase(),
// 'timezone': 'Asia/Shanghai',
'timezone': 'America/Toronto',
'minmov': 1,
'minmov2': 0,
'fractional': false,
//设置周期
'session': '24x7',
'has_intraday': true,
'has_no_volume': false,
//设置是否支持周月线
"has_daily": true,
//设置是否支持周月线
"has_weekly_and_monthly": true,
'description': this.self.symbol.toLocaleUpperCase(),
//设置精度 100表示保留两位小数 1000三位 10000四位
'pricescale': 10000,
'ticker': this.self.symbol.toLocaleUpperCase(),
// intraday_multipliers: ["1","5",
// "15",
// "30",
// "60",
// "240",],
'supported_resolutions': this.self.resolutions
};
}
}
export default Datafeed;