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,781 +0,0 @@
1
- # Copyright (c) 2018 jones
2
- #
3
- # http://www.apache.org/licenses/LICENSE-2.0
4
- #
5
- # 开源项目 https://github.com/jones2000/HQChart
6
- #
7
- # jones_2000@163.com
8
-
9
-
10
- ###########################################################################
11
- #
12
- # 数据结构类
13
- #
14
- ############################################################################
15
- import sys
16
- import time
17
- import datetime
18
- from umychart_complier_help import JSComplierHelper
19
-
20
- class PERIOD_ID:
21
- # 日线周期
22
- DAY=0
23
- WEEK=1
24
- MONTH=2
25
- QUARTER=9
26
- YEAR=3
27
- # 分钟周期
28
- MINUTE=4
29
- MINUTE_5=5
30
- MINUTE_15=6
31
- MINUTE_30=7
32
- MINUTE_60=8
33
- MINUTE_120=11
34
- MINUTE_240=12
35
- # 自定日线周期
36
- CUSTOM_DAY_PERIOD_START= 40000
37
- CUSTOM_DAY_PERIOD_END= 49999
38
- # 自定义分钟周期
39
- CUSTOM_MINUTE_PERIOD_START=20000
40
- CUSTOM_MINUTE_PERIOD_END=29999
41
-
42
-
43
- # 历史K线数据
44
- class HistoryData() :
45
- def __init__(self) :
46
- self.Date=None
47
- self.YClose=None
48
- self.Open=None
49
- self.Close=None
50
- self.High=None
51
- self.Low=None
52
- self.Vol=None
53
- self.Amount=None
54
- self.Time=None
55
- self.FlowCapital=0 # 流通股本
56
-
57
- # 指数才有的数据
58
- self.Stop=None # 停牌家数
59
- self.Up =None # 上涨
60
- self.Down=None # 下跌
61
- self.Unchanged=None # 平盘
62
-
63
- def IsVaild(self, type=5) : # 开高低收昨收数据时候有效
64
- if type==5 :
65
- return self.Open>0 and self.High>0 and self.Low>0 and self.Close>0 and self.YClose>0
66
- elif type==4 :
67
- return self.Open>0 and self.High>0 and self.Low>0 and self.Close>0
68
-
69
- @staticmethod
70
- def Copy(data) :
71
- newData=HistoryData()
72
- newData.Date=data.Date
73
- newData.YClose=data.YClose
74
- newData.Open=data.Open
75
- newData.Close=data.Close
76
- newData.High=data.High
77
- newData.Low=data.Low
78
- newData.Vol=data.Vol
79
- newData.Amount=data.Amount
80
- newData.Time=data.Time
81
- newData.FlowCapital=data.FlowCapital
82
-
83
- newData.Stop=data.Stop
84
- newData.Up=data.Up
85
- newData.Down=data.Down
86
- newData.Unchanged=data.Unchanged
87
-
88
- return newData
89
-
90
- @staticmethod # 数据复权拷贝
91
- def CopyRight(data,seed=1) :
92
- newData=HistoryData()
93
- newData.Date=data.Date
94
- newData.YClose=data.YClose*seed
95
- newData.Open=data.Open*seed
96
- newData.Close=data.Close*seed
97
- newData.High=data.High*seed
98
- newData.Low=data.Low*seed
99
-
100
- newData.Vol=data.Vol
101
- newData.Amount=data.Amount
102
- newData.FlowCapital=data.FlowCapital
103
-
104
- return newData
105
-
106
-
107
- class MinuteData :
108
- def __init__(self) :
109
- self.Close=None
110
- self.Open=None
111
- self.High=None
112
- self.Low=None
113
- self.Vol=None
114
- self.Amount=None
115
- self.DateTime=None
116
- self.Increase=None
117
- self.Risefall=None
118
- self.AvPrice=None
119
-
120
- # 单指标数据
121
- class SingleData() :
122
- def __init__(self, date=None, value=None) :
123
- self.Date=date # 日期
124
- self.Value=value # 数据 (可以是一个数组)
125
- self.TestData=None # 内部测试用
126
-
127
- class ChartData:
128
- def __init__(self, data, dataType=None) :
129
- self.Data=data
130
- self.Period=0 # 周期 0=日线 1=周线 2=月线 3=年线
131
- self.Right=0 # 复权 0=不复权 1=前复权 2=后复权
132
- self.DataType=dataType
133
-
134
- @staticmethod # 是否是日线周期 0=日线 1=周线 2=月线 3=年线 9=季线 21=双周 [40001-50000) 自定义日线 (isIncludeBase 是否包含基础日线周期)
135
- def IsDayPeriod(period, isIncludeBase) :
136
- if period==1 or period==2 or period==3 or period==9 or period==21 :
137
- return True
138
- if period>PERIOD_ID.CUSTOM_DAY_PERIOD_START and period<=PERIOD_ID.CUSTOM_DAY_PERIOD_END :
139
- return True
140
- if period==0 and isIncludeBase==True :
141
- return True
142
- return False
143
-
144
- @staticmethod # 是否是分钟周期 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟 11=120分钟 12=240分钟 [20001-30000) 自定义分钟 (isIncludeBase 是否包含基础1分钟周期)
145
- def IsMinutePeriod(period,isIncludeBase) :
146
- if (period==5 or period==6 or period==7 or period==8 or period==11 or period==12) :
147
- return True
148
- if (period>PERIOD_ID.CUSTOM_MINUTE_PERIOD_START and period<=PERIOD_ID.CUSTOM_MINUTE_PERIOD_END) :
149
- return True
150
- if (period==4 and isIncludeBase==True) :
151
- return True
152
- return False
153
-
154
- # 数据长度
155
- def GetCount(self):
156
- return len(self.Data)
157
-
158
- # 获取最大最小值
159
- def GetMaxMin(self):
160
- dMaxPrice=self.Data[0].High
161
- dMinPrice=self.Data[0].Low
162
- for i in range(len(self.Data)) :
163
- item=self.Data[i]
164
- dMinPrice = min(dMinPrice,item.Low)
165
- dMaxPrice = max(dMaxPrice,item.High)
166
- return {"Max":dMaxPrice, "Min":dMinPrice}
167
-
168
- def GetItem(self,index):
169
- return self.Data[index]
170
-
171
- # 获取收盘价
172
- def GetClose(self) :
173
- result=[None] * len(self.Data)
174
- for i in range(len(self.Data)) :
175
- result[i]=self.Data[i].Close
176
- return result
177
-
178
- def GetYClose(self) :
179
- result=[None] * len(self.Data)
180
- for i in range(len(self.Data)) :
181
- result[i]=self.Data[i].YClose
182
- return result
183
-
184
- def GetHigh(self) :
185
- result=[None] * len(self.Data)
186
- for i in range(len(self.Data)) :
187
- result[i]=self.Data[i].High
188
- return result
189
-
190
- def GetLow(self) :
191
- result=[None] * len(self.Data)
192
- for i in range(len(self.Data)) :
193
- result[i]=self.Data[i].Low
194
- return result
195
-
196
- def GetOpen(self) :
197
- result=[None] * len(self.Data)
198
- for i in range(len(self.Data)) :
199
- result[i]=self.Data[i].Open
200
- return result
201
-
202
- def GetVol(self) :
203
- result=[None] * len(self.Data)
204
- for i in range(len(self.Data)) :
205
- result[i]=self.Data[i].Vol
206
- return result
207
-
208
- def GetAmount(self) :
209
- result=[None] * len(self.Data)
210
- for i in range(len(self.Data)) :
211
- result[i]=self.Data[i].Amount
212
- return result
213
-
214
- def GetUp(self) : # 上涨家数
215
- result=[None] * len(self.Data)
216
- for i in range(len(self.Data)) :
217
- result[i]=self.Data[i].Up
218
- return result
219
-
220
- def GetDown(self) : # 下跌家数
221
- result=[None] * len(self.Data)
222
- for i in range(len(self.Data)) :
223
- result[i]=self.Data[i].Down
224
- return result
225
-
226
- def GetYear(self) :
227
- result=[None] * len(self.Data)
228
- for i in range(len(self.Data)) :
229
- result[i]=int(self.Data[i].Date/10000)
230
- return result
231
-
232
- def GetMonth(self) :
233
- result=[None] * len(self.Data)
234
- for i in range(len(self.Data)) :
235
- result[i]=int(self.Data[i].Date%10000/100)
236
- return result
237
-
238
- def GetDate(self) :
239
- result=JSComplierHelper.CreateArray(len(self.Data))
240
- for i in range(len(self.Data)) :
241
- result[i]=self.Data[i].Date
242
- return result
243
-
244
- def GetTime(self) :
245
- result=JSComplierHelper.CreateArray(len(self.Data))
246
- for i in range(len(self.Data)) :
247
- result[i]=self.Data[i].Time
248
- return result
249
-
250
- def GetWeek(self) :
251
- result=[None] * len(self.Data)
252
- for i in range(len(self.Data)) :
253
- value=self.Data[i].Date
254
- if value==None :
255
- result[i]=None
256
- continue
257
-
258
- date = datetime.datetime.strptime(str(value), '%Y%m%d')
259
- day=date.weekday()
260
- result[i]=day+1
261
-
262
- return result
263
-
264
-
265
- # 复权 0 不复权 1 前复权 2 后复权
266
- def GetRightDate(self,right) :
267
- result=[]
268
- if len(self.Data)<=0 :
269
- return result
270
-
271
- result=[None] * len(self.Data)
272
- if right==1 :
273
- count=len(self.Data)
274
- index=count-1
275
- seed=1 #复权系数
276
- yClose=self.Data[index].YClose
277
- result[index]=HistoryData.Copy(self.Data[index])
278
-
279
- for i in range(index-1,-1,-1):
280
- index=i
281
- if yClose!=self.Data[index].Close :
282
- break
283
-
284
- result[index]=HistoryData.Copy(self.Data[index])
285
- yClose=self.Data[index].YClose
286
-
287
- for i in range(index,-1,-1) :
288
- index=i
289
- if yClose!=self.Data[index].Close:
290
- seed *= yClose/self.Data[index].Close
291
-
292
- result[index]=HistoryData.CopyRight(self.Data[index],seed)
293
- yClose=self.Data[index].YClose
294
-
295
- elif right==2 :
296
- index=0
297
- seed=1
298
- close=self.Data[index].Close
299
- result[index]=HistoryData.Copy(self.Data[index])
300
-
301
- for i in range(len(self.Data)) :
302
- index=i
303
- if close!=self.Data[index].YClose:
304
- break
305
-
306
- result[index]=HistoryData.Copy(self.Data[index])
307
- close=self.Data[index].Close
308
-
309
- for i in range(index, len(self.Data)) :
310
- index=i
311
- if close!=self.Data[index].YClose :
312
- seed *= close/self.Data[index].YClose
313
-
314
- result[index]=HistoryData.CopyRight(self.Data[index],seed)
315
- close=self.Data[index].Close
316
-
317
- return result
318
-
319
-
320
- # 周期数据 1=周 2=月 3=年
321
- def GetPeriodData(self, period) :
322
- if period in (1,2,3) :
323
- return self.GetDayPeriodData(period)
324
- if period in (5,6,7,8) :
325
- return self.GetMinutePeriodData(period)
326
-
327
- # 计算周,月,年
328
- def GetDayPeriodData(self, period) :
329
- result=[]
330
- startDate=0
331
- newData=None
332
- for dayData in self.Data :
333
- isNewData=False
334
-
335
- if period==1 : # 周线
336
- fridayDate=ChartData.GetFirday(dayData.Date)
337
- if fridayDate!=startDate :
338
- isNewData=True
339
- startDate=fridayDate
340
-
341
- elif period==2 : # 月线
342
- if int(dayData.Date/100)!=int(startDate/100) :
343
- isNewData=True
344
- startDate=dayData.Date
345
- elif period==3 : # 年线
346
- if int(dayData.Date/10000)!=int(startDate/10000) :
347
- isNewData=True
348
- startDate=dayData.Date
349
-
350
- if isNewData :
351
- newData=HistoryData()
352
- newData.Date=dayData.Date
353
- result.append(newData)
354
-
355
- if dayData.Open==None or dayData.Close==None:
356
- continue
357
-
358
- newData.Open=dayData.Open
359
- newData.High=dayData.High
360
- newData.Low=dayData.Low
361
- newData.YClose=dayData.YClose
362
- newData.Close=dayData.Close
363
- newData.Vol=dayData.Vol
364
- newData.Amount=dayData.Amount
365
- newData.FlowCapital=dayData.FlowCapital
366
- else :
367
- if newData==None :
368
- continue
369
- if dayData.Open==None or dayData.Close==None :
370
- continue
371
-
372
- if newData.Open==None or newData.Close==None :
373
- newData.Open=dayData.Open
374
- newData.High=dayData.High
375
- newData.Low=dayData.Low
376
- newData.YClose=dayData.YClose
377
- newData.Close=dayData.Close
378
- newData.Vol=dayData.Vol
379
- newData.Amount=dayData.Amount
380
- newData.FlowCapital=dayData.FlowCapital
381
- else :
382
- if newData.High<dayData.High :
383
- newData.High=dayData.High
384
- if newData.Low>dayData.Low :
385
- newData.Low=dayData.Low
386
-
387
- newData.Close=dayData.Close
388
- newData.Vol+=dayData.Vol
389
- newData.Amount+=dayData.Amount
390
- newData.FlowCapital+=dayData.FlowCapital
391
- newData.Date=dayData.Date
392
-
393
- return result
394
-
395
- @staticmethod
396
- def GetFirday(value) :
397
- date = datetime.datetime.strptime(str(value), '%Y%m%d')
398
- day=date.weekday()
399
- if day==4 :
400
- return value
401
-
402
- date+=datetime.timedelta(days=4-day)
403
- fridayDate= date.year*10000+date.month*100+date.day
404
- return fridayDate
405
-
406
- # 计算分钟
407
- def GetMinutePeriodData(self, period) :
408
- result = []
409
- periodDataCount = 5
410
- if period == 5 :
411
- periodDataCount = 5
412
- elif period == 6 :
413
- periodDataCount = 15
414
- elif period == 7 :
415
- periodDataCount = 30
416
- elif period == 8 :
417
- periodDataCount = 60
418
- else :
419
- return self.Data
420
-
421
- bFirstPeriodData = False
422
- newData = None
423
- dataCount=len(self.Data)
424
- i=-1
425
- while i<dataCount : # for (var i = 0; i < this.Data.length; )
426
- bFirstPeriodData = True
427
-
428
- # for (var j = 0; j < periodDataCount && i < this.Data.length; ++i)
429
- j=0
430
- while j<periodDataCount and i<dataCount :
431
- i+=1
432
- if i>=dataCount :
433
- break
434
-
435
- if bFirstPeriodData :
436
- newData = HistoryData()
437
- result.append(newData)
438
- bFirstPeriodData = False
439
-
440
- minData = self.Data[i]
441
- if minData == None :
442
- j+=1
443
- continue
444
-
445
- if minData.Time in(925 ,930 ,1300) :
446
- pass
447
- else :
448
- j+=1
449
-
450
- newData.Date = minData.Date
451
- newData.Time = minData.Time
452
- if minData.Open==None or minData.Close==None :
453
- continue
454
- if newData.Open==None or newData.Close==None :
455
- newData.Open=minData.Open
456
- newData.High=minData.High
457
- newData.Low=minData.Low
458
- newData.YClose=minData.YClose
459
- newData.Close=minData.Close
460
- newData.Vol=minData.Vol
461
- newData.Amount=minData.Amount
462
- newData.FlowCapital=minData.FlowCapital
463
- else :
464
- if newData.High<minData.High :
465
- newData.High=minData.High
466
- if newData.Low>minData.Low :
467
- newData.Low=minData.Low
468
- newData.Close=minData.Close
469
- newData.Vol+=minData.Vol
470
- newData.Amount+=minData.Amount
471
- newData.FlowCapital+=minData.FlowCapital
472
-
473
- return result
474
-
475
-
476
- # 叠加数据和主数据拟合,去掉主数据没有日期的数据
477
- def GetOverlayData(self,overlayData) :
478
- count=len(self.Data)
479
- overlayDataLen=len(overlayData)
480
- result=[None]*len(self.Data)
481
-
482
- i,j =0,0
483
- while i<count :
484
- date=self.Data[i].Date
485
- if j>overlayDataLen :
486
- result[i]=HistoryData()
487
- result[i].Date=date
488
- i+=1
489
- continue
490
-
491
- overlayDate=overlayData[j].Date
492
-
493
- if overlayDate==date :
494
- result[i]=HistoryData()
495
- result[i].Date=overlayData[j].Date
496
- result[i].YClose=overlayData[j].YClose
497
- result[i].Open=overlayData[j].Open
498
- result[i].High=overlayData[j].High
499
- result[i].Low=overlayData[j].Low
500
- result[i].Close=overlayData[j].Close
501
- result[i].Vol=overlayData[j].Vol
502
- result[i].Amount=overlayData[j].Amount
503
-
504
- # 涨跌家数数据
505
- result[i].Stop=overlayData[j].Stop
506
- result[i].Up=overlayData[j].Up
507
- result[i].Down=overlayData[j].Down
508
- result[i].Unchanged=overlayData[j].Unchanged
509
-
510
- j+=1
511
- i+=1
512
- elif overlayDate<date :
513
- j+=1
514
- else :
515
- result[i]= HistoryData()
516
- result[i].Date=date
517
- i+=1
518
-
519
- return result
520
-
521
- # 叠加数据和主数据拟合,去掉主数据没有日期的数据 分钟K线
522
- def GetOverlayMinuteData(self,overlayData) :
523
- count=len(self.Data)
524
- overlayDataLen=len(overlayData)
525
- result=[None]*len(self.Data)
526
-
527
- i,j =0,0
528
- while i<count :
529
- date=self.Data[i].Date
530
- time=self.Data[i].Time
531
- if j>overlayDataLen :
532
- result[i]=HistoryData()
533
- result[i].Date=date
534
- result[i].Time=time
535
- i+=1
536
- continue
537
-
538
- overlayDate=overlayData[j].Date
539
- overlayTime=overlayData[j].Time
540
-
541
- if overlayDate==date and overlayTime==time:
542
- result[i]=HistoryData()
543
- result[i].Date=overlayData[j].Date
544
- result[i].Time=overlayData[j].Time
545
- result[i].YClose=overlayData[j].YClose
546
- result[i].Open=overlayData[j].Open
547
- result[i].High=overlayData[j].High
548
- result[i].Low=overlayData[j].Low
549
- result[i].Close=overlayData[j].Close
550
- result[i].Vol=overlayData[j].Vol
551
- result[i].Amount=overlayData[j].Amount
552
-
553
- # 涨跌家数数据
554
- result[i].Stop=overlayData[j].Stop
555
- result[i].Up=overlayData[j].Up
556
- result[i].Down=overlayData[j].Down
557
- result[i].Unchanged=overlayData[j].Unchanged
558
-
559
- j+=1
560
- i+=1
561
- elif overlayDate<date or (overlayData==date and overlayTime<time):
562
- j+=1
563
- else :
564
- result[i]= HistoryData()
565
- result[i].Date=date
566
- result[i].Time=time
567
- i+=1
568
-
569
- return result
570
-
571
-
572
- # 把财报数据拟合到主图数据,返回 SingleData 数组
573
- def GetFittingFinanceData(self,financeData) :
574
- dataLen=len(self.Data)
575
- financeLen=len(financeData)
576
- result=JSComplierHelper.CreateArray(dataLen)
577
-
578
- i,j = 0,0
579
- while i<dataLen :
580
- date=self.Data[i].Date
581
- if j+1<financeLen :
582
- if financeData[j].Date<date and financeData[j+1].Date<=date :
583
- j+=1
584
- continue
585
-
586
- item=SingleData()
587
- item.Date=date
588
- if j<financeLen :
589
- item.Value=financeData[j].Value
590
- item.TestData=financeData[j].Date # 财务日期 调试用
591
- else :
592
- item.Value=None
593
- item.TestData=None
594
-
595
- result[i]=item
596
-
597
- i+=1
598
-
599
- return result
600
-
601
-
602
- # 市值计算 financeData.Value 是股数
603
- def GetFittingMarketValueData(self,financeData) :
604
- dataLen=len(self.Data)
605
- financeLen=len(financeData)
606
- result=JSComplierHelper.CreateArray(dataLen)
607
-
608
- i,j =0,0
609
- while i<dataLen :
610
- date=self.Data[i].Date
611
- price=self.Data[i].Close
612
-
613
- if j+1<financeLen :
614
- if financeData[j].Date<date and financeData[j+1].Date<=date :
615
- j+=1
616
- continue
617
-
618
- item=SingleData()
619
- item.Date=date
620
- item.Value=financeData[j].Value*price # 市值计算 收盘价*股数
621
- item.TestDate=financeData[j].Date # 财务日期 调试用
622
- result[i]=item
623
-
624
- i+=1
625
-
626
- return result
627
-
628
- # SingleData 转成单数组
629
- def GetValue(self) :
630
- dataLen=len(self.Data)
631
- result=JSComplierHelper.CreateArray(dataLen)
632
-
633
- for i in range(dataLen) :
634
- if self.Data[i] and self.Data[i].Value!=None :
635
- result[i]=self.Data[i].Value
636
-
637
- return result
638
-
639
- # SingleData 周期合并 日线
640
- def GetPeriodSingleData(self,period) :
641
- result=[]
642
- startDate ,newData =0,None
643
-
644
- for i in range (len(self.Data)) :
645
- isNewData=False
646
- dayData=self.Data[i]
647
- if dayData==None or dayData.Date==None :
648
- continue
649
-
650
- if period==1 : # 周线
651
- fridayDate=ChartData.GetFirday(dayData.Date)
652
- if fridayDate!=startDate :
653
- isNewData=True
654
- startDate=fridayDate
655
-
656
- elif period==2 :# 月线
657
- if int(dayData.Date/100)!=int(startDate/100) :
658
- isNewData=True
659
- startDate=dayData.Date
660
-
661
- elif period==3: # 年线
662
- if int(dayData.Date/10000)!=int(startDate/10000) :
663
- isNewData=True
664
- startDate=dayData.Date
665
-
666
-
667
- if (isNewData) :
668
- newData=SingleData()
669
- newData.Date=dayData.Date
670
- newData.Value=dayData.Value
671
- result.append(newData)
672
- else :
673
- if newData==None :
674
- continue
675
- if dayData.Value==None :
676
- continue
677
- if newData.Value==None :
678
- newData.Value=dayData.Value
679
-
680
- return result
681
-
682
- # 计算股息率 股息率TTM:过去4个季度现金分红总额/总市值 * 100%
683
- def CalculateDividendYield(self,cashData, marketValue) :
684
- if not marketValue :
685
- return []
686
-
687
- dataLen, cashLen = len(self.Data), len(cashData)
688
- dividendYield=[]
689
- j=0
690
- for i in range(dataLen) :
691
- day=self.Data.Data[i]
692
- market=marketValue.MarketValue[i]
693
- if not day or not market :
694
- continue
695
-
696
- item=SingleData()
697
- item.Date=day.Date
698
- item.Value=0
699
-
700
- if (j+1<cashLen) :
701
- if (cashData[j].Date<day.Date and cashData[j+1].Date<=day.Date) :
702
- j+=1
703
- i-=1
704
-
705
- if (j<cashLen) :
706
- cash=cashData[j]
707
- endDate=cash.Date+10000 # 1年有效
708
-
709
- if (day.Date>=cash.Date and day.Date<=endDate and JSComplierHelper.IsDivideNumber(market.Value) and JSComplierHelper.IsNumber(cash.Value)) :
710
- item.Value=cash.Value/market.Value*100
711
-
712
- dividendYield.append(item)
713
-
714
- return dividendYield
715
-
716
-
717
- # 以主图数据 拟合,返回 SingleData 数组
718
- def GetFittingData(self, overlayData) :
719
- dataLen=len(self.Data)
720
- result=JSComplierHelper.CreateArray(dataLen)
721
-
722
- i,j =0,0
723
- while i<dataLen :
724
- date=self.Data[i].Date
725
- if j>=len(overlayData) :
726
- i+=1
727
- continue
728
-
729
- overlayDate=overlayData[j].Date
730
-
731
- if overlayDate==date :
732
- item=SingleData()
733
- item.Date=overlayData[j].Date
734
- item.Value=overlayData[j].Value
735
- result[i]=item
736
- j+=1
737
- i+=1
738
-
739
- elif overlayDate<date :
740
- j+=1
741
- else :
742
- result[i]=SingleData()
743
- result[i].Date=date
744
- i+=1
745
-
746
- return result
747
-
748
- # 缺省数据使用 emptyValue填充
749
- def GetFittingData2(self,overlayData,defaultValue) :
750
- dataLen=len(self.Data)
751
- result=JSComplierHelper.CreateArray(dataLen)
752
- i,j = 0,0
753
- while i<dataLen :
754
- date=self.Data[i].Date
755
- if j>=len(overlayData) :
756
- result[i]=SingleData()
757
- result[i].Date=date
758
- result[i].Value=defaultValue
759
- i+=1
760
- continue
761
-
762
- overlayDate=overlayData[j].Date
763
-
764
- if overlayDate==date :
765
- item=SingleData()
766
- item.Date=overlayData[j].Date
767
- item.Value=overlayData[j].Value
768
- result[i]=item
769
- j+=1
770
- i+=1
771
- elif overlayDate<date :
772
- j+=1
773
- else :
774
- result[i]=SingleData()
775
- result[i].Date=date
776
- result[i].Value=defaultValue
777
- i+=1
778
-
779
- return result
780
-
781
-