hqchart 1.1.12693 → 1.1.12706

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.
Files changed (225) hide show
  1. package/package.json +15 -47
  2. package/src/jscommon/umychart.resource/js/codemirror/javascript.js +1 -1
  3. package/.babelrc +0 -6
  4. package/.vscode/settings.json +0 -4
  5. package/Makefile +0 -9
  6. package/README.md +0 -452
  7. package/index.js +0 -17
  8. package/postcss.config.js +0 -5
  9. package/src/index.html +0 -18
  10. package/src/jscommon/backup/announcement.png +0 -0
  11. package/src/jscommon/backup/announcement2.png +0 -0
  12. package/src/jscommon/backup/blocktrading.png +0 -0
  13. package/src/jscommon/backup/investor.png +0 -0
  14. package/src/jscommon/backup/pforecast.png +0 -0
  15. package/src/jscommon/backup/research.png +0 -0
  16. package/src/jscommon/backup/tradedetail.png +0 -0
  17. package/src/jscommon/backup/umychart - backup.js +0 -17631
  18. package/src/jscommon/backup/umychart.macro.js +0 -4
  19. package/src/jscommon/backup/umychart.macro.vue.js +0 -3
  20. package/src/jscommon/commonindextree.json +0 -92
  21. package/src/jscommon/index.html +0 -13
  22. package/src/jscommon/jschinamapdata.js +0 -3
  23. package/src/jscommon/umychart.NetworkFilterTest.js +0 -48803
  24. package/src/jscommon/umychart.aliYunnetwork.js +0 -47
  25. package/src/jscommon/umychart.cninfo.components/readme.txt +0 -1
  26. package/src/jscommon/umychart.complier.js +0 -25293
  27. package/src/jscommon/umychart.complier.node/umychart.complier.controller.js +0 -559
  28. package/src/jscommon/umychart.complier.node/umychart.complier.node.js +0 -7043
  29. package/src/jscommon/umychart.complier.node/umychart.data.node.js +0 -816
  30. package/src/jscommon/umychart.console.js +0 -12
  31. package/src/jscommon/umychart.deal.js +0 -1452
  32. package/src/jscommon/umychart.dragdiv.js +0 -48
  33. package/src/jscommon/umychart.index.data.js +0 -4132
  34. package/src/jscommon/umychart.js +0 -90542
  35. package/src/jscommon/umychart.keyboard.js +0 -1659
  36. package/src/jscommon/umychart.listctrl.js +0 -690
  37. package/src/jscommon/umychart.mind.js +0 -2203
  38. package/src/jscommon/umychart.network.js +0 -44
  39. package/src/jscommon/umychart.news.js +0 -823
  40. package/src/jscommon/umychart.node.build/buildall.bat +0 -1
  41. package/src/jscommon/umychart.node.build/umychart.node.bat +0 -1
  42. package/src/jscommon/umychart.node.build/umychart.node.export.js +0 -40
  43. package/src/jscommon/umychart.regressiontest.js +0 -400
  44. package/src/jscommon/umychart.report.js +0 -5803
  45. package/src/jscommon/umychart.scrollbar.js +0 -1345
  46. package/src/jscommon/umychart.stock.js +0 -4218
  47. package/src/jscommon/umychart.style.js +0 -625
  48. package/src/jscommon/umychart.testdata.js +0 -150
  49. package/src/jscommon/umychart.uniapp.build/buildall.bat +0 -1
  50. package/src/jscommon/umychart.uniapp.build/umychart.bat +0 -1
  51. package/src/jscommon/umychart.uniapp.build/umychart.export.js +0 -70
  52. package/src/jscommon/umychart.user.js +0 -137
  53. package/src/jscommon/umychart.version.js +0 -30
  54. package/src/jscommon/umychart.vue/umychart.aliYunnetwork.vue.js +0 -56
  55. package/src/jscommon/umychart.vue.build/buildall.bat +0 -4
  56. package/src/jscommon/umychart.vue.build/copy_codemirror.bat +0 -2
  57. package/src/jscommon/umychart.vue.build/umychart.aliYunnetwork.vue.export.js +0 -9
  58. package/src/jscommon/umychart.vue.build/umychart.dragdiv.bat +0 -1
  59. package/src/jscommon/umychart.vue.build/umychart.dragdiv.export.js +0 -6
  60. package/src/jscommon/umychart.vue.build/umychart.index.data.bat +0 -1
  61. package/src/jscommon/umychart.vue.build/umychart.index.data.export.js +0 -4
  62. package/src/jscommon/umychart.vue.build/umychart.listctrl.vue.export.js +0 -15
  63. package/src/jscommon/umychart.vue.build/umychart.regressiontest.vue.export.js +0 -7
  64. package/src/jscommon/umychart.vue.build/umychart.regressiontest.wechat.export.js +0 -12
  65. package/src/jscommon/umychart.vue.build/umychart.stock.bat +0 -1
  66. package/src/jscommon/umychart.vue.build/umychart.stock.vue.export.js +0 -16
  67. package/src/jscommon/umychart.vue.build/umychart.testdata.bat +0 -3
  68. package/src/jscommon/umychart.vue.build/umychart.testdata.vue.export.js +0 -7
  69. package/src/jscommon/umychart.vue.build/umychart.vue.bat +0 -8
  70. package/src/jscommon/umychart.vue.build/umychart.vue.export.js +0 -112
  71. package/src/jscommon/umychart.vue.components/empyt.vue +0 -51
  72. package/src/jscommon/umychart.vue.components/historydayline.vue +0 -240
  73. package/src/jscommon/umychart.vue.components/jsloader.adddialog.vue +0 -315
  74. package/src/jscommon/umychart.vue.components/jsloader.vue +0 -93
  75. package/src/jscommon/umychart.vue.components/jsvuecontainer.vue +0 -160
  76. package/src/jscommon/umychart.vue.components/jsvuecontainer2.0.vue +0 -391
  77. package/src/jscommon/umychart.vue.components/login.vue +0 -178
  78. package/src/jscommon/umychart.vue.components/queryContent.vue +0 -750
  79. package/src/jscommon/umychart.vue.components/readme.txt +0 -8
  80. package/src/jscommon/umychart.vue.components/searchsymbol.vue +0 -299
  81. package/src/jscommon/umychart.vue.components/simulatetrade.vue +0 -1471
  82. package/src/jscommon/umychart.vue.components/stockchart.vue +0 -343
  83. package/src/jscommon/umychart.vue.components/stockchartV2.vue +0 -195
  84. package/src/jscommon/umychart.vue.components/stockdeal.vue +0 -358
  85. package/src/jscommon/umychart.vue.components/stockdealcount.vue +0 -262
  86. package/src/jscommon/umychart.vue.components/stockdeallastest.vue +0 -316
  87. package/src/jscommon/umychart.vue.components/stockdrawtool.vue +0 -343
  88. package/src/jscommon/umychart.vue.components/stockfull.vue +0 -355
  89. package/src/jscommon/umychart.vue.components/stockinfo.demo.vue +0 -153
  90. package/src/jscommon/umychart.vue.components/stockinfo.vue +0 -685
  91. package/src/jscommon/umychart.vue.components/stockkline.demo.vue +0 -1904
  92. package/src/jscommon/umychart.vue.components/stockmultiorder.vue +0 -174
  93. package/src/jscommon/umychart.vue.components/stockmultiperiod.vue +0 -222
  94. package/src/jscommon/umychart.vue.components/stockorder.vue +0 -320
  95. package/src/jscommon/umychart.vue.components/stocktradeinfo.demo.vue +0 -250
  96. package/src/jscommon/umychart.vue.components/stocktradeinfo.vue +0 -1907
  97. package/src/jscommon/umychart.vue.components/test.vue +0 -0
  98. package/src/jscommon/umychart.wechat/getDate.wechat.js +0 -91
  99. package/src/jscommon/umychart.wechat/lighter.news.wechat.js +0 -262
  100. package/src/jscommon/umychart.wechat/readme.txt +0 -3
  101. package/src/jscommon/umychart.wechat/umychart.analyze.wechat.js +0 -551
  102. package/src/jscommon/umychart.wechat/umychart.apidraw.wechat.js +0 -126
  103. package/src/jscommon/umychart.wechat/umychart.bigV.wechat.js +0 -2510
  104. package/src/jscommon/umychart.wechat/umychart.chartframe.wechat.js +0 -2942
  105. package/src/jscommon/umychart.wechat/umychart.chartpaint.wechat.js +0 -9752
  106. package/src/jscommon/umychart.wechat/umychart.charttitle.wechat.js +0 -2023
  107. package/src/jscommon/umychart.wechat/umychart.complier.wechat.js +0 -14726
  108. package/src/jscommon/umychart.wechat/umychart.console.wechat.js +0 -8
  109. package/src/jscommon/umychart.wechat/umychart.coordinatedata.wechat.js +0 -3654
  110. package/src/jscommon/umychart.wechat/umychart.data.wechat.js +0 -2243
  111. package/src/jscommon/umychart.wechat/umychart.element.wechart.js +0 -132
  112. package/src/jscommon/umychart.wechat/umychart.explainer.wechat.js +0 -1077
  113. package/src/jscommon/umychart.wechat/umychart.extendchart.wechat.js +0 -1140
  114. package/src/jscommon/umychart.wechat/umychart.framesplit.wechat.js +0 -2247
  115. package/src/jscommon/umychart.wechat/umychart.hqIndexformula.wechat.js +0 -941
  116. package/src/jscommon/umychart.wechat/umychart.index.data.wechat.js +0 -3628
  117. package/src/jscommon/umychart.wechat/umychart.index.wechat.js +0 -4074
  118. package/src/jscommon/umychart.wechat/umychart.klineinfo.wechat.js +0 -836
  119. package/src/jscommon/umychart.wechat/umychart.markethot.js +0 -50
  120. package/src/jscommon/umychart.wechat/umychart.network.wechart.js +0 -62
  121. package/src/jscommon/umychart.wechat/umychart.news.wechat.js +0 -3568
  122. package/src/jscommon/umychart.wechat/umychart.regressiontest.wechat.js +0 -412
  123. package/src/jscommon/umychart.wechat/umychart.report.wechat.js +0 -3983
  124. package/src/jscommon/umychart.wechat/umychart.resource.wechat.js +0 -919
  125. package/src/jscommon/umychart.wechat/umychart.shareimage.wechat.js +0 -681
  126. package/src/jscommon/umychart.wechat/umychart.simulatetrade.wechat.js +0 -238
  127. package/src/jscommon/umychart.wechat/umychart.stock.wechat.js +0 -4035
  128. package/src/jscommon/umychart.wechat/umychart.style.wechat.js +0 -419
  129. package/src/jscommon/umychart.wechat/umychart.uniapp.canvas.helper.js +0 -99
  130. package/src/jscommon/umychart.wechat/umychart.user.wechat.js +0 -588
  131. package/src/jscommon/umychart.wechat/umychart.userlog.wechat.js +0 -240
  132. package/src/jscommon/umychart.wechat/umychart.vedio.wechat.js +0 -112
  133. package/src/jscommon/umychart.wechat/umychart.version.wechat.js +0 -36
  134. package/src/jscommon/umychart.wechat/umychart.wechat.3.0.js +0 -12055
  135. package/src/jscommon/umychart.wechat/umychart.wechat.js +0 -15460
  136. package/src/jscommon/umychart.worker.js +0 -114
  137. package/src/jscommon/umychart.ws.stock.js +0 -110
  138. package/src/jscommon/umychart_python/.vscode/launch.json +0 -15
  139. package/src/jscommon/umychart_python/__init__.py +0 -4
  140. package/src/jscommon/umychart_python/build.cmd +0 -2
  141. package/src/jscommon/umychart_python/setup.py +0 -25
  142. package/src/jscommon/umychart_python/umychart_cache_testcase.py +0 -165
  143. package/src/jscommon/umychart_python/umychart_complier_data.py +0 -781
  144. package/src/jscommon/umychart_python/umychart_complier_help.py +0 -175
  145. package/src/jscommon/umychart_python/umychart_complier_job.py +0 -193
  146. package/src/jscommon/umychart_python/umychart_complier_jsalgorithm.py +0 -4144
  147. package/src/jscommon/umychart_python/umychart_complier_jscomplier.py +0 -177
  148. package/src/jscommon/umychart_python/umychart_complier_jsexecute.py +0 -517
  149. package/src/jscommon/umychart_python/umychart_complier_jsparser.py +0 -864
  150. package/src/jscommon/umychart_python/umychart_complier_jssymboldata.py +0 -1238
  151. package/src/jscommon/umychart_python/umychart_complier_jssymboldata_cache.py +0 -146
  152. package/src/jscommon/umychart_python/umychart_complier_jssymboldata_json.py +0 -106
  153. package/src/jscommon/umychart_python/umychart_complier_pandas_help.py +0 -80
  154. package/src/jscommon/umychart_python/umychart_complier_scanner.py +0 -554
  155. package/src/jscommon/umychart_python/umychart_complier_testcase.py +0 -362
  156. package/src/jscommon/umychart_python/umychart_complier_util.py +0 -30
  157. package/src/jscommon/umychart_python/umychart_webtemplate.py +0 -131
  158. package/src/jscommon/umychart_python/updatehqchartweb.bat +0 -5
  159. package/src/jscommon/vendor.js +0 -2
  160. package/src/pages/block.list.demo.page/App.vue +0 -117
  161. package/src/pages/block.list.demo.page/index.js +0 -12
  162. package/src/pages/brushTool.demo.page/App.vue +0 -19
  163. package/src/pages/brushTool.demo.page/index.js +0 -12
  164. package/src/pages/container.demo.page/App.vue +0 -118
  165. package/src/pages/container.demo.page/index.js +0 -18
  166. package/src/pages/dataZoom.demo.page/App.vue +0 -265
  167. package/src/pages/dataZoom.demo.page/components/dataZoom.vue +0 -303
  168. package/src/pages/dataZoom.demo.page/index.js +0 -12
  169. package/src/pages/historydayline.demo.page/App.vue +0 -57
  170. package/src/pages/historydayline.demo.page/index.js +0 -12
  171. package/src/pages/hq.demo.page/App.vue +0 -163
  172. package/src/pages/hq.demo.page/index.js +0 -12
  173. package/src/pages/hqchart.black/App.vue +0 -90
  174. package/src/pages/hqchart.black/components/searchsymbol.vue +0 -299
  175. package/src/pages/hqchart.black/components/stockdrawtool.vue +0 -300
  176. package/src/pages/hqchart.black/components/stockfull.vue +0 -313
  177. package/src/pages/hqchart.black/components/stockinfo.vue +0 -428
  178. package/src/pages/hqchart.black/components/stockkline.demo.vue +0 -1652
  179. package/src/pages/hqchart.black/components/stocktradeinfo.vue +0 -1337
  180. package/src/pages/hqchart.black/index.js +0 -30
  181. package/src/pages/hqchart.black/router/candlestickChart.vue +0 -108
  182. package/src/pages/hqchart.black/router/pricePointsTable.vue +0 -294
  183. package/src/pages/hqchart.black/router/stockDeallas.vue +0 -417
  184. package/src/pages/hqchart.black/router/timeShareChart.vue +0 -108
  185. package/src/pages/hqchart.page/App.vue +0 -101
  186. package/src/pages/hqchart.page/index.js +0 -18
  187. package/src/pages/index/App.vue +0 -1408
  188. package/src/pages/index/index.js +0 -7
  189. package/src/pages/indexHq/App.vue +0 -110
  190. package/src/pages/indexHq/index.js +0 -18
  191. package/src/pages/login.demo.page/App.vue +0 -22
  192. package/src/pages/login.demo.page/index.js +0 -12
  193. package/src/pages/queryContent.demo.page/App.vue +0 -29
  194. package/src/pages/queryContent.demo.page/index.js +0 -18
  195. package/src/pages/ranking.black/App.vue +0 -199
  196. package/src/pages/ranking.black/index.js +0 -18
  197. package/src/pages/search.demo.page/App.vue +0 -28
  198. package/src/pages/search.demo.page/index.js +0 -12
  199. package/src/pages/simulatetrade.demo.page/app.vue +0 -121
  200. package/src/pages/simulatetrade.demo.page/index.js +0 -17
  201. package/src/pages/stockdeal.demo.page/App.vue +0 -63
  202. package/src/pages/stockdeal.demo.page/index.js +0 -19
  203. package/src/pages/stockdealcount.demo.page/App.vue +0 -37
  204. package/src/pages/stockdealcount.demo.page/index.js +0 -12
  205. package/src/pages/stockdeallastest.demo.page/App.vue +0 -74
  206. package/src/pages/stockdeallastest.demo.page/index.js +0 -18
  207. package/src/pages/stockinfo.demo.page/App.vue +0 -92
  208. package/src/pages/stockinfo.demo.page/index.html +0 -13
  209. package/src/pages/stockinfo.demo.page/index.js +0 -19
  210. package/src/pages/stockkline.demo.page/App.vue +0 -55
  211. package/src/pages/stockkline.demo.page/index.js +0 -18
  212. package/src/pages/stockmultiorder.demo.page/App.vue +0 -149
  213. package/src/pages/stockmultiorder.demo.page/index.js +0 -18
  214. package/src/pages/stockmultiperiod.demo.page/App.vue +0 -87
  215. package/src/pages/stockmultiperiod.demo.page/index.js +0 -18
  216. package/src/pages/stockorder.demo.page/App.vue +0 -69
  217. package/src/pages/stockorder.demo.page/index.js +0 -18
  218. package/src/pages/test/App.vue +0 -22
  219. package/src/pages/test/index.js +0 -7
  220. package/src/pages/tradeinfopage/app.vue +0 -40
  221. package/src/pages/tradeinfopage/index.js +0 -7
  222. package/src/pages/tradeinfopage/tradeinfo.html +0 -12
  223. package/src/utils/urlObj.js +0 -81
  224. package/src/vendor.js +0 -2
  225. package/webpack.config.js +0 -104
@@ -1,941 +0,0 @@
1
- /*
2
- copyright (c) 2018 jones
3
-
4
- http://www.apache.org/licenses/LICENSE-2.0
5
-
6
- 开源项目 https://github.com/jones2000/HQChart
7
-
8
- jones_2000@163.com
9
-
10
- 指标计算方法 2.0 版本使用的算法
11
- */
12
-
13
- function HQIndexFormula()
14
- {
15
-
16
- }
17
-
18
- //指数平均数指标 EMA(close,10)
19
- HQIndexFormula.EMA=function(data,dayCount)
20
- {
21
- var result = [];
22
-
23
- var offset=0;
24
- if (offset>=data.length) return result;
25
-
26
- //取首个有效数据
27
- for(;offset<data.length;++offset)
28
- {
29
- if (data[offset]!=null && !isNaN(data[offset]))
30
- break;
31
- }
32
-
33
- var p1Index=offset;
34
- var p2Index=offset+1;
35
-
36
- result[p1Index]=data[p1Index];
37
- for(var i=offset+1;i<data.length;++i,++p1Index,++p2Index)
38
- {
39
- result[p2Index]=((2*data[p2Index]+(dayCount-1)*result[p1Index]))/(dayCount+1);
40
- }
41
-
42
- return result;
43
- }
44
-
45
- HQIndexFormula.SMA=function(data,n,m)
46
- {
47
- var result = [];
48
-
49
- var i=0;
50
- var lastData=null;
51
- for(;i<data.length; ++i)
52
- {
53
- if (data[i]==null || isNaN(data[i])) continue;
54
- lastData=data[i];
55
- result[i]=lastData; //第一天的数据
56
- break;
57
- }
58
-
59
- for(++i;i<data.length;++i)
60
- {
61
- result[i]=(m*data[i]+(n-m)*lastData)/n;
62
- lastData=result[i];
63
- }
64
-
65
- return result;
66
- }
67
-
68
-
69
- /*
70
- 求动态移动平均.
71
- 用法: DMA(X,A),求X的动态移动平均.
72
- 算法: 若Y=DMA(X,A)则 Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值,A必须小于1.
73
- 例如:DMA(CLOSE,VOL/CAPITAL)表示求以换手率作平滑因子的平均价
74
- */
75
- HQIndexFormula.DMA=function(data,data2)
76
- {
77
- var result = [];
78
- if (data.length<0 || data.length!=data2.length) return result;
79
-
80
- var index=0;
81
- for(;index<data.length;++index)
82
- {
83
- if (data[index]!=null && !isNaN(data[index]) && data2[index]!=null && !isNaN(data2[index]))
84
- {
85
- result[index]=data[index];
86
- break;
87
- }
88
- }
89
-
90
- for(index=index+1;index<data.length;++index)
91
- {
92
- if (data[index]==null || data2[index]==null)
93
- result[index]=null;
94
- else
95
- {
96
- if (data[index]<1)
97
- result[index]=(data2[index]*data[index])+(1-data2[index])*result[index-1];
98
- else
99
- result[index]= data[index];
100
- }
101
- }
102
-
103
- return result;
104
- }
105
-
106
-
107
- HQIndexFormula.HHV=function(data,n)
108
- {
109
- var result = [];
110
- if (n>data.length) return result;
111
-
112
- var max=-10000;
113
- for(var i=n,j=0;i<data.length;++i,++j)
114
- {
115
- if(i<n+max)
116
- {
117
- max=data[i]<data[max]?max:i;
118
- }
119
- else
120
- {
121
- for(j=(max=i-n+1)+1;j<=i;++j)
122
- {
123
- if(data[j]>data[max])
124
- max = j;
125
- }
126
- }
127
-
128
- result[i] = data[max];
129
- }
130
-
131
- return result;
132
- }
133
-
134
- HQIndexFormula.LLV=function(data,n)
135
- {
136
- var result = [];
137
- if (n>data.length) return result;
138
-
139
- var min=-10000;
140
-
141
- for(var i=n;i<data.length;++i,++j)
142
- {
143
- if(i<n+min)
144
- {
145
- min=data[i]>data[min]?min:i;
146
- }
147
- else
148
- {
149
- for(var j=(min=i-n+1)+1;j<=i;++j)
150
- {
151
- if(data[j]<data[min])
152
- min = j;
153
- }
154
- }
155
- result[i] = data[min];
156
- }
157
-
158
- return result;
159
- }
160
-
161
- HQIndexFormula.REF=function(data,n)
162
- {
163
- var result=[];
164
-
165
- if (data.length<=0) return result;
166
- if (n>=data.length) return result;
167
-
168
- result=data.slice(0,data.length-n);
169
-
170
- for(var i=0;i<n;++i)
171
- result.unshift(null);
172
-
173
- return result;
174
- }
175
-
176
- HQIndexFormula.REFDATE=function(data,n)
177
- {
178
- var result=[];
179
-
180
- if (data.length<=0) return result;
181
-
182
- //暂时写死取最后一个
183
- n=data.length-1;
184
- for(var i in data)
185
- {
186
- result[i]=data[n];
187
- }
188
-
189
- return result;
190
- }
191
-
192
-
193
-
194
- HQIndexFormula.SUM=function(data,n)
195
- {
196
- var result=[];
197
-
198
- if (n==0)
199
- {
200
- result[0]=data[0];
201
-
202
- for (var i=1; i<data.length; ++i)
203
- {
204
- result[i] = result[i-1]+data[i];
205
- }
206
- }
207
- else
208
- {
209
-
210
- for(var i=n-1,j=0;i<data.length;++i,++j)
211
- {
212
- for(var k=0;k<n;++k)
213
- {
214
- if (k==0) result[i]=data[k+j];
215
- else result[i]+=data[k+j];
216
- }
217
- }
218
- }
219
-
220
- return result;
221
- }
222
-
223
- //两个数组相减
224
- HQIndexFormula.ARRAY_SUBTRACT=function(data,data2)
225
- {
226
- var result=[];
227
- var IsNumber=typeof(data2)=="number";
228
- if (IsNumber)
229
- {
230
- for(var i in data)
231
- {
232
- if (data[i]==null || isNaN(data[i]))
233
- result[i]=null;
234
- else
235
- result[i]=data[i]-data2;
236
- }
237
- }
238
- else
239
- {
240
- var count=Math.max(data.length,data2.length)
241
-
242
- for(var i=0;i<count;++i)
243
- {
244
- if (i<data.length && i<data2.length)
245
- {
246
- if (data[i]==null || data2[i]==null) result[i]=null;
247
- else result[i]=data[i]-data2[i];
248
- }
249
- else
250
- result[i]=null;
251
- }
252
- }
253
-
254
- return result;
255
- }
256
-
257
- //数组 data>data2比较 返回 0/1 数组
258
- HQIndexFormula.ARRAY_GT=function(data,data2)
259
- {
260
- var result=[];
261
- var IsNumber=typeof(data2)=="number";
262
- if (IsNumber)
263
- {
264
- for(var i in data)
265
- {
266
- result[i]=(data[i]>data2 ? 1:0);
267
- }
268
- }
269
- else
270
- {
271
- var count=Math.max(data.length,data2.length)
272
-
273
- for(var i=0;i<count;++i)
274
- {
275
- if (i<data.length && i<data2.length)
276
- result[i]=data[i]>data2[i] ? 1:0;
277
- else
278
- result[i]=null;
279
- }
280
- }
281
-
282
- return result;
283
- }
284
-
285
- //数组 data>=data2比较 返回 0/1 数组
286
- HQIndexFormula.ARRAY_GTE=function(data,data2)
287
- {
288
- var result=[];
289
- var IsNumber=typeof(data2)=="number";
290
- if (IsNumber)
291
- {
292
- for(var i in data)
293
- {
294
- result[i]=(data[i]>=data2 ? 1:0);
295
- }
296
- }
297
- else
298
- {
299
- var count=Math.max(data.length,data2.length)
300
-
301
- for(var i=0;i<count;++i)
302
- {
303
- if (i<data.length && i<data2.length)
304
- result[i]=data[i]>=data2[i] ? 1:0;
305
- else
306
- result[i]=null;
307
- }
308
- }
309
-
310
- return result;
311
- }
312
-
313
- //数组 data<data2比较 返回 0/1 数组
314
- HQIndexFormula.ARRAY_LT=function(data,data2)
315
- {
316
- var result=[];
317
- var IsNumber=typeof(data2)=="number";
318
- if (IsNumber)
319
- {
320
- for(var i in data)
321
- {
322
- result[i]=(data[i]<data2 ? 1:0);
323
- }
324
- }
325
- else
326
- {
327
- var count=Math.max(data.length,data2.length)
328
-
329
- for(var i=0;i<count;++i)
330
- {
331
- if (i<data.length && i<data2.length)
332
- result[i]=data[i]<data2[i] ? 1:0;
333
- else
334
- result[i]=null;
335
- }
336
- }
337
-
338
- return result;
339
- }
340
-
341
- //数组 data<=data2比较 返回 0/1 数组
342
- HQIndexFormula.ARRAY_LTE=function(data,data2)
343
- {
344
- var result=[];
345
- var IsNumber=typeof(data2)=="number";
346
- if (IsNumber)
347
- {
348
- for(var i in data)
349
- {
350
- result[i]=(data[i]<=data2 ? 1:0);
351
- }
352
- }
353
- else
354
- {
355
- var count=Math.max(data.length,data2.length)
356
-
357
- for(var i=0;i<count;++i)
358
- {
359
- if (i<data.length && i<data2.length)
360
- result[i]=data[i]<=data2[i] ? 1:0;
361
- else
362
- result[i]=null;
363
- }
364
- }
365
-
366
- return result;
367
- }
368
-
369
- //数组 data==data2比较 返回 0/1 数组
370
- HQIndexFormula.ARRAY_EQ=function(data,data2)
371
- {
372
- var result=[];
373
- var IsNumber=typeof(data2)=="number";
374
- if (IsNumber)
375
- {
376
- for(var i in data)
377
- {
378
- result[i]=(data[i]==data2 ? 1:0);
379
- }
380
- }
381
- else
382
- {
383
- var count=Math.max(data.length,data2.length)
384
-
385
- for(var i=0;i<count;++i)
386
- {
387
- if (i<data.length && i<data2.length)
388
- result[i]=(data[i]==data2[i] ? 1:0);
389
- else
390
- result[i]=null;
391
- }
392
- }
393
-
394
- return result;
395
- }
396
-
397
- HQIndexFormula.ARRAY_IF=function(data,trueData,falseData)
398
- {
399
- var result=[];
400
- var IsNumber=[typeof(trueData)=="number",typeof(falseData)=="number"];
401
- for(var i in data)
402
- {
403
- if (data[i])
404
- {
405
- if (IsNumber[0]) result[i]=trueData;
406
- else result[i]=trueData[i];
407
- }
408
- else
409
- {
410
- if (IsNumber[1]) result[i]=falseData;
411
- else result[i]=falseData[i];
412
- }
413
- }
414
-
415
- return result;
416
- }
417
-
418
- HQIndexFormula.ARRAY_AND=function(data,data2)
419
- {
420
- var result=[];
421
- var IsNumber=typeof(trueData)=="number";
422
- if (IsNumber)
423
- {
424
- for(var i in data)
425
- {
426
- result[i]=(data[i] && data2? 1:0);
427
- }
428
- }
429
- else
430
- {
431
- var count=Math.max(data.length,data2.length)
432
-
433
- for(var i=0;i<count;++i)
434
- {
435
- if (i<data.length && i<data2.length)
436
- result[i]=(data[i] && data2[i] ? 1:0);
437
- else
438
- result[i]=0;
439
- }
440
- }
441
-
442
- return result;
443
- }
444
- HQIndexFormula.ARRAY_OR=function(data, data2)
445
- {
446
- var result=[];
447
- var IsNumber=typeof(data2)=="number";
448
- if (IsNumber)
449
- {
450
- for(var i in data)
451
- {
452
- result[i]=(data[i] || data2? 1:0);
453
- }
454
- }
455
- else
456
- {
457
- var count=Math.max(data.length,data2.length)
458
-
459
- for(var i=0;i<count;++i)
460
- {
461
- if (i < data.length && data[i])
462
- {
463
- result[i] = 1;
464
- continue;
465
- }
466
- if (i < data2.length && data2[i])
467
- {
468
- result[i] = 1;
469
- continue;
470
- }
471
- result[i] = 0;
472
- }
473
- }
474
-
475
- return result;
476
- }
477
- //数组相乘
478
- //支持多个参数累乘 如:HQIndexFormula.ARRAY_MULTIPLY(data,data2,data3,data3) =data*data2*data3*data4
479
- HQIndexFormula.ARRAY_MULTIPLY=function(data,data2)
480
- {
481
- if (arguments.length==2)
482
- {
483
- var result=[];
484
- var IsNumber=typeof(data2)=="number";
485
- if (IsNumber)
486
- {
487
- for(var i in data)
488
- {
489
- if (data[i]==null || isNaN(data[i]))
490
- result[i]=null;
491
- else
492
- result[i]=data[i]*data2;
493
- }
494
- }
495
- else
496
- {
497
- var count=Math.max(data.length,data2.length);
498
- for(var i=0;i<count;++i)
499
- {
500
- if (i<data.length && i<data2.length)
501
- result[i]=data[i]*data2[i];
502
- else
503
- result[i]=null;
504
- }
505
- }
506
-
507
- return result;
508
- }
509
-
510
- var result=HQIndexFormula.ARRAY_MULTIPLY(arguments[0],arguments[1]);
511
-
512
- for(var i=2;i<arguments.length;++i)
513
- {
514
- result=HQIndexFormula.ARRAY_MULTIPLY(result,arguments[i]);
515
- }
516
-
517
- return result;
518
- }
519
-
520
- //数组相除
521
- HQIndexFormula.ARRAY_DIVIDE=function(data,data2)
522
- {
523
- var result=[];
524
- var IsNumber=typeof(data2)=="number";
525
- if (IsNumber)
526
- {
527
- for(var i in data)
528
- {
529
- result[i]=data[i]/data2;
530
- }
531
- }
532
- else
533
- {
534
- var count=Math.max(data.length,data2.length);
535
- for(var i=0;i<count;++i)
536
- {
537
- if (i<data.length && i<data2.length)
538
- {
539
- if(data[i]==null || data2[i]==null || isNaN(data[i]) || isNaN(data2[i]))
540
- result[i]=null;
541
- else if (data2[i]==0)
542
- result[i]=null;
543
- else
544
- result[i]=data[i]/data2[i];
545
- }
546
- else
547
- result[i]=null;
548
- }
549
- }
550
-
551
- return result;
552
- }
553
-
554
- //数组相加
555
- //支持多个参数累加 如:HQIndexFormula.ARRAY_ADD(data,data2,data3,data3) =data+data2+data3+data4
556
- HQIndexFormula.ARRAY_ADD=function(data,data2)
557
- {
558
- if (arguments.length==2)
559
- {
560
- var result=[];
561
- var IsNumber=typeof(data2)=="number";
562
- if (IsNumber)
563
- {
564
- for(var i in data)
565
- {
566
- result[i]=data[i]+data2;
567
- }
568
- }
569
- else
570
- {
571
- var count=Math.max(data.length,data2.length);
572
- for(var i=0;i<count;++i)
573
- {
574
- if (i<data.length && i<data2.length)
575
- {
576
- if (data[i]==null || data2[i]==null || isNaN(data[i]) || isNaN(data2[i])) result[i]=null
577
- else result[i]=data[i]+data2[i];
578
- }
579
- else
580
- {
581
- result[i]=null;
582
- }
583
- }
584
- }
585
-
586
- return result;
587
- }
588
-
589
- var result=HQIndexFormula.ARRAY_ADD(arguments[0],arguments[1]);
590
-
591
- for(var i=2;i<arguments.length;++i)
592
- {
593
- result=HQIndexFormula.ARRAY_ADD(result,arguments[i]);
594
- }
595
-
596
- return result;
597
- }
598
-
599
- HQIndexFormula.MAX=function(data,data2)
600
- {
601
- var result=[];
602
- var IsNumber=typeof(data2)=="number";
603
- if (IsNumber)
604
- {
605
- for(var i in data)
606
- {
607
- if (data[i]==null) result[i]=null;
608
- else result[i]=Math.max(data[i],data2);
609
- }
610
- }
611
- else
612
- {
613
- var count=Math.max(data.length,data2.length);
614
- for(var i=0;i<count;++i)
615
- {
616
- if (i<data.length && i<data2.length)
617
- {
618
- if (data[i]==null || data2[i]==null) result[i]=null;
619
- else result[i]=Math.max(data[i],data2[i]);
620
- }
621
- else
622
- result[i]=null;
623
- }
624
- }
625
-
626
- return result;
627
- }
628
-
629
- HQIndexFormula.MIN=function(data,data2)
630
- {
631
- var result=[];
632
- var IsNumber=typeof(data2)=="number";
633
- if (IsNumber)
634
- {
635
- for(var i in data)
636
- {
637
- if (data[i]==null) result[i]=null;
638
- else result[i]=Math.min(data[i],data2);
639
- }
640
- }
641
- else
642
- {
643
- var count=Math.max(data.length,data2.length);
644
- for(var i=0;i<count;++i)
645
- {
646
- if (i<data.length && i<data2.length)
647
- {
648
- if (data[i]==null || data2[i]==null) result[i]=null;
649
- else result[i]=Math.min(data[i],data2[i]);
650
- }
651
- else
652
- result[i]=null;
653
- }
654
- }
655
-
656
- return result;
657
- }
658
-
659
-
660
- HQIndexFormula.ABS=function(data)
661
- {
662
- var result=[];
663
- for(var i in data)
664
- {
665
- if (data[i]==null) result[i]=null;
666
- else result[i]=Math.abs(data[i]);
667
- }
668
-
669
- return result;
670
- }
671
-
672
-
673
- HQIndexFormula.MA=function(data,dayCount)
674
- {
675
- var result=[];
676
-
677
- for (var i = 0, len = data.length; i < len; i++)
678
- {
679
- if (i < dayCount)
680
- {
681
- result[i]=null;
682
- continue;
683
- }
684
-
685
- var sum = 0;
686
- for (var j = 0; j < dayCount; j++)
687
- {
688
- sum += data[i - j];
689
- }
690
- result[i]=sum / dayCount;
691
- }
692
- return result;
693
- }
694
-
695
- /*
696
- 加权移动平均
697
- 返回加权移动平均
698
- 用法:EXPMA(X,M):X的M日加权移动平均
699
- EXPMA[i]=buffer[i]*para+(1-para)*EXPMA[i-1] para=2/(1+__para)
700
- */
701
- HQIndexFormula.EXPMA=function(data,dayCount)
702
- {
703
- var result=[];
704
- if (dayCount>=data.length) return result;
705
-
706
- var i=dayCount;
707
- for(;i<data.length;++i) //获取第1个有效数据
708
- {
709
- if (data[i]!=null)
710
- {
711
- result[i]=data[i];
712
- break;
713
- }
714
- }
715
-
716
- for (i=i+1; i < data.length; ++i)
717
- {
718
- if (result[i-1]!=null && data[i]!=null)
719
- result[i]=(2*data[i]+(dayCount-1)*result[i-1])/(dayCount+1);
720
- else if (result[i-1]!=null)
721
- result[i]=result[i-1];
722
- }
723
-
724
- return result;
725
- }
726
-
727
- //加权平滑平均,MEMA[i]=SMA[i]*para+(1-para)*SMA[i-1] para=2/(1+__para)
728
- HQIndexFormula.EXPMEMA=function(data,dayCount)
729
- {
730
- var result=[];
731
- if (dayCount>=data.length) return result;
732
-
733
- var index=0;
734
- for(;index<data.length;++index)
735
- {
736
- if (data[index] && !isNaN(data[index])) break;
737
- }
738
-
739
- var sum=0;
740
- for(var i=0; index<data.length && i<dayCount;++i, ++index)
741
- {
742
- if (data[index] && !isNaN(data[index]))
743
- sum+=data[index];
744
- else
745
- sum+=data[index-1];
746
- }
747
-
748
- result[index-1]=sum/dayCount;
749
- for(;index<data.length;++index)
750
- {
751
- if(result[index-1]!=null && data[index]!=null)
752
- result[index]=(2*data[index]+(dayCount-1)*result[index-1])/(dayCount+1);
753
- else if(result[index-1]!=null)
754
- result[index] = result[index-1];
755
- }
756
-
757
- return result;
758
- }
759
-
760
-
761
- HQIndexFormula.STD=function(data,n)
762
- {
763
- var result=[];
764
-
765
- var total=0;
766
- var averageData=[]; //平均值
767
- for(var i=n-1;i<data.length;++i)
768
- {
769
- total=0;
770
- for(var j=0;j<n;++j)
771
- {
772
- total+=data[i-j];
773
- }
774
-
775
- averageData[i]=total/n;
776
- }
777
-
778
- for(var i=n-1;i<data.length;++i)
779
- {
780
- total=0;
781
- for(var j=0;j<n;++j)
782
- {
783
- total+=Math.pow((data[i-j]-averageData[i]),2);
784
- }
785
-
786
- result[i]=Math.sqrt(total/n);
787
- }
788
-
789
-
790
- return result;
791
- }
792
-
793
- //平均绝对方差
794
- HQIndexFormula.AVEDEV=function(data,n)
795
- {
796
- var result=[];
797
-
798
- var total=0;
799
- var averageData=[]; //平均值
800
- for(var i=n-1;i<data.length;++i)
801
- {
802
- total=0;
803
- for(var j=0;j<n;++j)
804
- {
805
- total+=data[i-j];
806
- }
807
-
808
- averageData[i]=total/n;
809
- }
810
-
811
- for(var i=n-1;i<data.length;++i)
812
- {
813
- total=0;
814
- for(var j=0;j<n;++j)
815
- {
816
- total+=Math.abs(data[i-j]-averageData[i]);
817
- }
818
-
819
- result[i]=total/n;
820
- }
821
-
822
-
823
- return result;
824
- }
825
-
826
- HQIndexFormula.COUNT=function(data,n)
827
- {
828
- var result=[];
829
-
830
-
831
- for(var i=n-1;i<data.length;++i)
832
- {
833
- var count=0;
834
- for(var j=0;j<n;++j)
835
- {
836
- if (data[i-j]) ++count;
837
- }
838
-
839
- result[i]=count;
840
- }
841
-
842
- return result;
843
- }
844
-
845
- //上穿
846
- HQIndexFormula.CROSS=function(data,data2)
847
- {
848
- var result=[];
849
- if (data.length!=data2.length) return result=[];
850
-
851
- var index=0;
852
- for(;index<data.length;++index)
853
- {
854
- if (data[index]!=null && !isNaN(data[index]) && data2[index]!=null && isNaN(data2[index]))
855
- break;
856
- }
857
-
858
- for(++index;index<data.length;++index)
859
- {
860
- result[index]= (data[index]>data2[index]&&data[index-1]<data2[index-1])?1:0;
861
- }
862
-
863
- return result;
864
- }
865
-
866
- //累乘
867
- HQIndexFormula.MULAR=function(data,n)
868
- {
869
- var result=[];
870
- if(data.length<n) return result;
871
-
872
- var index=n;
873
- for(;index<data.length;++index)
874
- {
875
- if (data[index]!=null && !isNaN(data[index]))
876
- {
877
- result[index]=data[index];
878
- break;
879
- }
880
- }
881
-
882
- for(++index;index<data.length;++index)
883
- {
884
- result[index]=result[index-1]*data[index];
885
- }
886
-
887
- return result;
888
- }
889
-
890
-
891
- HQIndexFormula.STICKLINE=function(data,price1,price2)
892
- {
893
- var result=[];
894
- if(data.length<=0) return result;
895
-
896
- var IsNumber=typeof(price1)=="number";
897
- var IsNumber2=typeof(price2)=="number";
898
-
899
- for(var i in data)
900
- {
901
- result[i]=null;
902
- if (isNaN(data[i])) continue;
903
- if (!data[i]) continue;
904
-
905
- if (IsNumber && IsNumber2)
906
- {
907
- result[i]={Value:price1,Value2:price2};
908
- }
909
- else if (IsNumber && !IsNumber2)
910
- {
911
- if (isNaN(price2[i])) continue;
912
- result[i]={Value:price1,Value2:price2[i]};
913
- }
914
- else if (!IsNumber && IsNumber2)
915
- {
916
- if (isNaN(price1[i])) continue;
917
- result[i]={Value:price1[i],Value2:price2};
918
- }
919
- else
920
- {
921
- if (isNaN(price1[i]) || isNaN(price2[i])) continue;
922
- result[i]={Value:price1[i],Value2:price2[i]};
923
- }
924
- }
925
-
926
- return result;
927
- }
928
-
929
- //导出统一使用JSCommon命名空间名
930
- export
931
- {
932
- HQIndexFormula
933
- };
934
-
935
- /*
936
- module.exports =
937
- {
938
- //单个类导出
939
- JSCommon_HQIndexFormula: HQIndexFormula
940
- };
941
- */