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