jhzh
2025-04-03 db12897dc68c68d40c557aa59ad78022e2b30ac2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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',
            '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;