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,4035 +0,0 @@
1
- ////////////////////////////////////////////////////////////////////////////////////////
2
- // 股票数据
3
- //
4
- ///////////////////////////////////////////////////////////////////////////////////////
5
-
6
- function JSStockResource() {
7
- this.Domain = "https://opensource.zealink.com"; //API域名
8
- this.CacheDomain = "https://opensourcecache.zealink.com"; //缓存域名
9
- }
10
-
11
- var g_JSStockResource = new JSStockResource();
12
-
13
- //领涨领跌
14
- function IndexTopData() {
15
- this.Stop; //停牌
16
- this.Down; //下跌
17
- this.Up; //上涨
18
- this.Unchanged; //平盘
19
- this.UpStock = {"Symbol": null, "Name": null}; //领涨
20
- this.DownStock = {"Symbol": null, "Name": null}; //领跌
21
- }
22
-
23
- function IndexHeatData() {
24
- this.Good; //健康度
25
- //this.Date; //日期
26
- this.GoodIncrease = {"Day1": null, 'Week1': null, "Week4": null}; //周涨幅
27
- }
28
-
29
- JSStock.CreateGuid=function()
30
- {
31
- return Guid();
32
- }
33
-
34
- function Guid()
35
- {
36
- function S4()
37
- {
38
- return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
39
- }
40
- return "guid" + (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
41
- }
42
-
43
- function SortData(field, order, tagID) {
44
- this.arySymbol = new Array(); //成分
45
- this.SortField = field; //排序字段
46
- this.Order = order; //1 降, -1 升
47
- this.TagID = new Set([tagID]); //绑定的元素id
48
- }
49
-
50
- //财务数据基础数据
51
- function FinanceData() {
52
- this.ROE; //净资产收益率
53
-
54
- this.Date; //报告日期,
55
- this.PerSEarning; //每股收益
56
- this.EPS; //滚动每股收益
57
- this.PerNetAsset; //每股净资产
58
-
59
- this.NProfit; //净利润
60
- this.NProfitIncrease; //净利润涨幅 (当年净利润-上一年)/上一年*100
61
-
62
- this.NnetProfit; //扣非净利润
63
- this.NnProfitIncrease; //扣非净利润涨幅 (当年扣非净利润-上一年)/上一年*100
64
- this.NnProfitSpeed; //扣非净利润涨速 (当前扣非净利润/上一年-1)/(上一年/上上年-1)
65
-
66
- this.Benford; //财务粉饰
67
- this.Benfordyear; //1年均
68
- this.Benford3year //3年均
69
- this.AverageBenford; //财务粉饰均值
70
- this.PEG; //市盈增长比率
71
-
72
- //TODO:财务数据要了后面再加
73
-
74
- this.SetData = function (data) {
75
- if (!isNaN(data.roe)) this.ROE = data.roe;
76
- if (!isNaN(data.finance.date)) this.Date = data.finance.date;
77
- if (!isNaN(data.finance.persearning)) this.PerSEarning = data.finance.persearning;
78
- if (!isNaN(data.finance.eps)) this.EPS = data.finance.eps;
79
- if (!isNaN(data.finance.pernetasset)) this.PerNetAsset = data.finance.pernetasset;
80
- if (!isNaN(data.finance.nprofit)) this.NProfit = data.finance.nprofit;
81
- if (!isNaN(data.finance.nprofitincrease)) this.NProfitIncrease = data.finance.nprofitincrease;
82
- if (!isNaN(data.finance.nnetprofit)) this.NnetProfit = data.finance.nnetprofit;
83
- if (!isNaN(data.finance.nnprofitincrease)) this.NnProfitIncrease = data.finance.nnprofitincrease;
84
- if (!isNaN(data.finance.nnprofitspeed)) this.NnProfitSpeed = data.finance.nnprofitspeed;
85
- if (!isNaN(data.finance.benford)) this.Benford = data.finance.benford;
86
- if (!isNaN(data.peg)) this.PEG = data.peg;
87
- if (!isNaN(data.finance.avgbenford)) this.AverageBenford = data.finance.avgbenford;
88
- if (!isNaN(data.finance.benfordyear)) this.Benfordyear = data.finance.benfordyear;
89
- if (!isNaN(data.finance.benford3year)) this.Benford3year = data.finance.benford3year;
90
- // if (!isNaN(data.finance.percreserve)) this.Percreserve = data.finance.percreserve;
91
- }
92
- }
93
-
94
- //财务数据详细数据
95
- function FinanceDetailData() {
96
- this.Percreserve; //每股资本公积金 (capital reserve)FINANCE_PERCRESERVE
97
- this.Peruprofit; //每股未分配利润
98
- this.Perccfo; //每股经营性现金流
99
- this.Orevenues; //营业总收入
100
- this.MOprofit; //主营业务利润
101
- this.OProfit; //营业利润
102
- this.Grossmargin; //毛利率
103
- this.Areceivable; //应收账款
104
- this.Financialcost; //财务费用
105
- this.Ccfo; //经营性现金流
106
- this.Totalassets; //资产总计
107
- this.Totalliabilities; //负债总计
108
- this.Totalownersequity; //所有者权益总计
109
- this.Currentassets; //流动资产
110
- this.Monetaryfunds; //货币资金
111
- this.Inventory; //存货
112
- this.Currentliabilities; //流动负债
113
- this.Ncurrentliabilities; //非流动负债
114
- this.Expenses3; //三项费用(销售费用,管理费用和财务费用)
115
- this.Investmentincome; //投资收益
116
- this.Pcnprofit; //归母净利润
117
- this.Nnetprofit; //扣非净利润
118
- this.Npersearning; //扣非每股收益
119
- this.Woewa; //加权平均净资产收益率
120
- this.Inprocess; //在建工程(Construction-in-process)
121
- this.Accdepreciation; //累计折旧 (accumulated depreciation)
122
-
123
- this.SetData = function (data) {
124
- if (!isNaN(data.finance.percreserve)) this.Percreserve = data.finance.percreserve;
125
- if (!isNaN(data.finance.peruprofit)) this.Peruprofit = data.finance.peruprofit;
126
- if (!isNaN(data.finance.perccfo)) this.Perccfo = data.finance.perccfo;
127
- if (!isNaN(data.finance.orevenues)) this.Orevenues = data.finance.orevenues;
128
- if (!isNaN(data.finance.moprofit)) this.MOprofit = data.finance.moprofit;
129
- if (!isNaN(data.finance.oprofit)) this.OProfit = data.finance.oprofit;
130
- if (!isNaN(data.finance.grossmargin)) this.Grossmargin = data.finance.grossmargin;
131
- if (!isNaN(data.finance.areceivable)) this.Areceivable = data.finance.areceivable;
132
- if (!isNaN(data.finance.financialcost)) this.Financialcost = data.finance.financialcost;
133
- if (!isNaN(data.finance.ccfo)) this.Ccfo = data.finance.ccfo;
134
- if (!isNaN(data.finance.totalassets)) this.Totalassets = data.finance.totalassets;
135
- if (!isNaN(data.finance.totalliabilities)) this.Totalliabilities = data.finance.totalliabilities;
136
- if (!isNaN(data.finance.totalownersequity)) this.Totalownersequity = data.finance.totalownersequity;
137
- if (!isNaN(data.finance.currentassets)) this.Currentassets = data.finance.currentassets;
138
- if (!isNaN(data.finance.monetaryfunds)) this.Monetaryfunds = data.finance.monetaryfunds;
139
- if (!isNaN(data.finance.inventory)) this.Inventory = data.finance.inventory;
140
- if (!isNaN(data.finance.currentliabilities)) this.Currentliabilities = data.finance.currentliabilities;
141
- if (!isNaN(data.finance.ncurrentliabilities)) this.Ncurrentliabilities = data.finance.ncurrentliabilities;
142
- if (!isNaN(data.finance.expenses3)) this.Expenses3 = data.finance.expenses3;
143
- if (!isNaN(data.finance.investmentincome)) this.Investmentincome = data.finance.investmentincome;
144
- if (!isNaN(data.finance.pcnprofit)) this.Pcnprofit = data.finance.pcnprofit;
145
- if (!isNaN(data.finance.nnetprofit)) this.Nnetprofit = data.finance.nnetprofit;
146
- if (!isNaN(data.finance.npersearning)) this.Npersearning = data.finance.npersearning;
147
- if (!isNaN(data.finance.woewa)) this.Woewa = data.finance.woewa;
148
- if (!isNaN(data.finance.inprocess)) this.Inprocess = data.finance.inprocess;
149
- if (!isNaN(data.finance.accdepreciation)) this.Accdepreciation = data.finance.accdepreciation;
150
- }
151
- }
152
-
153
- //公司资料
154
- function CompanyData() {
155
- this.Name;
156
- this.Business; //主营业务
157
- this.Vol; //发行量
158
- this.Price; //发行价格
159
- this.ReleaseDate; //上市日期
160
- this.Competence; //核心竞争力
161
-
162
- this.SetData = function (data) {
163
- if (!data.company) return;
164
-
165
- this.Name = data.company.name;
166
- this.Business = data.company.business;
167
- this.Vol = data.company.vol;
168
- this.Price = data.company.price;
169
- this.ReleaseDate = data.company.releasedate;
170
- this.Competence = data.company.corecompetence;
171
- }
172
- }
173
-
174
-
175
- //板块信息
176
- function PlateData() {
177
- this.Industry; //行业分类
178
- this.Region; //地区
179
- this.Concept; //概念
180
-
181
- this.SetData = function (data) {
182
- this.SetIndustryData(data);
183
- this.SetRegionData(data);
184
- this.SetConceptData(data);
185
- }
186
-
187
- this.SetIndustryData = function (data) {
188
- if (!data.industry) return
189
-
190
- this.Industry = [];
191
- for (let i in data.industry) {
192
- let item = data.industry[i];
193
- this.Industry.push({Name: item.name, Symbol: item.symbol});
194
- }
195
- }
196
-
197
- this.SetRegionData = function (data) {
198
- if (!data.region) return
199
-
200
- this.Region = [];
201
- for (let i in data.region) {
202
- let item = data.region[i];
203
- this.Region.push({Name: item.name, Symbol: item.symbol});
204
- }
205
- }
206
-
207
- this.SetConceptData = function (data) {
208
- if (!data.concept) return
209
-
210
- this.Concept = [];
211
- for (let i in data.concept) {
212
- let item = data.concept[i];
213
- this.Concept.push({Name: item.name, Symbol: item.symbol});
214
- }
215
- }
216
- }
217
-
218
- //股权质押
219
- function PledgeData() {
220
- this.Prop; //累计质押比例%(proportion)
221
- this.SHProp; //控股股东累计质押比%(shareholder proportion)
222
- this.SHHeldeProp; //控股股东累计质押数量占持股比例% (shareholder held proportion)
223
- this.UnSaleVol; //无限售质押数量
224
- this.SaleVol; //质押数量
225
- this.Vol; //质押数量
226
-
227
- this.SetData = function (data) {
228
- if (!data.pledge) return;
229
-
230
- if (!isNaN(data.pledge.prop)) this.Prop = data.pledge.prop;
231
- if (!isNaN(data.pledge.shprop)) this.SHProp = data.pledge.shprop;
232
- if (!isNaN(data.pledge.shheldeprop)) this.SHHeldeProp = data.pledge.shheldeprop;
233
- if (!isNaN(data.pledge.unsalevol)) this.UnSaleVol = data.pledge.unsalevol;
234
- if (!isNaN(data.pledge.salevol)) this.SaleVol = data.pledge.salevol;
235
- if (!isNaN(data.pledge.vol)) this.Vol = data.pledge.vol;
236
- }
237
- }
238
-
239
- //年涨幅
240
- function YearData() {
241
- this.Year1; //今年以来
242
-
243
- this.SetData = function (data) {
244
- if (!data.year) return;
245
-
246
- if (!isNaN(data.year.year1)) this.Year1 = data.year.year1;
247
- }
248
- }
249
-
250
- //事件,属性
251
- function EventData() {
252
- this.IsMargin; //是否是融资融券标题
253
- this.IsHK=false; //是否有港股
254
- this.IsSHHK=false; //沪港通
255
- this.IsSZHK=false; //深股通
256
- this.STType=0; //St标识(0:正常股票,1:st股票,2:*st股票)
257
- this.HK; //港股信息 { Symbol:代码 Name:名称 }
258
-
259
- this.SetData = function (data) {
260
- if (!data.events) return;
261
-
262
- if (!isNaN(data.events.margin)) this.IsMargin = data.events.margin == 1;
263
- if (!isNaN(data.events.hk)) this.IsHK = data.events.hk == 1;
264
- if (!isNaN(data.events.shhk)) this.IsSHHK = data.events.shhk == 1;
265
- if (!isNaN(data.events.szhk)) this.IsSZHK = data.events.szhk == 1;
266
- if (!isNaN(data.events.st)) this.STType = data.events.st;
267
-
268
- if (this.IsHK && data.events.hksymbol && data.events.hkname)
269
- {
270
- this.HK={ Symbol:data.events.hksymbol, Name:data.events.hkname };
271
- }
272
- }
273
-
274
- }
275
-
276
- //资金流(当日)
277
- function CapitalFlowDayData()
278
- {
279
- this.SuperIn; //超大单流入
280
- this.SuperOut; //超大单流出
281
- this.BigIn; //大单流入
282
- this.BigOut; //大单流出
283
- this.MidIn; //中单流入
284
- this.MidOut; //中单流出
285
- this.SmallIn; //小单流入
286
- this.SmallOut; //小单流出
287
- this.MainIn; //主力流入
288
- this.MainOut; //主力流出
289
- this.MainNetIn; //主力净流入
290
-
291
- this.SetData = function (data)
292
- {
293
- this.SuperIn=data.superin;
294
- this.SuperOut = data.superout;
295
- this.BigIn = data.bigin;
296
- this.BigOut = data.bigout;
297
- this.MidIn = data.midin;
298
- this.MidOut=data.midout;
299
- this.SmallIn = data.smallin; //小单流入
300
- this.SmallOut = data.smallout; //小单流出
301
- this.MainIn = data.mainin; //主力流入
302
- this.MainOut = data.mainout; //主力流出
303
- this.MainNetIn = data.mainnetin; //主力净流入
304
- }
305
- }
306
-
307
- //资金流(多日)
308
- function CapitalFlowDaysData()
309
- {
310
- this.SuperIn; //超大单流入
311
- this.SuperOut; //超大单流出
312
- this.BigIn; //大单流入
313
- this.BigOut; //大单流出
314
- this.MidIn; //中单流入
315
- this.MidOut; //中单流出
316
- this.SmallIn; //小单流入
317
- this.SmallOut; //小单流出
318
- this.MainIn; //主力流入
319
- this.MainOut; //主力流出
320
- this.MainNetIn; //主力净流入
321
- this.MainNetInRatio; //多日日主力净流占比
322
-
323
- this.SetData = function (data) {
324
- this.SuperIn = data.superin;
325
- this.SuperOut = data.superout;
326
- this.BigIn = data.bigin;
327
- this.BigOut = data.bigout;
328
- this.MidIn = data.midin;
329
- this.MidOut = data.midout;
330
- this.SmallIn = data.smallin; //小单流入
331
- this.SmallOut = data.smallout; //小单流出
332
- this.MainIn = data.mainin; //主力流入
333
- this.MainOut = data.mainout; //主力流出
334
- this.MainNetIn = data.mainnetin; //主力净流入
335
- this.MainNetInRatio = data.mainnetinratio;
336
- }
337
- }
338
-
339
- function DDEData()
340
- {
341
- this.DDX;
342
- this.DDY;
343
- this.DDZ;
344
-
345
- this.SetData=function(data)
346
- {
347
- this.DDX=data.ddx;
348
- this.DDY=data.ddy;
349
- this.DDZ=data.ddz;
350
- }
351
- }
352
-
353
-
354
-
355
- function StockData(symbol) {
356
- this.Symbol = symbol; //股票代码
357
- this.Name; //股票名称
358
-
359
- //基础数据
360
- this.Open; //开盘
361
- this.Price; //最新
362
- this.High; //最高
363
- this.Low; //最低
364
- this.YClose; //前收盘
365
- this.Vol //成交量
366
- this.Amount; //成交金额
367
- this.Date; //交易日期
368
- this.Time; //交易时间
369
- this.ExchangeRate; //换手率
370
- this.Amplitude; //振幅
371
-
372
- this.Increase; //涨幅
373
- this.MaxPrice; //涨停价
374
- this.MinPrice; //跌停价
375
- this.RFPrice //涨跌额 (Price-YClose)
376
-
377
- this.IndexTop; //涨跌家数
378
- this.Week; //周涨幅
379
-
380
- this.MinuteAmplitude = {}; //1,5,15,30 振幅
381
- this.RiseFallSpeed = {}; //1,5,15,30分钟涨速
382
-
383
-
384
- this.Heat; //热度
385
- //获取热度数据,不要直接使用变量获取
386
- this.GetHeatData = function (tagID) {
387
- this.HeatTagID.add(tagID);
388
- return this.Heat;
389
- }
390
-
391
- //成分排序
392
- this.Sort = new Map(); //key=排序字段-排序方式 value=SortData 一个控件之能有1个排序规则
393
- this.GetSortData = function (tagID, field, order) {
394
- var key = field.toString() + '-' + order.toString();
395
- if (!this.Sort.has(key)) {
396
- var data = new SortData(field, order, tagID);
397
- this.Sort.set(key, data);
398
- return data;
399
- }
400
-
401
- var data = this.Sort.get(key);
402
- data.TagID.add(tagID);
403
- return data;
404
- }
405
-
406
- this.Buy5; //五档买
407
- this.GetBuy5 = function (tagID) {
408
- this.BuySellTagID.add(tagID);
409
- return this.Buy5;
410
- }
411
-
412
- this.Sell5; //五档卖
413
- this.GetSell5 = function (tagID) {
414
- this.BuySellTagID.add(tagID);
415
- return this.Sell5;
416
- }
417
-
418
- this.Deal; //分笔 最新10条
419
- this.GetDeal = function (tagID) {
420
- this.DealTagID.add(tagID);
421
- return this.Deal;
422
- }
423
-
424
- this.MarketValue; //总市值
425
- this.FlowMarketValue; //流通市值
426
- this.Bookrate; //委比
427
- this.Bookdiffer; //委差
428
- this.PE;
429
- this.PB;
430
- this.FlowIn; //资金流入
431
- this.FlowOut; //资金流出
432
- this.GetDerivative = function (tagID, field) {
433
- this.DerivativeTagID.add(tagID);
434
-
435
- switch (field) {
436
- case STOCK_FIELD_NAME.MARKET_VALUE:
437
- return this.MarketValue;
438
- case STOCK_FIELD_NAME.FLOW_MARKET_VALUE:
439
- return this.FlowMarketValue;
440
- case STOCK_FIELD_NAME.BOOK_RATE:
441
- return this.Bookrate;
442
- case STOCK_FIELD_NAME.BOOK_DIFFER:
443
- return this.Bookdiffer;
444
- case STOCK_FIELD_NAME.PE:
445
- return this.PE;
446
- case STOCK_FIELD_NAME.PB:
447
- return this.PB;
448
- case STOCK_FIELD_NAME.FLOW_IN:
449
- return this.FlowIn;
450
- case STOCK_FIELD_NAME.FLOW_OUT:
451
- return this.FlowOut;
452
- }
453
- }
454
-
455
-
456
- this.Finance; //财务数据
457
- this.GetFinance = function (tagID, field) {
458
- // console.log(this.Finance,"this.Finance11111");
459
- // console.log("财务数据", tagID, field);
460
- if (!this.Finance) //只请求一次
461
- {
462
- this.FinanceTagID.add(tagID);
463
- return null;
464
- }
465
-
466
- // console.log(this.Finance.Date, "this.Finance11111")
467
-
468
- switch (field) {
469
- case STOCK_FIELD_NAME.ROE:
470
- return this.Finance.ROE;
471
- case STOCK_FIELD_NAME.FINANCE_DATE:
472
- return this.Finance.Date;
473
- case STOCK_FIELD_NAME.FINANCE_PERSEARNING:
474
- return this.Finance.PerSEarning;
475
- case STOCK_FIELD_NAME.FINANCE_PERNETASSET:
476
- return this.Finance.PerNetAsset;
477
- case STOCK_FIELD_NAME.FINANCE_NPROFIT:
478
- return this.Finance.NProfit;
479
- case STOCK_FIELD_NAME.FINANCE_NPROFITINCREASE:
480
- return this.Finance.NProfitIncrease;
481
- case STOCK_FIELD_NAME.FINANCE_NNETPROFIT:
482
- return this.Finance.NnetProfit;
483
- case STOCK_FIELD_NAME.FINANCE_NNPROFITINCREASE:
484
- return this.Finance.NnProfitIncrease;
485
- case STOCK_FIELD_NAME.FINANCE_NNPROFITSPEED:
486
- return this.Finance.NnProfitSpeed;
487
- case STOCK_FIELD_NAME.FINANCE_EPS:
488
- return this.Finance.EPS;
489
- case STOCK_FIELD_NAME.FINANCE_BENFORD:
490
- return this.Finance.Benford;
491
- case STOCK_FIELD_NAME.FINANCE_AVERAGE_BENFORD:
492
- return this.Finance.AverageBenford;
493
- case STOCK_FIELD_NAME.PEG:
494
- return this.Finance.PEG;
495
- }
496
- }
497
-
498
- this.FinanceDetail; //财务数据
499
- this.GetFinanceDetail = function (tagID, field) {
500
- // console.log(this.FinanceDetail,'GetFinanceDetail:FinanceDetail')
501
-
502
- if (!this.FinanceDetail) //只请求一次
503
- {
504
- this.FinanceDetailTagID.add(tagID);
505
- return null;
506
- }
507
-
508
- switch (field) {
509
-
510
- case STOCK_FIELD_NAME.FINANCE_PERCRESERVE:
511
- return this.FinanceDetail.Percreserve;
512
-
513
- case STOCK_FIELD_NAME.FINANCE_PERUPROFIT:
514
- return this.FinanceDetail.Peruprofit;
515
-
516
- case STOCK_FIELD_NAME.FINANCE_PERCCFO:
517
- return this.FinanceDetail.Perccfo;
518
-
519
- case STOCK_FIELD_NAME.FINANCE_OREVENUES:
520
- return this.FinanceDetail.Orevenues;
521
-
522
- case STOCK_FIELD_NAME.FINANCE_MOPROFIT:
523
- return this.FinanceDetail.MOprofit;
524
-
525
- case STOCK_FIELD_NAME.FINANCE_OPROFIT:
526
- return this.FinanceDetail.OProfit;
527
-
528
- case STOCK_FIELD_NAME.FINANCE_GROSSMARGIN:
529
- return this.FinanceDetail.Grossmargin;
530
-
531
- case STOCK_FIELD_NAME.FINANCE_ARECEIVABLE:
532
- return this.FinanceDetail.Areceivable;
533
-
534
- case STOCK_FIELD_NAME.FINANCE_FINANCIALCOST:
535
- return this.FinanceDetail.Financialcost;
536
-
537
- case STOCK_FIELD_NAME.FINANCE_CCFO:
538
- return this.FinanceDetail.Ccfo;
539
-
540
- case STOCK_FIELD_NAME.FINANCE_TOTALASSETS:
541
- return this.FinanceDetail.Totalassets;
542
-
543
- case STOCK_FIELD_NAME.FINANCE_TOTALLIABILITIES:
544
- return this.FinanceDetail.Totalliabilities;
545
-
546
- case STOCK_FIELD_NAME.FINANCE_TOTALOWNERSEQUITY:
547
- return this.FinanceDetail.Totalownersequity;
548
-
549
- case STOCK_FIELD_NAME.FINANCE_CURRENTASSETS:
550
- return this.FinanceDetail.Currentassets;
551
-
552
- case STOCK_FIELD_NAME.FINANCE_MONETARYFUNDS:
553
- return this.FinanceDetail.Monetaryfunds;
554
-
555
- case STOCK_FIELD_NAME.FINANCE_INVENTORY:
556
- return this.FinanceDetail.Inventory;
557
-
558
- case STOCK_FIELD_NAME.FINANCE_CURRENTLIABILITIES:
559
- return this.FinanceDetail.Currentliabilities;
560
-
561
- case STOCK_FIELD_NAME.FINANCE_NCURRENTLIABILITIES:
562
- return this.FinanceDetail.Ncurrentliabilities;
563
-
564
- case STOCK_FIELD_NAME.FINANCE_EXPENSES3:
565
- return this.FinanceDetail.Expenses3;
566
-
567
- case STOCK_FIELD_NAME.FINANCE_INVESTMENTINCOME:
568
- return this.FinanceDetail.Investmentincome;
569
-
570
- case STOCK_FIELD_NAME.FINANCE_PCNPROFIT:
571
- return this.FinanceDetail.Pcnprofit;
572
-
573
- case STOCK_FIELD_NAME.FINANCE_NNETPROFIT:
574
- return this.FinanceDetail.Nnetprofit;
575
-
576
- case STOCK_FIELD_NAME.FINANCE_NPERSEARNING:
577
- return this.FinanceDetail.Npersearning;
578
-
579
- case STOCK_FIELD_NAME.FINANCE_WOEWA:
580
- return this.FinanceDetail.Woewa;
581
-
582
- case STOCK_FIELD_NAME.FINANCE_INPROCESS:
583
- return this.FinanceDetail.Inprocess;
584
-
585
- case STOCK_FIELD_NAME.FINANCE_ACCDEPRECIATION:
586
- return this.FinanceDetail.Accdepreciation;
587
-
588
- }
589
- }
590
-
591
- this.Year; //涨幅
592
- this.GetYear = function (tagID, field) {
593
- console.log("涨幅", tagID, field);
594
- if (!this.Year) //只请求一次
595
- {
596
- this.YearTagID.add(tagID);
597
- return null;
598
- }
599
-
600
- switch (field) {
601
- case STOCK_FIELD_NAME.YEAR_YEAR1:
602
- return this.Year.Year1;
603
- }
604
- }
605
-
606
- this.Company; //个股资料
607
- this.GetCompany = function (tagID, field) {
608
- if (!this.Company) //只请求一次
609
- {
610
- this.CompanyTagID.add(tagID);
611
- return null;
612
- }
613
-
614
- switch (field) {
615
- case STOCK_FIELD_NAME.COMPANY_NAME:
616
- return this.Company.Name;
617
- case STOCK_FIELD_NAME.COMPANY_BUSINESS:
618
- return this.Company.Business;
619
- case STOCK_FIELD_NAME.COMPANY_VOL:
620
- return this.Company.Vol;
621
- case STOCK_FIELD_NAME.COMPANY_PRICE:
622
- return this.Company.Price;
623
- case STOCK_FIELD_NAME.COMPANY_RELEASEDATE:
624
- return this.Company.ReleaseDate;
625
- case STOCK_FIELD_NAME.COMPANY_COMPETENCE:
626
- return this.Company.Competence;
627
- }
628
- }
629
-
630
- this.Plate; //板块
631
- this.GetPlate = function (tagID, field) {
632
- if (!this.Plate) //只请求一次
633
- {
634
- this.PlateTagID.add(tagID);
635
- return null;
636
- }
637
-
638
- switch (field) {
639
- case STOCK_FIELD_NAME.PLATE_INDUSTRY:
640
- return this.Plate.Industry;
641
- case STOCK_FIELD_NAME.PLATE_CONCEPT:
642
- return this.Plate.Concept;
643
- case STOCK_FIELD_NAME.PLATE_REGION:
644
- return this.Plate.Region;
645
- }
646
- }
647
-
648
- this.Pledge; //股权质押
649
- this.GetPledge = function (tagID, field) {
650
- if (!this.Pledge) {
651
- this.PledgeTagID.add(tagID);
652
- return null;
653
- }
654
-
655
- switch (field) {
656
- case STOCK_FIELD_NAME.PLEDGE_PROPORTION:
657
- return this.Pledge.Prop;
658
- case STOCK_FIELD_NAME.PLEDGE_SHAREHOLDER_PROPORTION:
659
- return this.Pledge.SHProp;
660
- case STOCK_FIELD_NAME.PLEDGE_SHAREHOLDER_HELD_PROPORTION:
661
- return this.Pledge.SHHeldeProp;
662
- }
663
- }
664
-
665
- this.Event; //事件 属性
666
- this.GetEvent = function (tagID, field) {
667
- if (!this.Event) {
668
- this.EventTagID.add(tagID);
669
- return null;
670
- }
671
-
672
- switch (field) {
673
- case STOCK_FIELD_NAME.EVENT_IS_MARGIN:
674
- return this.Event.IsMargin;
675
- }
676
- }
677
-
678
- this.CapitalFlowDay;
679
- this.CapitalFlowDay3;
680
- this.CapitalFlowDay5;
681
- this.CapitalFlowDay10;
682
- this.GetCapitalFlowDay = function (tagID, field)
683
- {
684
- let data=null;
685
- switch(field)
686
- {
687
- case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY:
688
- if (!this.CapitalFlowDay) this.CapitalFlowDayID.add(tagID);
689
- else data = this.CapitalFlowDay;
690
- break;
691
- case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY3:
692
- if (!this.CapitalFlowDay3) this.CapitalFlowDay3ID.add(tagID);
693
- else data = this.CapitalFlowDay3;
694
- break;
695
- case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY5:
696
- if (!this.CapitalFlowDay5) this.CapitalFlowDay5ID.add(tagID);
697
- else data = this.CapitalFlowDay5;
698
- break;
699
- case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY10:
700
- if (!this.CapitalFlowDay10) this.CapitalFlowDay10ID.add(tagID);
701
- else data = this.CapitalFlowDay10;
702
- break;
703
- }
704
- return data;
705
- }
706
-
707
- this.DDE;
708
- this.DDE3;
709
- this.DDE5;
710
- this.DDE10;
711
- this.GetDDE = function (tagID, field)
712
- {
713
- let data = null;
714
- switch (field) {
715
- case STOCK_FIELD_NAME.DDE:
716
- if (!this.DDE) this.DDEID.add(tagID);
717
- else data = this.DDE;
718
- break;
719
- case STOCK_FIELD_NAME.DDE3:
720
- if (!this.DDE3) this.DDE3ID.add(tagID);
721
- else data = this.DDE3;
722
- break;
723
- case STOCK_FIELD_NAME.DDE5:
724
- if (!this.DDE5) this.DDE5ID.add(tagID);
725
- else data = this.DDE5;
726
- break;
727
- case STOCK_FIELD_NAME.DDE10:
728
- if (!this.DDE10) this.DDE10ID.add(tagID);
729
- else data = this.DDE10;
730
- break;
731
- }
732
- return data;
733
- }
734
-
735
- this.TagID = new Set(); //绑定的控件id
736
- this.HeatTagID = new Set(); //需要热度的控件id
737
- this.BuySellTagID = new Set();//买卖盘的控件id
738
- this.DealTagID = new Set(); //分笔的控件id
739
- this.DerivativeTagID = new Set(); //衍生数据
740
- this.FinanceTagID = new Set(); //财务数据 (就请求1次)
741
- this.CompanyTagID = new Set(); //个股资料 (就请求1次)
742
- this.PlateTagID = new Set(); //板块 概念 地区
743
- this.FinanceDetailTagID = new Set();
744
- this.PledgeTagID = new Set(); //股权质押
745
- this.EventTagID = new Set(); //事件
746
- this.YearTagID = new Set(); //年涨幅
747
- this.CapitalFlowDayID=new Set(); //当日资金流
748
- this.CapitalFlowDay3ID = new Set(); //3日资金流
749
- this.CapitalFlowDay5ID = new Set(); //5日资金流
750
- this.CapitalFlowDay10ID = new Set(); //10日资金流
751
- this.DDEID=new Set();
752
- this.DDE3ID = new Set();
753
- this.DDE5ID = new Set();
754
- this.DDE10ID = new Set();
755
-
756
- this.AttachTagID = function (id) {
757
- this.TagID.add(id);
758
- }
759
-
760
- this.RemoveTagID = function (id) {
761
- this.TagID.delete(id);
762
- this.HeatTagID.delete(id);
763
- this.BuySellTagID.delete(id);
764
- this.DealTagID.delete(id);
765
- this.DerivativeTagID.delete(id);
766
- //this.FinanceTagID.delete(id);
767
- //this.CompanyTagID.delete(id);
768
- //this.PlateTagID.delete(id);
769
- //this.FinanceDetailTagID.delete(id);
770
-
771
- for (var item of this.Sort) {
772
- item[1].TagID.delete(id);
773
- }
774
- }
775
-
776
- //设置基础数据
777
- this.SetBaseData = function (data) {
778
- this.Name = data.name;
779
- this.YClose = data.yclose;
780
- this.Price = data.price;
781
- this.High = data.high;
782
- this.Low = data.low;
783
- this.Open = data.open;
784
- this.Vol = data.vol;
785
- this.Amount = data.amount;
786
- this.Date = data.date;
787
- this.Time = data.time;
788
- this.Increase = data.increase;
789
- if (!isNaN(data.exchangerate)) this.ExchangeRate = data.exchangerate;
790
- if (!isNaN(data.amplitude)) this.Amplitude = data.amplitude;
791
-
792
- if (this.Name.indexOf('ST') >= 0) {
793
- this.MaxPrice = (1 + 0.05) * this.YClose;
794
- this.MinPrice = (1 - 0.05) * this.YClose;
795
- }
796
- else {
797
- this.MaxPrice = (1 + 0.1) * this.YClose;
798
- this.MinPrice = (1 - 0.1) * this.YClose;
799
- }
800
-
801
- if (this.YClose != null && this.Price != null)
802
- this.RFPrice = this.Price - this.YClose;
803
-
804
- //周涨幅
805
- if (data.week) {
806
- this.Week = {};
807
- this.Week.Week1 = data.week.week1;
808
- this.Week.Week4 = data.week.week4;
809
- this.Week.Week13 = data.week.week13;
810
- this.Week.Week26 = data.week.week26;
811
- this.Week.Week52 = data.week.week52;
812
- }
813
- }
814
-
815
- this.SetDerivativeData = function (data) {
816
- this.MarketValue = data.marketvalue; //总市值
817
- this.FlowMarketValue = data.flowmarketvalue; //流通市值
818
- this.Bookrate = data.bookrate; //委比
819
- this.Bookdiffer = data.bookdiffer; //委差
820
- this.PE = data.pe;
821
- this.PB = data.pb;
822
- this.FlowIn = data.flowin;
823
- this.FlowOut = data.flowout;
824
- }
825
-
826
- this.SetFinanceData = function (data) {
827
- // console.log(data,"SetFinanceData");
828
-
829
- if (!data.finance) return;
830
-
831
- this.Finance = new FinanceData();
832
- this.Finance.SetData(data);
833
- }
834
-
835
- this.SetYearData = function (data) {
836
- // console.log(data,"SetYearData");
837
-
838
- if (!data.year) return;
839
-
840
- this.Year = new YearData();
841
- this.Year.SetData(data);
842
- }
843
-
844
- this.SetFinanceDetailData = function (data) {
845
- if (!data.finance) return;
846
-
847
- this.FinanceDetail = new FinanceDetailData();
848
- this.FinanceDetail.SetData(data);
849
- }
850
-
851
- this.SetPledgeData = function (data) {
852
- if (!data.pledge) return;
853
-
854
- this.Pledge = new PledgeData();
855
- this.Pledge.SetData(data);
856
- }
857
-
858
- this.SetEventData = function (data) {
859
- if (!data.events) return;
860
-
861
- this.Event = new EventData();
862
- this.Event.SetData(data);
863
- }
864
-
865
- this.SetCapitalFlowDayData = function (data,datatype)
866
- {
867
- if (!data) return;
868
-
869
- switch (datatype) {
870
- case RECV_DATA_TYPE.CAPITAL_FLOW_DAY_DATA:
871
- this.CapitalFlowDay=new CapitalFlowDayData();
872
- this.CapitalFlowDay.SetData(data);
873
- break;
874
- case RECV_DATA_TYPE.CAPITAL_FLOW_DAY3_DATA:
875
- this.CapitalFlowDay3 = new CapitalFlowDaysData();
876
- this.CapitalFlowDay3.SetData(data);
877
- break;
878
- case RECV_DATA_TYPE.CAPITAL_FLOW_DAY5_DATA:
879
- this.CapitalFlowDay5 = new CapitalFlowDaysData();
880
- this.CapitalFlowDay5.SetData(data);
881
- break;
882
- case RECV_DATA_TYPE.CAPITAL_FLOW_DAY10_DATA:
883
- this.CapitalFlowDay10 = new CapitalFlowDaysData();
884
- this.CapitalFlowDay10.SetData(data);
885
- break;
886
- }
887
- }
888
-
889
- this.SetDDE = function (data, datatype)
890
- {
891
- if (!data) return;
892
-
893
- switch (datatype)
894
- {
895
- case RECV_DATA_TYPE.DDE_DAY_DATA:
896
- this.DDE = new DDEData();
897
- this.DDE.SetData(data);
898
- break;
899
- case RECV_DATA_TYPE.DDE_DAY3_DATA:
900
- this.DDE3 = new DDEData();
901
- this.DDE3.SetData(data);
902
- break;
903
- case RECV_DATA_TYPE.DDE_DAY5_DATA:
904
- this.DDE5 = new DDEData();
905
- this.DDE5.SetData(data);
906
- break;
907
- case RECV_DATA_TYPE.DDE_DAY10_DATA:
908
- this.DDE10 = new DDEData();
909
- this.DDE10.SetData(data);
910
- break;
911
- }
912
- return data;
913
- }
914
-
915
- this.SetCompanyData = function (data) {
916
- // console.log(data);
917
- if (!data.company) return;
918
-
919
- this.Company = new CompanyData();
920
- this.Company.SetData(data);
921
- }
922
-
923
- this.SetPlateData = function (data) {
924
- if (!data.industry && !data.region && !data.concept) return;
925
-
926
- this.Plate = new PlateData();
927
- this.Plate.SetData(data);
928
- }
929
-
930
- //指数基础数据
931
- this.SetIndexBaseData = function (data) {
932
- this.SetBaseData(data);
933
-
934
- var topData = new IndexTopData();
935
- if (data.indextop) {
936
- topData.Up = data.indextop.up;
937
- topData.Down = data.indextop.down;
938
- topData.Unchanged = data.indextop.unchanged;
939
- topData.Stop = data.indextop.stop;
940
-
941
- topData.UpStock.Symbol = data.indextop.upstock.symbol;
942
- topData.UpStock.Name = data.indextop.upstock.name;
943
-
944
- topData.DownStock.Symbol = data.indextop.downstock.symbol;
945
- topData.DownStock.Name = data.indextop.downstock.name;
946
- }
947
-
948
- this.IndexTop = topData;
949
- }
950
-
951
- //五档买卖盘
952
- this.SetBuySellData = function (data) {
953
- this.SetBaseData(data);
954
- this.Buy5 = new Array();
955
- this.Sell5 = new Array();
956
-
957
- for (var i in data.buy) {
958
- var item = data.buy[i];
959
-
960
- this.Buy5.push({"Price": item.price, "Vol": item.vol});
961
- }
962
-
963
- for (var i in data.sell) {
964
- var item = data.sell[i];
965
- this.Sell5.push({"Price": item.price, "Vol": item.vol});
966
- }
967
- }
968
-
969
- //分笔
970
- this.SetDealData = function (data) {
971
- this.Price = data.price;
972
- this.High = data.high;
973
- this.Low = data.low;
974
- this.Vol = data.vol;
975
- this.Amount = data.amount;
976
- this.Date = data.date;
977
- this.Time = data.time;
978
- this.Increase = data.increase;
979
-
980
- this.Deal = new Array();
981
- for (var i in data.deal) {
982
- var item = data.deal[i];
983
- if (isNaN(item.price) || isNaN(item.time)) continue;
984
-
985
- this.Deal.push({"Price": item.price, "Amount": item.amount, "Vol": item.vol, "Time": item.time});
986
- }
987
- }
988
-
989
- //热度
990
- this.SetHeatData = function (data) {
991
- var heatData = new IndexHeatData();
992
- heatData.Good = data.quadrant.good;
993
- heatData.GoodIncrease.Day1 = data.quadrant.gincrease.day1;
994
- heatData.GoodIncrease.Week1 = data.quadrant.gincrease.week1;
995
- heatData.GoodIncrease.Week4 = data.quadrant.gincrease.week4;
996
-
997
- this.Heat = heatData;
998
- }
999
-
1000
-
1001
- //所有数据
1002
- this.SetData = function (data) {
1003
- if (data.name) this.Name = data.name;
1004
- if (!isNaN(data.yclose)) this.YClose = data.yclose;
1005
- if (!isNaN(data.price)) this.Price = data.price;
1006
- if (!isNaN(data.high)) this.High = data.high;
1007
- if (!isNaN(data.low)) this.Low = data.low;
1008
- if (!isNaN(data.vol)) this.Vol = data.vol;
1009
- if (!isNaN(data.amount)) this.Amount = data.amount;
1010
- if (!isNaN(data.date)) this.Date = data.date;
1011
- if (!isNaN(data.time)) this.Time = data.time;
1012
- if (!isNaN(data.increase)) this.Increase = data.increase;
1013
-
1014
- if (!isNaN(data.marketvalue)) this.MarketValue = data.marketvalue; //总市值
1015
- if (!isNaN(data.flowmarketvalue)) this.FlowMarketValue = data.flowmarketvalue; //流通市值
1016
- if (!isNaN(data.bookrate)) this.Bookrate = data.bookrate; //委比
1017
- if (!isNaN(data.bookdiffer)) this.Bookdiffer = data.bookdiffer; //委差
1018
- if (!isNaN(data.pe)) this.PE = data.pe;
1019
- if (!isNaN(data.pb)) this.PB = data.pb;
1020
-
1021
- if (data.finance) this.SetFinanceData(data);
1022
- if (data.finance) this.SetFinanceDetailData(data);
1023
-
1024
- if (data.mamplitude) {
1025
- if (!isNaN(data.mamplitude[5])) this.MinuteAmplitude.M5 = data.mamplitude[5];
1026
- }
1027
-
1028
- if (data.risefallspeed) {
1029
- if (!isNaN(data.risefallspeed[5])) this.RiseFallSpeed.M5 = data.risefallspeed[5];
1030
- }
1031
-
1032
- if (data.pledge) this.SetPledgeData(data);
1033
- if (data.year) this.SetYearData(data);
1034
-
1035
- }
1036
- }
1037
-
1038
- /////////////////////////////////////////////////////////////////////////////////////
1039
- //
1040
- //
1041
-
1042
- //股票字段枚举
1043
- var STOCK_FIELD_NAME =
1044
- {
1045
- SYMBOL: 0,
1046
- NAME: 1,
1047
- OPEN: 2,
1048
- PRICE: 3,
1049
- HIGH: 4,
1050
- LOW: 5,
1051
- YCLOSE: 6,
1052
- VOL: 7, //成交量
1053
- AMOUNT: 8, //成交金额
1054
- DATE: 9,
1055
- TIME: 10,
1056
- INCREASE: 11,
1057
- BUY5: 12, //5档买
1058
- SELL5: 13, //5挡卖
1059
- DEAL: 14, //分笔
1060
- AMPLITUDE: 15, //振幅
1061
-
1062
- MARKET_VALUE: 16, //总市值
1063
- FLOW_MARKET_VALUE: 17, //流通市值
1064
-
1065
- BOOK_RATE: 18, //委比
1066
- BOOK_DIFFER: 19, //委差
1067
-
1068
- PE: 20, //市盈率=股价/滚动EPS
1069
- PB: 21, //市净率=股价/每股净资产
1070
- EXCHANGE_RATE: 23, //换手率
1071
-
1072
- //财务数据
1073
- ROE: 24, //净资产收益率
1074
- FINANCE_DATE: 25, //报告日期
1075
- FINANCE_PERSEARNING: 26, //每股收益
1076
- FINANCE_PERNETASSET: 27, //每股净资产
1077
-
1078
- FINANCE_NPROFIT: 28, //净利润
1079
- FINANCE_NPROFITINCREASE: 29, //净利润涨幅 (当年净利润-上一年)/上一年*100
1080
-
1081
- FINANCE_NNETPROFIT: 30, //扣非净利润
1082
- FINANCE_NNPROFITINCREASE: 31, //扣非净利润涨幅 (当年扣非净利润-上一年)/上一年*100
1083
- FINANCE_NNPROFITSPEED: 32, //扣非净利润涨速(当前扣非净利润/上一年-1)/(上一年/上上年-1)
1084
- FINANCE_EPS: 33, //滚动EPS
1085
-
1086
- MAX_PRICE: 34, //涨停价
1087
- MIN_PRICE: 35, //跌停价
1088
- RISE_FALL_PRICE: 36, //涨跌额
1089
-
1090
- FINANCE_BENFORD: 37, //财务粉饰
1091
-
1092
- //1,3,5 ,10,15 分钟涨速
1093
- RISEFALLSPEED_1: 38,
1094
- RISEFALLSPEED_3: 39,
1095
- RISEFALLSPEED_5: 40,
1096
- RISEFALLSPEED_10: 41,
1097
- RISEFALLSPEED_15: 42,
1098
-
1099
- //1,3,5 ,10,15 振幅
1100
- MINUTE_AMPLITUDE_1: 43,
1101
- MINUTE_AMPLITUDE_3: 44,
1102
- MINUTE_AMPLITUDE_5: 45,
1103
- MINUTE_AMPLITUDE_10: 46,
1104
- MINUTE_AMPLITUDE_15: 47,
1105
-
1106
- //1,3,5 ,10,15 分钟 成交金额
1107
- MINUTE_AMOUNT_1: 48,
1108
- MINUTE_AMOUNT_3: 49,
1109
- MINUTE_AMOUNT_5: 50,
1110
- MINUTE_AMOUNT_10: 51,
1111
- MINUTE_AMOUNT_15: 52,
1112
-
1113
-
1114
- COMPANY_NAME: 53, //公司全称
1115
- PLATE_INDUSTRY: 54, //所属行业
1116
- PLATE_CONCEPT: 55, //概念
1117
- PLATE_REGION: 56, //地区
1118
-
1119
- COMPANY_BUSINESS: 57,
1120
- COMPANY_VOL: 58,
1121
- COMPANY_PRICE: 59,
1122
- COMPANY_RELEASEDATE: 60,
1123
- COMPANY_COMPETENCE: 61,
1124
-
1125
- PEG: 62, //市盈增长比率
1126
- FINANCE_AVERAGE_BENFORD: 63,//财务粉饰均值
1127
-
1128
- EVENT_IS_MARGIN: 64, //是否是融资融券标的
1129
- FLOW_IN:65, //资金流入
1130
- FLOW_OUT:66, //资金流出
1131
- CAPITAL_FLOW_DAY:67, //当日资金流
1132
- CAPITAL_FLOW_DAY3: 68, //3日资金流
1133
- CAPITAL_FLOW_DAY5: 69, //5日资金流
1134
- CAPITAL_FLOW_DAY10: 70, //10日资金流
1135
- DDE:71,
1136
- DDE3:72,
1137
- DDE5:73,
1138
- DDE10:74,
1139
-
1140
- INDEXTOP: 100,
1141
- WEEK: 101,
1142
- HEAT: 102,
1143
- FINANCE_PERCRESERVE: 103,
1144
- FINANCE_PCNPROFIT: 104, //归母净利润
1145
- FINANCE_PERUPROFIT: 105, //每股未分配利润
1146
- FINANCE_PERCCFO: 106, //每股经营性现金流
1147
- FINANCE_OREVENUES: 107, //营业总收入
1148
- FINANCE_MOPROFIT: 108, //主营业务利润
1149
- FINANCE_OPROFIT: 109, //营业利润
1150
- FINANCE_EXPENSES3: 110, //三项费用
1151
- FINANCE_ARECEIVABLE: 111, //应收账款
1152
- FINANCE_NCURRENTLIABILITIES: 112, //非流动负债
1153
-
1154
- FINANCE_CCFO: 113, //经营性现金流
1155
- FINANCE_TOTALASSETS: 114, //资产总计
1156
- FINANCE_TOTALLIABILITIES: 115, //负债总计
1157
- FINANCE_TOTALOWNERSEQUITY: 116, //所有者权益总计
1158
- FINANCE_CURRENTASSETS: 117, //流动资产
1159
- FINANCE_MONETARYFUNDS: 118, //货币资金
1160
- FINANCE_INVENTORY: 119, //存货
1161
- FINANCE_CURRENTLIABILITIES: 120, //流动负债
1162
-
1163
- //股权质押
1164
- PLEDGE_PROPORTION: 121, //累计质押比例%
1165
- PLEDGE_SHAREHOLDER_PROPORTION: 122, //控股股东累计质押比%(shareholder proportion)
1166
- PLEDGE_SHAREHOLDER_HELD_PROPORTION: 123, //控股股东累计质押数量占持股比例% (shareholder held proportion)
1167
- PLEDGE_VOL: 124,
1168
- PLEDGE_UNSALE_VOL: 125,
1169
- PLEDGE_SALE_VOL: 126,
1170
-
1171
- //年涨幅
1172
- YEAR_YEAR1: 130,
1173
- };
1174
-
1175
- var StockDataFieldName =
1176
- {
1177
- m_mapFiled: new Map(
1178
- [
1179
- [STOCK_FIELD_NAME.NAME, "name"],
1180
- [STOCK_FIELD_NAME.SYMBOL, 'symbol'],
1181
- [STOCK_FIELD_NAME.PRICE, 'price'],
1182
- [STOCK_FIELD_NAME.INCREASE, 'increase'],
1183
- [STOCK_FIELD_NAME.PE, 'pe'],
1184
- [STOCK_FIELD_NAME.FINANCE_BENFORD, 'finance.benford'],
1185
-
1186
- //1,3,5 ,10,15 分钟涨速
1187
- [STOCK_FIELD_NAME.RISEFALLSPEED_1, 'risefallspeed.1'],
1188
- [STOCK_FIELD_NAME.RISEFALLSPEED_3, 'risefallspeed.3'],
1189
- [STOCK_FIELD_NAME.RISEFALLSPEED_5, 'risefallspeed.5'],
1190
- [STOCK_FIELD_NAME.RISEFALLSPEED_10, 'risefallspeed.10'],
1191
- [STOCK_FIELD_NAME.RISEFALLSPEED_15, 'risefallspeed.15'],
1192
-
1193
- //1,3,5 ,10,15 振幅
1194
- [STOCK_FIELD_NAME.MINUTE_AMPLITUDE_1, 'mamplitude.1'],
1195
- [STOCK_FIELD_NAME.MINUTE_AMPLITUDE_3, 'mamplitude.3'],
1196
- [STOCK_FIELD_NAME.MINUTE_AMPLITUDE_5, 'mamplitude.5'],
1197
- [STOCK_FIELD_NAME.MINUTE_AMPLITUDE_10, 'mamplitude.10'],
1198
- [STOCK_FIELD_NAME.MINUTE_AMPLITUDE_15, 'mamplitude.15'],
1199
-
1200
- //1,3,5 ,10,15 分钟 成交金额
1201
- [STOCK_FIELD_NAME.MINUTE_AMOUNT_1, 'mamount.1'],
1202
- [STOCK_FIELD_NAME.MINUTE_AMOUNT_3, 'mamount.3'],
1203
- [STOCK_FIELD_NAME.MINUTE_AMOUNT_5, 'mamount.5'],
1204
- [STOCK_FIELD_NAME.MINUTE_AMOUNT_10, 'mamount.10'],
1205
- [STOCK_FIELD_NAME.MINUTE_AMOUNT_15, 'mamount.15'],
1206
-
1207
- //股权质押
1208
- [STOCK_FIELD_NAME.PLEDGE_PROPORTION, 'pledge.prop'], //累计质押比例%
1209
- [STOCK_FIELD_NAME.PLEDGE_SHAREHOLDER_PROPORTION, 'pledge.shprop'], //控股股东累计质押比%(shareholder proportion)
1210
- [STOCK_FIELD_NAME.PLEDGE_SHAREHOLDER_HELD_PROPORTION, 'pledge.shheldeprop'], //控股股东累计质押数量占持股比例% (shareholder held proportion)
1211
- [STOCK_FIELD_NAME.PLEDGE_VOL, 'pledge.vol'],
1212
- [STOCK_FIELD_NAME.PLEDGE_UNSALE_VOL, 'pledge.unsalevol'],
1213
- [STOCK_FIELD_NAME.PLEDGE_SALE_VOL, 'pledge.salevol'],
1214
-
1215
- //年涨幅
1216
- [STOCK_FIELD_NAME.YEAR_YEAR1, 'year.year1'],
1217
- ]
1218
- ),
1219
-
1220
- GetFieldName: function (fieldID) {
1221
- if (!this.m_mapFiled.has(fieldID)) return null;
1222
-
1223
- return this.m_mapFiled.get(fieldID);
1224
- }
1225
- }
1226
-
1227
-
1228
- function StockRead(stock, tagID) {
1229
- this.JSStock = stock;
1230
- this.TagID = tagID;
1231
-
1232
- this.Get = function (symbol, field) {
1233
- var data = stock.Get(symbol, this.TagID);
1234
- if (!data) return null;
1235
-
1236
- switch (field) {
1237
- case STOCK_FIELD_NAME.SYMBOL:
1238
- return data.Symbol;
1239
- case STOCK_FIELD_NAME.NAME:
1240
- return data.Name;
1241
- case STOCK_FIELD_NAME.OPEN:
1242
- return data.Open;
1243
- case STOCK_FIELD_NAME.PRICE:
1244
- return data.Price;
1245
- case STOCK_FIELD_NAME.YCLOSE:
1246
- return data.YClose;
1247
- case STOCK_FIELD_NAME.HIGH:
1248
- return data.High;
1249
- case STOCK_FIELD_NAME.LOW:
1250
- return data.Low;
1251
- case STOCK_FIELD_NAME.VOL:
1252
- return data.Vol;
1253
- case STOCK_FIELD_NAME.AMOUNT:
1254
- return data.Amount;
1255
- case STOCK_FIELD_NAME.DATE:
1256
- return data.Date;
1257
- case STOCK_FIELD_NAME.TIME:
1258
- return data.Time;
1259
- case STOCK_FIELD_NAME.INCREASE:
1260
- return data.Increase;
1261
- case STOCK_FIELD_NAME.EXCHANGE_RATE:
1262
- return data.ExchangeRate;
1263
- case STOCK_FIELD_NAME.AMPLITUDE:
1264
- return data.Amplitude;
1265
- case STOCK_FIELD_NAME.MAX_PRICE:
1266
- return data.MaxPrice;
1267
- case STOCK_FIELD_NAME.MIN_PRICE:
1268
- return data.MinPrice;
1269
- case STOCK_FIELD_NAME.RISE_FALL_PRICE:
1270
- return data.RFPrice;
1271
-
1272
- case STOCK_FIELD_NAME.INDEXTOP:
1273
- return data.IndexTop;
1274
- case STOCK_FIELD_NAME.WEEK:
1275
- return data.Week;
1276
- case STOCK_FIELD_NAME.HEAT:
1277
- return data.GetHeatData(this.TagID);
1278
- case STOCK_FIELD_NAME.BUY5:
1279
- return data.GetBuy5(this.TagID);
1280
- case STOCK_FIELD_NAME.SELL5:
1281
- return data.GetSell5(this.TagID);
1282
- case STOCK_FIELD_NAME.DEAL:
1283
- return data.GetDeal(this.TagID);
1284
-
1285
- //实时计算的衍生数据
1286
- case STOCK_FIELD_NAME.MARKET_VALUE:
1287
- case STOCK_FIELD_NAME.FLOW_MARKET_VALUE:
1288
- case STOCK_FIELD_NAME.BOOK_RATE:
1289
- case STOCK_FIELD_NAME.BOOK_DIFFER:
1290
- case STOCK_FIELD_NAME.PE:
1291
- case STOCK_FIELD_NAME.PB:
1292
- case STOCK_FIELD_NAME.FLOW_IN:
1293
- case STOCK_FIELD_NAME.FLOW_OUT:
1294
- return data.GetDerivative(this.TagID, field);
1295
-
1296
- //财务数据
1297
- case STOCK_FIELD_NAME.ROE:
1298
- case STOCK_FIELD_NAME.PEG:
1299
- case STOCK_FIELD_NAME.FINANCE_DATE:
1300
- case STOCK_FIELD_NAME.FINANCE_PERSEARNING:
1301
- case STOCK_FIELD_NAME.FINANCE_PERNETASSET:
1302
- case STOCK_FIELD_NAME.FINANCE_NPROFIT:
1303
- case STOCK_FIELD_NAME.FINANCE_NPROFITINCREASE:
1304
- case STOCK_FIELD_NAME.FINANCE_NNETPROFIT:
1305
- case STOCK_FIELD_NAME.FINANCE_NNPROFITINCREASE:
1306
- case STOCK_FIELD_NAME.FINANCE_NNPROFITSPEED:
1307
- case STOCK_FIELD_NAME.FINANCE_EPS:
1308
- case STOCK_FIELD_NAME.FINANCE_BENFORD:
1309
- case STOCK_FIELD_NAME.FINANCE_AVERAGE_BENFORD:
1310
- return data.GetFinance(this.TagID, field);
1311
-
1312
- //行业分类
1313
- case STOCK_FIELD_NAME.PLATE_INDUSTRY:
1314
- case STOCK_FIELD_NAME.PLATE_CONCEPT:
1315
- case STOCK_FIELD_NAME.PLATE_REGION:
1316
- return data.GetPlate(this.TagID, field);
1317
-
1318
- case STOCK_FIELD_NAME.COMPANY_NAME:
1319
- case STOCK_FIELD_NAME.COMPANY_BUSINESS:
1320
- case STOCK_FIELD_NAME.COMPANY_VOL:
1321
- case STOCK_FIELD_NAME.COMPANY_PRICE:
1322
- case STOCK_FIELD_NAME.COMPANY_RELEASEDATE:
1323
- case STOCK_FIELD_NAME.COMPANY_COMPETENCE:
1324
- return data.GetCompany(this.TagID, field);
1325
-
1326
- case STOCK_FIELD_NAME.FINANCE_PERCRESERVE:
1327
- case STOCK_FIELD_NAME.FINANCE_PERUPROFIT:
1328
- case STOCK_FIELD_NAME.FINANCE_PERCCFO:
1329
- case STOCK_FIELD_NAME.FINANCE_OREVENUES:
1330
- case STOCK_FIELD_NAME.FINANCE_MOPROFIT:
1331
- case STOCK_FIELD_NAME.FINANCE_OPROFIT:
1332
- case STOCK_FIELD_NAME.FINANCE_GROSSMARGIN:
1333
- case STOCK_FIELD_NAME.FINANCE_ARECEIVABLE:
1334
- case STOCK_FIELD_NAME.FINANCE_FINANCIALCOST:
1335
- case STOCK_FIELD_NAME.FINANCE_CCFO:
1336
- case STOCK_FIELD_NAME.FINANCE_TOTALASSETS:
1337
- case STOCK_FIELD_NAME.FINANCE_TOTALLIABILITIES:
1338
- case STOCK_FIELD_NAME.FINANCE_TOTALOWNERSEQUITY:
1339
- case STOCK_FIELD_NAME.FINANCE_CURRENTASSETS:
1340
- case STOCK_FIELD_NAME.FINANCE_MONETARYFUNDS:
1341
- case STOCK_FIELD_NAME.FINANCE_INVENTORY:
1342
- case STOCK_FIELD_NAME.FINANCE_CURRENTLIABILITIES:
1343
- case STOCK_FIELD_NAME.FINANCE_NCURRENTLIABILITIES:
1344
- case STOCK_FIELD_NAME.FINANCE_EXPENSES3:
1345
- case STOCK_FIELD_NAME.FINANCE_PCNPROFIT:
1346
- // console.log(data.GetFinanceDetail(this.TagID, field),'data.GetFinanceDetail(this.TagID, field)')
1347
- return data.GetFinanceDetail(this.TagID, field);
1348
-
1349
- //股权质押
1350
- case STOCK_FIELD_NAME.PLEDGE_PROPORTION:
1351
- case STOCK_FIELD_NAME.PLEDGE_SHAREHOLDER_PROPORTION:
1352
- case STOCK_FIELD_NAME.PLEDGE_SHAREHOLDER_HELD_PROPORTION:
1353
- return data.GetPledge(this.TagID, field);
1354
-
1355
- //事件 属性
1356
- case STOCK_FIELD_NAME.EVENT_IS_MARGIN:
1357
- return data.GetEvent(this.TagID, field);
1358
-
1359
- //年涨幅
1360
- case STOCK_FIELD_NAME.YEAR_YEAR1:
1361
- return data.GetYear(this.TagID, field);
1362
-
1363
- //资金流
1364
- case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY:
1365
- case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY3:
1366
- case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY5:
1367
- case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY10:
1368
- return data.GetCapitalFlowDay(this.TagID, field);
1369
- //DDE
1370
- case STOCK_FIELD_NAME.DDE:
1371
- case STOCK_FIELD_NAME.DDE3:
1372
- case STOCK_FIELD_NAME.DDE5:
1373
- case STOCK_FIELD_NAME.DDE10:
1374
- return data.GetDDE(this.TagID, field);
1375
-
1376
- default:
1377
- return null;
1378
- }
1379
- }
1380
-
1381
- //symbol=指数或板块 field=排序字段 order=排序方式
1382
- this.GetSort = function (symbol, field, order) {
1383
- var data = stock.Get(symbol, this.TagID);
1384
- if (data == null) return data;
1385
-
1386
- return data.GetSortData(this.TagID, field, order);
1387
- }
1388
-
1389
- //读取完成 isUpdate 是否马上更新数据
1390
- this.EndRead = function (isUpdate) {
1391
- if (isUpdate == true) this.JSStock.ReqeustData();
1392
- }
1393
-
1394
- //批量设置查询数据字段
1395
- this.SetQueryField=function(symbol, aryField)
1396
- {
1397
- for(var i in aryField)
1398
- {
1399
- this.Get(symbol,aryField[i])
1400
- }
1401
- }
1402
- }
1403
-
1404
- //初始化
1405
- JSStock.Init = function () {
1406
- var stock = new JSStock();
1407
- return stock;
1408
- }
1409
-
1410
- JSStock.SetDomain = function (domain, cacheDomain) {
1411
- if (domain) g_JSStockResource.Domain = domain;
1412
- if (cacheDomain) g_JSStockResource.CacheDomain = cacheDomain;
1413
- }
1414
-
1415
- //获取股票搜索类
1416
- JSStock.GetSearchStock = function (callback) {
1417
- return new SearchStock(callback);
1418
- }
1419
-
1420
- //板块成员
1421
- JSStock.GetBlockMember = function (symbol) {
1422
- return new BlockMember(symbol);
1423
- }
1424
-
1425
- JSStock.GetShortTerm = function (symbol) {
1426
- return new ShortTerm(symbol);
1427
- }
1428
-
1429
- JSStock.GetBlockTop = function () {
1430
- return new BlockTop();
1431
- }
1432
-
1433
- JSStock.GetStockHistory = function () {
1434
- return new JSStockHistory();
1435
- }
1436
-
1437
- JSStock.GetIndexIncrease = function (symbols, startTime, endTime) {
1438
- return new IndexIncrease(symbols, startTime, endTime);
1439
- }
1440
-
1441
- JSStock.GetPledgeDetail = function (symbol, startDate, endDate) {
1442
- return new PledgeDetail(symbol, startDate, endDate);
1443
- }
1444
-
1445
- JSStock.GetPolicyList=function()
1446
- {
1447
- return new PolicyList();
1448
- }
1449
-
1450
- JSStock.GetPolicyDetail=function()
1451
- {
1452
- return new PolicyDetail();
1453
- }
1454
-
1455
- JSStock.GetAnalylisPlate = function () {
1456
- return new AnalylisPlate();
1457
- }
1458
-
1459
- JSStock.GetHotWord = function(){
1460
- return new HotWord();
1461
- }
1462
-
1463
- JSStock.GetFinanceIndicators = function(){
1464
- return new financeIndicators();
1465
- }
1466
-
1467
-
1468
- var RECV_DATA_TYPE =
1469
- {
1470
- BASE_DATA: 1, //股票行情基础数据
1471
- INDEX_BASE_DATA: 2, //指数行情基础数据(包含 涨跌家数)
1472
- HEAT_DATA: 3, //热度数据
1473
- SORT_DATA: 4, //排序数据
1474
- BUY_SELL_DATA: 5, //买卖盘数据
1475
- DEAL_DATA: 6, //分笔数据
1476
- DERIVATIVE_DATA: 7, //实时衍生数据
1477
- FINANCE_DATA: 8, //财务数据
1478
- SEARCH_STOCK_DATA: 9,//股票搜索
1479
-
1480
- SELF_STOCK_DATA: 10, //自选股数据
1481
- LOGON_DATA: 11, //登陆信息
1482
- BLOCK_MEMBER_DATA: 12, //板块成员
1483
- SHORT_TERM_DATA: 13, //短线精灵
1484
- BLOCK_TOP_DATA: 14,
1485
- COMPANY_DATA: 15, //个股资料
1486
- PLATE_DATA: 16, //板块(行业 概念 地区)
1487
-
1488
- INDEX_COMPARE: 17, //指数对比
1489
- FINANCE_DETAIL_DATA: 18,
1490
- PLEDGE_DATA: 19, //股权质押
1491
- EVENT_DATA: 20, //事件 属性数据
1492
-
1493
- POLICY_LIST_DATA:21, //策略列表信息
1494
- POLICY_DETAIL_DATA:22, //单个策略股票列表
1495
-
1496
- //资金流
1497
- CAPITAL_FLOW_DAY_DATA:23,
1498
- CAPITAL_FLOW_DAY3_DATA:24,
1499
- CAPITAL_FLOW_DAY5_DATA:25,
1500
- CAPITAL_FLOW_DAY10_DATA:26,
1501
- //DDE
1502
- DDE_DAY_DATA:27,
1503
- DDE_DAY3_DATA:28,
1504
- DDE_DAY5_DATA:29,
1505
- DDE_DAY10_DATA:30,
1506
- }
1507
-
1508
- function JSStock() {
1509
- this.MapStock = new Map(); //key=symbol, value=StockData
1510
- this.MapTagCallback = new Map(); //callback(tagID,arySymbol(更新的股票代码),dataType,this)
1511
- this.RequestVersion = new Array([100, 100, 100]);
1512
-
1513
- this.RealtimeApiUrl = g_JSStockResource.Domain + "/API/Stock";
1514
- this.PlateQuadrantApiUrl = g_JSStockResource.Domain + "/API/StockPlateQuadrant"; //热度api
1515
-
1516
- this.IsAutoUpdate = true;
1517
- this.AutoUpateTimeout = 15000; //更新频率
1518
- this.Timeout;
1519
- this.End = 50;
1520
-
1521
- this.Stop = function () {
1522
- // console.log("[JSStock::Stop] stop update.")
1523
- this.IsAutoUpdate = false;
1524
- if (this.Timeout) clearTimeout(this.Timeout); //清空定时器
1525
- }
1526
-
1527
- this.Start = function () {
1528
- // console.log("[JSStock::Start] start auto update.");
1529
- this.IsAutoUpdate = true;
1530
- this.ReqeustData();
1531
- }
1532
-
1533
- this.GetStockRead = function (tagID, callback, isDelete) {
1534
-
1535
- if (isDelete===true)
1536
- {
1537
- for (var item of this.MapStock)
1538
- {
1539
- item[1].RemoveTagID(tagID);
1540
- }
1541
- }
1542
- for(var item of this.MapStock)
1543
- {
1544
- item[1].RemoveTagID(tagID);
1545
- }
1546
-
1547
- this.MapTagCallback.set(tagID,callback);
1548
-
1549
- // if (callback) this.MapTagCallback.set(tagID, callback);
1550
-
1551
- var read = new StockRead(this, tagID);
1552
- return read;
1553
- }
1554
-
1555
- //取消某一个控件订阅的股票推送
1556
- this.Unsubscribe = function (tagID) {
1557
- for (var item of this.MapStock) {
1558
- item[1].RemoveTagID(tagID);
1559
- }
1560
- }
1561
-
1562
- //获取一个股票
1563
- this.Get = function (symbol, tagID) {
1564
- if (!this.MapStock.has(symbol)) {
1565
- this.MapStock.set(symbol, new StockData(symbol));
1566
- }
1567
-
1568
- var data = this.MapStock.get(symbol);
1569
- if (tagID) data.AttachTagID(tagID);
1570
- return data;
1571
- }
1572
-
1573
- this.ReqeustData = function () {
1574
- var arySymbol = new Array(); //股票
1575
- var aryIndex = new Array(); //指数
1576
- var aryHeat = new Array(); //热度
1577
- var aryBuySell = new Array(); //5当买卖盘
1578
- var aryDeal = new Array(); //分笔
1579
- var aryDerivative = new Array(); //实时衍生数据
1580
- var aryFinance = new Array(); //财务数据
1581
- var aryCompany = new Array(); //公司资料
1582
- var aryPlate = new Array(); //板块(行业 概念 地址)
1583
- var aryFinanceDetail = new Array();
1584
- var aryPledge = new Array();
1585
- var aryEvent = new Array();
1586
- var aryYear = new Array();//年涨幅
1587
- var aryFlow = [], aryFlow3 = [], aryFlow5 = [], aryFlow10=[];
1588
- var aryDDE=[], aryDDE3=[], aryDDE5=[], aryDDE10=[];
1589
-
1590
- // console.log("this.MapStock", this.MapStock);
1591
-
1592
- for (var item of this.MapStock) {
1593
- if (item[1].BuySellTagID.size > 0) {
1594
- aryBuySell.push(item[0]);
1595
- }
1596
- else {
1597
- if (IsIndexSymbol(item[0]))
1598
- aryIndex.push(item[0]);
1599
- else
1600
- arySymbol.push(item[0]);
1601
- }
1602
-
1603
- if (item[1].CapitalFlowDayID.size > 0) aryFlow.push(item[0]);
1604
- if (item[1].CapitalFlowDay3ID.size > 0) aryFlow3.push(item[0]);
1605
- if (item[1].CapitalFlowDay5ID.size > 0) aryFlow5.push(item[0]);
1606
- if (item[1].CapitalFlowDay10ID.size > 0) aryFlow10.push(item[0]);
1607
-
1608
- if (item[1].DDEID.size > 0) aryDDE.push(item[0]);
1609
- if (item[1].DDE3ID.size > 0) aryDDE3.push(item[0]);
1610
- if (item[1].DDE5ID.size > 0) aryDDE5.push(item[0]);
1611
- if (item[1].DDE10ID.size > 0) aryDDE10.push(item[0]);
1612
-
1613
- if (item[1].HeatTagID.size > 0)
1614
- aryHeat.push(item[0])
1615
-
1616
- if (item[1].DealTagID.size > 0)
1617
- aryDeal.push(item[0]);
1618
-
1619
- if (item[1].DerivativeTagID.size > 0)
1620
- aryDerivative.push(item[0]);
1621
-
1622
- if (item[1].Finance == null && item[1].FinanceTagID.size > 0)
1623
- aryFinance.push(item[0]);
1624
-
1625
- if (item[1].Company == null && item[1].CompanyTagID.size > 0)
1626
- aryCompany.push(item[0]);
1627
-
1628
- if (item[1].Plate == null && item[1].PlateTagID.size > 0)
1629
- aryPlate.push(item[0]);
1630
-
1631
- if (item[1].FinanceDetail == null && item[1].FinanceDetailTagID.size > 0)
1632
- aryFinanceDetail.push(item[0]);
1633
-
1634
- if (item[1].Pledge == null && item[1].PledgeTagID.size > 0)
1635
- aryPledge.push(item[0]);
1636
-
1637
- if (item[1].Event == null && item[1].EventTagID.size > 0)
1638
- aryEvent.push(item[0]);
1639
-
1640
- if (item[1].Year == null && item[1].YearTagID.size > 0)
1641
- aryYear.push(item[0]);
1642
- }
1643
-
1644
- if (aryBuySell.length > 0) this.RequestBuySellData(aryBuySell);
1645
- if (arySymbol.length > 0) this.RequestBaseData(arySymbol);
1646
- if (aryIndex.length > 0) this.RequestIndexBaseData(aryIndex);
1647
- if (aryHeat.length > 0) this.RequestIndexHeatData(aryHeat);
1648
- if (aryDeal.length > 0) this.RequestDealData(aryDeal);
1649
- if (aryDerivative.length > 0) this.RequestDerivativeData(aryDerivative);
1650
- if (aryFinance.length > 0) this.RequestFinanceData(aryFinance);
1651
- if (aryCompany.length > 0) this.RequestCompanyData(aryCompany);
1652
- if (aryPlate.length > 0) this.RequestPlateData(aryPlate);
1653
- if (aryFinanceDetail.length > 0) this.RequestFinanceDetailData(aryFinanceDetail);
1654
- if (aryPledge.length > 0) this.RequestPledgeData(aryPledge);
1655
- if (aryEvent.length > 0) this.RequestEventData(aryEvent);
1656
- if (aryYear.length > 0) this.RequestPledgeData(aryYear);
1657
-
1658
- if (aryFlow.length > 0) this.RequestSubDocumentData(aryFlow, 'flowday');
1659
- if (aryFlow3.length > 0) this.RequestSubDocumentData(aryFlow3, 'flowday3');
1660
- if (aryFlow5.length > 0) this.RequestSubDocumentData(aryFlow5, 'flowday5');
1661
- if (aryFlow10.length > 0) this.RequestSubDocumentData(aryFlow10, 'flowday10');
1662
- if (aryDDE.length > 0) this.RequestSubDocumentData(aryDDE, 'dde');
1663
- if (aryDDE3.length > 0) this.RequestSubDocumentData(aryDDE3, 'dde3');
1664
- if (aryDDE5.length > 0) this.RequestSubDocumentData(aryDDE5, 'dde5');
1665
- if (aryDDE10.length > 0) this.RequestSubDocumentData(aryDDE10, 'dde10');
1666
-
1667
-
1668
- this.ReqeustAllSortData(); //成分排序
1669
- }
1670
- this.RequestData = this.ReqeustData;
1671
- //请求基础数据
1672
- this.RequestBaseData = function (arySymbol) {
1673
- var self = this;
1674
-
1675
- wx.request({
1676
- url: this.RealtimeApiUrl,
1677
- data: {
1678
- "field": [
1679
- "name",
1680
- "symbol",
1681
- "yclose",
1682
- "open",
1683
- "price",
1684
- "high",
1685
- "low",
1686
- "vol",
1687
- "amount",
1688
- "date",
1689
- "time",
1690
- "week",
1691
- "increase",
1692
- "exchangerate",
1693
- "amplitude",
1694
- ],
1695
- "symbol": arySymbol,
1696
- "start": 0,
1697
- "end": self.End
1698
- },
1699
- method: 'POST',
1700
- dataType: "json",
1701
- success: function (data) {
1702
- self.RecvData(data, RECV_DATA_TYPE.BASE_DATA);
1703
- },
1704
- error: function (request) {
1705
- self.RecvError(request, RECV_DATA_TYPE.BASE_DATA);
1706
- }
1707
- });
1708
- }
1709
-
1710
- //请求实时衍生数据
1711
- this.RequestDerivativeData = function (arySymbol) {
1712
- var self = this;
1713
-
1714
- wx.request({
1715
- url: this.RealtimeApiUrl,
1716
- data: {
1717
- "field": [
1718
- "name",
1719
- "symbol",
1720
- "marketvalue",
1721
- "flowmarketvalue",
1722
- "pe",
1723
- "pb",
1724
- "bookrate",
1725
- "bookdiffer",
1726
- 'flowin',
1727
- 'flowout',
1728
- ],
1729
- "symbol": arySymbol,
1730
- "start": 0,
1731
- "end": 50
1732
- },
1733
- method: 'POST',
1734
- dataType: "json",
1735
- success: function (data) {
1736
- self.RecvData(data, RECV_DATA_TYPE.DERIVATIVE_DATA);
1737
- },
1738
- error: function (request) {
1739
- self.RecvError(request, RECV_DATA_TYPE.DERIVATIVE_DATA);
1740
- }
1741
- });
1742
- }
1743
-
1744
- //请求财务数据
1745
- this.RequestFinanceData = function (arySymbol) {
1746
- var self = this;
1747
-
1748
- wx.request({
1749
- url: this.RealtimeApiUrl,
1750
- data: {
1751
- "field": [
1752
- "name",
1753
- "symbol",
1754
- "roe",
1755
- "peg",
1756
- "finance"
1757
- ],
1758
- "symbol": arySymbol,
1759
- "start": 0,
1760
- "end": 50
1761
- },
1762
- method: 'POST',
1763
- dataType: "json",
1764
- success: function (data) {
1765
- console.log(data, "data财务")
1766
- self.RecvData(data, RECV_DATA_TYPE.FINANCE_DATA);
1767
- },
1768
- error: function (request) {
1769
- self.RecvError(request, RECV_DATA_TYPE.FINANCE_DATA);
1770
- }
1771
- });
1772
- }
1773
-
1774
- //请求财务数据
1775
- this.RequestFinanceDetailData = function (arySymbol) {
1776
- var self = this;
1777
-
1778
- wx.request({
1779
- url: this.RealtimeApiUrl,
1780
- data: {
1781
- "field": [
1782
- "name",
1783
- "symbol",
1784
- "roe",
1785
- "finance"
1786
- ],
1787
- "symbol": arySymbol,
1788
- "start": 0,
1789
- "end": 50
1790
- },
1791
- method: 'POST',
1792
- dataType: "json",
1793
- success: function (data) {
1794
- // console.log(data,'financeDetail')
1795
- self.RecvData(data, RECV_DATA_TYPE.FINANCE_DETAIL_DATA);
1796
- },
1797
- error: function (request) {
1798
- self.RecvError(request, RECV_DATA_TYPE.FINANCE_DETAIL_DATA);
1799
- }
1800
- });
1801
- }
1802
-
1803
- //股权质押
1804
- this.RequestPledgeData = function (arySymbol) {
1805
- var self = this;
1806
-
1807
- wx.request({
1808
- url: this.RealtimeApiUrl,
1809
- data: {
1810
- "field": [
1811
- "symbol",
1812
- "pledge",
1813
- ],
1814
- "symbol": arySymbol,
1815
- "start": 0,
1816
- "end": 50
1817
- },
1818
- method: 'POST',
1819
- dataType: "json",
1820
- success: function (data) {
1821
- self.RecvData(data, RECV_DATA_TYPE.PLEDGE_DATA);
1822
- },
1823
- error: function (request) {
1824
- self.RecvError(request, RECV_DATA_TYPE.PLEDGE_DATA);
1825
- }
1826
- });
1827
- }
1828
-
1829
- //资金流
1830
- this.RequestSubDocumentData = function (arySymbol, id)
1831
- {
1832
- var self = this;
1833
- const mapDay = new Map([
1834
- ['flowday', { Field: 'flowday', RecvID: RECV_DATA_TYPE.CAPITAL_FLOW_DAY_DATA}],
1835
- ['flowday3', { Field: 'flowday3', RecvID: RECV_DATA_TYPE.CAPITAL_FLOW_DAY3_DATA }],
1836
- ['flowday5', { Field: 'flowday5', RecvID: RECV_DATA_TYPE.CAPITAL_FLOW_DAY5_DATA }],
1837
- ['flowday10', { Field: 'flowday10', RecvID: RECV_DATA_TYPE.CAPITAL_FLOW_DAY10_DATA }],
1838
- ['dde', { Field: 'dde', RecvID: RECV_DATA_TYPE.DDE_DAY_DATA }],
1839
- ['dde3', { Field: 'dde3', RecvID: RECV_DATA_TYPE.DDE_DAY3_DATA }],
1840
- ['dde5', { Field: 'dde5', RecvID: RECV_DATA_TYPE.DDE_DAY5_DATA }],
1841
- ['dde10', { Field: 'dde10', RecvID: RECV_DATA_TYPE.DDE_DAY10_DATA }],
1842
- ]);
1843
-
1844
- if (!mapDay.has(id)) return;
1845
- var value = mapDay.get(id);
1846
-
1847
- wx.request({
1848
- url: this.RealtimeApiUrl,
1849
- data: {
1850
- "field": [
1851
- "symbol",
1852
- value.Field,
1853
- ],
1854
- "symbol": arySymbol,
1855
- "start": 0,
1856
- "end": 50
1857
- },
1858
- method: 'POST',
1859
- dataType: "json",
1860
- success: function (data) {
1861
- self.RecvData(data, value.RecvID);
1862
- },
1863
- error: function (request) {
1864
- self.RecvError(request, value.RecvID);
1865
- }
1866
- });
1867
- }
1868
-
1869
- this.RequestEventData = function (arySymbol) {
1870
- var self = this;
1871
-
1872
- wx.request({
1873
- url: this.RealtimeApiUrl,
1874
- data: {
1875
- "field": [
1876
- "symbol",
1877
- "events.margin","events.shhk","events.hk","events.st",'events.hksymbol','events.hkname','events.szhk'
1878
- ],
1879
- "symbol": arySymbol,
1880
- "start": 0,
1881
- "end": 50
1882
- },
1883
- method: 'POST',
1884
- dataType: "json",
1885
- success: function (data) {
1886
- self.RecvData(data, RECV_DATA_TYPE.EVENT_DATA);
1887
- },
1888
- error: function (request) {
1889
- self.RecvError(request, RECV_DATA_TYPE.EVENT_DATA);
1890
- }
1891
- });
1892
- }
1893
-
1894
-
1895
- this.RequestCompanyData = function (arySymbol) {
1896
- var self = this;
1897
-
1898
- wx.request({
1899
- url: this.RealtimeApiUrl,
1900
- data: {
1901
- "field": [
1902
- "name",
1903
- "symbol",
1904
- "company",
1905
- ],
1906
- "symbol": arySymbol,
1907
- "start": 0,
1908
- "end": 50
1909
- },
1910
- method: 'POST',
1911
- dataType: "json",
1912
- success: function (data) {
1913
- self.RecvData(data, RECV_DATA_TYPE.COMPANY_DATA);
1914
- },
1915
- error: function (request) {
1916
- self.RecvError(request, RECV_DATA_TYPE.COMPANY_DATA);
1917
- }
1918
- });
1919
- }
1920
-
1921
- this.RequestPlateData = function (arySymbol) {
1922
- var self = this;
1923
-
1924
- wx.request({
1925
- url: this.RealtimeApiUrl,
1926
- data: {
1927
- "field": [
1928
- "name",
1929
- "symbol",
1930
- "industry",
1931
- "region",
1932
- "concept",
1933
- ],
1934
- "symbol": arySymbol,
1935
- "start": 0,
1936
- "end": 50
1937
- },
1938
- method: 'POST',
1939
- dataType: "json",
1940
- success: function (data) {
1941
- self.RecvData(data, RECV_DATA_TYPE.PLATE_DATA);
1942
- },
1943
- error: function (request) {
1944
- self.RecvError(request, RECV_DATA_TYPE.PLATE_DATA);
1945
- }
1946
- });
1947
- }
1948
-
1949
-
1950
- //请求买卖盘
1951
- this.RequestBuySellData = function (arySymbol) {
1952
- var self = this;
1953
-
1954
- wx.request({
1955
- url: this.RealtimeApiUrl,
1956
- data: {
1957
- "field": [
1958
- "name",
1959
- "symbol",
1960
- "yclose",
1961
- "open",
1962
- "price",
1963
- "high",
1964
- "low",
1965
- "vol",
1966
- "amount",
1967
- "date",
1968
- "time",
1969
- "week",
1970
- "increase",
1971
- "buy",
1972
- "sell",
1973
- "exchangerate",
1974
- "amplitude"
1975
- ],
1976
- "symbol": arySymbol,
1977
- },
1978
- method: 'POST',
1979
- dataType: "json",
1980
- success: function (data) {
1981
- self.RecvData(data, RECV_DATA_TYPE.BUY_SELL_DATA);
1982
- },
1983
- error: function (request) {
1984
- self.RecvError(request, RECV_DATA_TYPE.BUY_SELL_DATA);
1985
- }
1986
- });
1987
- }
1988
-
1989
- //请求分笔
1990
- this.RequestDealData = function (arySymbol) {
1991
- var self = this;
1992
-
1993
- wx.request({
1994
- url: this.RealtimeApiUrl,
1995
- data: {
1996
- "field": [
1997
- "name",
1998
- "symbol",
1999
- "price",
2000
- "high",
2001
- "low",
2002
- "vol",
2003
- "amount",
2004
- "date",
2005
- "time",
2006
- "increase",
2007
- "deal",
2008
- ],
2009
- "symbol": arySymbol,
2010
- },
2011
- method: 'POST',
2012
- dataType: "json",
2013
- success: function (data) {
2014
- self.RecvData(data, RECV_DATA_TYPE.DEAL_DATA);
2015
- },
2016
- error: function (request) {
2017
- self.RecvError(request, RECV_DATA_TYPE.DEAL_DATA);
2018
- }
2019
- });
2020
- }
2021
-
2022
- //指数基础数据(包含上涨下跌家数)
2023
- this.RequestIndexBaseData = function (arySymbol) {
2024
- var self = this;
2025
-
2026
- wx.request({
2027
- url: this.RealtimeApiUrl,
2028
- data: {
2029
- "field": [
2030
- "name",
2031
- "symbol",
2032
- "yclose",
2033
- "open",
2034
- "price",
2035
- "high",
2036
- "low",
2037
- "vol",
2038
- "amount",
2039
- "date",
2040
- "time",
2041
- "week",
2042
- "indextop",
2043
- "increase"
2044
- ],
2045
- "symbol": arySymbol,
2046
- "start": 0,
2047
- "end": 50
2048
- },
2049
- method: 'POST',
2050
- dataType: "json",
2051
- success: function (data) {
2052
- // console.log(data,"dataaaaaa")
2053
- if (data.data.code != 0) {
2054
- wx.showModal({
2055
- title: '提示',
2056
- content: data.data.message,
2057
- })
2058
- return;
2059
- }
2060
- self.RecvData(data, RECV_DATA_TYPE.INDEX_BASE_DATA);
2061
- },
2062
- error: function (request) {
2063
- self.RecvError(request, RECV_DATA_TYPE.INDEX_BASE_DATA);
2064
- }
2065
- });
2066
- }
2067
-
2068
- //热度
2069
- this.RequestIndexHeatData = function (arySymbol) {
2070
- var self = this;
2071
-
2072
- wx.request({
2073
- url: this.PlateQuadrantApiUrl,
2074
- data: {
2075
- "plate": arySymbol,
2076
- },
2077
- method: 'POST',
2078
- success: function (res) {
2079
- self.RecvData(res.data, RECV_DATA_TYPE.HEAT_DATA);
2080
- },
2081
- fail: function (request) {
2082
- self.RecvError(request, RECV_DATA_TYPE.HEAT_DATA);
2083
- }
2084
- })
2085
- // $.ajax({
2086
- // url: this.PlateQuadrantApiUrl,
2087
- // data:
2088
- // {
2089
- // "plate": arySymbol,
2090
- // },
2091
- // type: "post",
2092
- // dataType: "json",
2093
- // async: true,
2094
- // success: function (data) {
2095
- // self.RecvData(data, RECV_DATA_TYPE.HEAT_DATA);
2096
- // },
2097
- // error: function (request) {
2098
- // self.RecvError(request, RECV_DATA_TYPE.HEAT_DATA);
2099
- // }
2100
- // });
2101
- }
2102
-
2103
- //排序
2104
- this.ReqeustAllSortData = function () {
2105
- var arySort = new Array();
2106
- for (var item of this.MapStock) {
2107
- if (!IsIndexSymbol(item[0])) continue;
2108
- if (item[1].Sort == null || item[1].Sort.size <= 0) continue;
2109
-
2110
- for (var sortItem of item[1].Sort) {
2111
- var sortData = sortItem[1];
2112
- var data = {
2113
- "Plate": item[0],
2114
- "SortField": sortData.SortField,
2115
- "Order": sortData.Order,
2116
- "TagID": sortData.TagID
2117
- };
2118
- arySort.push(data);
2119
- }
2120
- }
2121
-
2122
- for (var i in arySort) {
2123
- var sortItem = arySort[i];
2124
- this.ReqeustSortData(sortItem);
2125
- }
2126
- }
2127
-
2128
- this.ReqeustSortData = function (sortItem) {
2129
- var self = this;
2130
- var sortData = sortItem;
2131
- var sortFiled = "";
2132
-
2133
- //字段id 转换成字段名字
2134
- switch (sortData.SortField) {
2135
- case STOCK_FIELD_NAME.INCREASE:
2136
- sortFiled = 'increase';
2137
- break;
2138
- case STOCK_FIELD_NAME.PRICE:
2139
- sortFiled = 'price';
2140
- break;
2141
- default:
2142
- return;
2143
- }
2144
-
2145
- $.ajax({
2146
- url: this.RealtimeApiUrl,
2147
- data: {
2148
- "field": [
2149
- "name",
2150
- "symbol",
2151
- "yclose",
2152
- "open",
2153
- "price",
2154
- "high",
2155
- "low",
2156
- "vol",
2157
- "amount",
2158
- "date",
2159
- "time",
2160
- "week",
2161
- "increase",
2162
- "exchangerate"
2163
- ],
2164
- "plate": [sortItem.Plate],
2165
- "orderfield": sortFiled,
2166
- "order": sortItem.Order,
2167
- "ordernull": 1, //过滤null字段
2168
- "filterstop": 1 //过滤掉停牌数据
2169
- },
2170
- type: "post",
2171
- dataType: "json",
2172
- async: true,
2173
- success: function (data) {
2174
- self.RecvData(data, RECV_DATA_TYPE.SORT_DATA, sortData);
2175
- },
2176
- error: function (request) {
2177
- self.RecvError(request, RECV_DATA_TYPE.SORT_DATA, sortData);
2178
- }
2179
- });
2180
- }
2181
-
2182
- this.RecvError = function (request, datatype, requestData) {
2183
- // console.log("RecvError: datatype=" + datatype.toString());
2184
- // console.log(request);
2185
-
2186
- var self = this;
2187
- if (this.Timeout) clearTimeout(this.Timeout); //清空定时器
2188
- this.Timeout = setTimeout(function () {
2189
- self.ReqeustData();
2190
- }, this.AutoUpateTimeout * 2);
2191
- }
2192
-
2193
-
2194
- //微信数据返回在原始的数据基础上外面包了一层,正式的数据应该在data.data里面
2195
- this.RecvData = function (data, datatype, requestData) {
2196
- var mapTagData; //key=界面元素id, value=更新的股票列表
2197
-
2198
- switch (datatype) {
2199
- case RECV_DATA_TYPE.BASE_DATA:
2200
- case RECV_DATA_TYPE.INDEX_BASE_DATA:
2201
- mapTagData = this.RecvBaseData(data.data, datatype);
2202
- break;
2203
- case RECV_DATA_TYPE.HEAT_DATA:
2204
- mapTagData = this.RecvHeatData(data, datatype);
2205
- break;
2206
- case RECV_DATA_TYPE.SORT_DATA:
2207
- mapTagData = this.RecvSortData(data, datatype, requestData);
2208
- break;
2209
- case RECV_DATA_TYPE.BUY_SELL_DATA:
2210
- mapTagData = this.RecvBuySellData(data.data, datatype);
2211
- break;
2212
- case RECV_DATA_TYPE.DEAL_DATA:
2213
- mapTagData = this.RecvDealData(data.data, datatype);
2214
- break;
2215
- case RECV_DATA_TYPE.DERIVATIVE_DATA:
2216
- mapTagData = this.RecvDerivativeData(data.data, datatype);
2217
- break;
2218
- case RECV_DATA_TYPE.FINANCE_DATA:
2219
- mapTagData = this.RecvFinanceData(data.data, datatype);
2220
- break;
2221
- case RECV_DATA_TYPE.COMPANY_DATA:
2222
- mapTagData = this.RecvCompanyData(data.data, datatype);
2223
- break;
2224
- case RECV_DATA_TYPE.PLATE_DATA:
2225
- mapTagData = this.RecvPlateData(data.data, datatype);
2226
- break;
2227
- case RECV_DATA_TYPE.FINANCE_DETAIL_DATA:
2228
- mapTagData = this.RecvFinanceDetailData(data.data, datatype);
2229
- break;
2230
- case RECV_DATA_TYPE.PLEDGE_DATA:
2231
- mapTagData = this.RecvPledgeData(data.data, datatype);
2232
- break;
2233
- case RECV_DATA_TYPE.EVENT_DATA:
2234
- mapTagData = this.RecvEventData(data.data, datatype);
2235
- break;
2236
- case RECV_DATA_TYPE.CAPITAL_FLOW_DAY_DATA:
2237
- case RECV_DATA_TYPE.CAPITAL_FLOW_DAY3_DATA:
2238
- case RECV_DATA_TYPE.CAPITAL_FLOW_DAY5_DATA:
2239
- case RECV_DATA_TYPE.CAPITAL_FLOW_DAY10_DATA:
2240
- case RECV_DATA_TYPE.DDE_DAY_DATA:
2241
- case RECV_DATA_TYPE.DDE_DAY3_DATA:
2242
- case RECV_DATA_TYPE.DDE_DAY5_DATA:
2243
- case RECV_DATA_TYPE.DDE_DAY10_DATA:
2244
- mapTagData = this.RecvSubDocumentData(data.data, datatype);
2245
- break;
2246
- }
2247
-
2248
- for (var value of mapTagData) {
2249
- if (!this.MapTagCallback.has(value[0])) continue;
2250
-
2251
- this.MapTagCallback.get(value[0])(value[0], value[1], datatype, this);
2252
- }
2253
-
2254
- var self = this;
2255
- if (this.IsAutoUpdate) {
2256
- if (this.Timeout) clearTimeout(this.Timeout); //清空定时器
2257
- //周日 周6 不更新, [9:15-3:30]以外的时间不更新
2258
- var today = new Date();
2259
- var time = today.getHours() * 100 + today.getMinutes();
2260
- if (today.getDay() > 0 && today.getDay() < 6 && time >= 915 && time < 1530)
2261
- this.Timeout = setTimeout(function () {
2262
- self.ReqeustData();
2263
- }, this.AutoUpateTimeout);
2264
- }
2265
- }
2266
-
2267
-
2268
- this.RecvBaseData = function (data, datatype) {
2269
- var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表
2270
- for (var i in data.stock) {
2271
- var item = data.stock[i];
2272
- var stockData = this.MapStock.get(item.symbol);
2273
- if (!stockData) continue;
2274
-
2275
- switch (datatype) {
2276
- case RECV_DATA_TYPE.BASE_DATA:
2277
- stockData.SetBaseData(item);
2278
- break;
2279
- case RECV_DATA_TYPE.INDEX_BASE_DATA:
2280
- stockData.SetIndexBaseData(item);
2281
- break;
2282
- default:
2283
- continue;
2284
- }
2285
-
2286
- if (stockData.TagID.size > 0) {
2287
- for (var id of stockData.TagID) {
2288
- if (mapTagData.has(id)) {
2289
- mapTagData.get(id).push(stockData.Symbol);
2290
- }
2291
- else {
2292
- mapTagData.set(id, new Array(stockData.Symbol));
2293
- }
2294
- }
2295
- }
2296
- }
2297
-
2298
- return mapTagData;
2299
- }
2300
-
2301
- this.RecvBuySellData = function (data, datatype) {
2302
- var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表
2303
- for (var i in data.stock) {
2304
- var item = data.stock[i];
2305
- var stockData = this.MapStock.get(item.symbol);
2306
- if (!stockData) continue;
2307
-
2308
- stockData.SetBuySellData(item);
2309
-
2310
- if (stockData.TagID.size > 0) {
2311
- for (var id of stockData.TagID) {
2312
- if (mapTagData.has(id)) {
2313
- mapTagData.get(id).push(stockData.Symbol);
2314
- }
2315
- else {
2316
- mapTagData.set(id, new Array(stockData.Symbol));
2317
- }
2318
- }
2319
- }
2320
-
2321
- if (stockData.BuySellTagID.size > 0) {
2322
- for (var id of stockData.BuySellTagID) {
2323
- if (mapTagData.has(id)) {
2324
- mapTagData.get(id).push(stockData.Symbol);
2325
- }
2326
- else {
2327
- mapTagData.set(id, new Array(stockData.Symbol));
2328
- }
2329
- }
2330
- }
2331
- }
2332
-
2333
- return mapTagData;
2334
- }
2335
-
2336
- this.RecvDerivativeData = function (data, datatype) {
2337
- var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表
2338
- for (var i in data.stock) {
2339
- var item = data.stock[i];
2340
- var stockData = this.MapStock.get(item.symbol);
2341
- if (!stockData) continue;
2342
-
2343
- stockData.SetDerivativeData(item);
2344
-
2345
- if (stockData.DerivativeTagID.size > 0) {
2346
- for (var id of stockData.DerivativeTagID) {
2347
- if (mapTagData.has(id)) {
2348
- mapTagData.get(id).push(stockData.Symbol);
2349
- }
2350
- else {
2351
- mapTagData.set(id, new Array(stockData.Symbol));
2352
- }
2353
- }
2354
- }
2355
- }
2356
-
2357
- return mapTagData;
2358
- }
2359
-
2360
- this.RecvFinanceData = function (data, datatype) {
2361
- var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表
2362
- for (var i in data.stock) {
2363
- var item = data.stock[i];
2364
- var stockData = this.MapStock.get(item.symbol);
2365
- if (!stockData) continue;
2366
-
2367
- stockData.SetFinanceData(item);
2368
- if (stockData.FinanceTagID.size > 0) {
2369
- for (var id of stockData.FinanceTagID) {
2370
- if (mapTagData.has(id)) {
2371
- mapTagData.get(id).push(stockData.Symbol);
2372
- }
2373
- else {
2374
- mapTagData.set(id, new Array(stockData.Symbol));
2375
- }
2376
- }
2377
- }
2378
- }
2379
-
2380
- return mapTagData;
2381
- }
2382
-
2383
- this.RecvFinanceDetailData = function (data, datatype) {
2384
- var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表
2385
-
2386
- for (var i in data.stock) {
2387
- var item = data.stock[i];
2388
- var stockData = this.MapStock.get(item.symbol);
2389
- if (!stockData) continue;
2390
-
2391
- stockData.SetFinanceDetailData(item);
2392
- if (stockData.FinanceDetailTagID.size > 0) {
2393
- for (var id of stockData.FinanceDetailTagID) {
2394
- if (mapTagData.has(id)) {
2395
- mapTagData.get(id).push(stockData.Symbol);
2396
- }
2397
- else {
2398
- mapTagData.set(id, new Array(stockData.Symbol));
2399
- }
2400
- }
2401
- }
2402
- }
2403
-
2404
- return mapTagData;
2405
- }
2406
-
2407
- this.RecvPledgeData = function (data, datatype) {
2408
- var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表
2409
-
2410
- for (var i in data.stock) {
2411
- var item = data.stock[i];
2412
- var stockData = this.MapStock.get(item.symbol);
2413
- if (!stockData) continue;
2414
-
2415
- stockData.SetPledgeData(item);
2416
- if (stockData.PledgeTagID.size > 0) {
2417
- for (var id of stockData.PledgeTagID) {
2418
- if (mapTagData.has(id)) {
2419
- mapTagData.get(id).push(stockData.Symbol);
2420
- }
2421
- else {
2422
- mapTagData.set(id, new Array(stockData.Symbol));
2423
- }
2424
- }
2425
- }
2426
- }
2427
-
2428
- return mapTagData;
2429
- }
2430
-
2431
- this.RecvEventData = function (data, datatype) {
2432
- var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表
2433
-
2434
- for (var i in data.stock) {
2435
- var item = data.stock[i];
2436
- var stockData = this.MapStock.get(item.symbol);
2437
- if (!stockData) continue;
2438
-
2439
- stockData.SetEventData(item);
2440
- if (stockData.EventTagID.size > 0) {
2441
- for (var id of stockData.EventTagID) {
2442
- if (mapTagData.has(id)) {
2443
- mapTagData.get(id).push(stockData.Symbol);
2444
- }
2445
- else {
2446
- mapTagData.set(id, new Array(stockData.Symbol));
2447
- }
2448
- }
2449
- }
2450
- }
2451
-
2452
- return mapTagData;
2453
- }
2454
-
2455
-
2456
- this.RecvCompanyData = function (data, datatype) {
2457
- var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表
2458
- for (var i in data.stock) {
2459
- var item = data.stock[i];
2460
- var stockData = this.MapStock.get(item.symbol);
2461
- if (!stockData) continue;
2462
-
2463
- stockData.SetCompanyData(item);
2464
-
2465
- if (stockData.CompanyTagID.size > 0) {
2466
- for (var id of stockData.CompanyTagID) {
2467
- if (mapTagData.has(id)) {
2468
- mapTagData.get(id).push(stockData.Symbol);
2469
- }
2470
- else {
2471
- mapTagData.set(id, new Array(stockData.Symbol));
2472
- }
2473
- }
2474
- }
2475
- }
2476
-
2477
- return mapTagData;
2478
- }
2479
-
2480
- this.RecvPlateData = function (data, datatype) {
2481
- var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表
2482
- for (var i in data.stock) {
2483
- var item = data.stock[i];
2484
- var stockData = this.MapStock.get(item.symbol);
2485
- if (!stockData) continue;
2486
-
2487
- stockData.SetPlateData(item);
2488
-
2489
- if (stockData.PlateTagID.size > 0) {
2490
- for (var id of stockData.PlateTagID) {
2491
- if (mapTagData.has(id)) {
2492
- mapTagData.get(id).push(stockData.Symbol);
2493
- }
2494
- else {
2495
- mapTagData.set(id, new Array(stockData.Symbol));
2496
- }
2497
- }
2498
- }
2499
- }
2500
-
2501
- return mapTagData;
2502
- }
2503
-
2504
-
2505
- this.RecvDealData = function (data, datatype) {
2506
- var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表
2507
- for (var i in data.stock) {
2508
- var item = data.stock[i];
2509
- var stockData = this.MapStock.get(item.symbol);
2510
- if (!stockData) continue;
2511
-
2512
- stockData.SetDealData(item);
2513
-
2514
- if (stockData.DealTagID.size > 0) {
2515
- for (var id of stockData.DealTagID) {
2516
- if (mapTagData.has(id)) {
2517
- mapTagData.get(id).push(stockData.Symbol);
2518
- }
2519
- else {
2520
- mapTagData.set(id, new Array(stockData.Symbol));
2521
- }
2522
- }
2523
- }
2524
- }
2525
-
2526
- return mapTagData;
2527
- }
2528
-
2529
- this.RecvHeatData = function (data, datatype) {
2530
- var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表
2531
- for (var i in data.data) {
2532
- var item = data.data[i];
2533
- var stockData = this.MapStock.get(item.symbol);
2534
- if (!stockData) continue;
2535
-
2536
- stockData.SetHeatData(item);
2537
-
2538
- if (stockData.HeatTagID.size > 0) {
2539
- for (var id of stockData.HeatTagID) {
2540
- if (mapTagData.has(id)) {
2541
- mapTagData.get(id).push(stockData.Symbol);
2542
- }
2543
- else {
2544
- mapTagData.set(id, new Array(stockData.Symbol));
2545
- }
2546
- }
2547
- }
2548
- }
2549
-
2550
- return mapTagData;
2551
- }
2552
-
2553
- this.RecvSubDocumentData = function(data, datatype)
2554
- {
2555
- var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表
2556
- for(var i in data.stock)
2557
- {
2558
- var item = data.stock[i];
2559
- var stockData = this.MapStock.get(item.symbol);
2560
- if (!stockData) continue;
2561
-
2562
- var keyData=null;
2563
- switch (datatype)
2564
- {
2565
- case RECV_DATA_TYPE.CAPITAL_FLOW_DAY_DATA:
2566
- stockData.SetCapitalFlowDayData(item.flowday, datatype);
2567
- keyData = stockData.CapitalFlowDayID;
2568
- break;
2569
- case RECV_DATA_TYPE.CAPITAL_FLOW_DAY3_DATA:
2570
- stockData.SetCapitalFlowDayData(item.flowday3, datatype);
2571
- keyData = stockData.CapitalFlowDay3ID;
2572
- break;
2573
- case RECV_DATA_TYPE.CAPITAL_FLOW_DAY5_DATA:
2574
- stockData.SetCapitalFlowDayData(item.flowday5, datatype);
2575
- keyData = stockData.CapitalFlowDay5ID;
2576
- break;
2577
- case RECV_DATA_TYPE.CAPITAL_FLOW_DAY10_DATA:
2578
- stockData.SetCapitalFlowDayData(item.flowday10, datatype);
2579
- keyData = stockData.CapitalFlowDay10ID;
2580
- break;
2581
- case RECV_DATA_TYPE.DDE_DAY_DATA:
2582
- stockData.SetDDE(item.dde, datatype);
2583
- keyData = stockData.DDEID;
2584
- break;
2585
- case RECV_DATA_TYPE.DDE_DAY3_DATA:
2586
- stockData.SetDDE(item.dde3, datatype);
2587
- keyData = stockData.DDE3ID;
2588
- break;
2589
- case RECV_DATA_TYPE.DDE_DAY5_DATA:
2590
- stockData.SetDDE(item.dde5, datatype);
2591
- keyData = stockData.DDE5ID;
2592
- break;
2593
- case RECV_DATA_TYPE.DDE_DAY10_DATA:
2594
- stockData.SetDDE(item.dde10, datatype);
2595
- keyData = stockData.DDE10ID;
2596
- break;
2597
- }
2598
-
2599
- if (keyData && keyData.size>0)
2600
- {
2601
- for (var id of keyData)
2602
- {
2603
- if (mapTagData.has(id))
2604
- {
2605
- mapTagData.get(id).push(stockData.Symbol);
2606
- }
2607
- else
2608
- {
2609
- mapTagData.set(id, new Array(stockData.Symbol));
2610
- }
2611
- }
2612
- }
2613
- }
2614
-
2615
- return mapTagData;
2616
- }
2617
-
2618
- this.RecvSortData = function (data, datatype, sortItem) {
2619
- var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表
2620
- var arySymbol = new Array();
2621
- var stockData = this.MapStock.get(sortItem.Plate);
2622
-
2623
- for (var i in data.stock) {
2624
- var item = data.stock[i];
2625
- arySymbol.push(item.symbol);
2626
-
2627
- if (this.MapStock.has(item.symbol)) {
2628
- var itemData = this.MapStock.get(item.symbol);
2629
- itemData.SetBaseData(item);
2630
- }
2631
- else {
2632
- var itemData = new StockData(item.symbol);
2633
- itemData.SetBaseData(item);
2634
- this.MapStock.set(item.symbol, itemData);
2635
- }
2636
- }
2637
-
2638
- var key = sortItem.SortField.toString() + '-' + sortItem.Order.toString();
2639
- if (!stockData.Sort.has(key)) return mapTagData;
2640
-
2641
- var sortData = stockData.Sort.get(key);
2642
- sortData.arySymbol = arySymbol;
2643
-
2644
- for (var item of sortItem.TagID) {
2645
- mapTagData.set(item, new Array([stockData.Symbol]));
2646
- }
2647
-
2648
- return mapTagData;
2649
- }
2650
-
2651
-
2652
- }
2653
-
2654
- //股票搜索返回数据
2655
- function SearchStock(callback) {
2656
- this.SearchStockApiUrl = g_JSStockResource.Domain + "/API/StockSpell";
2657
- this.UpdateUICallback = callback;
2658
- this.PageSize = 50; //一页几个数据
2659
-
2660
- this.Count; //一共的个数
2661
- this.EndOffset; //当前缓存数据的最后一个位移
2662
-
2663
- this.Data = new Array();
2664
- this.Search = "";
2665
- this.SearchType = 0; // 沪深A股=2||0||null;沪深指数=4;港股股票=8;沪深债券=16;
2666
-
2667
- this.Search = function (input, type) {
2668
- if (this.Search == input && this.SearchType == type) {
2669
-
2670
- }
2671
- else {
2672
- this.Search = input;
2673
- this.SearchType = type;
2674
- this.Count = 0;
2675
- this.EndOffset = 0;
2676
- this.Data = [];
2677
- var end = this.PageSize - 1;
2678
- this.ReqeustSearchStock(this.Search, this.SearchType, this.EndOffset, end);
2679
- }
2680
- }
2681
-
2682
- this.IsEndPage = function () {
2683
- if (this.Count <= 0) return true;
2684
-
2685
- return this.EndOffset > this.Count - 1;
2686
- }
2687
-
2688
- this.NextPage = function () {
2689
- if (this.EndOffset + 1 > this.Count) return;
2690
-
2691
- var end = this.EndOffset + this.PageSize;
2692
- this.ReqeustSearchStock(this.Search, this.SearchType, this.EndOffset, end);
2693
- }
2694
-
2695
- ///////////////////////////////////////////////////////////////////////
2696
- //查询股票
2697
- this.ReqeustSearchStock = function (input, type, start, end) {
2698
- var self = this;
2699
-
2700
- wx.request({
2701
- url: this.SearchStockApiUrl,
2702
- data: {
2703
- "input": input,
2704
- "start": start,
2705
- "end": end,
2706
- "type": type
2707
- },
2708
-
2709
-
2710
- method: 'POST',
2711
- dataType: 'json',
2712
- success: function (data) {
2713
- self.RecvSearchStockData(data, RECV_DATA_TYPE.SEARCH_STOCK_DATA);
2714
- },
2715
- fail: function (request) {
2716
- self.RecvError(request, RECV_DATA_TYPE.SEARCH_STOCK_DATA);
2717
- }
2718
- });
2719
- }
2720
-
2721
- this.RecvSearchStockData = function (recvData) {
2722
-
2723
- var data = recvData.data;
2724
-
2725
- for (var i in data.stock) {
2726
- var item = data.stock[i];
2727
- this.Data.push({"Name": item.name, "Symbol": item.symbol, "Type": item.type});
2728
- }
2729
-
2730
- if (data.count == 0) {
2731
- this.Count = 0;
2732
- this.EndOffset = 0;
2733
- }
2734
- else {
2735
- if (this.Count == 0) this.Count = data.count;
2736
-
2737
- this.EndOffset = data.end;
2738
- if (this.Count > 0 && this.EndOffset > this.Count) this.EndOffset = this.Count - 1;
2739
- }
2740
-
2741
- if (typeof (this.UpdateUICallback) == 'function') this.UpdateUICallback(this);
2742
-
2743
- }
2744
-
2745
- this.RecvError = function (request, type) {
2746
- // console.log("RecvError: datatype=" + type.toString());
2747
- // console.log(request);
2748
-
2749
- if (typeof (this.UpdateUICallback) == 'function') this.UpdateUICallback(this, "error");
2750
-
2751
- }
2752
- }
2753
-
2754
-
2755
- //板块成分
2756
- function BlockMember(symbol) {
2757
- this.newMethod = IStockData; //派生
2758
- this.newMethod();
2759
- delete this.newMethod;
2760
-
2761
- this.ApiUrl = g_JSStockResource.Domain + "/API/StockBlockMember";
2762
- this.PageSize = 10; //一页几个数据
2763
- this.Start = 0; //取数据的起始位置
2764
- this.OrderField; //排序字段
2765
- this.Order; //排序方向 -1 /1
2766
- this.Symbol = symbol;
2767
- this.OrderNull = 0; //排序是否提出null字段
2768
-
2769
- this.Field = new Array(); //字段
2770
- this.Data = new Array(); //数据
2771
-
2772
- this.PageInfo; //分页信息
2773
-
2774
- this.SetField = function (aryFiled) {
2775
- this.Field = new Array();
2776
- for (let i in aryFiled) {
2777
- let item = aryFiled[i];
2778
- let name = StockDataFieldName.GetFieldName(item);
2779
- if (name == null) continue;
2780
-
2781
- this.Field.push(name);
2782
- }
2783
- // this.Field = aryFiled.length > 0 ? aryFiled : [];
2784
-
2785
- return this.Field.length > 0;
2786
- }
2787
-
2788
- this.SetOrder = function (fieldID, order) {
2789
- this.Order = null;
2790
- this.OrderField = null;
2791
-
2792
- let name = StockDataFieldName.GetFieldName(fieldID);
2793
- if (name == null) return false;
2794
-
2795
- this.OrderField = name;
2796
- this.Order = order;
2797
- return true;
2798
- }
2799
-
2800
- this.RequestData = function () {
2801
- this.Data = [];
2802
- var self = this;
2803
-
2804
- wx.request(
2805
- {
2806
- url: this.ApiUrl,
2807
- data: {
2808
- "symbol": this.Symbol,
2809
- "field": this.Field,
2810
- "order": this.Order,
2811
- "orderfield": this.OrderField,
2812
- "start": this.Start,
2813
- "end": this.Start + this.PageSize,
2814
- "ordernull": this.OrderNull
2815
- },
2816
- method: 'POST',
2817
- dataType: 'json',
2818
- success: function (data) {
2819
- if (data.data.code != 0) {
2820
- wx.showModal({
2821
- title: '提示',
2822
- content: data.data.message,
2823
- })
2824
- return;
2825
- }
2826
- self.RecvData(data, RECV_DATA_TYPE.BLOCK_MEMBER_DATA);
2827
- },
2828
- fail: function (request) {
2829
- self.RecvError(request, RECV_DATA_TYPE.BLOCK_MEMBER_DATA);
2830
- }
2831
- });
2832
- }
2833
-
2834
- this.RecvData = function (recvData, dataType) {
2835
-
2836
- let data = recvData.data;
2837
- for (let i in data.stock) {
2838
- let item = data.stock[i];
2839
- if (item.symbol == null) continue;
2840
-
2841
- var stock = new StockData(item.symbol);
2842
- stock.SetData(item);
2843
-
2844
- this.Data.push(stock);
2845
- }
2846
-
2847
- this.PageInfo = {Count: data.count, Start: data.start, End: data.end};
2848
-
2849
- if (typeof(this.UpdateUICallback) == 'function')
2850
- this.UpdateUICallback(this);
2851
-
2852
- this.AutoUpate(); //自动更新
2853
- }
2854
-
2855
- this.RecvError = function (reqeust, dataType) {
2856
-
2857
- }
2858
-
2859
- }
2860
-
2861
- // 股权质押信息详情
2862
- function PledgeDetail(symbol, startDate, endDate) {
2863
- this.newMethod = IStockData; //派生
2864
- this.newMethod();
2865
- delete this.newMethod;
2866
-
2867
- this.ApiUrl = g_JSStockResource.Domain + "/API/PledgeDetail";
2868
- this.Symbol = [];
2869
- if (symbol) this.Symbol.push(symbol);
2870
- this.StartDate = startDate; //开始时间
2871
- this.EndDate = endDate; //结束时间
2872
-
2873
- this.Field = new Array(); //字段
2874
- this.Data = new Array(); //数据
2875
-
2876
- this.RequestData = function () {
2877
- this.Data = [];
2878
- var self = this;
2879
-
2880
- wx.request(
2881
- {
2882
- url: this.ApiUrl,
2883
- data: {
2884
- "SymbolList": this.Symbol,
2885
- "QueryDate": {
2886
- "StartDate": this.StartDate,
2887
- "EndDate": this.EndDate
2888
- }
2889
- },
2890
- method: 'POST',
2891
- dataType: 'json',
2892
- success: function (data) {
2893
- if (data.data.code != 0) {
2894
- wx.showModal({
2895
- title: '提示',
2896
- content: data.data.message,
2897
- })
2898
- return;
2899
- }
2900
- self.RecvData(data, RECV_DATA_TYPE.BLOCK_MEMBER_DATA);
2901
- },
2902
- fail: function (request) {
2903
- self.RecvError(request, RECV_DATA_TYPE.BLOCK_MEMBER_DATA);
2904
- }
2905
- });
2906
- }
2907
-
2908
- this.RecvData = function (recvData, dataType) {
2909
-
2910
- let data = recvData.data;
2911
- console.log("PledgeDetail", data);
2912
- for (let i in data.list) {
2913
- let item = data.list[i];
2914
- this.Data.push({
2915
- Symbol: item.symbol, Name: item.name,
2916
- ReportDate: item.reportdate, Relievedate: item.relievedate,
2917
- Patry: item.party, Relievecount: item.relievecount,
2918
- PledgeFreezeCount: item.pledgefreezecount, PledgeFreezeStartDate: item.pledgefreezestartdate,
2919
- Totalsharesrate: item.totalsharesrate
2920
- });
2921
- }
2922
-
2923
-
2924
- if (typeof (this.UpdateUICallback) == 'function')
2925
- this.UpdateUICallback(this);
2926
-
2927
- // this.AutoUpate(); //自动更新
2928
- }
2929
-
2930
- this.RecvError = function (reqeust, dataType) {
2931
-
2932
- }
2933
-
2934
- }
2935
-
2936
-
2937
- function IStockData() {
2938
- this.IsAutoUpdate = true; //是否自动更新
2939
- this.AutoUpateTimeout = 5000; //更新频率
2940
- this.Timeout; //定时器
2941
- this.ApiUrl;
2942
- this.Data; //数据
2943
- this.UpdateUICallback; //回调函数
2944
-
2945
- this.ReqeustData = function () {
2946
-
2947
- }
2948
-
2949
- this.Stop = function () {
2950
- // console.log("[IStockData::Stop] stop update.")
2951
- this.IsAutoUpdate = false;
2952
- if (this.Timeout) clearTimeout(this.Timeout); //清空定时器
2953
- }
2954
-
2955
- this.AutoUpate = function () {
2956
- if (this.Timeout) clearTimeout(this.Timeout); //清空定时器
2957
-
2958
- if (!this.IsAutoUpdate) return;
2959
-
2960
- //周日 周6 不更新, [9:30-3:30]以外的时间不更新
2961
- var self = this;
2962
- let today = new Date();
2963
- let time = today.getHours() * 100 + today.getMinutes();
2964
- if (today.getDay() > 0 && today.getDay() < 6 && time >= 930 && time < 1530)
2965
- this.Timeout = setTimeout(function () {
2966
- self.ReqeustData();
2967
- }, this.AutoUpateTimeout);
2968
-
2969
- }
2970
- }
2971
-
2972
- //短线精灵
2973
- function ShortTerm(symbol) {
2974
- this.newMethod = IStockData; //派生
2975
- this.newMethod();
2976
- delete this.newMethod;
2977
-
2978
- this.Symbol = symbol; //数组
2979
- this.ApiUrl = g_JSStockResource.Domain + "/API/StockShortTerm";
2980
- this.Count = 20; //请求数据个数
2981
-
2982
- this.ReqeustData = function () {
2983
- var self = this;
2984
-
2985
- wx.request({
2986
- url: this.ApiUrl,
2987
- data: {
2988
- "count": this.Count,
2989
- "symbol": this.Symbol,
2990
- },
2991
- method: 'POST',
2992
- dataType: 'json',
2993
- success: function (data) {
2994
- self.RecvData(data, RECV_DATA_TYPE.SHORT_TERM_DATA);
2995
- },
2996
- fail: function (request) {
2997
- self.RecvError(request, RECV_DATA_TYPE.SHORT_TERM_DATA);
2998
- }
2999
- });
3000
- }
3001
-
3002
- this.RecvData = function (recvData, dataType) {
3003
- let data = recvData.data;
3004
-
3005
- this.Data = [];
3006
- for (let i in data.shortterm) {
3007
- let item = data.shortterm[i];
3008
- this.Data.push({
3009
- Date: item.date,
3010
- Name: item.name,
3011
- Symbol: item.symbol,
3012
- Time: item.time,
3013
- Content: item.content,
3014
- TypeInfo: item.typeinfo,
3015
- Type: item.type
3016
- });
3017
- }
3018
-
3019
- if (this.UpdateUICallback) this.UpdateUICallback(this);
3020
-
3021
- this.AutoUpate();
3022
- }
3023
-
3024
- this.RecvError = function (request, dataType) {
3025
-
3026
- }
3027
- }
3028
-
3029
- //板块排名
3030
- function BlockTop() {
3031
- this.newMethod = IStockData; //派生
3032
- this.newMethod();
3033
- delete this.newMethod;
3034
-
3035
- this.BlockType = 1; //板块类型
3036
- this.Count = 20;
3037
-
3038
- this.OrderField = 'increase'; //排序字段
3039
- this.Order = -1; //排序方向 -1 /1
3040
- this.Field = ["symbol", "price", "name", "vol", "increase", "indextop"];
3041
-
3042
- this.ApiUrl = g_JSStockResource.Domain + "/API/StockBlockTop";
3043
-
3044
- this.SetField = function (field) {
3045
-
3046
- }
3047
-
3048
- this.ReqeustData = function () {
3049
- var self = this;
3050
-
3051
- wx.request({
3052
- url: this.ApiUrl,
3053
- data: {
3054
- "blocktype": this.BlockType,
3055
- "start": 0,
3056
- "end": this.Count,
3057
- "field": this.Field,
3058
- "orderfield": this.OrderField,
3059
- "order": this.Order
3060
- },
3061
- method: 'POST',
3062
- dataType: 'json',
3063
- success: function (data) {
3064
- self.RecvData(data, RECV_DATA_TYPE.BLOCK_TOP_DATA);
3065
- },
3066
- fail: function (request) {
3067
- self.RecvError(request, RECV_DATA_TYPE.BLOCK_TOP_DATA);
3068
- }
3069
- });
3070
- }
3071
-
3072
- this.RecvData = function (recvData, dataType) {
3073
- let data = recvData.data;
3074
- //console.log(data);
3075
-
3076
- this.Data = [];
3077
- for (let i in data.stock) {
3078
- let item = data.stock[i];
3079
- this.Data.push(
3080
- {
3081
- Name: item.name,
3082
- Symbol: item.symbol,
3083
- Increase: item.increase,
3084
- IndexTop: {
3085
- Down: item.indextop.down,
3086
- Stop: item.indextop.stop,
3087
- Up: item.indextop.up,
3088
- Unchanged: item.indextop.unchanged,
3089
- DownStock: {Name: item.indextop.downstock.name, Symbol: item.indextop.downstock.symbol},
3090
- UpStock: {Name: item.indextop.upstock.name, Symbol: item.indextop.upstock.symbol}
3091
- }
3092
- });
3093
- }
3094
-
3095
- if (this.UpdateUICallback) this.UpdateUICallback(this);
3096
-
3097
- this.AutoUpate();
3098
- }
3099
-
3100
- this.RecvError = function (request, dataType) {
3101
-
3102
- }
3103
-
3104
- }
3105
-
3106
- //是否是指数代码
3107
- function IsIndexSymbol(symbol) {
3108
- var upperSymbol = symbol.toUpperCase();
3109
- if (upperSymbol.indexOf('.SH') > 0) {
3110
- upperSymbol = upperSymbol.replace('.SH', '');
3111
- if (upperSymbol.charAt(0) == '0' && parseInt(upperSymbol) <= 3000) return true;
3112
-
3113
- }
3114
- else if (upperSymbol.indexOf('.SZ') > 0) {
3115
- upperSymbol = upperSymbol.replace('.SZ', '');
3116
- if (upperSymbol.charAt(0) == '3' && upperSymbol.charAt(1) == '9') return true;
3117
- }
3118
- else if (upperSymbol.indexOf('.CI') > 0) //自定义指数
3119
- {
3120
- return true;
3121
- }
3122
-
3123
- return false;
3124
- }
3125
-
3126
- //自定义指数 获取涨幅
3127
- function IndexIncrease(symbols, starttime, endtime) {
3128
- this.IsAutoUpdate = true; //自动更新
3129
- this.newMethod = IStockData; //派生
3130
- this.newMethod();
3131
- delete this.newMethod;
3132
-
3133
- this.ApiUrl = g_JSStockResource.Domain + "/API/IndexIncrease";
3134
-
3135
- this.Symbol = symbols;
3136
- this.starttime = starttime;
3137
- this.endtime = endtime;
3138
- var data = {
3139
- "symbollist": this.Symbol,
3140
- "querydate": {"startdate": this.starttime, "enddate": this.endtime}
3141
- };
3142
-
3143
- this.ReqeustData = function () {
3144
- var self = this;
3145
- wx.request({
3146
- url: this.ApiUrl,
3147
- data: JSON.stringify(data),
3148
- method: "POST",
3149
- dataType: "json",
3150
- success: function (data) {
3151
- if (data.data.code != 0) {
3152
- wx.showModal({
3153
- title: '提示',
3154
- content: data.data.message,
3155
- })
3156
- return;
3157
- }
3158
- self.RecvData(data);
3159
- },
3160
- fail: function (request) {
3161
- self.RecvError(request);
3162
- }
3163
- })
3164
- }
3165
-
3166
- this.RecvData = function (recvData) {
3167
- // console.log("recvData", recvData.data)
3168
-
3169
- if (recvData.data.list.length == 0) {
3170
- return false;
3171
- }
3172
- this.Data = [];
3173
-
3174
- for (var i in recvData.data.list) {
3175
- if (recvData.data.list[i] != null) {
3176
- this.Data.push({
3177
- Symbol: recvData.data.list[i].symbol,
3178
- Increase: recvData.data.list[i].increase
3179
- })
3180
- }
3181
- }
3182
-
3183
- if (this.UpdateUICallback) this.UpdateUICallback(this);
3184
-
3185
- if (this.IsAutoUpdate) {
3186
- this.AutoUpate();
3187
- }
3188
- }
3189
-
3190
- this.RecvError = function (recvError) {
3191
- this.Error = "请求失败";
3192
- this.InvokeCallback();
3193
- }
3194
- }
3195
-
3196
- /////////////////////////////////////////////////////////////////
3197
- //
3198
- // 查询策略列表信息
3199
- //
3200
- function PolicyList()
3201
- {
3202
- this.newMethod = IStockData; //派生
3203
- this.newMethod();
3204
- delete this.newMethod;
3205
-
3206
- this.IsAutoUpdate = true; //自动更新
3207
- this.AutoUpateTimeout=1000*30; //1分钟更新一次
3208
- this.ApiUrl = g_JSStockResource.Domain + "/API/PolicyList";
3209
- this.Name=[]; //查询的策略名字列表
3210
-
3211
- this.RequestData = function ()
3212
- {
3213
- var self = this;
3214
- wx.request({
3215
- url: this.ApiUrl,
3216
- data:
3217
- {
3218
- "Name": this.Name,
3219
- 'stockdatatype':1, //返回涨幅最高的2个股票信息
3220
- },
3221
- method: 'POST',
3222
- dataType: 'json',
3223
- success: function (data)
3224
- {
3225
- self.RecvData(data, RECV_DATA_TYPE.POLICY_LIST_DATA);
3226
- },
3227
- fail: function (request)
3228
- {
3229
- self.RecvError(request, RECV_DATA_TYPE.POLICY_LIST_DATA);
3230
- }
3231
- });
3232
- }
3233
-
3234
- this.RecvData = function (recvData, dataType)
3235
- {
3236
- let data = recvData.data;
3237
- if (data.data.length == 0) return false;
3238
-
3239
- var mapStock=new Map();
3240
- for (let i in data.stockdata)
3241
- {
3242
- let item =data.stockdata[i];
3243
- if (!item) continue;
3244
- let guid=item[1];
3245
- let dataItem={Guid:guid,Stock:[]};
3246
- for(let j=2;j<item.length && j+2<item.length;j+=3)
3247
- {
3248
- let stock = { Symbol: item[j], Name: item[j + 1], Increase:item[j+2] };
3249
- dataItem.Stock.push(stock);
3250
- }
3251
-
3252
- if (dataItem.Stock.length>0) mapStock.set(dataItem.Guid,dataItem);
3253
- }
3254
-
3255
- //console.log('[PolicyList:RecvData] mapStock',mapStock);
3256
-
3257
- this.Data = [];
3258
- //0=策略名称 1=GUID 2=股票个数 3=上涨个数 4=下跌个数 5=平盘个数 6=涨停个数 7=跌停 8=策略整体涨幅,单位:%
3259
- for (let i in data.data) //解析数据
3260
- {
3261
- let item = data.data[i];
3262
- if (!item) continue;
3263
- let guid=item[1];
3264
- let dataItem =
3265
- {
3266
- Name: item[0], Guid: item[1], Count: item[2],
3267
- Up: item[3], Down: item[4], Unchange: item[5],
3268
- UpMax: item[6], DownMax: item[7], Increase: item[8]
3269
- };
3270
-
3271
- if (mapStock.has(guid)) dataItem.Stock=mapStock.get(guid).Stock;
3272
-
3273
- this.Data.push(dataItem);
3274
- }
3275
-
3276
- //console.log('[PolicyList:RecvData] Data', this.Data);
3277
-
3278
- if (this.UpdateUICallback) this.UpdateUICallback(this);
3279
-
3280
- this.AutoUpate();
3281
- }
3282
-
3283
- this.RecvError = function (request, dataType) {
3284
-
3285
- }
3286
- }
3287
-
3288
- //策略详情
3289
- function PolicyDetail()
3290
- {
3291
- this.newMethod = IStockData; //派生
3292
- this.newMethod();
3293
- delete this.newMethod;
3294
-
3295
- this.IsAutoUpdate=false;
3296
- this.AutoUpateTimeout=1000*30; //1分钟更新一次
3297
- //https://web7-f5.zealink.com/Help/Api/POST-api-PolicyConfigStockList
3298
- this.ApiUrl = g_JSStockResource.Domain + "/API/PolicyConfigStockList";
3299
- this.Guid; //查询的策略的Guid
3300
- this.PageIndex=1;
3301
- this.PageSize=20;
3302
- this.Count=0; //一共的股票个数
3303
-
3304
- this.RequestData = function () //请求第1页
3305
- {
3306
- this.Data = [];
3307
- this.Request();
3308
- }
3309
-
3310
- this.RecvData = function (recvData, dataType)
3311
- {
3312
- let data = recvData.data;
3313
- this.Count=data.count;
3314
-
3315
- var setSymbol=new Set();
3316
- for(let i in this.Data)
3317
- {
3318
- setSymbol.add(this.Data[i].Symbol);
3319
- }
3320
-
3321
- for (let i in data.list) //解析数据
3322
- {
3323
- let item = data.list[i];
3324
- if (setSymbol.has(item.symbol)) continue; //去掉重复的
3325
- this.Data.push(
3326
- {
3327
- Name:item.name, Symbol:item.symbol,Price:item.price, DateTime:item.datetime
3328
- });
3329
- }
3330
-
3331
- if (this.UpdateUICallback) this.UpdateUICallback(this);
3332
- }
3333
-
3334
- this.Request=function()
3335
- {
3336
- var self = this;
3337
- wx.request({
3338
- url: this.ApiUrl,
3339
- data:
3340
- {
3341
- "guid": this.Guid,
3342
- 'pageinfo': {'pageindex':this.PageIndex, 'pagesize':this.PageSize}
3343
- },
3344
- method: 'POST',
3345
- dataType: 'json',
3346
- success: function (data)
3347
- {
3348
- self.RecvData(data, RECV_DATA_TYPE.POLICY_DETAIL_DATA);
3349
- },
3350
- fail: function (request)
3351
- {
3352
- self.RecvError(request, RECV_DATA_TYPE.POLICY_DETAIL_DATA);
3353
- }
3354
- });
3355
- }
3356
-
3357
- this.IsEndPage = function () //是否到最后一页了
3358
- {
3359
- return this.Count<=this.Data.length;
3360
- }
3361
-
3362
- this.NextPage=function() //下一页
3363
- {
3364
- ++this.PageIndex;
3365
- this.Request();
3366
- }
3367
-
3368
- this.RecvError = function (request, dataType) {
3369
-
3370
- }
3371
- }
3372
-
3373
- //分析板块请求数据
3374
- function AnalylisPlate()
3375
- {
3376
- this.newMethod = IStockData; //派生
3377
- this.newMethod();
3378
- delete this.newMethod;
3379
-
3380
- //
3381
- this.ApiUrl = g_JSStockResource.Domain + "/api/StockListAnalyze";
3382
- this.ApiUrl = "https://apitest.zealink.com" + "/api/StockListAnalyze";
3383
- this.PolicyGuid; //查询策略的Guid
3384
- this.Plate = ""; //板块id
3385
- this.SymbolList = []; //股票列表
3386
-
3387
- this.RequestData = function()
3388
- {
3389
- var self = this;
3390
- wx.request({
3391
- url: self.ApiUrl,
3392
- data:
3393
- {
3394
- "PolicyGuid": self.PolicyGuid,
3395
- "Plate": self.Plate,
3396
- "Symbol": self.SymbolList
3397
- },
3398
- method: 'POST',
3399
- dataType: 'json',
3400
- success: function (res) {
3401
- if (res.data.code != 0){
3402
- wx.showModal({
3403
- title: '提示',
3404
- content: res.data.message,
3405
- })
3406
- return;
3407
- }
3408
- self.RecvData(res);
3409
- },
3410
- fail: function (request) {
3411
- self.RecvError(request);
3412
- }
3413
- });
3414
- }
3415
-
3416
- this.RecvData = function(recvData)
3417
- {
3418
- this.Data = {};
3419
- // console.log(recvData.data,"recvData,分析板块")
3420
- var data = recvData.data;
3421
- if (data.count == 0) return;
3422
-
3423
- if (data.concept){ //概念占比
3424
- // 0 = 概念名称 1 = 代码 0 = 占比 3 = 个数 4 = 涨幅 5 = 最新价 6 = 一周涨幅 7 = 四周涨幅
3425
- var conceptList = [];
3426
- for (var i in data.concept.data){
3427
- var item = data.concept.data[i];
3428
- var info = {};
3429
- info.Name = item[0];
3430
- info.Symbol = item[1];
3431
- info.Ratio = item[2];
3432
- info.Count = item[3];
3433
- info.Increase = item[4];
3434
- info.Price = item[5];
3435
- info.Week1 = item[6];
3436
- info.Week4 = item[7];
3437
- conceptList.push(info);
3438
- }
3439
- this.Data.Concept = conceptList;
3440
- }
3441
- if (data.distributed) { //股票类型占比
3442
- this.Data.Distributed = data.distributed;
3443
- }
3444
- if (data.industry) { //行业占比
3445
- this.Data.Industry = data.industry;
3446
- }
3447
- if (data.quadrant) { //四象限占比
3448
- this.Data.Quadrant = data.quadrant;
3449
- }
3450
- if (data.region) { //四象限占比
3451
- this.Data.Region = data.region;
3452
- }
3453
-
3454
- // console.log(this.Data,"this.Data")
3455
- if (this.UpdateUICallback) this.UpdateUICallback(this);
3456
- }
3457
-
3458
- this.RecvError = function (request)
3459
- {
3460
- console.log(request)
3461
- }
3462
- }
3463
-
3464
- //热词请求数据
3465
- function HotWord(){
3466
- this.newMethod = IStockData; //派生
3467
- this.newMethod();
3468
- delete this.newMethod;
3469
-
3470
- this.ApiUrl = g_JSStockResource.Domain + "/api/HotWordAnalyze";
3471
- this.Count = 0; //一共的热词个数
3472
-
3473
- this.RequestData = function () {
3474
- this.Data = [];
3475
- var self = this;
3476
- wx.request({
3477
- url: self.ApiUrl,
3478
- data:{},
3479
- method: 'POST',
3480
- dataType: 'json',
3481
- success: function (res) {
3482
- if (res.data.code != 0) {
3483
- wx.showModal({
3484
- title: '提示',
3485
- content: res.data.message,
3486
- })
3487
- return;
3488
- }
3489
- self.RecvData(res);
3490
- },
3491
- fail: function (request) {
3492
- self.RecvError(request);
3493
- }
3494
- });
3495
- }
3496
-
3497
- this.RecvData = function (recvData) {
3498
- // console.log(recvData, "recvData热词")
3499
- let data = recvData.data;
3500
- this.Count = data.count;
3501
- if (data.count == 0) return;
3502
-
3503
- for (var i in data.list){
3504
- var item = data.list[i];
3505
- var info = {};
3506
- info.Word = item.word;
3507
- info.Count = item.count;
3508
- info.Ratio = item.ratio;
3509
- info.Topstock = item.topstock;
3510
- this.Data.push(info)
3511
- }
3512
-
3513
- // console.log(this.Data,"this.Data")
3514
- if (this.UpdateUICallback) this.UpdateUICallback(this);
3515
- }
3516
-
3517
- this.RecvError = function (request) {
3518
- console.log(request)
3519
- }
3520
- }
3521
-
3522
- //财务指标 同时请求多个股票数据
3523
- function financeIndicators(){
3524
- this.newMethod = IStockData; //派生
3525
- this.newMethod();
3526
- delete this.newMethod;
3527
-
3528
- this.ApiUrl = g_JSStockResource.Domain + "/api/Stock";
3529
- this.SymbolList = ["600000.sh", "000001.sz", "000158.sz"];
3530
-
3531
- this.RequestData = function () {
3532
- this.Data = [];
3533
- var self = this;
3534
- wx.request({
3535
- url: self.ApiUrl,
3536
- data: {
3537
- "symbol": self.SymbolList,
3538
- "field": ["symbol", "name", "eps", "pe", "pb", "peg", "roe", "events.netprofitrate", "finance.woewa", "finance.alratio", "finance.grossmargin", "finance.perccfo"],
3539
- "orderfield": "increase",
3540
- "order": -1,
3541
- "start": 0,
3542
- "end": 100
3543
- },
3544
- method: 'POST',
3545
- dataType: 'json',
3546
- success: function (res) {
3547
- if (res.data.code != 0) {
3548
- wx.showModal({
3549
- title: '提示',
3550
- content: res.data.message,
3551
- })
3552
- return;
3553
- }
3554
- self.RecvData(res);
3555
- },
3556
- fail: function (request) {
3557
- self.RecvError(request);
3558
- }
3559
- });
3560
- }
3561
-
3562
- this.RecvData = function (recvData) {
3563
- // console.log(recvData, "recvData财务")
3564
- let data = recvData.data;
3565
- this.Count = data.count;
3566
- if (data.count == 0) return;
3567
-
3568
- for (var i in data.stock) {
3569
- var item = data.stock[i];
3570
- var info = {};
3571
- info.Name = item.name;
3572
- info.Symbol = item.symbol;
3573
- info.Pb = item.pb;
3574
- info.Pe = item.pe;
3575
- info.Peg = item.peg;
3576
- info.Roe = item.roe;
3577
- info.Eps = item.eps;
3578
- info.EventsNetprofitrate = item.events.netprofitrate;
3579
- info.FinanceAlratio = item.finance.alratio;
3580
- info.FinanceGrossmargin = item.finance.grossmargin;
3581
- info.FinancePerccfo = item.finance.perccfo;
3582
- info.FinanceWoewa = item.finance.woewa;
3583
-
3584
- this.Data.push(info);
3585
- }
3586
-
3587
- if (this.UpdateUICallback) this.UpdateUICallback(this);
3588
- }
3589
-
3590
- this.RecvError = function (request) {
3591
- console.log(request)
3592
- }
3593
-
3594
-
3595
- }
3596
-
3597
-
3598
- //股票历史数据字段枚举
3599
- var STOCK_HISTORY_FIELD_NAME =
3600
- {
3601
- //100-199 1季度
3602
- FINANCE1_NPROFITINCREASE: 100,
3603
- FINANCE1_NNPROFITINCREASE: 102,
3604
- FINANCE1_NNPROFITSPEED: 103,
3605
- FINANCE1_YEAR: 104, //年报报告期年份
3606
- FINANCE1_QUARTER: 105, //报告季度
3607
- FINANCE1_BENFORD: 106,
3608
-
3609
- //200-299 2季度
3610
- FINANCE2_NPROFITINCREASE: 201,
3611
- FINANCE2_NNPROFITINCREASE: 202,
3612
- FINANCE2_NNPROFITSPEED: 203,
3613
- FINANCE2_YEAR: 204, //年报报告期年份
3614
- FINANCE2_QUARTER: 205, //报告季度
3615
- FINANCE2_BENFORD: 206,
3616
-
3617
- //300-399 3季度
3618
- FINANCE3_NPROFITINCREASE: 301,
3619
- FINANCE3_NNPROFITINCREASE: 302,
3620
- FINANCE3_NNPROFITSPEED: 303,
3621
- FINANCE3_YEAR: 304, //年报报告期年份
3622
- FINANCE3_QUARTER: 305, //报告季度
3623
- FINANCE3_BENFORD: 306,
3624
-
3625
- //400-499 4季度
3626
- FINANCE4_NPROFITINCREASE: 401,
3627
- FINANCE4_NNPROFITINCREASE: 402,
3628
- FINANCE4_NNPROFITSPEED: 403,
3629
- FINANCE4_YEAR: 404, //年报报告期年份
3630
- FINANCE4_QUARTER: 405, //报告季度
3631
- FINANCE4_BENFORD: 406, //财务粉饰
3632
-
3633
- //1001 大宗交易
3634
- BLOCK_TRADING: 1001, //大宗交易
3635
- HOLDERS_CHANGES: 1002, //股东减持
3636
- LIFTING: 1003, //限售解禁
3637
- PFORECAST: 1004, //业绩公告
3638
- SHORTIND_ICATORS: 1005, //空头指标
3639
- };
3640
-
3641
- //历史数据 个股财务粉饰 || 大宗交易 || 股东减持 || 限售解禁 || 业绩预告 || 空头指标
3642
- function JSStockHistory() {
3643
- this.Symbol;
3644
- this.Callback; //UI回调
3645
- this.Order = -1; //排序方向
3646
- this.SortField; //排序字段
3647
- this.Field; //返回字段
3648
- this.Plate; //全市场
3649
- this.Data = new Map(); //数据
3650
- this.ApiUrl = g_JSStockResource.Domain + "/API/StockHistoryDay";
3651
- this.PageSize = 20 ;//一页请求10调数据
3652
- this.PageIndex = 1;
3653
- this.Count;//数据总数
3654
- this.currentData = null;//请求入参
3655
-
3656
-
3657
- this.RequsetData = function (condition, condition2) {
3658
- var self = this;
3659
- var currentSymbol = typeof(self.Symbol) == "string" ? [this.Symbol] : this.Symbol;
3660
- var currentSymbolLength = currentSymbol ? currentSymbol.length : 0;
3661
-
3662
- if (this.Plate){
3663
- this.currentData = {
3664
- "plate": this.Plate,//["CNA.ci"],
3665
- "symbol": currentSymbol,
3666
- "start": 0,
3667
- "end": this.PageSize,
3668
- "field": this.Field,
3669
- "orderfield": this.SortField,
3670
- "order": this.Order,
3671
- "condition": condition.GetQuery(),
3672
- "condition2": condition2 ? condition2.GetQuery() : [],
3673
- }
3674
- }else{
3675
- this.currentData = {
3676
- "symbol": currentSymbol,
3677
- "start": 0,
3678
- "end": currentSymbolLength,
3679
- "field": this.Field,
3680
- "orderfield": this.SortField,
3681
- "order": this.Order,
3682
- "condition": condition.GetQuery(),
3683
- "condition2": condition2 ? condition2.GetQuery() : [],
3684
- }
3685
- }
3686
-
3687
- wx.request({
3688
- url: this.ApiUrl,
3689
- data: self.currentData,
3690
- method: 'POST',
3691
-
3692
- dataType: 'json',
3693
- success: function (data) {
3694
- self.Count = data.data.count;
3695
- self.RecvData(data, condition);
3696
- },
3697
- fail: function (request) {
3698
- self.RecvError(request, condition);
3699
- }
3700
- });
3701
- }
3702
-
3703
- this.GetNextPage = function () {
3704
- var self = this;
3705
-
3706
- if (this.PageSize * this.PageIndex < this.Count){
3707
- this.currentData.start = this.PageSize * this.PageIndex;
3708
- this.PageIndex++;
3709
- this.currentData.end = this.PageSize * this.PageIndex;
3710
-
3711
- wx.request({
3712
- url: this.ApiUrl,
3713
- data: self.currentData,
3714
- method: 'POST',
3715
- dataType: 'json',
3716
- success: function (data) {
3717
- self.RecvData(data);
3718
- },
3719
- fail: function (request) {
3720
- self.RecvError(request);
3721
- }
3722
- });
3723
- }else{
3724
- wx.showToast({
3725
- title: "数据已全部加载",
3726
- icon: 'success',
3727
- duration: 1000
3728
- })
3729
- }
3730
-
3731
- }
3732
-
3733
- //结果处理 个股财务粉饰
3734
- this.RecvData = function (recvData, condition) {
3735
- let data = recvData.data;
3736
- for (let i in data.stock) {
3737
- let item = data.stock[i];
3738
- let strSymbol = item.symbol;
3739
- let stockData = {};
3740
- // console.log("this.Data.has(strSymbol)", this.Data, strSymbol, this.Data.has(strSymbol));
3741
- if (this.Data.has(strSymbol)) {
3742
- stockData = this.Data.get(strSymbol);
3743
- }
3744
- else {
3745
- stockData = {
3746
- Symbol: item.symbol,
3747
- Name: item.name,
3748
- Data: new Map() //Map key=日期 value=Map(key=字段名, value=数值)
3749
- };
3750
-
3751
- this.Data.set(strSymbol, stockData);
3752
- }
3753
-
3754
- this.SetStockData(item, stockData);
3755
- }
3756
-
3757
- if (this.Callback) this.Callback(this, condition);
3758
- }
3759
-
3760
- this.SetStockData = function (data, stockData) {
3761
- for (let i in data.stockday) {
3762
- let item = data.stockday[i];
3763
- let date = item.date;
3764
- let dataMap = new Map();
3765
- this.SetFinanceData(item, dataMap);
3766
- this.SetBlocktradingData(item, dataMap);
3767
- this.SetChangesData(item, dataMap);
3768
- this.SetLiftingData(item, dataMap);
3769
- this.SetPforecastData(item, dataMap);
3770
- this.SetShortIndicatorsData(item, dataMap);
3771
- stockData.Data.set(date, dataMap);
3772
- }
3773
-
3774
- return stockData;
3775
- }
3776
-
3777
- this.SetFinanceData = function (recvData, dataMap) {
3778
- //1季度
3779
- var finnance = recvData.finance1;
3780
- if (finnance) {
3781
- if (!isNaN(finnance.nprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE1_NPROFITINCREASE, finnance.nprofitincrease);
3782
- if (!isNaN(finnance.nnprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE1_NNPROFITINCREASE, finnance.nnprofitincrease);
3783
- if (!isNaN(finnance.nnprofitspeed)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE1_NNPROFITSPEED, finnance.nnprofitspeed);
3784
- if (!isNaN(finnance.benford)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE1_BENFORD, finnance.benford);
3785
- }
3786
-
3787
- var announcement = recvData.announcement1;
3788
- if (announcement) {
3789
- if (!isNaN(announcement.year)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE1_YEAR, announcement.year);
3790
- if (!isNaN(announcement.quarter)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE1_QUARTER, announcement.quarter);
3791
- }
3792
-
3793
- //2季度
3794
- var finnance = recvData.finance2;
3795
- if (finnance) {
3796
- if (!isNaN(finnance.nprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE2_NPROFITINCREASE, finnance.nprofitincrease);
3797
- if (!isNaN(finnance.nnprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE2_NNPROFITINCREASE, finnance.nnprofitincrease);
3798
- if (!isNaN(finnance.nnprofitspeed)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE2_NNPROFITSPEED, finnance.nnprofitspeed);
3799
- if (!isNaN(finnance.benford)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE2_BENFORD, finnance.benford);
3800
- }
3801
-
3802
- var announcement = recvData.announcement2;
3803
- if (announcement) {
3804
- if (!isNaN(announcement.year)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE2_YEAR, announcement.year);
3805
- if (!isNaN(announcement.quarter)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE2_QUARTER, announcement.quarter);
3806
- }
3807
-
3808
- //3季度
3809
- var finnance = recvData.finance3;
3810
- if (finnance) {
3811
- if (!isNaN(finnance.nprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE3_NPROFITINCREASE, finnance.nprofitincrease);
3812
- if (!isNaN(finnance.nnprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE3_NNPROFITINCREASE, finnance.nnprofitincrease);
3813
- if (!isNaN(finnance.nnprofitspeed)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE3_NNPROFITSPEED, finnance.nnprofitspeed);
3814
- if (!isNaN(finnance.benford)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE3_BENFORD, finnance.benford);
3815
- }
3816
-
3817
- var announcement = recvData.announcement3;
3818
- if (announcement) {
3819
- if (!isNaN(announcement.year)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE3_YEAR, announcement.year);
3820
- if (!isNaN(announcement.quarter)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE3_QUARTER, announcement.quarter);
3821
- }
3822
-
3823
- //4季度
3824
- var finnance = recvData.finance4;
3825
- if (finnance) {
3826
- if (!isNaN(finnance.nprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE4_NPROFITINCREASE, finnance.nprofitincrease);
3827
- if (!isNaN(finnance.nnprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE4_NNPROFITINCREASE, finnance.nnprofitincrease);
3828
- if (!isNaN(finnance.nnprofitspeed)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE4_NNPROFITSPEED, finnance.nnprofitspeed);
3829
- if (!isNaN(finnance.benford)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE4_BENFORD, finnance.benford);
3830
- }
3831
-
3832
- var announcement = recvData.announcement4;
3833
- if (announcement) {
3834
- if (!isNaN(announcement.year)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE4_YEAR, announcement.year);
3835
- if (!isNaN(announcement.quarter)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE4_QUARTER, announcement.quarter);
3836
- }
3837
- }
3838
-
3839
- //大宗交易
3840
- this.SetBlocktradingData = function (recvData, dataMap) {
3841
- var blocktrading = recvData.blocktrading;
3842
- if (blocktrading) {
3843
- dataMap.set(
3844
- STOCK_HISTORY_FIELD_NAME.BLOCK_TRADING,
3845
- {
3846
- Premium: blocktrading.premium,////总溢价
3847
- Price: blocktrading.price, //总成交价
3848
- Vol: blocktrading.vol, //总成交量
3849
- Amount: blocktrading.amount//成交额
3850
- }
3851
- );
3852
- }
3853
- }
3854
-
3855
- //股东减持
3856
- this.SetChangesData = function (recvData, dataMap) {
3857
- var changes = recvData.changes;
3858
- if (changes) {
3859
- dataMap.set(
3860
- STOCK_HISTORY_FIELD_NAME.HOLDERS_CHANGES, {List: changes.list}
3861
- );
3862
- }
3863
- }
3864
-
3865
- //限售解禁
3866
- this.SetLiftingData = function (recvData, dataMap) {
3867
- var lifting = recvData.lifting;
3868
- if (lifting) {
3869
- // console.log("lifting",lifting);
3870
- dataMap.set(
3871
- STOCK_HISTORY_FIELD_NAME.LIFTING, {Lifting: lifting}
3872
- );
3873
- }
3874
- }
3875
-
3876
- //业绩公告
3877
- this.SetPforecastData = function (recvData, dataMap) {
3878
- var pforecast = recvData.pforecast;
3879
- if (pforecast) {
3880
- // console.log("pforecast", pforecast)
3881
- dataMap.set(
3882
- STOCK_HISTORY_FIELD_NAME.PFORECAST,
3883
- {
3884
- Lowprofit: pforecast[0].lowprofit,////最低利润
3885
- Highprofit: pforecast[0].highprofit, //最高利润
3886
- Lowchange: pforecast[0].lowchange, //最小变动幅度
3887
- Highchange: pforecast[0].highchange, //最小变动幅度
3888
- Reportdate: pforecast[0].reportdate, //报告期
3889
- }
3890
- );
3891
- }
3892
- }
3893
-
3894
- //空头指标
3895
- this.SetShortIndicatorsData = function (recvData, dataMap) {
3896
- // console.log("recvData,dataMap", recvData, dataMap);
3897
- var policy = recvData.policy;
3898
- if (policy) {
3899
- const targetedList = ['三只乌鸦', '乌云盖顶', '黄昏之星', '巨量阴线', '头肩顶', '射击之星', '倾盆大雨', '断头铡刀', '淡友反攻', '空方炮', '连续1周空头排列'];
3900
- let targetedCount = 0, timeList = [], latestTime = 0, latestName = '';
3901
- // console.table(policy); //policy
3902
- policy.forEach(e => {
3903
- let isTarget = targetedList.some(c => c === e.name);
3904
- if (isTarget) {
3905
- targetedCount++;
3906
- timeList.push(e.time);
3907
- }
3908
- });
3909
- if(!targetedCount){
3910
- latestName = '';
3911
- }else {
3912
- latestTime = Math.max.apply(timeList, timeList);
3913
- latestName = policy.find(e => e.time === latestTime).name;
3914
- }
3915
- console.log(latestName,targetedCount, "latestName-targetedCount");
3916
- dataMap.set(
3917
- STOCK_HISTORY_FIELD_NAME.SHORTIND_ICATORS,
3918
- {
3919
- latestIndicatorName: latestName,///最新指标名称
3920
- indicatorCount: targetedCount, //最新指标数量
3921
- }
3922
- );
3923
- }
3924
- }
3925
-
3926
- this.RecvError = function (request, condition) {
3927
-
3928
- }
3929
-
3930
- this.CreateCondition = function (name) {
3931
- return new QueryCondition(name);
3932
- }
3933
- }
3934
-
3935
-
3936
- function QueryCondition(name) {
3937
- this.Data = new Array();
3938
- this.Name = name;
3939
-
3940
- this.CreateConditionItem = function (filed, fieldType) {
3941
- let item = new QueryConditionItem();
3942
- item.Field = filed;
3943
- item.FieldType = fieldType;
3944
- return item;
3945
- }
3946
-
3947
- this.AddCondition = function (Item) {
3948
- this.Data.push(Item);
3949
- }
3950
-
3951
- this.GetQuery = function () {
3952
- let query = new Array();
3953
- for (let i in this.Data) {
3954
- let item = this.Data[i];
3955
- query.push({item: item.GetQuery()});
3956
- }
3957
-
3958
- return query;
3959
- }
3960
- }
3961
-
3962
- function QueryConditionItem() {
3963
- this.Field; //筛选字段
3964
- this.FieldType; //字段类型
3965
- this.Condition = Array(); //条件 {OP:操作符 , Value:数值}
3966
-
3967
- this.AddEqual = function (value) {
3968
- this.Condition.push({OP: "eq", Value: value})
3969
- }
3970
-
3971
- //>=
3972
- this.AddGTE = function (value) {
3973
- this.Condition.push({OP: "gte", Value: value})
3974
- }
3975
-
3976
- //<=
3977
- this.AddLTE = function (value) {
3978
- this.Condition.push({OP: "lte", Value: value})
3979
- }
3980
-
3981
- //Exists
3982
- this.AddExists = function (value) {
3983
- this.Condition.push({OP: 'exists', Value: value});
3984
- }
3985
-
3986
- //lifting
3987
- this.ADDLifting = function (value) {
3988
- this.Condition.push({OP: "lifting", Value: value})
3989
- }
3990
-
3991
- //date
3992
- this.ADDDate = function (value) {
3993
- this.Condition.push({OP: "date", Value: value})
3994
- }
3995
-
3996
- //key value
3997
- this.ADDKEY = function (key, value) {
3998
- this.Condition.push({OP: key, Value: value})
3999
- }
4000
-
4001
- this.GetQuery = function () {
4002
- let condition = new Array();
4003
- condition[0] = this.Field;
4004
- condition[1] = this.FieldType;
4005
- for (let i in this.Condition) {
4006
- let item = this.Condition[i];
4007
- condition.push(item.OP);
4008
- item.Value = item.Value.toString();
4009
- if (item.Value) {
4010
- condition.push(item.Value.toString());
4011
- }
4012
- }
4013
-
4014
- // console.log("condition", condition);
4015
- return condition;
4016
- }
4017
- }
4018
-
4019
-
4020
- module.exports =
4021
- {
4022
- JSCommonStock: {
4023
- JSStockInit:JSStock.Init,
4024
-
4025
- JSStock: JSStock,
4026
- StockRead: StockRead,
4027
- STOCK_FIELD_NAME: STOCK_FIELD_NAME,
4028
- FinanceData: FinanceData,
4029
- RECV_DATA_TYPE: RECV_DATA_TYPE,
4030
- STOCK_HISTORY_FIELD_NAME: STOCK_HISTORY_FIELD_NAME
4031
- }
4032
- };
4033
-
4034
-
4035
-