hqchart 1.1.12706 → 1.1.12710

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.
package/README.md ADDED
@@ -0,0 +1,454 @@
1
+ # 介绍
2
+
3
+ > HQChart
4
+
5
+ 功能:
6
+ 1. K线图
7
+ - 支持前复权,后复权
8
+ - 支持日线,月线,周线,年线.分钟线
9
+ - 主图支持股票叠加
10
+ - K线形状支持 空心K线,实心K线,美国线,收盘价线
11
+ - 支持常用指标指标(目前以录入系统指标80多个),支持自定义通达信语法脚本指标( 均线,BOLL,MACD,KDJ,VOL,RSI,BRAR,WR,BIAS,OBV,DMI,CR,PSY,CCI, DMA,TRIX,VR,EMV,ROC,MIM,FSL,CYR,MASS,WAD,CHO ..... )
12
+ - 支持画图工具(小程序不支持)
13
+ - 线段,射线,矩形,圆弧线,水平线,趋势线,平行线,平行通道,价格通道线,文本,江恩角度线,阻速线,黄金分割,百分比线,波段线,三角形,对称角度,斐波那契周期线,平行四边形,圆, iconfont图片
14
+ - 支持区间统计, 区间形态匹配 (微信小程序版本不支持)
15
+ - 数据鼠标左右拖拽移动, 键盘移动十字光标移动,键盘缩放
16
+ - 支持通达信语法指标
17
+ - 支持五彩K线(目前录入系统五彩K线30多个), 支持自定义通达信语法脚本的五彩K线
18
+ - 支持专家系统指标
19
+ - 支持个股筹码图
20
+ 2. 走势图
21
+ - 支持指标
22
+ - 支持股票叠加
23
+ - 支持沪深和港股,国内期货(开发中)
24
+ - 分钟数据显示
25
+ - 支持多日分钟数据显示
26
+
27
+ ## 源码地址:
28
+ [代码地址 github.com/jones2000/HQChart](https://github.com/jones2000/HQChart)
29
+
30
+ ## 第3放数据对接案例:
31
+ 源码地址:[https://github.com/jones2000/HQChart-Super](https://github.com/jones2000/HQChart-Super)<br>
32
+ 镜像地址:[https://gitee.com/jones2000/HQChart-Super](https://gitee.com/jones2000/HQChart-Super)<br>
33
+
34
+ ## Environment
35
+
36
+ `Node >= 6`
37
+
38
+ ## Start
39
+
40
+ - Clone or download this repository
41
+ - Enter your local directory, and install dependencies:
42
+
43
+ ``` bash
44
+ npm install
45
+ ```
46
+
47
+ # VUE用例
48
+ ## VUE创建走势图用例
49
+ ```js
50
+ <template>
51
+
52
+ <div id="app2">
53
+ <div id="minute" ref="minute" ></div>
54
+ </div>
55
+
56
+ </template>
57
+
58
+ <script>
59
+
60
+ import HQChart from 'hqchart'
61
+ import 'hqchart/src/jscommon/umychart.resource/css/tools.css'
62
+ import 'hqchart/src/jscommon/umychart.resource/font/iconfont.css'
63
+
64
+ function DefaultData(){}
65
+
66
+ DefaultData.GetMinuteOption=function()
67
+ {
68
+ var option=
69
+ {
70
+ Type:'分钟走势图', //创建图形类型
71
+
72
+ Windows: //窗口指标
73
+ [
74
+
75
+ ],
76
+
77
+ IsAutoUpdate:true, //是自动更新数据
78
+ DayCount:1, //1 最新交易日数据 >1 多日走势图
79
+ IsShowCorssCursorInfo:true, //是否显示十字光标的刻度信息
80
+ IsShowRightMenu:true, //是否显示右键菜单
81
+ CorssCursorTouchEnd:true,
82
+
83
+ MinuteLine:
84
+ {
85
+ //IsDrawAreaPrice:false, //是否画价格面积图
86
+ },
87
+
88
+ Border: //边框
89
+ {
90
+ Left:1, //左边间距
91
+ Right:1, //右边间距
92
+ Top:20,
93
+ Bottom:20
94
+ },
95
+
96
+ Frame: //子框架设置
97
+ [
98
+ {SplitCount:3,StringFormat:0},
99
+ {SplitCount:2,StringFormat:0},
100
+ {SplitCount:3,StringFormat:0},
101
+ ],
102
+
103
+ ExtendChart: //扩展图形
104
+ [
105
+ //{Name:'MinuteTooltip' } //手机端tooltip
106
+ ],
107
+ };
108
+
109
+ return option;
110
+ }
111
+
112
+
113
+ export default
114
+ {
115
+ data()
116
+ {
117
+ var data=
118
+ {
119
+ Symbol:'600000.sh',
120
+
121
+ Minute:
122
+ {
123
+ JSChart:null,
124
+ Option:DefaultData.GetMinuteOption(),
125
+ }
126
+ };
127
+
128
+ return data;
129
+
130
+ },
131
+
132
+ created()
133
+ {
134
+
135
+ },
136
+
137
+ mounted()
138
+ {
139
+ this.OnSize();
140
+
141
+ window.onresize = ()=> { this.OnSize(); }
142
+
143
+ this.CreateMinuteChart();
144
+ },
145
+
146
+ methods:
147
+ {
148
+ OnSize()
149
+ {
150
+ var chartHeight = window.innerHeight-30;
151
+ var chartWidth = window.innerWidth-30;
152
+
153
+
154
+ var minute=this.$refs.minute;
155
+ minute.style.width=chartWidth+'px';
156
+ minute.style.height=chartHeight+'px';
157
+ },
158
+
159
+ CreateMinuteChart() //创建日线图
160
+ {
161
+ if (this.Minute.JSChart) return;
162
+ this.Minute.Option.Symbol=this.Symbol;
163
+ let chart=HQChart.Chart.JSChart.Init(this.$refs.minute);
164
+ chart.SetOption(this.Minute.Option);
165
+ this.Minute.JSChart=chart;
166
+ },
167
+ }
168
+ }
169
+
170
+ ```
171
+
172
+ ## VUE创建K线图用例
173
+
174
+ ```js
175
+ <template>
176
+
177
+ <div id="app2">
178
+ <div id="kline" ref='kline'></div>
179
+ </div>
180
+
181
+ </template>
182
+
183
+ <script>
184
+
185
+ import HQChart from 'hqchart'
186
+ import 'hqchart/src/jscommon/umychart.resource/css/tools.css'
187
+ import 'hqchart/src/jscommon/umychart.resource/font/iconfont.css'
188
+
189
+ function DefaultData(){}
190
+
191
+ DefaultData.GetKLineOption = function ()
192
+ {
193
+ let data =
194
+ {
195
+ Type: '历史K线图',
196
+
197
+ Windows: //窗口指标
198
+ [
199
+ {Index:"MA",Modify: false, Change: false},
200
+ {Index:"VOL",Modify: false, Change: false}
201
+ ],
202
+
203
+ IsShowCorssCursorInfo:true,
204
+
205
+ Border: //边框
206
+ {
207
+ Left: 1,
208
+ Right: 1, //右边间距
209
+ Top: 25,
210
+ Bottom: 25,
211
+ },
212
+
213
+ KLine:
214
+ {
215
+ Right:1, //复权 0 不复权 1 前复权 2 后复权
216
+ Period:0, //周期: 0 日线 1 周线 2 月线 3 年线
217
+ PageSize:70,
218
+ IsShowTooltip:true
219
+ },
220
+
221
+ };
222
+
223
+ return data;
224
+ }
225
+
226
+ export default
227
+ {
228
+ data()
229
+ {
230
+ var data=
231
+ {
232
+ Symbol:'600000.sh',
233
+ KLine:
234
+ {
235
+ JSChart:null,
236
+ Option:DefaultData.GetKLineOption(),
237
+ },
238
+
239
+ };
240
+
241
+ return data;
242
+
243
+ },
244
+
245
+ created()
246
+ {
247
+
248
+ },
249
+
250
+ mounted()
251
+ {
252
+ this.OnSize();
253
+
254
+ window.onresize = ()=> { this.OnSize(); }
255
+
256
+ this.CreateKLineChart();
257
+ },
258
+
259
+ methods:
260
+ {
261
+ OnSize()
262
+ {
263
+ var chartHeight = window.innerHeight-30;
264
+ var chartWidth = window.innerWidth-30;
265
+
266
+ var kline=this.$refs.kline;
267
+ kline.style.width=chartWidth+'px';
268
+ kline.style.height=chartHeight+'px';
269
+ if (this.KLine.JSChart) this.KLine.JSChart.OnSize();
270
+ },
271
+
272
+ CreateKLineChart() //创建K线图
273
+ {
274
+ if (this.KLine.JSChart) return;
275
+ this.KLine.Option.Symbol=this.Symbol;
276
+ let chart=HQChart.Chart.JSChart.Init(this.$refs.kline);
277
+ chart.SetOption(this.KLine.Option);
278
+ this.KLine.JSChart=chart;
279
+ },
280
+
281
+ }
282
+ }
283
+
284
+ ```
285
+
286
+ # React用例
287
+ ## React创建k线图用例
288
+ ```js
289
+ import React from 'react';
290
+ import HQChart from 'hqchart';
291
+
292
+ class kline extends React.Component {
293
+ constructor(props) { //构造函数
294
+ super(props);
295
+ this.initCanvas = this.initCanvas.bind(this);
296
+ this.state = {
297
+ Symbol:'600000.sh',
298
+ KLine:
299
+ {
300
+ JSChart:null,
301
+ Option:{
302
+ Symbol:'',
303
+ Type: '历史K线图',
304
+
305
+ Windows: //窗口指标
306
+ [
307
+ {Index:"MA",Modify: false, Change: false},
308
+ {Index:"VOL",Modify: false, Change: false}
309
+ ],
310
+
311
+ IsShowCorssCursorInfo:true,
312
+
313
+ Border: //边框
314
+ {
315
+ Left: 1,
316
+ Right: 1, //右边间距
317
+ Top: 25,
318
+ Bottom: 25,
319
+ },
320
+
321
+ KLine:
322
+ {
323
+ Right:1, //复权 0 不复权 1 前复权 2 后复权
324
+ Period:0, //周期: 0 日线 1 周线 2 月线 3 年线
325
+ PageSize:70,
326
+ IsShowTooltip:true
327
+ }
328
+
329
+ }
330
+ }
331
+ }
332
+ }
333
+ initCanvas() {
334
+
335
+ if (this.state.KLine.JSChart) return;
336
+
337
+ this.state.KLine.Option.Symbol=this.state.Symbol;
338
+ let chart=HQChart.Chart.JSChart.Init(document.getElementById("time_graph_canvas"));
339
+ chart.SetOption(this.state.KLine.Option);
340
+ this.state.KLine.JSChart=chart;
341
+ }
342
+
343
+ componentDidMount() {
344
+ this.initCanvas()
345
+ }
346
+
347
+ componentDidUpdate() {
348
+ this.initCanvas()
349
+ }
350
+ render() {
351
+ var chartHeight = window.innerHeight-30;
352
+ var chartWidth = window.innerWidth-30;
353
+ var styleText = {
354
+ width: chartWidth+'px',
355
+ height: chartHeight+'px',
356
+ };
357
+ return (
358
+ <div style={styleText} id="time_graph_canvas">
359
+ </div>
360
+ )
361
+ }
362
+ }
363
+
364
+ export default kline;
365
+ ```
366
+ ## React创建走势图用例
367
+ ```js
368
+ import React from 'react';
369
+ import HQChart from 'hqchart';
370
+
371
+ class minute extends React.Component {
372
+ constructor(props) { //构造函数
373
+ super(props);
374
+ this.initCanvas = this.initCanvas.bind(this);
375
+ this.state = {
376
+ Symbol:'600000.sh',
377
+ Minute:
378
+ {
379
+ JSChart:null,
380
+ Option:{
381
+ Type:'分钟走势图', //创建图形类型
382
+ Symbol:'',
383
+ Windows: //窗口指标
384
+ [
385
+
386
+ ],
387
+
388
+ IsAutoUpdate:true, //是自动更新数据
389
+ DayCount:1, //1 最新交易日数据 >1 多日走势图
390
+ IsShowCorssCursorInfo:true, //是否显示十字光标的刻度信息
391
+ IsShowRightMenu:true, //是否显示右键菜单
392
+ CorssCursorTouchEnd:true,
393
+
394
+ MinuteLine:
395
+ {
396
+ //IsDrawAreaPrice:false, //是否画价格面积图
397
+ },
398
+
399
+ Border: //边框
400
+ {
401
+ Left:1, //左边间距
402
+ Right:1, //右边间距
403
+ Top:20,
404
+ Bottom:20
405
+ },
406
+
407
+ Frame: //子框架设置
408
+ [
409
+ {SplitCount:3,StringFormat:0},
410
+ {SplitCount:2,StringFormat:0},
411
+ {SplitCount:3,StringFormat:0},
412
+ ],
413
+
414
+ ExtendChart: //扩展图形
415
+ [
416
+ //{Name:'MinuteTooltip' } //手机端tooltip
417
+ ],
418
+ }
419
+ }
420
+ }
421
+ }
422
+ initCanvas() {
423
+
424
+ if (this.state.Minute.JSChart) return;
425
+
426
+ this.state.Minute.Option.Symbol=this.state.Symbol;
427
+ let chart=HQChart.Chart.JSChart.Init(document.getElementById("time_graph_canvas"));
428
+ chart.SetOption(this.state.Minute.Option);
429
+ this.state.Minute.JSChart=chart;
430
+ }
431
+
432
+ componentDidMount() {
433
+ this.initCanvas()
434
+ }
435
+
436
+ componentDidUpdate() {
437
+ this.initCanvas()
438
+ }
439
+ render() {
440
+ var chartHeight = window.innerHeight-30;
441
+ var chartWidth = window.innerWidth-30;
442
+ var styleText = {
443
+ width: chartWidth+'px',
444
+ height: chartHeight+'px',
445
+ };
446
+ return (
447
+ <div style={styleText} id="time_graph_canvas">
448
+ </div>
449
+ )
450
+ }
451
+ }
452
+
453
+ export default minute;
454
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.12706",
3
+ "version": "1.1.12710",
4
4
  "description": "stock chart",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -1,2 +1,2 @@
1
- umychart.vue VUE ����js�ű�Ŀ¼
2
- umychart.wechat ΢��С���򹫹��ű�Ŀ¼
1
+ umychart.vue VUE 公共js脚本目录
2
+ umychart.wechat 微信小程序公共脚本目录
@@ -1,283 +0,0 @@
1
-
2
- /*@media screen and (orientation: landscape) {
3
- #main {
4
- -webkit-transform:rotate(0);
5
- -moz-transform: rotate(0);
6
- -ms-transform: rotate(0);
7
- transform: rotate(0);
8
- }
9
- }*/
10
-
11
- html{
12
- /*font-size: 16px;*/
13
- font-size: 62.5%;
14
- }
15
- body{
16
- font-size: 1.2rem;
17
- }
18
-
19
- ::-webkit-scrollbar{
20
- display:none;
21
- }
22
-
23
- .phone-symbol-title{
24
- background: #ffffff;
25
- height: 40px;
26
- border-bottom: solid 1px #e1ecf2;
27
- }
28
-
29
- .symbol-name{
30
- padding: 0 0 0.3rem 1.5rem;
31
- -webkit-box-sizing: border-box;
32
- -moz-box-sizing: border-box;
33
- box-sizing: border-box;
34
- width:28%;
35
- float: left;
36
- color: #333333;
37
- }
38
- .symbol-name h1{
39
- font-size: 2.5rem;
40
- float: left;
41
- margin-right: 0.5rem;
42
- line-height: 45px;
43
- }
44
- .symbol-name span{
45
- font-size: 1.5rem;
46
- font-weight: 600;
47
- float: left;
48
- line-height: 54px;
49
- }
50
- .symbol-price{
51
- width:30%;
52
- float: left;
53
- }
54
- .symbol-price h1,.symbol-price span{
55
- float: left;
56
- }
57
- .symbol-price h1{
58
- font-size: 3rem;
59
- height: 40px;
60
- line-height: 45px;
61
- }
62
- .symbol-price span{
63
- font-size: 1.8rem;
64
- height: 40px;
65
- line-height: 53px;
66
- margin-left: 10px;
67
- font-weight: 600;
68
- }
69
- .symbol-item{
70
- width: 42%;
71
- float: right;
72
- color: #333333;
73
- text-align: right;
74
- height: 40px;
75
- position: relative;
76
- font-weight: 600;
77
- font-size: 2rem;
78
- }
79
- .symbol-item ul{
80
- width:100%;
81
- position: absolute;
82
- bottom: 0;
83
- right: 1.2rem;
84
- }
85
- .symbol-item ul li{
86
- float: right;
87
- margin-left: 3%;
88
- box-sizing: border-box;
89
- padding: 0 5px 5px 5px;
90
- }
91
- .phone-right{
92
- position: absolute;
93
- right: 10px;
94
- float: left;
95
- /*top: 50px;*/
96
- bottom: 18px;
97
- width: 55px;
98
- height:calc(100vh - 78px);
99
- overflow: auto;
100
- background-color: #f4f4f4;
101
- border: solid 1px #c8c8c8;
102
- font-size: 1.6rem;
103
- box-sizing: border-box;
104
- }
105
-
106
- .phone-right .ul-one{
107
- padding: 2rem 0 0.5em 0;
108
- border-bottom: solid 1px #c8c8c8;
109
- box-sizing: border-box;
110
- }
111
- .phone-right .ul-one li{
112
- margin-bottom: 1.5rem;
113
- text-align: center;
114
- }
115
-
116
- .phone-right .ul-two{
117
- padding: 2rem 0 0.5em 0;
118
- overflow: auto;
119
- box-sizing: border-box;
120
- }
121
- .phone-right .ul-two li{
122
- margin-bottom: 1.5rem;
123
- text-align: center;
124
- }
125
-
126
- .active-right{
127
- color: #125fd9;
128
- }
129
-
130
- .activeLi{
131
- color: #125fd9;
132
- border-bottom: 2px solid #125fd9;
133
- }
134
- .symbolUp{
135
- color: rgb(238,21,21)!important;
136
- }
137
- .symbolDown{
138
- color: rgb(25,158,0)!important;
139
- }
140
- .symbolAve{
141
- color: #333;
142
- }
143
-
144
- .right-minute{
145
- display: none;
146
- position: absolute;
147
- right: 10px;
148
- float: left;
149
- top: 62px;
150
- bottom: 18px;
151
- width: 150px;
152
- /*height:calc(100vh - 78px);*/
153
- background-color: #ffffff;
154
- border: solid 1px #e1ecf2;
155
- font-size: 1.7rem;
156
- box-sizing: border-box;
157
- }
158
-
159
- .right-minute table,.right-minute table tr{
160
- width:100%;
161
- }
162
- .right-minute table tr{
163
- line-height: 2.3rem;
164
- }
165
- .table-info tr{
166
- line-height: 2.3rem;
167
- }
168
- .right-minute table tr td{
169
- width:33%;
170
- text-align: center;
171
- }
172
- .right-minute table tr td:first-child{
173
- width:33%;
174
- text-align: left;
175
- }
176
- .right-minute table tr td:last-child{
177
- width:33%;
178
- text-align: right;
179
- }
180
-
181
- .minute-tab{
182
- width:100%;
183
- height: 30px;
184
- line-height: 30px;
185
- color: #484545;
186
- font-size: 2rem;
187
- position: absolute;
188
- top: 0;
189
- }
190
- .minute-tab li{
191
- float: left;
192
- width:50%;
193
- text-align: center;
194
- }
195
- .active-minute{
196
- color: #125fd9;
197
- border-bottom: 2px solid #125fd9;
198
- }
199
- #minuteFive{
200
- margin-top: 35px;
201
- height:calc(100vh - 120px);
202
- overflow: auto;
203
- }
204
- #minute{
205
- display: none;
206
- margin-top: 35px;
207
- height:calc(100vh - 120px);
208
- overflow: auto;
209
- }
210
- .table-one{
211
- border-bottom: solid 1px #e1ecf2;
212
- padding-top: 0.5rem;
213
- padding-bottom: 0.6rem;
214
- height:calc((100vh - 120px)/2);
215
- }
216
- .table-two{
217
- padding-top: 0.6rem;
218
- height:calc((100vh - 120px)/2);
219
- }
220
- .table-info{
221
- height:calc(100vh - 120px);
222
- }
223
-
224
- /*强制横屏*/
225
- @media screen and (orientation: portrait) {
226
- #main {
227
- -webkit-transform:rotateZ(90deg) translateY(-100%);
228
- -moz-transform: rotateZ(90deg) translateY(-100%);
229
- -ms-transform: rotateZ(90deg) translateY(-100%);
230
- transform: rotateZ(90deg) translateY(-100%);
231
- width: 100vh;
232
- height: 100vh;
233
- /*去掉overflow 微信显示正常,但是浏览器有问题,竖屏时强制横屏缩小*/
234
- overflow: hidden;
235
- transform-origin: 0 0;
236
- }
237
- .symbol-name h1{
238
- font-size: 4.6rem;
239
- }
240
- .symbol-name span{
241
- font-size: 3rem;
242
- }
243
- .symbol-price h1{
244
- font-size: 5.5rem;
245
- }
246
- .symbol-price span{
247
- font-size: 3.2rem;
248
- }
249
- .symbol-item{
250
- font-size: 3.4rem;
251
- }
252
- .symbol-item ul{
253
- right: 1.8rem;
254
- }
255
- .phone-right{
256
- font-size: 3rem;
257
- height:calc(100vw - 78px);
258
- }
259
- #minuteFive{
260
- margin-top: 35px;
261
- height:calc(100vw - 120px);
262
- overflow: auto;
263
- }
264
- #minute{
265
- display: none;
266
- margin-top: 35px;
267
- height:calc(100vw - 120px);
268
- overflow: auto;
269
- }
270
- .minute-tab{
271
- font-size: 3.6rem;
272
- }
273
- .right-minute{
274
- font-size: 3rem;
275
- /*font-weight: lighter;*/
276
- }
277
- .right-minute table tr{
278
- line-height: 4.2rem;
279
- }
280
- .table-info tr{
281
- line-height: 4.2rem;
282
- }
283
- }
@@ -1,448 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
- <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
6
- <title>手机H5行情</title>
7
- <link rel="stylesheet" href="../tools.css?version=1504" />
8
- <link rel="stylesheet" href="../font/iconfont.css">
9
- <link rel="stylesheet" href="hengping.css">
10
- </head>
11
- <body>
12
- <div id="main" style="position: relative;">
13
- <div class="phone-symbol-title">
14
- <div class="symbol-name">
15
- <h1></h1>
16
- <span></span>
17
- </div>
18
- <div class="symbol-price">
19
- <h1>--.--</h1>
20
- <span>--.--</span>
21
- <div style="clear: both;"></div>
22
- </div>
23
- <div class="symbol-item">
24
- <ul>
25
- <li>年K</li>
26
- <li>月K</li>
27
- <li>周K</li>
28
- <li class="activeLi">日K</li>
29
- <li class="minute-Kline">分时</li>
30
- </ul>
31
- <!-- <span>分时</span>-->
32
- <div style="clear: both;"></div>
33
- </div>
34
- <div style="clear: both;"></div>
35
- </div>
36
-
37
- <div id="kline" style="width: 900px;height:400px;position: relative;float: left;top: -16px;"></div>
38
- <div id="minuteKline" style="width: 900px;height:400px;position: relative;float: left;top: -16px;"></div>
39
-
40
- <div class="phone-right">
41
- <ul class="ul-one">
42
- <li class="no-right">不复权</li>
43
- <li class="pre-right active-right">前复权</li>
44
- <li class="append-right">后复权</li>
45
- </ul>
46
- <ul class="ul-two">
47
- </ul>
48
- </div>
49
- <div class="right-minute">
50
- <ul class="minute-tab">
51
- <li class="table-sell active-minute">五档</li>
52
- <li class="table-buy">明细</li>
53
- </ul>
54
- <div id="minuteFive" class="table-minute">
55
- <table class="table-one">
56
- </table>
57
- <table class="table-two">
58
- </table>
59
- </div>
60
-
61
- <div id="minute" class="table-minute">
62
- <table class="table-info">
63
- </table>
64
- </div>
65
- </div>
66
- </div>
67
-
68
- <script type="text/javascript" src="../umychart.macro.js?version=1530"></script>
69
- <script type="text/javascript" src="../umychart.js?version=1503"></script>
70
- <script type="text/javascript" src="../umychart.stock.js?version=1463"></script>
71
- <script type="text/javascript" src="rem.js"></script>
72
- <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
73
- <script>
74
- function getURLParams(name)
75
- {
76
- var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
77
- var r = window.location.search.substr(1).match(reg);
78
- if (r != null) return decodeURI(r[2]);
79
- return null;
80
- }
81
-
82
- //全局的环境变量
83
- var JSEnvironment=
84
- {
85
- IsForceLandscape:true, //是否强制横屏
86
- Symbol:'600000.sh', //股票代码
87
- //Symbol:'000001.sz', //股票代码
88
- KLineIndex:['均线','VOL','MACD','KDJ','BOLL'], //K线指标
89
-
90
- MinuteChart:null, //走势图
91
- MinuteOption:null,
92
-
93
- HistoryChart:null, //K线图
94
- HistoryOption:null,
95
-
96
- StockCache:null //股票数据
97
- };
98
-
99
- //加载环境变量
100
- function LoadEnvironment()
101
- {
102
- var symbol=getURLParams('symbol');
103
- if (symbol!=null) JSEnvironment.Symbol=symbol;
104
-
105
- var strIndex=getURLParams('index');
106
- if(strIndex)
107
- {
108
- var aryIndex = strIndex.split(',');
109
- if (aryIndex.length>0) JSEnvironment.KLineIndex=aryIndex;
110
- }
111
-
112
- //走势图配置
113
- JSEnvironment.MinuteOption=
114
- {
115
- Type:'分钟走势图',
116
- Symbol:JSEnvironment.Symbol,
117
- IsAutoUpate:true, //是自动更新数据
118
-
119
- IsShowRightMenu:false, //右键菜单
120
- IsShowCorssCursorInfo:false, //是否显示十字光标的刻度信息
121
-
122
- Border: //边框
123
- {
124
- Left:50, //左边间距
125
- Right:75, //右边间距
126
- Top:20
127
- },
128
-
129
- KLineTitle: //标题设置
130
- {
131
- IsShowName:false, //不显示股票名称
132
- IsShowSettingInfo:false //不显示周期/复权
133
- },
134
-
135
- Frame: //子框架设置,刻度小数位数设置
136
- [
137
- {SplitCount:5,StringFormat:1},
138
- {SplitCount:3,StringFormat:1}
139
- ]
140
- };
141
-
142
- //K线图配置
143
- JSEnvironment.HistoryOption=
144
- {
145
- Type:'历史K线图',
146
- Windows:
147
- [
148
- {"Index":"均线","Modify":false,"Change":false,TitleHeight:16},
149
- {"Index":"VOL","Modify":false,"Change":false,TitleHeight:16}
150
- ], //窗口指标
151
- Symbol:JSEnvironment.Symbol,
152
- IsAutoUpate:true, //是自动更新数据
153
-
154
- IsShowRightMenu:false, //右键菜单
155
- IsShowCorssCursorInfo:false, //是否显示十字光标的刻度信息
156
-
157
- KLine:
158
- {
159
- DragMode:1, //拖拽模式 0 禁止拖拽 1 数据拖拽 2 区间选择
160
- Right:1, //复权 0 不复权 1 前复权 2 后复权
161
- Period:0, //周期 0 日线 1 周线 2 月线 3 年线
162
- MaxReqeustDataCount:1000, //数据个数
163
- PageSize:50, //一屏显示多少数据
164
- IsShowTooltip:false //是否显示K线提示信息
165
- },
166
-
167
- KLineTitle: //标题设置
168
- {
169
- IsShowName:false, //不显示股票名称
170
- IsShowSettingInfo:false //不显示周期/复权
171
- },
172
-
173
- Border: //边框
174
- {
175
- Left:45, //左边间距
176
- Right:5, //右边间距
177
- Top:20
178
- },
179
-
180
- Frame: //子框架设置
181
- [
182
- {SplitCount:3,StringFormat:1},
183
- {SplitCount:3,StringFormat:1}
184
- ]
185
- };
186
- }
187
-
188
- function UpdateForceLandscape()
189
- {
190
- if (JSEnvironment.MinuteChart) JSEnvironment.MinuteChart.ForceLandscape(JSEnvironment.IsForceLandscape);
191
- if (JSEnvironment.HistoryChart) JSEnvironment.HistoryChart.ForceLandscape(JSEnvironment.IsForceLandscape);
192
- }
193
-
194
- //更新右边指标列表
195
- function UpdateIndexListUI()
196
- {
197
- for(var i in JSEnvironment.KLineIndex)
198
- {
199
- var item=JSEnvironment.KLineIndex[i];
200
- $(".ul-two").append("<li>" + item + "</li>");
201
- }
202
- }
203
-
204
- $(window).resize(resizeCanvas);
205
-
206
- function resizeCanvas()
207
- {
208
- var body = document.getElementsByTagName('body')[0];
209
- var html = document.getElementsByTagName('html')[0];
210
- var divMain=document.getElementById('main');
211
- var divKline=document.getElementById('kline');
212
- var minuteKline=document.getElementById('minuteKline');
213
- var width = body.clientWidth;
214
- var height = body.clientHeight;
215
- var maxDiv = width > height ? width : height;
216
- var minDiv = width > height ? height: width;
217
- var max = width > height ? (width - 65) : (height - 65);
218
- var min = width > height ? (height - 40): (width - 40);
219
- var maxMinute = width > height ? (width - 140) : (height - 140);
220
- divMain.style.left = (max - min) / 2;
221
- divMain.style.top = (min - max) / 2;
222
- divMain.style.width=maxDiv + 'px';
223
- divMain.style.height=minDiv + 'px';
224
- divKline.style.width=max + 'px';
225
- divKline.style.height=min + 'px';
226
- minuteKline.style.width=maxMinute + 'px';
227
- minuteKline.style.height=min + 'px';
228
- if (divKline.JSChart) divKline.JSChart.OnSize();
229
- if (minuteKline.JSChart) minuteKline.JSChart.OnSize();
230
- }
231
-
232
- $(function ()
233
- {
234
- LoadEnvironment();
235
- UpdateIndexListUI();
236
-
237
- function UpdateUI(id,arySymbol,dataType,jsStock){
238
- if(id == "main"){
239
- UpdateMain(jsStock);
240
- }else if(id == "minute"){
241
- updateMinute(jsStock);
242
- }else if(id == "minuteFive"){
243
- updateMinuteFive(jsStock);
244
- }
245
- }
246
-
247
- function UpdateMain(jsStock)
248
- {
249
- var read=jsStock.GetStockRead('main',UpdateUI); //获取一个读取数据类,并绑定id,和更新数据方法
250
- var name=read.Get(JSEnvironment.Symbol,STOCK_FIELD_NAME.NAME); //读取一个股票的数据(如果缓存过数据,可以获取到数据,没有缓存过为null)
251
- var price=read.Get(JSEnvironment.Symbol,STOCK_FIELD_NAME.PRICE);
252
- var increase=read.Get(JSEnvironment.Symbol,STOCK_FIELD_NAME.INCREASE);
253
- read.EndRead();
254
-
255
- if(increase != undefined){
256
- if(increase < 0){
257
- $(".symbol-price").addClass("symbolDown");
258
- }else if(increase > 0){
259
- $(".symbol-price").addClass("symbolUp");
260
- }else{
261
- $(".symbol-price").addClass("symbolAve");
262
- }
263
- }
264
-
265
- $(".symbol-name h1").html(name==null ? "----" : name);
266
- $(".symbol-name span").html(JSEnvironment.Symbol.substring(0,6));
267
- $(".symbol-price h1").html(Number(price).toFixed(2));
268
- $(".symbol-price span").html(Number(increase).toFixed(2) + "%");
269
- }
270
-
271
- function updateMinuteFive(jsStock) {
272
- var read=jsStock.GetStockRead('minuteFive',UpdateUI); //获取一个读取数据类,并绑定id,和更新数据方法
273
- var buyData=read.Get(JSEnvironment.Symbol,STOCK_FIELD_NAME.BUY5);
274
- var sellData=read.Get(JSEnvironment.Symbol,STOCK_FIELD_NAME.SELL5);
275
- var yClose=read.Get(JSEnvironment.Symbol,STOCK_FIELD_NAME.YCLOSE);
276
- read.EndRead();
277
-
278
- if (sellData && sellData.length==5)
279
- {
280
- $(".table-one").html("");
281
- for(var i in sellData){
282
- var dataN=sellData[i];
283
- var arr=["卖一","卖二","卖三","卖四","卖五"];
284
- var tr1 = "<tr><td>"+arr[i]+"</td><td class='color-change'>"+dataN.Price.toFixed(2)+"</td><td>"+dataN.Vol+"</td></tr>";
285
- $(".table-one").prepend(tr1);
286
-
287
- if(dataN.Price > yClose){
288
- $(".table-one .color-change").addClass("symbolUp");
289
- }else if(dataN.Price < yClose){
290
- $(".table-one .color-change").addClass("symbolDown");
291
- }else{
292
- $(".table-one .color-change").addClass("symbolAve");
293
- }
294
- }
295
- }
296
- if (buyData && buyData.length==5)
297
- {
298
- $(".table-two").html("");
299
- for(var i in buyData){
300
- var dataM=buyData[i];
301
- var arr=["买一","买二","买三","买四","买五"];
302
- var tr2 = "<tr><td>"+arr[i]+"</td><td class='color-change'>"+dataM.Price.toFixed(2)+"</td><td>"+dataM.Vol+"</td></tr>";
303
- $(".table-two").append(tr2);
304
-
305
- if(dataM.Price - yClose >0){
306
- $(".table-two .color-change").addClass("symbolUp");
307
- }else if(dataM.Price - yClose < 0){
308
- $(".table-two .color-change").addClass("symbolDown");
309
- }else{
310
- $(".table-two .color-change").addClass("symbolAve");
311
- }
312
- }
313
- }
314
- }
315
-
316
- function updateMinute(jsStock) {
317
- var read=jsStock.GetStockRead('minute',UpdateUI); //获取一个读取数据类,并绑定id,和更新数据方法
318
- var deal=read.Get(JSEnvironment.Symbol,STOCK_FIELD_NAME.DEAL);
319
- var yClose=read.Get(JSEnvironment.Symbol,STOCK_FIELD_NAME.YCLOSE);
320
- read.EndRead();
321
-
322
- if (deal)
323
- {
324
- $(".table-info").html("");
325
- for(var i in deal){
326
- var item =deal[i];
327
- var timer=item.Time;
328
- timer = timer.toString();
329
- var timeStr,newTime;
330
- if(timer.length == 5){
331
- timeStr = "0" + timer;
332
- }else if(timer.length == 6){
333
- timeStr = timer;
334
- }
335
- newTime = timeStr.substring(0,2) + ":" + timeStr.substring(2,4);
336
-
337
- var trd = "<tr><td>"+newTime+ "</td><td class='color-change'>"+item.Price.toFixed(2)+"</td><td>"+item.Vol+"</td></tr>";
338
- $(".table-info").append(trd);
339
-
340
- if(item.Price > yClose){
341
- $(".table-info .color-change").addClass("symbolUp");
342
- }else if(item.Price < yClose){
343
- $(".table-info .color-change").addClass("symbolDown");
344
- }else{
345
- $(".table-info .color-change").addClass("symbolAve");
346
- }
347
- }
348
- }
349
- }
350
-
351
-
352
-
353
- $(".table-sell").click(function () {
354
- $("#minute").hide();
355
- $("#minuteFive").show();
356
- $(".table-sell").addClass("active-minute").siblings().removeClass("active-minute");
357
-
358
- });
359
-
360
- $(".table-buy").click(function () {
361
- $("#minute").show();
362
- $("#minuteFive").hide();
363
- $(".table-buy").addClass("active-minute").siblings().removeClass("active-minute");
364
-
365
- });
366
-
367
- //复权切换
368
- $(".ul-one li").click(function () {
369
- var num = $(this).index();
370
- JSEnvironment.HistoryChart.ChangeRight(num);
371
- $(this).addClass("active-right").siblings().removeClass("active-right");
372
- });
373
-
374
- //周期切换
375
- $(".symbol-item li").click(function () {
376
- $("#kline").show();
377
- $(".phone-right").show();
378
- var period = 2 - ($(this).index() - 1);
379
- if (JSEnvironment.HistoryChart==null)
380
- {
381
- JSEnvironment.HistoryChart=JSChart.Init(document.getElementById('kline')); //初始化K线图
382
- JSEnvironment.HistoryOption.KLine.Period=period;
383
- JSEnvironment.HistoryChart.SetOption(JSEnvironment.HistoryOption);
384
- UpdateForceLandscape();
385
- }
386
- else
387
- {
388
- JSEnvironment.HistoryChart.ChangePeriod(period);
389
- }
390
-
391
- $(this).addClass("activeLi").siblings().removeClass("activeLi");
392
- $("#minuteKline").hide();
393
- $(".right-minute").hide();
394
- });
395
-
396
- //指标切换
397
- $(".ul-two li:first-child").addClass("active-right");
398
- $(".ul-two li").click(function () {
399
- var text = $(this).text();
400
- JSEnvironment.HistoryChart.ChangeIndex(1,text);
401
- $(this).addClass("active-right").siblings().removeClass("active-right");
402
- });
403
-
404
- $(".minute-Kline").click(function () {
405
- $("#kline").hide();
406
- $(".phone-right").hide();
407
-
408
- if (JSEnvironment.MinuteChart==null)
409
- {
410
- JSEnvironment.MinuteChart=JSChart.Init(document.getElementById('minuteKline')); // 初始化走势图
411
- JSEnvironment.MinuteChart.SetOption(JSEnvironment.MinuteOption);
412
- UpdateForceLandscape();
413
- }
414
-
415
- $("#minuteKline").show();
416
- $(".right-minute").show();
417
- });
418
-
419
- function hengshuping()
420
- {
421
- if(window.orientation==180||window.orientation==0){
422
- JSEnvironment.IsForceLandscape=true;
423
- UpdateForceLandscape();
424
- }
425
- if(window.orientation==90||window.orientation==-90){
426
- JSEnvironment.IsForceLandscape=false;
427
- UpdateForceLandscape();
428
- }
429
- }
430
-
431
- window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize", hengshuping, false);
432
-
433
- JSEnvironment.StockCache=JSStock.Init(); //初始化数据控件
434
- UpdateMain(JSEnvironment.StockCache);
435
- updateMinute(JSEnvironment.StockCache);
436
- updateMinuteFive(JSEnvironment.StockCache);
437
- JSEnvironment.StockCache.ReqeustData();
438
-
439
- $(".symbol-item li").eq(3).trigger('click'); //点击日线
440
-
441
- resizeCanvas();
442
- })
443
-
444
-
445
-
446
- </script>
447
- </body>
448
- </html>
@@ -1,28 +0,0 @@
1
- (function(doc, win) {
2
- var ps_width = 1334,
3
- ps_height = 758,
4
- rem = 16;
5
- var docEl = doc.documentElement,
6
- resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
7
- recalc = function() {
8
- var w = window.innerWidth /*docEl.clientWidth*/ ;
9
- var h = window.innerHeight /*docEl.clientHeight*/ ;
10
-
11
- if (!w)
12
- return;
13
- if (w <= h || /iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())) {
14
- //if(w>ps_width){w=ps_width;}
15
- docEl.style.fontSize = rem * (w / ps_width) + 'px';
16
- } else {
17
- var w2 = h / ps_height * ps_width;
18
- docEl.style.fontSize = rem * (w2 / ps_width) + 'px';
19
- docEl.style.width = w2 + 'px';
20
- docEl.style.margin = '0 ' + (w - w2) / 2 + 'px';
21
- }
22
- };
23
- if (!doc.addEventListener)
24
- return;
25
- win.addEventListener(resizeEvt, recalc, false);
26
- doc.addEventListener('DOMContentLoaded', recalc, false);
27
- recalc();
28
- })(document, window);