hqchart 1.1.12733 → 1.1.12734

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,150 @@
1
+ /////////////////////////////////////////////////////////////////////
2
+ // 模拟测试数据
3
+ //
4
+ //
5
+ /////////////////////////////////////////////////////////////////////
6
+
7
+
8
+ function HQData() { }
9
+
10
+ HQData.Explain="本地测试数据";
11
+
12
+ HQData.NetworkFilter=function(data, callback)
13
+ {
14
+ console.log(`[HQData::NetworkFilter] ${HQData.Explain}`, data);
15
+
16
+ switch(data.Name)
17
+ {
18
+ case 'MinuteChartContainer::RequestMinuteData': //分时图数据对接
19
+ HQData.RequestMinuteData(data, callback);
20
+ break;
21
+ case "MinuteChartContainer::RequestHistoryMinuteData": //多日分时图
22
+ HQData.RequestMinuteDaysData(data, callback);
23
+ break;
24
+
25
+ case 'KLineChartContainer::RequestHistoryData': //日线全量数据下载
26
+ HQData.RequestHistoryData(data,callback);
27
+ break;
28
+ case 'KLineChartContainer::RequestRealtimeData': //日线实时数据更新
29
+ HQData.RequestRealtimeData(data,callback);
30
+ break;
31
+ case 'KLineChartContainer::RequestFlowCapitalData': //流通股本
32
+ HQData.RequestFlowCapitalData(data,callback);
33
+ break;
34
+
35
+ case 'KLineChartContainer::ReqeustHistoryMinuteData': //分钟全量数据下载
36
+ HQData.RequestHistoryMinuteData(data, callback);
37
+ break;
38
+ case 'KLineChartContainer::RequestMinuteRealtimeData': //分钟增量数据更新
39
+ HQData.RequestMinuteRealtimeData(data,callback);
40
+ break;
41
+ }
42
+ }
43
+
44
+ HQData.RequestMinuteData=function(data, callback)
45
+ {
46
+ data.PreventDefault=true;
47
+ var symbol=data.Request.Data.symbol[0]; //请求的股票代码
48
+ var dayCount=data.Request.Data.daycount;
49
+ console.log(`[HQData::RequestMinuteData] Symbol=${symbol}`);
50
+
51
+ var hqchartData=MINUTE_1DAY_DATA;
52
+ hqchartData.stock[0].symbol=symbol;
53
+ hqchartData.stock[0].name=symbol;
54
+
55
+ callback(hqchartData);
56
+ }
57
+
58
+ HQData.RequestMinuteDaysData=function(data, callback)
59
+ {
60
+ data.PreventDefault=true;
61
+ var symbol=data.Request.Data.symbol; //请求的股票代码
62
+ var dayCount=data.Request.Data.daycount;
63
+
64
+ console.log(`[HQData::RequestMinuteDaysData] Symbol=${symbol}`);
65
+
66
+ var hqchartData=MINUTE_5DAY_DATA;
67
+ hqchartData.symbol=symbol;
68
+ hqchartData.name=symbol;
69
+
70
+ callback(hqchartData);
71
+ }
72
+
73
+ HQData.RequestHistoryData=function(data,callback)
74
+ {
75
+ data.PreventDefault=true;
76
+ var symbol=data.Request.Data.symbol; //请求的股票代码
77
+
78
+ console.log(`[HQData::RequestMinuteDaysData] Symbol=${symbol}`);
79
+
80
+ var hqchartData=KLINE_DAY_DATA;
81
+ hqchartData.symbol=symbol;
82
+ hqchartData.name=symbol;
83
+
84
+ callback(hqchartData);
85
+ }
86
+
87
+ HQData.RequestFlowCapitalData=function(data,callback)
88
+ {
89
+ data.PreventDefault=true;
90
+ var symbol=data.Request.Data.symbol; //请求的股票代码
91
+
92
+ console.log(`[HQData::RequestFlowCapitalData] Symbol=${symbol}`);
93
+
94
+ var hqchartData=KLINE_CAPITAL_DATA;
95
+ callback(hqchartData);
96
+ }
97
+
98
+ HQData.RequestRealtimeData=function(data,callback)
99
+ {
100
+ data.PreventDefault=true;
101
+ var symbol=data.Request.Data.symbol[0]; //请求的股票代码
102
+
103
+ console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`);
104
+
105
+ var hqchartData=KLINE_1DAY_DATA;
106
+ hqchartData.stock[0].name=symbol;
107
+ hqchartData.stock[0].symbol=symbol;
108
+ callback(hqchartData);
109
+ }
110
+
111
+
112
+ HQData.RequestHistoryMinuteData=function(data, callback)
113
+ {
114
+ data.PreventDefault=true;
115
+ var symbol=data.Request.Data.symbol; //请求的股票代码
116
+
117
+ console.log(`[HQData::RequestHistoryMinuteData] Symbol=${symbol}`);
118
+
119
+ var hqchartData=KLINE_MINUTE_DATA;
120
+ hqchartData.name=symbol;
121
+ hqchartData.symbol=symbol;
122
+ callback(hqchartData);
123
+
124
+ }
125
+
126
+
127
+ HQData.RequestMinuteRealtimeData=function(data,callback)
128
+ {
129
+ data.PreventDefault=true;
130
+ var symbol=data.Request.Data.symbol[0]; //请求的股票代码
131
+
132
+ console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`);
133
+
134
+ var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
135
+
136
+ var kItem=hqchartData.data[0];
137
+ var price=kItem[5];
138
+ var value=Math.ceil(Math.random()*10)/1000*price;
139
+ var bUp=Math.ceil(Math.random()*10)>=5;
140
+
141
+ if (bUp) price+=value;
142
+ else price-=value;
143
+ kItem[5]=price;
144
+ kItem[3]=Math.max(price, kItem[3]);
145
+ kItem[4]=Math.min(price, kItem[4]);
146
+
147
+ hqchartData.name=symbol;
148
+ hqchartData.symbol=symbol;
149
+ callback(hqchartData);
150
+ }
@@ -0,0 +1,137 @@
1
+ //账户信息
2
+
3
+ function ZUser(userid)
4
+ {
5
+ this.SelfStockApiUrl="https://opensource.zealink.com/API/SelfStock";
6
+ this.LogonApiUrl="https://opensource.zealink.com/API/Logon";
7
+
8
+ this.UserID=null;
9
+ this.NickName=null;
10
+ this.LogonCallback;
11
+
12
+ this.SelfStockData; //自选股信息
13
+ this.SelfStockCallback=null;
14
+
15
+ this.IsWechatApp=false; //是否是小程序模式
16
+
17
+ //微信登录
18
+ this.LogonWechat=function(wechartid,nickname,callback)
19
+ {
20
+ this.LogonCallback=callback;
21
+ this.ReqeustLogon(3,wechartid,nickname)
22
+ }
23
+
24
+ //是否登录了
25
+ this.IsLogon=function()
26
+ {
27
+ return this.UserID!=null;
28
+ }
29
+
30
+ this.ReqeustLogon=function(logonType,userid, password)
31
+ {
32
+ var self=this;
33
+
34
+ $.ajax({
35
+ url: this.LogonApiUrl,
36
+ data:
37
+ {
38
+ "logontype":logonType,
39
+ "user":userid,
40
+ "password":password,
41
+ "os":"appweb",
42
+ "identifiy":Guid(),
43
+ "ip":"0.0.0.0"
44
+ },
45
+ type:"post",
46
+ dataType: "json",
47
+ async:true,
48
+ success: function (data)
49
+ {
50
+ self.RecvLogonData(data,RECV_DATA_TYPE.LOGON_DATA);
51
+ },
52
+ error:function(request)
53
+ {
54
+ self.RecvError(request,RECV_DATA_TYPE.LOGON_DATA);
55
+ }
56
+ });
57
+ }
58
+
59
+ this.RecvLogonData=function(data,dataType)
60
+ {
61
+ if (data.code!=0)
62
+ {
63
+ if (typeof(this.LogonCallback)=="function") this.LogonCallback(this,data.message);
64
+ return;
65
+ }
66
+
67
+ this.UserID=data.userid;
68
+ this.NickName=data.nickname;
69
+
70
+ if (typeof(this.LogonCallback)=="function") this.LogonCallback(this);
71
+ }
72
+
73
+ //更新自选股
74
+ this.UpdateSelfStock=function()
75
+ {
76
+ this.ReqeustSelfStock();
77
+ }
78
+
79
+ this.SelfStock=function(callback)
80
+ {
81
+ this.SelfStockCallback=callback;
82
+ this.ReqeustSelfStock();
83
+ }
84
+
85
+ this.ReqeustSelfStock=function()
86
+ {
87
+ var self=this;
88
+
89
+ $.ajax({
90
+ url: this.SelfStockApiUrl,
91
+ data:
92
+ {
93
+ "userid":this.UserID,
94
+ },
95
+ type:"post",
96
+ dataType: "json",
97
+ async:true,
98
+ success: function (data)
99
+ {
100
+ self.RecvSelfStockData(data,RECV_DATA_TYPE.SELF_STOCK_DATA);
101
+ },
102
+ error:function(request)
103
+ {
104
+ self.RecvError(request,RECV_DATA_TYPE.SELF_STOCK_DATA);
105
+ }
106
+ });
107
+ }
108
+
109
+
110
+ this.RecvSelfStockData=function(data,dataType)
111
+ {
112
+ console.log(data);
113
+
114
+ this.SelfStockData=[];
115
+ for(var i in data.selfstock)
116
+ {
117
+ var item= data.selfstock[i];
118
+ var SelfStockItem={ Name:item.name, Data:new Array() };
119
+ for(var j in item.list)
120
+ {
121
+ var stock=item.list[j];
122
+
123
+ SelfStockItem.Data.push({Symbol:stock.symbol, Name:stock.name, date:stock.adddate});
124
+ }
125
+
126
+ this.SelfStockData.push(SelfStockItem);
127
+ }
128
+
129
+ if (typeof(this.SelfStockCallback)=="function") this.SelfStockCallback(this);
130
+ }
131
+
132
+ this.RecvError=function(request,dataType)
133
+ {
134
+
135
+ }
136
+ }
137
+
@@ -0,0 +1,30 @@
1
+ /********************************************************************************
2
+ * 版本信息输出
3
+ *
4
+ */
5
+
6
+
7
+
8
+ var HQCHART_VERSION="1.1.12732";
9
+
10
+ function PrintHQChartVersion()
11
+ {
12
+ var log=
13
+ `*************************************************************************************************************
14
+ *
15
+ * HQChart Ver: ${HQCHART_VERSION}
16
+ *
17
+ * License: Apache License 2.0
18
+ * Source: https://github.com/jones2000/HQChart
19
+ *
20
+ *************************************************************************************************************
21
+ `
22
+
23
+ console.log(log);
24
+ }
25
+
26
+
27
+ PrintHQChartVersion();
28
+
29
+
30
+
@@ -0,0 +1,114 @@
1
+ ///////////////////////////////////////////////////////////////////////////////////
2
+ // 工作线程计算指标示例
3
+ //
4
+ //
5
+ //////////////////////////////////////////////////////////////////////////////////
6
+
7
+ function HQChartScriptWorker()
8
+ {
9
+ this.Status=0; //0=空闲 1=运行
10
+ this.Create=function()
11
+ {
12
+ addEventListener('message', (obj)=>{ this.OnRecvMessage(obj); });
13
+ }
14
+
15
+ this.NetworkFilter=function(data, callback, indexInfo)
16
+ {
17
+ JSConsole.Complier.Log(`[HQChartScriptWorker::NetworkFilter] [${data.Name}][${data.Explain}] data=`, data);
18
+ //数据下载
19
+ }
20
+
21
+ this.ExecuteScript=function(indexData, message)
22
+ {
23
+ var scriptObj={ };
24
+
25
+ if (indexData.Script)
26
+ {
27
+ scriptObj.Name=indexData.Name;
28
+ scriptObj.ID=indexData.Index;
29
+ scriptObj.Script=indexData.Script;
30
+ }
31
+ else
32
+ {
33
+ if (!indexData.Index) return false;
34
+ var scriptData = new JSIndexScript();
35
+ var finder = scriptData.Get(indexData.Index);
36
+ if (!finder) return false;
37
+
38
+ scriptObj.ID=indexData.Index;
39
+ scriptObj.Name=finder.Name;
40
+ scriptObj.Script=finder.Script;
41
+ scriptObj.Args=finder.Args;
42
+ }
43
+
44
+ if (indexData.Args) scriptObj.Args=indexData.Args;
45
+ if (IFrameSplitOperator.IsBool(message.IsApiPeriod)) scriptObj.IsApiPeriod=message.IsApiPeriod;
46
+
47
+ var indexInfo={ Name:scriptObj.Name, ID:scriptObj.ID, Script:scriptObj.Script, Args:scriptObj.Args, Guid:message.Guid };
48
+ scriptObj.ErrorCallback=(error)=>{ this.OnExecuteError(error, indexInfo, message); };
49
+ scriptObj.FinishCallback=(data, jsExectute)=>{ this.OnExecuteFinish(data, indexInfo, jsExectute, message); };
50
+ scriptObj.NetworkFilter=(data, callback)=>{ this.NetworkFilter(data, callback, indexInfo, message); };
51
+
52
+ JSConsole.Complier.Log('[HQChartScriptWorker::ExecuteScript] scriptObj=',scriptObj);
53
+
54
+ var indexConsole=new ScriptIndexConsole(scriptObj);
55
+
56
+ var hisData=null;
57
+ if (message && message.Data)
58
+ {
59
+ hisData=new ChartData();
60
+ hisData.Data=message.Data;
61
+ hisData.Right=message.Right;
62
+ hisData.Period=message.Period;
63
+ hisData.DataType=message.DataType; //0=日线 1=分钟
64
+ hisData.Symbol=message.symbol;
65
+ }
66
+
67
+ var stockObj=
68
+ {
69
+ HQDataType:HQ_DATA_TYPE.KLINE_ID,
70
+ Stock: { Symbol:message.Symbol },
71
+ Request: { MaxDataCount: 500, MaxMinuteDayCount:5 },
72
+ Period:message.Period , Right:message.Right,
73
+ Data:hisData
74
+ };
75
+
76
+ if (IFrameSplitOperator.IsNumber(message.HQDataType)) stockObj.HQDataType=message.HQDataType;
77
+
78
+
79
+ indexConsole.ExecuteScript(stockObj);
80
+ }
81
+
82
+ this.OnRecvMessage=function(message)
83
+ {
84
+ var data=message.data;
85
+ if (!data) return;
86
+
87
+ if (data.ID==JSCHART_WORKER_MESSAGE_ID.EXECUTE_SCRIPT)
88
+ {
89
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.AryIndex)) return;
90
+
91
+ for(var i=0;i<data.AryIndex.length;++i)
92
+ {
93
+ var item=data.AryIndex[i];
94
+ this.Status=1; //执行状态
95
+ this.ExecuteScript(item,data);
96
+ }
97
+
98
+ this.Status=0;
99
+ }
100
+ }
101
+
102
+ this.OnExecuteFinish=function(data, indexInfo, jsExectute, jobInfo)
103
+ {
104
+ var message={ Data:data, IndexInfo:indexInfo , ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT, JobInfo:jobInfo };
105
+ postMessage(message);
106
+ }
107
+
108
+ this.OnExecuteError=function(error, indexInfo, jobData)
109
+ {
110
+ var message={ IndexInfo:indexInfo, ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT, Error:error };
111
+ postMessage(message);
112
+ }
113
+ }
114
+
@@ -0,0 +1,110 @@
1
+ ///////////////////////////////////////////////////////////////
2
+ // Web socket 行情接收类
3
+ //
4
+
5
+ function JSWSStockResource()
6
+ {
7
+ this.Domain = "wss://websocket-test.zealink.com"; //websocket 域名
8
+ }
9
+
10
+ var g_JSWSStockResource = new JSWSStockResource();
11
+
12
+
13
+ function JSWSStock()
14
+ {
15
+ this.IsConnect=false; //是否连接
16
+ this.Url=g_JSWSStockResource.Domain+'/WebSocket/StockAll.ashx';
17
+ this.Socket;
18
+
19
+ this.RecvSnapshotDataCallback; //快照数据到达
20
+ this.RecvDetailDataCallback; //分笔数据到达
21
+ this.RecvFlowDataCallback; //资金流数据到达
22
+
23
+ this.Total={Snapshot:0, Detail:0, Flow:0 } //统计一共接收到的数据条数
24
+
25
+ //option: { Callback: {Snapshot:, Detail:, Flow:}}
26
+ this.SetOption=function(option)
27
+ {
28
+ if (!Option) return;
29
+
30
+ if (option.Callback)
31
+ {
32
+ var callback=option.Callback;
33
+ if (callback.Snapshot) this.RecvSnapshotDataCallback=callback.Snapshot;
34
+ if (callback.Detail) this.RecvDetailDataCallback=callback.Detail;
35
+ if (callback.Flow) this.RecvFlowDataCallback=callback.Flow;
36
+ }
37
+ }
38
+
39
+ this.Create=function(option)
40
+ {
41
+ this.SetOption(option);
42
+
43
+ this.Socket=new WebSocket(this.Url);
44
+ if (!this.Socket) return false;
45
+
46
+ console.log(`[JSWSStock::Create] connect=${this.Url}`);
47
+
48
+ var self=this;
49
+ this.Socket.onopen=function(e) { self.OnOpen(e); };
50
+ this.Socket.onmessage=function(e) { self.OnMessage(e)} ;
51
+ this.Socket.onclose=function(e) { self.OnClose(e); }
52
+ this.Socket.onerror=function(e) { self.OnError(e); }
53
+
54
+ console.log(`[JSWSStock::Create] readyState=${this.Socket.readyState}`);
55
+
56
+ return true;
57
+ }
58
+
59
+ this.Close=function()
60
+ {
61
+ if (this.Socket) this.Socket.close();
62
+ }
63
+
64
+ this.OnMessage=function(e)
65
+ {
66
+ var message=JSON.parse(e.data);
67
+ if (!message.data || !message.data.data) return;
68
+ var data=message.data.data;
69
+ if (data.length<=0) return;
70
+
71
+ switch(message.id)
72
+ {
73
+ case 20:
74
+ this.Total.Snapshot+=data.length;
75
+ if (this.RecvSnapshotDataCallback) this.RecvSnapshotDataCallback(message.data);
76
+ break;
77
+ case 10:
78
+ this.Total.Detail+=data.length;
79
+ if (this.RecvDetailDataCallback) this.RecvDetailDataCallback(data);
80
+ break;
81
+ case 30:
82
+ this.Total.Flow+=data.length;
83
+ if (this.RecvFlowDataCallback) this.RecvFlowDataCallback(data);
84
+ break;
85
+ }
86
+ }
87
+
88
+ this.OnClose=function(e)
89
+ {
90
+ console.log('[JSWSStock::OnClose] e ', e);
91
+ console.log(`[JSWSStock::OnClose] readyState=${this.Socket.readyState}`);
92
+ }
93
+
94
+ this.OnOpen=function(e)
95
+ {
96
+ console.log('[JSWSStock::OnOpen] e ', e);
97
+ console.log(`[JSWSStock::OnOpen] readyState=${this.Socket.readyState}`);
98
+ }
99
+
100
+ this.OnError=function(e)
101
+ {
102
+ console.log('[JSWSStock::OnOpen] e ', e);
103
+ }
104
+ }
105
+
106
+
107
+ JSWSStock.SetDomain = function (domain)
108
+ {
109
+ if (domain) g_JSWSStockResource.Domain = domain;
110
+ }
@@ -0,0 +1,2 @@
1
+ import Vue from 'vue'
2
+ import ElementUI from 'element-ui'