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,4074 +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
- import {
14
- g_JSChartResource,
15
- } from './umychart.resource.wechat.js'
16
-
17
- import { JSCommonComplier } from "./umychart.complier.wechat.js"; //通达信编译器
18
-
19
- //日志
20
- import { JSConsole } from "./umychart.console.wechat.js"
21
-
22
- import {
23
- ChartData, HistoryData,
24
- SingleData, MinuteData,
25
- JSCHART_EVENT_ID,
26
- } from "./umychart.data.wechat.js";
27
-
28
- //图形库
29
- import {
30
- IChartPainting,
31
- ChartSingleText,
32
- ChartDrawIcon,
33
- ChartDrawText,
34
- ChartDrawNumber,
35
- ChartKLine,
36
- ChartColorKline,
37
- ChartLine,
38
- ChartArea,
39
- ChartSubLine,
40
- ChartPointDot,
41
- ChartStick,
42
- ChartLineStick,
43
- ChartStickLine,
44
- ChartOverlayKLine,
45
- ChartMinuteInfo,
46
- ChartRectangle,
47
- ChartMultiText,
48
- ChartMultiLine,
49
- ChartMultiPoint,
50
- ChartMultiBar,
51
- ChartPie,
52
- ChartCircle,
53
- ChartChinaMap,
54
- ChartRadar,
55
- ChartCorssCursor,
56
- ChartBuySell,
57
- ChartMACD,
58
- ChartSplashPaint,
59
- ChartBackground,
60
- ChartMinuteVolumBar,
61
- ChartMultiHtmlDom,
62
- ChartLock,
63
- ChartVolStick,
64
- ChartBand,
65
- ChartLineMultiData,
66
- ChartStraightLine,
67
- ChartStackedBar,
68
- ChartStepLine,
69
- ChartBackgroundDiv,
70
- } from "./umychart.chartpaint.wechat.js";
71
-
72
- import
73
- {
74
- CoordinateInfo,
75
- IFrameSplitOperator,
76
- FrameSplitKLinePriceY,
77
- FrameSplitY,
78
- FrameSplitKLineX,
79
- FrameSplitMinutePriceY,
80
- FrameSplitMinuteX,
81
- FrameSplitXData,
82
- SplitData,
83
- PriceSplitData,
84
- } from './umychart.framesplit.wechat.js'
85
-
86
- import
87
- {
88
- IChartTitlePainting,
89
- DynamicKLineTitlePainting,
90
- DynamicMinuteTitlePainting,
91
- DynamicChartTitlePainting,
92
- DynamicTitleData,
93
- STRING_FORMAT_TYPE,
94
- } from './umychart.charttitle.wechat.js'
95
-
96
- import { HQIndexFormula } from "./umychart.hqIndexformula.wechat.js"; //通达信编译器
97
-
98
- //////////////////////////////////////////////////////////
99
- //
100
- // 指标信息
101
- //
102
- function IndexInfo(name, param)
103
- {
104
- this.Name = name; //名字
105
- this.Param = param; //参数
106
- this.LineColor; //线段颜色
107
- this.ReqeustData = null; //数据请求
108
- }
109
-
110
- function BaseIndex(name)
111
- {
112
- this.Index; //指标阐述
113
- this.Name = name; //指标名字
114
- this.UpdateUICallback; //数据到达回调
115
-
116
- //默认创建都是线段
117
- this.Create = function (hqChart, windowIndex)
118
- {
119
- for (var i in this.Index)
120
- {
121
- if (!this.Index[i].Name) continue;
122
-
123
- var maLine = new ChartLine();
124
- maLine.Canvas = hqChart.Canvas;
125
- maLine.Name = this.Name + '-' + i.toString();
126
- maLine.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
127
- maLine.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
128
- maLine.Color = this.Index[i].LineColor;
129
-
130
- hqChart.ChartPaint.push(maLine);
131
- }
132
- }
133
-
134
- //指标不支持 周期/复权/股票等
135
- this.NotSupport = function (hqChart, windowIndex, message)
136
- {
137
- var paint = hqChart.GetChartPaint(windowIndex);
138
- for (var i in paint)
139
- {
140
- paint[i].Data.Data = []; //清空数据
141
- if (i == 0) paint[i].NotSupportMessage = message;
142
- }
143
- }
144
-
145
- //格式化指标名字+参数
146
- //格式:指标名(参数1,参数2,参数3,...)
147
- this.FormatIndexTitle = function ()
148
- {
149
- var title = this.Name;
150
- var param = null;
151
-
152
- for (var i in this.Index)
153
- {
154
- var item = this.Index[i];
155
- if (item.Param == null) continue;
156
-
157
- if (param) param += ',' + item.Param.toString();
158
- else param = item.Param.toString();
159
- }
160
-
161
- if (param) title += '(' + param + ')';
162
-
163
- return title;
164
- }
165
-
166
- this.InvokeUpdateUICallback = function (paint)
167
- {
168
- if (typeof (this.UpdateUICallback) != 'function') return;
169
-
170
- let indexData = new Array();
171
- for (let i in paint)
172
- {
173
- indexData.push({ Name: this.Index[i].Name, Data: paint[i].Data });
174
- }
175
-
176
- this.UpdateUICallback(indexData);
177
- }
178
- }
179
-
180
- // 图形指标名字
181
- var SCRIPT_CHART_NAME=
182
- {
183
- OVERLAY_BARS:"OVERLAY_BARS" //叠加柱子图
184
- }
185
-
186
- //脚本指标
187
- //name=指标名字 args=参数名字 参数值
188
- function ScriptIndex(name, script, args, option)
189
- {
190
- this.newMethod = BaseIndex; //派生
191
- this.newMethod(name);
192
- delete this.newMethod;
193
-
194
- this.Script = script;
195
- this.Arguments = [];
196
- this.OutVar = [];
197
- this.ID; //指标ID
198
- this.FloatPrecision = 2; //小数位数
199
- this.StringFormat;
200
- this.KLineType = null; //K线显示类型
201
- this.InstructionType; //五彩K线, 交易指标
202
- this.YSpecificMaxMin = null; //最大最小值
203
- this.YSplitScale = null; //固定刻度
204
- this.OutName=null; //动态输出指标名字
205
- this.YSplitType;
206
-
207
- //指标上锁配置信息
208
- this.IsLocked = false; //是否锁住指标
209
- this.LockCallback = null;
210
- this.LockID = null;
211
- this.LockBG = null; //锁背景色
212
- this.LockTextColor = null;
213
- this.LockText = null;
214
- this.LockFont = null;
215
- this.LockCount = 10;
216
- this.TitleFont=g_JSChartResource.DynamicTitleFont; //标题字体
217
- this.IsShortTitle=false; //是否显示指标参数
218
-
219
- this.IsShow=true; //是否显示图形
220
-
221
- if (option)
222
- {
223
- if (option.FloatPrecision >= 0) this.FloatPrecision = option.FloatPrecision;
224
- if (option.StringFormat > 0) this.StringFormat = option.StringFormat;
225
- if (option.ID) this.ID = option.ID;
226
- if (option.KLineType) this.KLineType = option.KLineType;
227
- if (option.InstructionType) this.InstructionType = option.InstructionType;
228
- if (option.YSpecificMaxMin) this.YSpecificMaxMin = option.YSpecificMaxMin;
229
- if (option.YSplitScale) this.YSplitScale = option.YSplitScale;
230
- if (option.TitleFont) this.TitleFont=option.TitleFont;
231
- if (IFrameSplitOperator.IsNumber(option.IsShortTitle)) this.IsShortTitle=option.IsShortTitle;
232
- if (option.OutName) this.OutName=option.OutName;
233
- if (IFrameSplitOperator.IsNumber(option.YSplitType)) this.YSplitType=option.YSplitType;
234
- }
235
-
236
- if (option && option.Lock)
237
- {
238
- if (option.Lock.IsLocked == true) this.IsLocked = true; //指标上锁
239
- if (option.Lock.Callback) this.LockCallback = option.Lock.Callback; //锁回调
240
- if (option.Lock.ID) this.LockID = option.Lock.ID; //锁ID
241
- if (option.Lock.BG) this.LockBG = option.Lock.BG;
242
- if (option.Lock.TextColor) this.LockTextColor = option.Lock.TextColor;
243
- if (option.Lock.Text) this.LockText = option.Lock.Text;
244
- if (option.Lock.Font) this.LockFont = option.Lock.Font;
245
- if (option.Lock.Count) this.LockCount = option.Lock.Count;
246
- }
247
-
248
- if (args) this.Arguments = args;
249
-
250
- this.SetLock = function (lockData) {
251
- if (lockData.IsLocked == true) {
252
- this.IsLocked = true; //指标上锁
253
- if (lockData.Callback) this.LockCallback = lockData.Callback; //锁回调
254
- if (lockData.ID) this.LockID = lockData.ID; //锁ID
255
- if (lockData.BG) this.LockBG = lockData.BG;
256
- if (lockData.TextColor) this.LockTextColor = lockData.TextColor;
257
- if (lockData.Text) this.LockText = lockData.Text;
258
- if (lockData.Font) this.LockFont = lockData.Font;
259
- if (lockData.Count) this.LockCount = lockData.Count;
260
- }
261
- else { //清空锁配置信息
262
- this.IsLocked = false; //是否锁住指标
263
- this.LockCallback = null;
264
- this.LockID = null;
265
- this.LockBG = null; //锁背景色
266
- this.LockTextColor = null;
267
- this.LockText = null;
268
- this.LockFont = null;
269
- this.LockCount = 10;
270
- }
271
- }
272
-
273
- this.ExecuteScript = function (hqChart, windowIndex, hisData)
274
- {
275
- this.OutVar = [];
276
- let self = this;
277
- let param =
278
- {
279
- HQChart: hqChart,
280
- WindowIndex: windowIndex,
281
- HistoryData: hisData,
282
- Self: this
283
- };
284
-
285
- let hqDataType = 0; //默认K线
286
- if (hqChart.ClassName === 'MinuteChartContainer' || hqChart.ClassName==='MinuteChartHScreenContainer')
287
- {
288
- if (hqChart.DayCount>1) hqDataType=HQ_DATA_TYPE.MULTIDAY_MINUTE_ID; //多日分钟
289
- else hqDataType=HQ_DATA_TYPE.MINUTE_ID;
290
- }
291
- else if (hqChart.ClassName==='HistoryMinuteChartContainer')
292
- {
293
- hqDataType=HQ_DATA_TYPE.HISTORY_MINUTE_ID; //历史分钟
294
- }
295
-
296
- let option =
297
- {
298
- HQDataType: hqDataType,
299
- Symbol: hqChart.Symbol,
300
- Data: hisData,
301
- SourceData: hqChart.SourceData, //原始数据
302
- Callback: this.RecvResultData, CallbackParam: param,
303
- Async: true,
304
- MaxRequestDataCount: hqChart.MaxRequestDataCount,
305
- MaxRequestMinuteDayCount: hqChart.MaxRequestMinuteDayCount,
306
- Arguments: this.Arguments,
307
- IsApiPeriod:hqChart.IsApiPeriod,
308
- };
309
-
310
- if (hqDataType===HQ_DATA_TYPE.HISTORY_MINUTE_ID) option.TrateDate=hqChart.TradeDate;
311
- if (hqDataType===HQ_DATA_TYPE.MULTIDAY_MINUTE_ID) option.DayCount=hqChart.DayCount;
312
- if (hqChart.NetworkFilter) option.NetworkFilter = hqChart.NetworkFilter;
313
-
314
- let code = this.Script;
315
- let run = JSCommonComplier.JSComplier.Execute(code, option, hqChart.ScriptErrorCallback);
316
- }
317
-
318
- this.RecvResultData = function (outVar, param)
319
- {
320
- let hqChart = param.HQChart;
321
- let windowIndex = param.WindowIndex;
322
- let hisData = param.HistoryData;
323
- param.Self.OutVar = outVar;
324
- param.Self.BindData(hqChart, windowIndex, hisData);
325
-
326
- if (param.Self.IsLocked == false) //不上锁
327
- {
328
- param.HQChart.Frame.SubFrame[windowIndex].Frame.SetLock(null);
329
- }
330
- else //上锁
331
- {
332
- let lockData =
333
- {
334
- IsLocked: true, Callback: param.Self.LockCallback, IndexName: param.Self.Name, ID: param.Self.LockID,
335
- BG: param.Self.LockBG, Text: param.Self.LockText, TextColor: param.Self.LockTextColor, Font: param.Self.LockFont,
336
- Count: param.Self.LockCount
337
- };
338
- param.HQChart.Frame.SubFrame[windowIndex].Frame.SetLock(lockData);
339
- }
340
-
341
- param.HQChart.UpdataDataoffset(); //更新数据偏移
342
- param.HQChart.UpdateFrameMaxMin(); //调整坐标最大 最小值
343
- param.HQChart.Draw();
344
-
345
- var event = hqChart.GetIndexEvent(); //指标计算完成回调
346
- if (event)
347
- {
348
- var self = param.Self;
349
- var data = {
350
- OutVar: self.OutVar, WindowIndex: windowIndex, Name: self.Name, Arguments: self.Arguments, HistoryData: hisData,
351
- Stock: { Symbol: hqChart.Symbol, Name: hqChart.Name }
352
- };
353
- event.Callback(event, data, self);
354
- }
355
- }
356
-
357
- //给图形设置指标名字
358
- this.SetChartIndexName=function(chart)
359
- {
360
- if (this.Name) chart.IndexName=this.Name;
361
- else if (this.ID) chart.IndexName==this.ID;
362
-
363
- if (this.ID) chart.IndexID=this.ID;
364
-
365
- chart.Script=this; //指标内容绑定上去
366
- }
367
-
368
- //设置标题数据
369
- this.SetTitleData=function(titleData, chart)
370
- {
371
- titleData.ChartClassName=chart.ClassName;
372
- titleData.IsVisible=chart.IsVisible;
373
- }
374
-
375
- //自定义图形配色
376
- this.ReloadChartResource=function(hqChart, windowIndex, chart)
377
- {
378
- var event=hqChart.GetEventCallback(JSCHART_EVENT_ID.ON_RELOAD_INDEX_CHART_RESOURCE); //指标计算完成回调
379
- if (!event || !event.Callback) return;
380
-
381
- var sendData={ Chart:chart, IndexName:this.Name,IndexID:this.ID, HQChart:hqChart, WindowIndex:windowIndex };
382
- event.Callback(event,sendData,this);
383
- }
384
-
385
- this.CreateLine = function (hqChart, windowIndex, varItem, id, lineType)
386
- {
387
- if (lineType==7) var line=new ChartStepLine();
388
- else var line = new ChartLine();
389
- line.Canvas = hqChart.Canvas;
390
- line.DrawType = 1; //无效数不画
391
- line.Name = varItem.Name;
392
- line.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
393
- line.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
394
- if (varItem.Color) line.Color = this.GetColor(varItem.Color);
395
- else line.Color = this.GetDefaultColor(id);
396
- if (varItem.IsShow==false) line.IsShow=false;
397
- if (varItem.LineWidth)
398
- {
399
- let width = parseInt(varItem.LineWidth.replace("LINETHICK", ""));
400
- if (!isNaN(width) && width > 0) line.LineWidth = width;
401
- }
402
-
403
- if (varItem.IsDotLine) line.IsDotLine = true; //虚线
404
- if (varItem.IsShow == false) line.IsShow = false;
405
-
406
- let titleIndex = windowIndex + 1;
407
- line.Data.Data = varItem.Data;
408
-
409
- this.ReloadChartResource(hqChart,windowIndex,line);
410
-
411
- if (varItem.IsShowTitle===false) //NOTEXT 不绘制标题
412
- {
413
- }
414
- else if (IFrameSplitOperator.IsString(varItem.Name) && varItem.Name.indexOf("NOTEXT")==0) //标题中包含NOTEXT不绘制标题
415
- {
416
- }
417
- else
418
- {
419
- var titleData=new DynamicTitleData(line.Data, (varItem.NoneName==true? null: varItem.Name) , line.Color);
420
- hqChart.TitlePaint[titleIndex].Data[id] = titleData;
421
- this.SetTitleData(titleData,line);
422
- }
423
-
424
- this.SetChartIndexName(line);
425
- hqChart.ChartPaint.push(line);
426
- }
427
-
428
- this.CreateArea=function(hqChart, windowIndex, varItem, id)
429
- {
430
- var line=new ChartArea();
431
-
432
- line.Canvas=hqChart.Canvas;
433
- line.DrawType=1;
434
- line.Name=varItem.Name;
435
- line.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
436
- line.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
437
- line.Identify=this.Guid;
438
- if (varItem.Color) line.Color=this.GetColor(varItem.Color);
439
- else line.Color=this.GetDefaultColor(id);
440
- if (varItem.DownColor)
441
- {
442
- line.AreaColor=varItem.DownColor;
443
- }
444
- else if (varItem.UpColor)
445
- {
446
- line.AreaColor=varItem.UpColor;
447
- line.AreaDirection=1;
448
- }
449
-
450
- if (varItem.LineWidth)
451
- {
452
- let width=parseInt(varItem.LineWidth.replace("LINETHICK",""));
453
- if (!isNaN(width) && width>0) line.LineWidth=width;
454
- }
455
-
456
- if (IFrameSplitOperator.IsNonEmptyArray(varItem.LineDash)) line.LineDash=varItem.LineDash; //虚线
457
- if (varItem.IsShow==false) line.IsShow=false;
458
-
459
- let titleIndex=windowIndex+1;
460
- line.Data.Data=varItem.Data;
461
- if (varItem.IsShowTitle===false) //NOTEXT 不绘制标题
462
- {
463
-
464
- }
465
- else if (IFrameSplitOperator.IsString(varItem.Name) && varItem.Name.indexOf("NOTEXT")==0) //标题中包含NOTEXT不绘制标题
466
- {
467
-
468
- }
469
- else
470
- {
471
- if (varItem.NoneName)
472
- hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,null,line.Color);
473
- else
474
- hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,varItem.Name,line.Color);
475
-
476
- hqChart.TitlePaint[titleIndex].Data[id].ChartClassName=line.ClassName;
477
- }
478
-
479
- this.SetChartIndexName(line);
480
- hqChart.ChartPaint.push(line);
481
- }
482
-
483
- this.CreateOverlayLine = function (hqChart, windowIndex, varItem, id)
484
- {
485
- let line = new ChartSubLine();
486
- line.Canvas = hqChart.Canvas;
487
- line.DrawType = 1; //无效数不画
488
- line.Name = varItem.Name;
489
- line.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
490
- line.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
491
- if (varItem.Color) line.Color = this.GetColor(varItem.Color);
492
- else line.Color = this.GetDefaultColor(id);
493
-
494
- if (varItem.LineWidth) {
495
- let width = parseInt(varItem.LineWidth.replace("LINETHICK", ""));
496
- if (!isNaN(width) && width > 0) line.LineWidth = width;
497
- }
498
-
499
- if (varItem.IsDotLine) line.IsDotLine = true; //虚线
500
- if (varItem.IsShow == false) line.IsShow = false;
501
-
502
- let titleIndex = windowIndex + 1;
503
- line.Data.Data = varItem.Data;
504
- hqChart.TitlePaint[titleIndex].Data[id] = new DynamicTitleData(line.Data, varItem.Name, line.Color);
505
-
506
- hqChart.ChartPaint.push(line);
507
- }
508
-
509
- //创建柱子
510
- this.CreateBar = function (hqChart, windowIndex, varItem, id)
511
- {
512
- let bar = new ChartStickLine();
513
- bar.Canvas = hqChart.Canvas;
514
- if (varItem.Draw.Width > 0) bar.LineWidth = varItem.Draw.Width;
515
- else bar.LineWidth=1;
516
-
517
- bar.Name = varItem.Name;
518
- bar.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
519
- bar.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
520
- if (varItem.Color) bar.Color = this.GetColor(varItem.Color);
521
- else bar.Color = this.GetDefaultColor(id);
522
-
523
- let titleIndex = windowIndex + 1;
524
- bar.Data.Data = varItem.Draw.DrawData;
525
- bar.BarType = varItem.Draw.Type;
526
-
527
- //hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
528
-
529
- hqChart.ChartPaint.push(bar);
530
- }
531
-
532
- //DRAWTEXT
533
- this.CreateDrawTextV2=function(hqChart, windowIndex, varItem, id)
534
- {
535
- var chartText = new ChartDrawText();
536
- chartText.Canvas = hqChart.Canvas;
537
- chartText.TextAlign='left';
538
-
539
- chartText.Name = varItem.Name;
540
- chartText.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
541
- chartText.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
542
- chartText.ReloadResource();
543
-
544
- if (varItem.Color) chartText.Color = this.GetColor(varItem.Color);
545
- else chartText.Color = this.GetDefaultColor(id);
546
-
547
- if (varItem.Draw.DrawData) chartText.Data.Data = varItem.Draw.DrawData;
548
- chartText.Text = varItem.Draw.Text;
549
- if (varItem.Draw.YOffset > 0) chartText.YOffset = varItem.Draw.YOffset;
550
- if (varItem.Draw.TextAlign) chartText.TextAlign = varItem.Draw.TextAlign;
551
-
552
- //指定输出位置
553
- if (varItem.Draw.FixedPosition==="TOP") chartText.FixedPosition=1;
554
- else if (varItem.Draw.FixedPosition==="BOTTOM") chartText.FixedPosition=2;
555
-
556
- if (varItem.DrawVAlign>=0)
557
- {
558
- if (varItem.DrawVAlign==0) chartText.TextBaseline='top';
559
- else if (varItem.DrawVAlign==1) chartText.TextBaseline='middle';
560
- else if (varItem.DrawVAlign==2) chartText.TextBaseline='bottom';
561
- }
562
-
563
- if (varItem.DrawAlign>=0)
564
- {
565
- if (varItem.DrawAlign==0) chartText.TextAlign="left";
566
- else if (varItem.DrawAlign==1) chartText.TextAlign="center";
567
- else if (varItem.DrawAlign==2) chartText.TextAlign='right';
568
- }
569
-
570
- if (varItem.DrawFontSize>0) chartText.FixedFontSize=varItem.DrawFontSize;
571
- if (varItem.Background) chartText.TextBG=varItem.Background;
572
- if (varItem.VerticalLine) chartText.VerticalLine=varItem.VerticalLine;
573
-
574
- if (IFrameSplitOperator.IsNumber(varItem.YOffset)) chartText.ShowOffset.Y=varItem.YOffset;
575
- if (IFrameSplitOperator.IsNumber(varItem.XOffset)) chartText.ShowOffset.X=varItem.XOffset;
576
-
577
- //var titleIndex = windowIndex + 1;
578
- //hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
579
- hqChart.ChartPaint.push(chartText);
580
- }
581
-
582
- //DRAWNUMBER
583
- this.CreateDrawNumber=function(hqChart,windowIndex,varItem,id)
584
- {
585
- var chartText=new ChartDrawNumber();
586
- chartText.Canvas=hqChart.Canvas;
587
- chartText.Name=varItem.Name;
588
- chartText.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
589
- chartText.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
590
- chartText.ReloadResource();
591
-
592
- if (varItem.Color) chartText.Color=this.GetColor(varItem.Color);
593
- else chartText.Color=this.GetDefaultColor(id);
594
- if (varItem.IsDrawCenter===true) chartText.TextAlign='center';
595
- if (varItem.IsDrawAbove===true) chartText.TextBaseline='bottom'
596
- if (varItem.IsDrawBelow===true) chartText.TextBaseline='top';
597
-
598
- chartText.Data.Data=varItem.Draw.DrawData.Value;
599
- chartText.Text=varItem.Draw.DrawData.Text;
600
- if (varItem.Draw.Direction>0) chartText.Direction=varItem.Draw.Direction;
601
- if (varItem.Draw.YOffset>0) chartText.YOffset=varItem.Draw.YOffset;
602
- if (varItem.Draw.TextAlign) chartText.TextAlign=varItem.Draw.TextAlign;
603
-
604
- //指定输出位置
605
- if (varItem.Draw.FixedPosition==="TOP") chartText.FixedPosition=1;
606
- else if (varItem.Draw.FixedPosition==="BOTTOM") chartText.FixedPosition=2;
607
-
608
- if (varItem.DrawVAlign>=0)
609
- {
610
- if (varItem.DrawVAlign==0) chartText.TextBaseline='top';
611
- else if (varItem.DrawVAlign==1) chartText.TextBaseline='middle';
612
- else if (varItem.DrawVAlign==2) chartText.TextBaseline='bottom';
613
- }
614
-
615
- if (varItem.DrawAlign>=0)
616
- {
617
- if (varItem.DrawAlign==0) chartText.TextAlign="left";
618
- else if (varItem.DrawAlign==1) chartText.TextAlign="center";
619
- else if (varItem.DrawAlign==2) chartText.TextAlign='right';
620
- }
621
-
622
- if (varItem.DrawFontSize>0) chartText.FixedFontSize=varItem.DrawFontSize;
623
- if (varItem.Background) chartText.TextBG=varItem.Background;
624
- if (varItem.VerticalLine) chartText.VerticalLine=varItem.VerticalLine;
625
-
626
- //let titleIndex=windowIndex+1;
627
- //hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
628
- hqChart.ChartPaint.push(chartText);
629
- }
630
-
631
- //创建文本
632
- this.CreateText = function (hqChart, windowIndex, varItem, id)
633
- {
634
- let chartText = new ChartSingleText();
635
- chartText.Canvas = hqChart.Canvas;
636
- chartText.TextAlign='left';
637
-
638
- chartText.Name = varItem.Name;
639
- chartText.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
640
- chartText.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
641
- chartText.ReloadResource();
642
-
643
- if (varItem.Color) chartText.Color = this.GetColor(varItem.Color);
644
- else chartText.Color = this.GetDefaultColor(id);
645
-
646
- let titleIndex = windowIndex + 1;
647
- if (varItem.Draw.Position) chartText.Position=varItem.Draw.Position; //赋值坐标
648
- if (varItem.Draw.DrawData) chartText.Data.Data = varItem.Draw.DrawData;
649
- chartText.Text = varItem.Draw.Text;
650
- if (varItem.Draw.Direction > 0) chartText.Direction = varItem.Draw.Direction;
651
- if (varItem.Draw.YOffset > 0) chartText.YOffset = varItem.Draw.YOffset;
652
- if (varItem.Draw.TextAlign) chartText.TextAlign = varItem.Draw.TextAlign;
653
-
654
- if (varItem.DrawVAlign>=0)
655
- {
656
- if (varItem.DrawVAlign==0) chartText.Direction=1;
657
- else if (varItem.DrawVAlign==1) chartText.Direction=0;
658
- else if (varItem.DrawVAlign==2) chartText.Direction=2;
659
- }
660
-
661
- if (varItem.DrawAlign>=0)
662
- {
663
- if (varItem.DrawAlign==0) chartText.TextAlign="left";
664
- else if (varItem.DrawAlign==1) chartText.TextAlign="center";
665
- else if (varItem.DrawAlign==2) chartText.TextAlign='right';
666
- }
667
-
668
- if (varItem.DrawFontSize>0) chartText.FixedFontSize=varItem.DrawFontSize;
669
- if (varItem.Background) chartText.TextBG=varItem.Background;
670
- //hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
671
- hqChart.ChartPaint.push(chartText);
672
- }
673
-
674
- //COLORSTICK
675
- this.CreateMACD = function (hqChart, windowIndex, varItem, id)
676
- {
677
- let chartMACD = new ChartMACD();
678
- chartMACD.Canvas = hqChart.Canvas;
679
-
680
- chartMACD.Name = varItem.Name;
681
- chartMACD.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
682
- chartMACD.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
683
- if (varItem.LineWidth)
684
- {
685
- var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));
686
- if (!isNaN(width) && width>0) chartMACD.LineWidth=width;
687
- }
688
-
689
- let titleIndex = windowIndex + 1;
690
- chartMACD.Data.Data = varItem.Data;
691
- var clrTitle=this.GetDefaultColor(id);
692
- if (varItem.Color) clrTitle= this.GetColor(varItem.Color);
693
-
694
- if (varItem.UpColor) chartMACD.UpColor=varItem.UpColor;
695
- if (varItem.DownColor) chartMACD.DownColor=varItem.DownColor;
696
-
697
- this.ReloadChartResource(hqChart,windowIndex,chartMACD);
698
-
699
- hqChart.TitlePaint[titleIndex].Data[id] = new DynamicTitleData(chartMACD.Data, varItem.Name, clrTitle);
700
-
701
- this.SetChartIndexName(chartMACD);
702
- hqChart.ChartPaint.push(chartMACD);
703
- }
704
-
705
- this.CreatePointDot = function (hqChart, windowIndex, varItem, id, hisData)
706
- {
707
- let pointDot = new ChartPointDot();
708
- pointDot.Canvas = hqChart.Canvas;
709
- pointDot.Name = varItem.Name;
710
- pointDot.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
711
- pointDot.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
712
- if (varItem.Color) pointDot.Color = this.GetColor(varItem.Color);
713
- else pointDot.Color = this.GetDefaultColor(id);
714
-
715
- if (varItem.Radius) pointDot.Radius = varItem.Radius;
716
-
717
- if (varItem.LineWidth)
718
- {
719
- let width = parseInt(varItem.LineWidth.replace("LINETHICK", ""));
720
- if (!isNaN(width) && width > 0) pointDot.Radius = width;
721
- }
722
-
723
- if (IFrameSplitOperator.IsBool(varItem.UpDownDot))
724
- {
725
- pointDot.EnableUpDownColor=varItem.UpDownDot;
726
- pointDot.HistoryData=hisData;
727
- }
728
-
729
- let titleIndex = windowIndex + 1;
730
- pointDot.Data.Data = varItem.Data;
731
- hqChart.TitlePaint[titleIndex].Data[id] = new DynamicTitleData(pointDot.Data, varItem.Name, pointDot.Color);
732
-
733
- hqChart.ChartPaint.push(pointDot);
734
- }
735
-
736
- this.CreateStick = function (hqChart, windowIndex, varItem, id)
737
- {
738
- let chart = new ChartStick();
739
- chart.Canvas = hqChart.Canvas;
740
- chart.Name = varItem.Name;
741
- chart.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
742
- chart.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
743
- if (varItem.Color) chart.Color = this.GetColor(varItem.Color);
744
- else chart.Color = this.GetDefaultColor(id);
745
-
746
- if (varItem.LineWidth)
747
- {
748
- let width = parseInt(varItem.LineWidth.replace("LINETHICK", ""));
749
- if (!isNaN(width) && width > 0) chart.LineWidth = width;
750
- }
751
-
752
- let titleIndex = windowIndex + 1;
753
- chart.Data.Data = varItem.Data;
754
- this.ReloadChartResource(hqChart,windowIndex,chart);
755
-
756
- hqChart.TitlePaint[titleIndex].Data[id] = new DynamicTitleData(chart.Data, varItem.Name, chart.Color);
757
-
758
- this.SetChartIndexName(chart);
759
- hqChart.ChartPaint.push(chart);
760
- }
761
-
762
- this.CreateLineStick = function (hqChart, windowIndex, varItem, id) {
763
- let chart = new ChartLineStick();
764
- chart.Canvas = hqChart.Canvas;
765
- chart.Name = varItem.Name;
766
- chart.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
767
- chart.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
768
- if (varItem.Color) chart.Color = this.GetColor(varItem.Color);
769
- else chart.Color = this.GetDefaultColor(id);
770
-
771
- if (varItem.LineWidth) {
772
- let width = parseInt(varItem.LineWidth.replace("LINETHICK", ""));
773
- if (!isNaN(width) && width > 0) chart.LineWidth = width;
774
- }
775
-
776
- let titleIndex = windowIndex + 1;
777
- chart.Data.Data = varItem.Data;
778
- hqChart.TitlePaint[titleIndex].Data[id] = new DynamicTitleData(chart.Data, varItem.Name, chart.Color);
779
-
780
- hqChart.ChartPaint.push(chart);
781
- }
782
-
783
- this.CreateStraightLine = function (hqChart, windowIndex, varItem, id) {
784
- let line = new ChartLine();
785
- line.DrawType = 1;
786
- line.Canvas = hqChart.Canvas;
787
- line.Name = varItem.Name;
788
- line.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
789
- line.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
790
- if (varItem.Color) line.Color = this.GetColor(varItem.Color);
791
- else line.Color = this.GetDefaultColor(id);
792
-
793
- if (varItem.LineWidth) {
794
- let width = parseInt(varItem.LineWidth.replace("LINETHICK", ""));
795
- if (!isNaN(width) && width > 0) line.LineWidth = width;
796
- }
797
-
798
- let titleIndex = windowIndex + 1;
799
- line.Data.Data = varItem.Draw.DrawData;
800
- //hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,varItem.Name,line.Color);
801
-
802
- hqChart.ChartPaint.push(line);
803
- }
804
-
805
- this.CreateVolStick = function (hqChart, windowIndex, varItem, id, hisData)
806
- {
807
- let chart = new ChartVolStick();
808
- chart.Canvas = hqChart.Canvas;
809
- chart.Name = varItem.Name;
810
- chart.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
811
- chart.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
812
- chart.KLineDrawType = hqChart.KLineDrawType; //设置K线显示类型
813
- if (varItem.Color) chart.Color = this.GetColor(varItem.Color);
814
- else chart.Color = this.GetDefaultColor(id);
815
-
816
- if (varItem.UpColor) chart.UpColor=varItem.UpColor;
817
- if (varItem.DownColor) chart.DownColor=varItem.DownColor;
818
-
819
- let titleIndex = windowIndex + 1;
820
- chart.Data.Data = varItem.Data;
821
- chart.HistoryData = hisData;
822
- this.ReloadChartResource(hqChart,windowIndex,chart);
823
-
824
- var titleData=new DynamicTitleData(chart.Data, varItem.Name, chart.Color);
825
- hqChart.TitlePaint[titleIndex].Data[id] = titleData;
826
- this.SetTitleData(titleData,chart);
827
-
828
- this.SetChartIndexName(chart);
829
- hqChart.ChartPaint.push(chart);
830
- }
831
-
832
- this.CreateBand = function (hqChart, windowIndex, varItem, id) {
833
- let chart = new ChartBand();
834
- chart.Canvas = hqChart.Canvas;
835
- chart.Name = varItem.Name;
836
- chart.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
837
- chart.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
838
-
839
- chart.FirstColor = varItem.Draw.Color[0];
840
- chart.SecondColor = varItem.Draw.Color[1];
841
- chart.Data.Data = varItem.Draw.DrawData;
842
-
843
- hqChart.ChartPaint.push(chart);
844
- }
845
-
846
- this.CreatePolyLine = function (hqChart, windowIndex, varItem, id) {
847
- let line = new ChartLine();
848
- line.Canvas = hqChart.Canvas;
849
- line.Name = varItem.Name;
850
- line.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
851
- line.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
852
- if (varItem.Color) line.Color = this.GetColor(varItem.Color);
853
- else line.Color = this.GetDefaultColor(id);
854
-
855
- if (varItem.LineWidth) {
856
- let width = parseInt(varItem.LineWidth.replace("LINETHICK", ""));
857
- if (!isNaN(width) && width > 0) line.LineWidth = width;
858
- }
859
-
860
- let titleIndex = windowIndex + 1;
861
- line.Data.Data = varItem.Draw.DrawData;
862
- //hqChart.TitlePaint[titleIndex].Data[id] = new DynamicTitleData(line.Data, ' ', line.Color); //给一个空的标题
863
-
864
- hqChart.ChartPaint.push(line);
865
- }
866
-
867
- //创建K线图
868
- this.CreateKLine = function (hqChart, windowIndex, varItem, id)
869
- {
870
- let chart = new ChartKLine();
871
- chart.Canvas = hqChart.Canvas;
872
- chart.Name = varItem.Name;
873
- chart.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
874
- chart.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
875
-
876
- chart.Data.Data = varItem.Draw.DrawData;
877
- chart.IsShowMaxMinPrice = false;
878
-
879
- if (varItem.Color) //如果设置了颜色,使用外面设置的颜色
880
- chart.UnchagneColor = chart.DownColor = chart.UpColor = this.GetColor(varItem.Color);
881
-
882
- hqChart.ChartPaint.push(chart);
883
- }
884
-
885
- this.CreateDrawColorKLine=function(hqChart,windowIndex,varItem,i)
886
- {
887
- let chart=new ChartColorKline();
888
- chart.Canvas=hqChart.Canvas;
889
- chart.Name=varItem.Name;
890
- chart.DrawName="DRAWCOLORKLINE";
891
- chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
892
- chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
893
-
894
- chart.Data.Data=varItem.Draw.DrawData;
895
- if (IFrameSplitOperator.IsBool(varItem.Draw.IsEmptyBar)) chart.IsEmptyBar=varItem.Draw.IsEmptyBar;
896
- if (varItem.Draw.Color) chart.Color=varItem.Draw.Color;
897
- hqChart.ChartPaint.push(chart);
898
- }
899
-
900
- this.CreateNumberText = function (hqChart, windowIndex, varItem, id) {
901
- let chartText = new ChartSingleText();
902
- chartText.Canvas = hqChart.Canvas;
903
-
904
- chartText.Name = varItem.Name;
905
- chartText.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
906
- chartText.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
907
- chartText.ReloadResource();
908
-
909
- chartText.TextAlign="center";
910
- if (varItem.Color) chartText.Color = this.GetColor(varItem.Color);
911
- else chartText.Color = this.GetDefaultColor(id);
912
- if (varItem.IsDrawAbove) chartText.Direction=1;
913
- else chartText.Direction=2;
914
-
915
- let titleIndex = windowIndex + 1;
916
- chartText.Data.Data = varItem.Draw.DrawData.Value;
917
- chartText.Text = varItem.Draw.DrawData.Text;
918
-
919
- //hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
920
- hqChart.ChartPaint.push(chartText);
921
- }
922
-
923
- this.CreateDrawIcon=function(hqChart, windowIndex, varItem, id, drawCallback)
924
- {
925
- var chart = new ChartDrawIcon();
926
- chart.Canvas = hqChart.Canvas;
927
- chart.TextAlign = 'center';
928
- chart.Identify=id;
929
- chart.DrawCallback=drawCallback;
930
-
931
- chart.Name = varItem.Name;
932
- chart.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
933
- chart.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
934
-
935
- chart.Data.Data = varItem.Draw.DrawData;
936
- chart.IconID=varItem.Draw.IconID;
937
- if (varItem.Color) chart.Color = this.GetColor(varItem.Color);
938
- else chart.Color = 'rgb(0,0,0)';
939
-
940
- if (varItem.Draw.MarkID) chart.MarkID=varItem.Draw.MarkID; //外部指定ID
941
-
942
- if (varItem.DrawVAlign>=0)
943
- {
944
- if (varItem.DrawVAlign==0) chart.TextBaseline="top";
945
- else if (varItem.DrawVAlign==1) chart.TextBaseline="middle";
946
- else if (varItem.DrawVAlign==2) chart.TextBaseline="bottom";
947
- }
948
-
949
- if (varItem.DrawAlign>=0)
950
- {
951
- if (varItem.DrawAlign==0) chart.TextAlign="left";
952
- else if (varItem.DrawAlign==1) chart.TextAlign="center";
953
- else if (varItem.DrawAlign==2) chart.TextAlign='right';
954
- }
955
-
956
- if (varItem.DrawFontSize>0) chart.FixedIconSize=varItem.DrawFontSize;
957
-
958
- hqChart.ChartPaint.push(chart);
959
- }
960
-
961
- //创建图标
962
- this.CreateIcon = function (hqChart, windowIndex, varItem, id)
963
- {
964
- var event=hqChart.GetEventCallback(JSCHART_EVENT_ID.ON_BIND_DRAWICON);
965
- if (event && event.Callback)
966
- {
967
- var sendData={ FrameID:windowIndex, ID:id, Data:varItem, Callback:null };
968
- if (varItem.Draw.MarkID) sendData.MarkID=varItem.Draw.MarkID; //外部指定ID
969
- event.Callback(event, sendData,this);
970
- if (sendData.Callback)
971
- {
972
- this.CreateDrawIcon(hqChart, windowIndex, varItem, id, sendData.Callback);
973
- return;
974
- }
975
- }
976
-
977
- let chartText = new ChartSingleText();
978
- chartText.Canvas = hqChart.Canvas;
979
- chartText.TextAlign = 'center';
980
-
981
-
982
- chartText.Name = varItem.Name;
983
- chartText.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
984
- chartText.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
985
-
986
- let titleIndex = windowIndex + 1;
987
- chartText.Data.Data = varItem.Draw.DrawData;
988
- chartText.Text = varItem.Draw.Icon.Symbol;
989
- if (varItem.Color) chartText.Color = this.GetColor(varItem.Color);
990
- else if (varItem.Draw.Icon.Color) chartText.Color = varItem.Draw.Icon.Color;
991
- else chartText.Color = 'rgb(0,0,0)';
992
-
993
-
994
-
995
- if (varItem.DrawVAlign>=0)
996
- {
997
- if (varItem.DrawVAlign==0) chartText.Direction=1;
998
- else if (varItem.DrawVAlign==1) chartText.Direction=0;
999
- else if (varItem.DrawVAlign==2) chartText.Direction=2;
1000
- }
1001
-
1002
- if (varItem.DrawAlign>=0)
1003
- {
1004
- if (varItem.DrawAlign==0) chartText.TextAlign="left";
1005
- else if (varItem.DrawAlign==1) chartText.TextAlign="center";
1006
- else if (varItem.DrawAlign==2) chartText.TextAlign='right';
1007
- }
1008
-
1009
- if (varItem.DrawFontSize>0) chartText.FixedFontSize=varItem.DrawFontSize;
1010
- //hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
1011
-
1012
- hqChart.ChartPaint.push(chartText);
1013
- }
1014
-
1015
- this.CreateRectangle = function (hqChart, windowIndex, varItem, i)
1016
- {
1017
- let chart = new ChartRectangle();
1018
- chart.Canvas = hqChart.Canvas;
1019
- chart.Name = varItem.Name;
1020
- chart.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
1021
- chart.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
1022
-
1023
- chart.Color = [varItem.Draw.DrawData.Color];
1024
- chart.Rect = varItem.Draw.DrawData.Rect;
1025
- if (varItem.Color) chart.BorderColor = this.GetColor(varItem.Color);
1026
- hqChart.ChartPaint.push(chart);
1027
- }
1028
-
1029
- this.CreateDrawText=function(hqChart,windowIndex,varItem,id)
1030
- {
1031
- let chartText=new ChartSingleText();
1032
- chartText.Canvas=hqChart.Canvas;
1033
- chartText.Name=varItem.Name;
1034
- chartText.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
1035
- chartText.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
1036
- chartText.ReloadResource();
1037
-
1038
- if (varItem.Color) chartText.Color=this.GetColor(varItem.Color);
1039
- else chartText.Color=this.GetDefaultColor(id);
1040
- if (varItem.IsDrawAbove) chartText.Direction=1;
1041
- else chartText.Direction=0;
1042
-
1043
- if (varItem.DrawFontSize>0) chartText.TextFont=`${varItem.DrawFontSize}px 微软雅黑`; //临时用下吧
1044
-
1045
- let titleIndex=windowIndex+1;
1046
- chartText.DrawData=varItem.Draw.DrawData;
1047
- //hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
1048
-
1049
- hqChart.ChartPaint.push(chartText);
1050
- }
1051
-
1052
- this.CreateBackgroud=function(hqChart,windowIndex,varItem,id)
1053
- {
1054
- let chart=new ChartBackground();
1055
- chart.Canvas=hqChart.Canvas;
1056
- chart.Name=varItem.Name;
1057
- chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
1058
- chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
1059
- if (varItem.Draw && varItem.Draw.DrawData)
1060
- {
1061
- var drawData=varItem.Draw.DrawData;
1062
- chart.Color=drawData.Color;
1063
- chart.ColorAngle=drawData.Angle;
1064
-
1065
- if (drawData.Data) chart.Data.Data=drawData.Data;
1066
- }
1067
-
1068
- hqChart.ChartPaint.push(chart);
1069
- }
1070
-
1071
- this.CreateBackgroundDiv=function(hqChart,windowIndex,varItem,id)
1072
- {
1073
- var chart=new ChartBackgroundDiv();
1074
- chart.Canvas=hqChart.Canvas;
1075
- chart.Name=varItem.Name;
1076
- chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
1077
- chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
1078
-
1079
- if (varItem.Draw && varItem.Draw.DrawData)
1080
- {
1081
- var drawData=varItem.Draw.DrawData;
1082
- chart.AryColor=drawData.AryColor;
1083
- chart.ColorType=drawData.ColorType;
1084
- if (drawData.Data) chart.Data.Data=drawData.Data;
1085
- }
1086
-
1087
- hqChart.ChartPaint.push(chart);
1088
- }
1089
-
1090
- this.CreateMultiText = function (hqChart, windowIndex, varItem, i)
1091
- {
1092
- let chart = new ChartMultiText();
1093
- chart.Canvas = hqChart.Canvas;
1094
- chart.Name = varItem.Name;
1095
- chart.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
1096
- chart.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
1097
-
1098
- chart.Data = hqChart.ChartPaint[0].Data;//绑定K线
1099
- chart.Texts = varItem.Draw.DrawData;
1100
- hqChart.ChartPaint.push(chart);
1101
- }
1102
-
1103
- this.CreateMulitHtmlDom=function(hqChart,windowIndex,varItem,i)
1104
- {
1105
- let chart=new ChartMultiHtmlDom();
1106
- chart.Canvas=hqChart.Canvas;
1107
- chart.Name=varItem.Name;
1108
- chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
1109
- chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
1110
-
1111
- chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
1112
- chart.Texts=varItem.Draw.DrawData;
1113
- chart.DrawCallback= varItem.Draw.Callback;
1114
- hqChart.ChartPaint.push(chart);
1115
- }
1116
-
1117
- this.CreateStackedBar=function(hqChart,windowIndex,varItem,i)
1118
- {
1119
- var chart=new ChartStackedBar();
1120
- chart.Canvas=hqChart.Canvas;
1121
- chart.Name=varItem.Name;
1122
- chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
1123
- chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
1124
- chart.HQChart=hqChart;
1125
-
1126
- chart.Data.Data=varItem.Draw.DrawData;
1127
- if (IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.BarColor)) chart.BarColor=varItem.Draw.BarColor;
1128
- if (IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.BarName)) chart.BarName=varItem.Draw.BarName;
1129
- if (IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth)) chart.LineWidth=varItem.Draw.LineWidth;
1130
- if (IFrameSplitOperator.IsNumber(varItem.Draw.BarType)) chart.BarType=varItem.Draw.BarType;
1131
- hqChart.ChartPaint.push(chart);
1132
-
1133
- var titleIndex=windowIndex+1;
1134
-
1135
- var titleData=new DynamicTitleData(chart.Data,chart.BarName,chart.BarColor);
1136
- titleData.DataType="ChartStackedBar";
1137
- hqChart.TitlePaint[titleIndex].Data[i]=titleData;
1138
- }
1139
-
1140
- this.CreateMultiLine = function (hqChart, windowIndex, varItem, i)
1141
- {
1142
- let chart = new ChartMultiLine();
1143
- chart.Canvas = hqChart.Canvas;
1144
- chart.Name = varItem.Name;
1145
- chart.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
1146
- chart.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
1147
-
1148
- chart.Data = hqChart.ChartPaint[0].Data;//绑定K线
1149
- chart.Lines = varItem.Draw.DrawData;
1150
- if (varItem.Draw.Name) chart.Name=varItem.Draw.Name;
1151
- if (varItem.Draw.LineDash) chart.LineDash=varItem.Draw.LineDash;
1152
- if (IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth)) chart.LineWidth=varItem.Draw.LineWidth;
1153
-
1154
- if(varItem.Draw.Arrow) //箭头配置
1155
- {
1156
- var item=varItem.Draw.Arrow;
1157
- if (item.Start==true) chart.Arrow.Start=true;
1158
- if (item.End==true) chart.Arrow.End=true;
1159
- if (IFrameSplitOperator.IsNumber(item.Angle)) chart.ArrawAngle=item.Angle;
1160
- if (IFrameSplitOperator.IsNumber(item.Length)) chart.ArrawLength=item.Length;
1161
- if (IFrameSplitOperator.IsNumber(item.LineWidth)) chart.ArrawLineWidth=item.LineWidth;
1162
- }
1163
-
1164
- hqChart.ChartPaint.push(chart);
1165
- }
1166
-
1167
- this.CreateMultiPoint = function (hqChart, windowIndex, varItem, i)
1168
- {
1169
- let chart = new ChartMultiPoint();
1170
- chart.Canvas = hqChart.Canvas;
1171
- chart.Name = varItem.Name;
1172
- chart.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
1173
- chart.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
1174
-
1175
- chart.Data = hqChart.ChartPaint[0].Data;//绑定K线
1176
- chart.PointGroup = varItem.Draw.DrawData;
1177
- if (varItem.Draw.Name) chart.Name=varItem.Draw.Name;
1178
-
1179
- hqChart.ChartPaint.push(chart);
1180
- }
1181
-
1182
- this.CreateMultiBar = function (hqChart, windowIndex, varItem, i)
1183
- {
1184
- let chart = new ChartMultiBar();
1185
- chart.Canvas = hqChart.Canvas;
1186
- chart.Name = varItem.Name;
1187
- chart.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
1188
- chart.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
1189
-
1190
- chart.Data = hqChart.ChartPaint[0].Data;//绑定K线
1191
- chart.Bars = varItem.Draw.DrawData;
1192
- hqChart.ChartPaint.push(chart);
1193
- }
1194
-
1195
- //创建K线背景
1196
- this.CreateSelfKLine = function (hqChart, windowIndex, hisData)
1197
- {
1198
- let chart = new ChartKLine();
1199
- chart.Canvas = hqChart.Canvas;
1200
- chart.Name = "Self Kline"
1201
- chart.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
1202
- chart.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
1203
-
1204
- chart.Data = hisData
1205
- chart.IsShowMaxMinPrice = false;
1206
- chart.IsShowKTooltip = false;
1207
- chart.DrawType = this.KLineType;
1208
-
1209
- hqChart.ChartPaint.push(chart);
1210
- }
1211
-
1212
- this.BindInstructionData = function (hqChart, windowIndex, hisData) //绑定指示指标
1213
- {
1214
- if (this.OutVar == null || this.OutVar.length < 0) return;
1215
- if (this.InstructionType == 2)
1216
- {
1217
- let varItem = this.OutVar[this.OutVar.length - 1]; //取最后一组数据作为指示数据
1218
- hqChart.SetInstructionData(this.InstructionType, { Data: varItem.Data }); //设置指示数据
1219
- return true;
1220
- }
1221
- else if (this.InstructionType == 1) //交易系统
1222
- {
1223
- var buyData, sellData;
1224
- for (var i in this.OutVar)
1225
- {
1226
- let item = this.OutVar[i];
1227
- if (item.Name == 'ENTERLONG') buyData = item.Data;
1228
- else if (item.Name == 'EXITLONG') sellData = item.Data;
1229
- }
1230
-
1231
- hqChart.SetInstructionData(this.InstructionType, { Buy: buyData, Sell: sellData }); //设置指示数据
1232
- return true;
1233
- }
1234
- }
1235
-
1236
-
1237
- this.BindData = function (hqChart, windowIndex, hisData)
1238
- {
1239
- if (windowIndex == 0 && this.InstructionType)
1240
- {
1241
- this.BindInstructionData(hqChart, windowIndex, hisData);
1242
- return;
1243
- }
1244
-
1245
- //清空指标图形
1246
- hqChart.DeleteIndexPaint(windowIndex);
1247
- if (windowIndex == 0) hqChart.ShowKLine(true);
1248
-
1249
- if (this.OutVar == null || this.OutVar.length < 0) return;
1250
-
1251
- //叠加一个K线背景
1252
- if (this.KLineType != null)
1253
- {
1254
- if (this.KLineType === 0 || this.KLineType === 1 || this.KLineType === 2) this.CreateSelfKLine(hqChart, windowIndex, hisData);
1255
- else if (this.KLineType === -1 && windowIndex == 0) hqChart.ShowKLine(false);
1256
- }
1257
-
1258
- if (windowIndex >= 1 && hqChart.Frame)
1259
- {
1260
- hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator.FloatPrecision = this.FloatPrecision;
1261
- if (this.YSpecificMaxMin) hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin = this.YSpecificMaxMin; //最大最小值
1262
- if (this.YSplitScale) hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale = this.YSplitScale; //固定刻度
1263
- }
1264
-
1265
- if (IFrameSplitOperator.IsNumber(this.YSplitType)) hqChart.Frame.SubFrame[windowIndex].Frame.YSplitOperator.SplitType=this.YSplitType;
1266
-
1267
- for (var i=0 ;i<this.OutVar.length;++i )
1268
- {
1269
- let item = this.OutVar[i];
1270
- if (item.IsExData === true) continue; //扩展数据不显示图形
1271
- if (item.Type==1000 || item.Type==1001) continue; //数据集合, 字符串
1272
-
1273
- if (item.Type == 0)
1274
- {
1275
- if (item.IsOverlayLine) this.CreateOverlayLine(hqChart, windowIndex, item, i);
1276
- else this.CreateLine(hqChart, windowIndex, item, i);
1277
- }
1278
- else if (item.Type == 1)
1279
- {
1280
- switch (item.Draw.DrawType)
1281
- {
1282
- case 'STICKLINE':
1283
- this.CreateBar(hqChart, windowIndex, item, i);
1284
- break;
1285
- case 'DRAWTEXT':
1286
- this.CreateDrawTextV2(hqChart, windowIndex, item, i);
1287
- break;
1288
- case 'SUPERDRAWTEXT':
1289
- case 'DRAWTEXT_FIX':
1290
- this.CreateText(hqChart, windowIndex, item, i);
1291
- break;
1292
- case 'DRAWLINE':
1293
- this.CreateStraightLine(hqChart, windowIndex, item, i);
1294
- break;
1295
- case 'DRAWBAND':
1296
- this.CreateBand(hqChart, windowIndex, item, i);
1297
- break;
1298
- case 'DRAWKLINE':
1299
- case "DRAWKLINE1":
1300
- this.CreateKLine(hqChart, windowIndex, item, i);
1301
- break;
1302
- case "DRAWCOLORKLINE":
1303
- this.CreateDrawColorKLine(hqChart,windowIndex,item,i);
1304
- break;
1305
- case 'DRAWKLINE_IF':
1306
- this.CreateKLine(hqChart, windowIndex, item, i);
1307
- break;
1308
- case 'POLYLINE':
1309
- this.CreatePolyLine(hqChart, windowIndex, item, i);
1310
- break;
1311
- case 'DRAWNUMBER':
1312
- this.CreateDrawNumber(hqChart, windowIndex, item, i);
1313
- break;
1314
- case 'DRAWICON':
1315
- this.CreateIcon(hqChart, windowIndex, item, i);
1316
- break;
1317
- case "ICON":
1318
- this.CreateIcon(hqChart,windowIndex,item,i);
1319
- break;
1320
- case 'DRAWRECTREL':
1321
- this.CreateRectangle(hqChart, windowIndex, item, i);
1322
- break;
1323
- case "DRAWTEXTABS":
1324
- case "DRAWTEXTREL":
1325
- this.CreateDrawText(hqChart,windowIndex,item,i);
1326
- break;
1327
- case 'DRAWGBK':
1328
- case "DRAWGBK2":
1329
- this.CreateBackgroud(hqChart,windowIndex,item,i);
1330
- break;
1331
- case "DRAWGBK_DIV":
1332
- this.CreateBackgroundDiv(hqChart,windowIndex,item,i);
1333
- break;
1334
- //第3方指标定制
1335
- case 'MULTI_TEXT':
1336
- this.CreateMultiText(hqChart, windowIndex, item, i);
1337
- break;
1338
- case "MULTI_HTMLDOM":
1339
- this.CreateMulitHtmlDom(hqChart,windowIndex,item,i);
1340
- break;
1341
- case 'MULTI_LINE':
1342
- this.CreateMultiLine(hqChart, windowIndex, item, i);
1343
- break;
1344
- case "MULTI_POINT":
1345
- this.CreateMultiPoint(hqChart,windowIndex,item,i);
1346
- break;
1347
- case 'MULTI_BAR':
1348
- this.CreateMultiBar(hqChart, windowIndex, item, i);
1349
- break;
1350
- case "KLINE_BG":
1351
- this.CreateBackgroud(hqChart,windowIndex,item,i);
1352
- break;
1353
- case SCRIPT_CHART_NAME.OVERLAY_BARS:
1354
- this.CreateStackedBar(hqChart,windowIndex,item,i);
1355
- break;
1356
- }
1357
- }
1358
- else if (item.Type == 2)
1359
- {
1360
- this.CreateMACD(hqChart, windowIndex, item, i);
1361
- }
1362
- else if (item.Type == 3)
1363
- {
1364
- this.CreatePointDot(hqChart, windowIndex, item, i, hisData);
1365
- }
1366
- else if (item.Type == 4)
1367
- {
1368
- this.CreateLineStick(hqChart, windowIndex, item, i);
1369
- }
1370
- else if (item.Type == 5)
1371
- {
1372
- this.CreateStick(hqChart, windowIndex, item, i);
1373
- }
1374
- else if (item.Type == 6)
1375
- {
1376
- this.CreateVolStick(hqChart, windowIndex, item, i, hisData);
1377
- }
1378
- else if (item.Type==7)
1379
- {
1380
- this.CreateLine(hqChart, windowIndex, item, i, 7);
1381
- }
1382
- else if (item.Type==9)
1383
- {
1384
- this.CreateArea(hqChart,windowIndex,item,i);
1385
- }
1386
-
1387
- var titlePaint = hqChart.TitlePaint[windowIndex + 1];
1388
- if (titlePaint && titlePaint.Data && i < titlePaint.Data.length) //设置标题数值 小数位数和格式
1389
- {
1390
- if (this.StringFormat > 0) titlePaint.Data[i].StringFormat = this.StringFormat;
1391
- if (this.FloatPrecision >= 0) titlePaint.Data[i].FloatPrecision = this.FloatPrecision;
1392
-
1393
- if (this.OutName && this.OutName.length>0 && this.Arguments && this.Arguments.length>0)
1394
- {
1395
- titlePaint.SetDynamicTitle(this.OutName,this.Arguments);
1396
- }
1397
- }
1398
- }
1399
-
1400
- let titleIndex = windowIndex + 1;
1401
- hqChart.TitlePaint[titleIndex].Title = this.Name;
1402
- hqChart.TitlePaint[titleIndex].ArgumentsText = null;
1403
-
1404
- if (!this.IsShortTitle)
1405
- {
1406
- let indexParam = '';
1407
- for (let i=0; i<this.Arguments.length; ++i)
1408
- {
1409
- let item = this.Arguments[i];
1410
- if (indexParam.length > 0) indexParam += ',';
1411
- indexParam += item.Value.toString();
1412
- }
1413
-
1414
- if (indexParam.length > 0) hqChart.TitlePaint[titleIndex].ArgumentsText =`(${indexParam})`;
1415
- }
1416
-
1417
- if (this.TitleFont) hqChart.TitlePaint[titleIndex].Font=this.TitleFont;
1418
-
1419
- if (hqChart.UpdateUICallback) hqChart.UpdateUICallback('ScriptIndex', this.OutVar,
1420
- { WindowIndex: windowIndex, Name: this.Name, Arguments: this.Arguments, HistoryData: hisData }); //通知上层回调
1421
-
1422
- return true;
1423
- }
1424
-
1425
-
1426
- this.GetDefaultColor = function (id) //给一个默认的颜色
1427
- {
1428
- let COLOR_ARRAY = g_JSChartResource.ColorArray;
1429
- let number = parseInt(id);
1430
- return COLOR_ARRAY[number % (COLOR_ARRAY.length - 1)];
1431
- }
1432
-
1433
-
1434
- this.GetColor = function (colorName) //获取颜色
1435
- {
1436
- if (colorName.indexOf("RGB(")==0) return colorName.toLowerCase();
1437
- if (colorName.indexOf('rgb(')==0)return colorName;
1438
- if (colorName.indexOf("RGBA(")==0) return colorName.toLowerCase();
1439
- if (colorName.indexOf("rgba(")==0) return colorName;
1440
-
1441
- var color=JSCommonComplier.JSComplier.ColorVarToRGB(colorName);
1442
- if (color) return color;
1443
-
1444
- return 'rgb(30,144,255)';
1445
-
1446
- /*
1447
- let COLOR_MAP = new Map([
1448
- ['COLORBLACK', 'rgb(0,0,0)'],
1449
- ['COLORBLUE', 'rgb(18,95,216)'],
1450
- ['COLORGREEN', 'rgb(25,158,0)'],
1451
- ['COLORCYAN', 'rgb(0,255,198)'],
1452
- ['COLORRED', 'rgb(238,21,21)'],
1453
- ['COLORMAGENTA', 'rgb(255,0,222)'],
1454
- ['COLORBROWN', 'rgb(149,94,15)'],
1455
- ['COLORLIGRAY', 'rgb(218,218,218)'], //画淡灰色
1456
- ['COLORGRAY', 'rgb(133,133,133)'], //画深灰色
1457
- ['COLORLIBLUE', 'rgb(94,204,255)'], //淡蓝色
1458
- ['COLORLIGREEN', 'rgb(183,255,190)'], //淡绿色
1459
- ['COLORLICYAN', 'rgb(154,255,242)'], //淡青色
1460
- ['COLORLIRED', 'rgb(255,172,172)'], //淡红色
1461
- ['COLORLIMAGENTA', 'rgb(255,145,241)'], //淡洋红色
1462
- ['COLORWHITE', 'rgb(255,255,255)'], //白色
1463
- ['COLORYELLOW', 'rgb(255,198,0)']
1464
- ]);
1465
-
1466
- if (COLOR_MAP.has(colorName)) return COLOR_MAP.get(colorName);
1467
-
1468
- //COLOR 自定义色
1469
- //格式为COLOR+“RRGGBB”:RR、GG、BB表示红色、绿色和蓝色的分量,每种颜色的取值范围是00-FF,采用了16进制。
1470
- //例如:MA5:MA(CLOSE,5),COLOR00FFFF 表示纯红色与纯绿色的混合色:COLOR808000表示淡蓝色和淡绿色的混合色。
1471
- if (colorName.indexOf('COLOR') == 0) return '#' + colorName.substr(5);
1472
- return 'rgb(30,144,255)';
1473
- */
1474
- }
1475
-
1476
- //给图形设置指标名字
1477
- this.SetChartIndexName=function(chart)
1478
- {
1479
- if (this.Name) chart.IndexName=this.Name;
1480
- else if (this.ID) chart.IndexName==this.ID;
1481
-
1482
- if (this.ID) chart.IndexID=this.ID;
1483
-
1484
- chart.Script=this; //指标内容绑定上去
1485
- }
1486
- }
1487
-
1488
- var HQ_DATA_TYPE =
1489
- {
1490
- KLINE_ID: 0, //K线
1491
- MINUTE_ID: 2, //当日走势图
1492
- HISTORY_MINUTE_ID: 3,//历史分钟走势图
1493
- MULTIDAY_MINUTE_ID: 4,//多日走势图
1494
- };
1495
-
1496
- function OverlayScriptIndex(name,script,args,option)
1497
- {
1498
- this.newMethod=ScriptIndex; //派生
1499
- this.newMethod(name,script,args,option);
1500
- delete this.newMethod;
1501
-
1502
- this.ClassName="OverlayScriptIndex";
1503
- //叠加指标
1504
- this.OverlayIndex=null; // { IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }
1505
-
1506
- //显示指标不符合条件
1507
- this.ShowConditionError=function(param,msg)
1508
- {
1509
- var hqChart=param.HQChart;
1510
- var windowIndex=param.WindowIndex;
1511
-
1512
- var message='指标不支持当前品种或周期';
1513
- if (msg) message=msg;
1514
-
1515
- var overlayIndex=this.OverlayIndex;
1516
- var frame=overlayIndex.Frame;
1517
- frame.ChartPaint=[];
1518
-
1519
- var chart=new ChartLine();
1520
- chart.Canvas=hqChart.Canvas;
1521
- chart.ChartBorder=frame.Frame.ChartBorder;
1522
- chart.ChartFrame=frame.Frame;
1523
- chart.Identify=overlayIndex.Identify;
1524
- chart.NotSupportMessage=message;
1525
- frame.ChartPaint.push(chart);
1526
- hqChart.Draw();
1527
- }
1528
-
1529
- this.BindData=function(hqChart,windowIndex,hisData)
1530
- {
1531
- if (!this.OverlayIndex || this.OverlayIndex.IsOverlay!=true) return;
1532
-
1533
- this.OverlayIndex.Frame.ChartPaint=[];
1534
- if (!IFrameSplitOperator.IsNonEmptyArray(this.OutVar)) return;
1535
-
1536
- //修改Y轴分割方式
1537
- if (IFrameSplitOperator.IsNumber(this.YSplitType)) this.OverlayIndex.Frame.Frame.YSplitOperator.SplitType=this.YSplitType;
1538
-
1539
- //指标名字
1540
- var titleInfo={ Data:[], Title:this.Name };
1541
- let indexParam='';
1542
- for(var i in this.Arguments)
1543
- {
1544
- let item=this.Arguments[i];
1545
- if (indexParam.length>0) indexParam+=',';
1546
- indexParam+=item.Value.toString();
1547
- }
1548
- if (indexParam.length>0) titleInfo.Title=this.Name+'('+indexParam+')';
1549
-
1550
- var titleIndex=windowIndex+1;
1551
- var titlePaint=hqChart.TitlePaint[titleIndex];
1552
- titlePaint.OverlayIndex.set(this.OverlayIndex.Identify,titleInfo);
1553
- this.OverlayIndex.Frame.Frame.Title=titleInfo.Title; //给子框架设置标题
1554
- if (this.OutName && this.OutName.length>0 && this.Arguments && this.Arguments.length>0)
1555
- {
1556
- titlePaint.SetDynamicTitle(this.OutName,this.Arguments, this.OverlayIndex.Identify);
1557
- }
1558
-
1559
- for(var i in this.OutVar)
1560
- {
1561
- let item=this.OutVar[i];
1562
- if (item.IsExData===true) continue; //扩展数据不显示图形
1563
-
1564
- if (item.Type==0)
1565
- {
1566
- this.CreateLine(hqChart,windowIndex,item,i,item.Type);
1567
- }
1568
- else if (item.Type==1)
1569
- {
1570
- switch(item.Draw.DrawType)
1571
- {
1572
- case 'STICKLINE':
1573
- this.CreateBar(hqChart,windowIndex,item,i);
1574
- break;
1575
- case 'DRAWTEXT':
1576
- this.CreateDrawTextV2(hqChart,windowIndex,item,i);
1577
- break;
1578
- case 'SUPERDRAWTEXT':
1579
- this.CreateText(hqChart,windowIndex,item,i);
1580
- break;
1581
- case 'DRAWLINE':
1582
- this.CreateStraightLine(hqChart,windowIndex,item,i);
1583
- break;
1584
- case 'DRAWBAND':
1585
- this.CreateBand(hqChart,windowIndex,item,i);
1586
- break;
1587
- case 'DRAWKLINE':
1588
- this.CreateKLine(hqChart,windowIndex,item,i);
1589
- break;
1590
- case 'DRAWKLINE_IF':
1591
- this.CreateKLine(hqChart,windowIndex,item,i);
1592
- break;
1593
- case 'POLYLINE':
1594
- this.CreatePolyLine(hqChart,windowIndex,item,i);
1595
- break;
1596
- case 'DRAWNUMBER':
1597
- case "DRAWNUMBER_FIX":
1598
- case 'DRAWTEXT_FIX':
1599
- this.CreateNumberText(hqChart,windowIndex,item,i);
1600
- break;
1601
- case 'DRAWICON':
1602
- this.CreateIcon(hqChart,windowIndex,item,i);
1603
- break;
1604
- case 'DRAWCHANNEL':
1605
- this.CreateChannel(hqChart,windowIndex,item,i);
1606
- break;
1607
- case 'DRAWTEXT_LINE':
1608
- this.CreateTextLine(hqChart,windowIndex,item,i);
1609
- break;
1610
- case "VERTLINE":
1611
- this.CreateChartVericaltLine(hqChart,windowIndex,item,i);
1612
- break;
1613
- case "HORLINE":
1614
- this.CreateChartHorizontalLine(hqChart,windowIndex,item,i);
1615
- break;
1616
- case 'MULTI_LINE':
1617
- this.CreateMultiLine(hqChart,windowIndex,item,i);
1618
- break;
1619
- case "MULTI_POINT":
1620
- this.CreateMultiPoint(hqChart,windowIndex,item,i);
1621
- break;
1622
- case 'MULTI_BAR':
1623
- this.CreateMultiBar(hqChart,windowIndex,item,i);
1624
- break;
1625
- case 'MULTI_TEXT':
1626
- this.CreateMultiText(hqChart,windowIndex,item,i);
1627
- break;
1628
- case 'MULTI_SVGICON':
1629
- this.CreateMultiSVGIcon(hqChart,windowIndex,item,i);
1630
- break;
1631
- case "DRAWSVG":
1632
- this.CreateChartDrawSVG(hqChart,windowIndex,item,i);
1633
- break;
1634
- case "MULTI_HTMLDOM":
1635
- this.CreateMulitHtmlDom(hqChart,windowIndex,item,i);
1636
- break;
1637
-
1638
- case "KLINE_BG":
1639
- this.CreateBackgroud(hqChart,windowIndex,item,i);
1640
- break;
1641
-
1642
- case 'PARTLINE':
1643
- this.CreatePartLine(hqChart,windowIndex,item,i);
1644
- break;
1645
-
1646
- case "DRAWTEXTABS":
1647
- case "DRAWTEXTREL":
1648
- this.CreateDrawText(hqChart,windowIndex,item,i);
1649
- break;
1650
-
1651
- case SCRIPT_CHART_NAME.OVERLAY_BARS:
1652
- this.CreateStackedBar(hqChart,windowIndex,item,i);
1653
- break;
1654
-
1655
- default:
1656
- {
1657
- var find=g_ScriptIndexChartFactory.Get(item.Draw.DrawType); //外部挂接
1658
- if (find && find.CreateChartCallback)
1659
- find.CreateChartCallback(hqChart,windowIndex,item,i, this);
1660
- }
1661
- break;
1662
- }
1663
- }
1664
- else if (item.Type==2)
1665
- {
1666
- this.CreateMACD(hqChart,windowIndex,item,i);
1667
- }
1668
- else if (item.Type==3)
1669
- {
1670
- this.CreatePointDot(hqChart,windowIndex,item,i, hisData);
1671
- }
1672
- else if (item.Type==4)
1673
- {
1674
- this.CreateLineStick(hqChart,windowIndex,item,i);
1675
- }
1676
- else if (item.Type==5)
1677
- {
1678
- this.CreateStick(hqChart,windowIndex,item,i);
1679
- }
1680
- else if (item.Type==6)
1681
- {
1682
- this.CreateVolStick(hqChart,windowIndex,item,i,hisData);
1683
- }
1684
- else if (item.Type==7)
1685
- {
1686
- this.CreateLine(hqChart,windowIndex,item,i,item.Type);
1687
- }
1688
- else if (item.Type==8)
1689
- {
1690
- this.CreateLine(hqChart,windowIndex,item,i, item.Type);
1691
- }
1692
- else if (item.Type==9)
1693
- {
1694
- this.CreateArea(hqChart,windowIndex,item,i);
1695
- }
1696
- }
1697
-
1698
- return true;
1699
- }
1700
-
1701
- //指标执行完成
1702
- this.RecvResultData=function(outVar,param)
1703
- {
1704
- let hqChart=param.HQChart;
1705
- let windowIndex=param.WindowIndex;
1706
- let hisData=param.HistoryData;
1707
- param.Self.OutVar=outVar;
1708
- param.Self.BindData(hqChart,windowIndex,hisData);
1709
-
1710
- param.HQChart.UpdataDataoffset(); //更新数据偏移
1711
- param.HQChart.UpdateFrameMaxMin(); //调整坐标最大 最小值
1712
- param.HQChart.Draw();
1713
-
1714
- var event=hqChart.GetOverlayIndexEvent(); //指标计算完成回调
1715
- if (event)
1716
- {
1717
- var self=param.Self;
1718
- var data={ OutVar:self.OutVar, WindowIndex: windowIndex, Name: self.Name, Arguments: self.Arguments, HistoryData: hisData,
1719
- Identify:self.OverlayIndex.Identify,
1720
- Stock: {Symbol:hqChart.Symbol,Name:hqChart.Name} };
1721
- event.Callback(event,data,self);
1722
- }
1723
- }
1724
-
1725
- //自定义图形配色
1726
- this.ReloadChartResource=function(hqChart, windowIndex, chart)
1727
- {
1728
- var event=hqChart.GetEventCallback(JSCHART_EVENT_ID.ON_RELOAD_OVERLAY_INDEX_CHART_RESOURCE); //指标计算完成回调
1729
- if (!event || !event.Callback) return;
1730
-
1731
- var overlayIndex=this.OverlayIndex;
1732
- var frame=overlayIndex.Frame;
1733
- var script=frame.Script;
1734
-
1735
- var sendData={ Chart:chart, IndexName:script.Name,IndexID:script.ID, HQChart:hqChart, WindowIndex:windowIndex, Guid:overlayIndex.Identify };
1736
- event.Callback(event,sendData,this);
1737
- }
1738
-
1739
- //////////////////////////////////////////////////////////////////////////////////////
1740
- // 图形创建
1741
- /////////////////////////////////////////////////////////////////////////////////////
1742
- this.CreateLine=function(hqChart,windowIndex,varItem,id,lineType)
1743
- {
1744
- var overlayIndex=this.OverlayIndex;
1745
- var frame=overlayIndex.Frame;
1746
- if (lineType==7) var chart=new ChartStepLine();
1747
- else var chart=new ChartLine();
1748
- chart.Canvas=hqChart.Canvas;
1749
- chart.DrawType=1;
1750
- chart.Name=varItem.Name;
1751
- chart.ChartBorder=frame.Frame.ChartBorder;
1752
- chart.ChartFrame=frame.Frame;
1753
- chart.Identify=overlayIndex.Identify;
1754
- if (varItem.Color) chart.Color=this.GetColor(varItem.Color);
1755
- else chart.Color=this.GetDefaultColor(id);
1756
-
1757
- if (lineType==8)
1758
- {
1759
- chart.DrawType=2;
1760
- chart.BreakPoint=varItem.BreakPoint;
1761
- }
1762
-
1763
- if (varItem.LineWidth)
1764
- {
1765
- let width=parseInt(varItem.LineWidth.replace("LINETHICK",""));
1766
- if (!isNaN(width) && width>0) chart.LineWidth=width;
1767
- }
1768
-
1769
- if (varItem.IsShow==false) chart.IsShow=false;
1770
-
1771
- chart.Data.Data=varItem.Data;
1772
- this.ReloadChartResource(hqChart, windowIndex, chart);
1773
-
1774
- let titleIndex=windowIndex+1;
1775
- var titlePaint=hqChart.TitlePaint[titleIndex];
1776
- var titleData=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);
1777
- this.SetTitleData(titleData,chart);
1778
-
1779
- titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;
1780
-
1781
- this.SetChartIndexName(chart);
1782
- frame.ChartPaint.push(chart);
1783
- }
1784
-
1785
- //创建柱子
1786
- this.CreateBar=function(hqChart,windowIndex,varItem,id)
1787
- {
1788
- var overlayIndex=this.OverlayIndex;
1789
- var frame=overlayIndex.Frame;
1790
- let chart=new ChartStickLine();
1791
- chart.Canvas=hqChart.Canvas;
1792
- if (varItem.Draw.Width>0) chart.Width=varItem.Draw.Width;
1793
- else chart.Width=1;
1794
-
1795
- chart.Name=varItem.Name;
1796
- chart.ChartBorder=frame.Frame.ChartBorder;
1797
- chart.ChartFrame=frame.Frame;
1798
- chart.Identify=overlayIndex.Identify;
1799
- if (varItem.Color) chart.Color=this.GetColor(varItem.Color);
1800
- else chart.Color=this.GetDefaultColor(id);
1801
-
1802
- chart.Data.Data=varItem.Draw.DrawData;
1803
-
1804
- this.SetChartIndexName(chart);
1805
- frame.ChartPaint.push(chart);
1806
- }
1807
-
1808
- this.CreateDrawText=function(hqChart,windowIndex,varItem,id)
1809
- {
1810
- var overlayIndex=this.OverlayIndex;
1811
- var frame=overlayIndex.Frame;
1812
- var chart=new ChartSingleText();
1813
- chart.Canvas=hqChart.Canvas;
1814
- chart.Name=varItem.Name;
1815
- chart.ChartBorder=frame.Frame.ChartBorder;
1816
- chart.ChartFrame=frame.Frame;
1817
- chart.Identify=overlayIndex.Identify;
1818
- chart.ReloadResource();
1819
-
1820
- if (varItem.Color) chart.Color=this.GetColor(varItem.Color);
1821
- else chart.Color=this.GetDefaultColor(id);
1822
-
1823
- if (varItem.IsDrawAbove) chart.Direction=1;
1824
- else chart.Direction=0;
1825
-
1826
- chart.DrawData=varItem.Draw.DrawData;
1827
- if (varItem.DrawFontSize>0) chart.TextFont=`${varItem.DrawFontSize*GetDevicePixelRatio()}px 微软雅黑`; //临时用下吧
1828
-
1829
- frame.ChartPaint.push(chart);
1830
- }
1831
-
1832
- //DRAWTEXT
1833
- this.CreateDrawTextV2=function(hqChart,windowIndex,varItem,id)
1834
- {
1835
- var overlayIndex=this.OverlayIndex;
1836
- var frame=overlayIndex.Frame;
1837
- var chartText=new ChartDrawText();
1838
- chartText.Canvas=hqChart.Canvas;
1839
- chartText.Name=varItem.Name;
1840
- chartText.ChartBorder=frame.Frame.ChartBorder;
1841
- chartText.ChartFrame=frame.Frame;
1842
- chartText.Identify=overlayIndex.Identify;
1843
- chartText.ReloadResource();
1844
-
1845
- if (varItem.Color) chartText.Color=this.GetColor(varItem.Color);
1846
- else chartText.Color=this.GetDefaultColor(id);
1847
- if (varItem.IsDrawCenter===true) chartText.TextAlign='center';
1848
- if (varItem.IsDrawAbove===true) chartText.TextBaseline='bottom'
1849
- if (varItem.IsDrawBelow===true) chartText.TextBaseline='top';
1850
-
1851
- if (varItem.Draw.DrawData) chartText.Data.Data=varItem.Draw.DrawData;
1852
- chartText.Text=varItem.Draw.Text;
1853
- if (varItem.Draw.Direction>0) chartText.Direction=varItem.Draw.Direction;
1854
- if (varItem.Draw.YOffset>0) chartText.YOffset=varItem.Draw.YOffset;
1855
- if (varItem.Draw.TextAlign) chartText.TextAlign=varItem.Draw.TextAlign;
1856
- //指定输出位置
1857
- if (varItem.Draw.FixedPosition==="TOP") chartText.FixedPosition=1;
1858
- else if (varItem.Draw.FixedPosition==="BOTTOM") chartText.FixedPosition=2;
1859
-
1860
- if (varItem.DrawVAlign>=0)
1861
- {
1862
- if (varItem.DrawVAlign==0) chartText.TextBaseline='top';
1863
- else if (varItem.DrawVAlign==1) chartText.TextBaseline='middle';
1864
- else if (varItem.DrawVAlign==2) chartText.TextBaseline='bottom';
1865
- }
1866
-
1867
- if (varItem.DrawAlign>=0)
1868
- {
1869
- if (varItem.DrawAlign==0) chartText.TextAlign="left";
1870
- else if (varItem.DrawAlign==1) chartText.TextAlign="center";
1871
- else if (varItem.DrawAlign==2) chartText.TextAlign='right';
1872
- }
1873
-
1874
- if (varItem.DrawFontSize>0) chartText.FixedFontSize=varItem.DrawFontSize;
1875
- if (varItem.Background) chartText.TextBG=varItem.Background;
1876
- if (varItem.VerticalLine) chartText.VerticalLine=varItem.VerticalLine;
1877
- if (IFrameSplitOperator.IsNumber(varItem.XOffset)) chartText.ShowOffset.X=varItem.XOffset;
1878
- if (IFrameSplitOperator.IsNumber(varItem.YOffset)) chartText.ShowOffset.Y=varItem.YOffset;
1879
-
1880
- //let titleIndex=windowIndex+1;
1881
- frame.ChartPaint.push(chartText);
1882
- }
1883
-
1884
- //创建文本
1885
- this.CreateText=function(hqChart,windowIndex,varItem,id, drawName)
1886
- {
1887
- var overlayIndex=this.OverlayIndex;
1888
- var frame=overlayIndex.Frame;
1889
- let chart=new ChartSingleText();
1890
- chart.Canvas=hqChart.Canvas;
1891
-
1892
- chart.Name=varItem.Name;
1893
- chart.ChartBorder=frame.Frame.ChartBorder;
1894
- chart.ChartFrame=frame.Frame;
1895
- chart.Identify=overlayIndex.Identify;
1896
- chart.ReloadResource();
1897
-
1898
- if (varItem.Color) chart.Color=this.GetColor(varItem.Color);
1899
- else chart.Color=this.GetDefaultColor(id);
1900
-
1901
- let titleIndex=windowIndex+1;
1902
- if (varItem.Draw.Position) chart.Position=varItem.Draw.Position; //赋值坐标
1903
- if (varItem.Draw.DrawData) chart.Data.Data=varItem.Draw.DrawData;
1904
- chart.Text=varItem.Draw.Text;
1905
- if (varItem.Draw.Direction>0) chart.Direction=varItem.Draw.Direction;
1906
- if (varItem.Draw.YOffset>0) chart.YOffset=varItem.Draw.YOffset;
1907
- if (varItem.Draw.TextAlign) chart.TextAlign=varItem.Draw.TextAlign;
1908
-
1909
- //hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
1910
-
1911
- frame.ChartPaint.push(chart);
1912
- }
1913
-
1914
- //COLORSTICK
1915
- this.CreateMACD=function(hqChart,windowIndex,varItem,id)
1916
- {
1917
- var overlayIndex=this.OverlayIndex;
1918
- var frame=overlayIndex.Frame;
1919
- let chart=new ChartMACD();
1920
- chart.Canvas=hqChart.Canvas;
1921
-
1922
- chart.Name=varItem.Name;
1923
- chart.ChartBorder=frame.Frame.ChartBorder;
1924
- chart.ChartFrame=frame.Frame;
1925
- chart.Identify=overlayIndex.Identify;
1926
-
1927
- let titleIndex=windowIndex+1;
1928
- chart.Data.Data=varItem.Data;
1929
- var titlePaint=hqChart.TitlePaint[titleIndex];
1930
- var clrTitle=this.GetDefaultColor(id);
1931
- if (varItem.Color) clrTitle=this.GetColor(varItem.Color);
1932
- if (varItem.UpColor) chart.UpColor=varItem.UpColor;
1933
- if (varItem.DownColor) chart.DownColor=varItem.DownColor;
1934
-
1935
- titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(chart.Data,varItem.Name,clrTitle);
1936
-
1937
- frame.ChartPaint.push(chart);
1938
- }
1939
-
1940
- this.CreatePointDot=function(hqChart,windowIndex,varItem,id,hisData)
1941
- {
1942
- var overlayIndex=this.OverlayIndex;
1943
- var frame=overlayIndex.Frame;
1944
- let chart=new ChartPointDot();
1945
- chart.Canvas=hqChart.Canvas;
1946
- chart.Name=varItem.Name;
1947
- chart.ChartBorder=frame.Frame.ChartBorder;
1948
- chart.ChartFrame=frame.Frame;
1949
- chart.Identify=overlayIndex.Identify;
1950
- if (varItem.Color) chart.Color=this.GetColor(varItem.Color);
1951
- else chart.Color=this.GetDefaultColor(id);
1952
-
1953
- if (varItem.Radius) chart.Radius=varItem.Radius;
1954
-
1955
- if (varItem.LineWidth)
1956
- {
1957
- let width=parseInt(varItem.LineWidth.replace("LINETHICK",""));
1958
- if (!isNaN(width) && width>0) chart.Radius=width;
1959
- }
1960
-
1961
- if (IFrameSplitOperator.IsBool(varItem.UpDownDot))
1962
- {
1963
- chart.EnableUpDownColor=varItem.UpDownDot;
1964
- chart.HistoryData=hisData;
1965
- }
1966
-
1967
- let titleIndex=windowIndex+1;
1968
- chart.Data.Data=varItem.Data;
1969
- var titlePaint=hqChart.TitlePaint[titleIndex];
1970
- titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);
1971
-
1972
- frame.ChartPaint.push(chart);
1973
- }
1974
-
1975
- this.CreateStick=function(hqChart,windowIndex,varItem,id)
1976
- {
1977
- var overlayIndex=this.OverlayIndex;
1978
- var frame=overlayIndex.Frame;
1979
- let chart=new ChartStick();
1980
- chart.Canvas=hqChart.Canvas;
1981
- chart.Name=varItem.Name;
1982
- chart.ChartBorder=frame.Frame.ChartBorder;
1983
- chart.ChartFrame=frame.Frame;
1984
- chart.Identify=overlayIndex.Identify;
1985
- if (varItem.Color) chart.Color=this.GetColor(varItem.Color);
1986
- else chart.Color=this.GetDefaultColor(id);
1987
-
1988
- if (varItem.LineWidth)
1989
- {
1990
- let width=parseInt(varItem.LineWidth.replace("LINETHICK",""));
1991
- if (!isNaN(width) && width>0) chart.LineWidth=width;
1992
- }
1993
-
1994
- let titleIndex=windowIndex+1;
1995
- chart.Data.Data=varItem.Data;
1996
- var titlePaint=hqChart.TitlePaint[titleIndex];
1997
- titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);
1998
-
1999
- frame.ChartPaint.push(chart);
2000
- }
2001
-
2002
- this.CreateLineStick=function(hqChart,windowIndex,varItem,id)
2003
- {
2004
- var overlayIndex=this.OverlayIndex;
2005
- var frame=overlayIndex.Frame;
2006
- let chart=new ChartLineStick();
2007
- chart.Canvas=hqChart.Canvas;
2008
- chart.Name=varItem.Name;
2009
- chart.ChartBorder=frame.Frame.ChartBorder;
2010
- chart.ChartFrame=frame.Frame;
2011
- chart.Identify=overlayIndex.Identify;
2012
- if (varItem.Color) chart.Color=this.GetColor(varItem.Color);
2013
- else chart.Color=this.GetDefaultColor(id);
2014
-
2015
- if (varItem.LineWidth)
2016
- {
2017
- let width=parseInt(varItem.LineWidth.replace("LINETHICK",""));
2018
- if (!isNaN(width) && width>0) chart.LineWidth=width;
2019
- }
2020
-
2021
- let titleIndex=windowIndex+1;
2022
- chart.Data.Data=varItem.Data;
2023
- var titlePaint=hqChart.TitlePaint[titleIndex];
2024
- titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);
2025
-
2026
- frame.ChartPaint.push(chart);
2027
- }
2028
-
2029
- this.CreateStraightLine=function(hqChart,windowIndex,varItem,id)
2030
- {
2031
- var overlayIndex=this.OverlayIndex;
2032
- var frame=overlayIndex.Frame;
2033
- let chart=new ChartLine();
2034
- chart.DrawType=1;
2035
- chart.Canvas=hqChart.Canvas;
2036
- chart.Name=varItem.Name;
2037
- chart.ChartBorder=frame.Frame.ChartBorder;
2038
- chart.ChartFrame=frame.Frame;
2039
- chart.Identify=overlayIndex.Identify;
2040
- if (varItem.Color) chart.Color=this.GetColor(varItem.Color);
2041
- else chart.Color=this.GetDefaultColor(id);
2042
-
2043
- if (varItem.LineWidth)
2044
- {
2045
- let width=parseInt(varItem.LineWidth.replace("LINETHICK",""));
2046
- if (!isNaN(width) && width>0) chart.LineWidth=width;
2047
- }
2048
-
2049
- let titleIndex=windowIndex+1;
2050
- chart.Data.Data=varItem.Draw.DrawData;
2051
- //hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,varItem.Name,line.Color);
2052
-
2053
- frame.ChartPaint.push(chart);
2054
- }
2055
-
2056
- this.CreateVolStick=function(hqChart,windowIndex,varItem,id,hisData)
2057
- {
2058
- var overlayIndex=this.OverlayIndex;
2059
- var frame=overlayIndex.Frame;
2060
- let chart=new ChartVolStick();
2061
- chart.Canvas=hqChart.Canvas;
2062
- chart.Name=varItem.Name;
2063
- chart.ChartBorder=frame.Frame.ChartBorder;
2064
- chart.ChartFrame=frame.Frame;
2065
- chart.Identify=overlayIndex.Identify;
2066
- chart.KLineDrawType=hqChart.KLineDrawType; //设置K线显示类型
2067
- if (varItem.Color) chart.Color=this.GetColor(varItem.Color);
2068
- else chart.Color=this.GetDefaultColor(id);
2069
-
2070
- if (varItem.UpColor) chart.UpColor=varItem.UpColor;
2071
- if (varItem.DownColor) chart.DownColor=varItem.DownColor;
2072
-
2073
- let titleIndex=windowIndex+1;
2074
- chart.Data.Data=varItem.Data;
2075
- chart.HistoryData=hisData;
2076
- var titlePaint=hqChart.TitlePaint[titleIndex];
2077
- titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);
2078
-
2079
- this.SetChartIndexName(chart);
2080
- frame.ChartPaint.push(chart);
2081
- }
2082
-
2083
- this.CreateBand=function(hqChart,windowIndex,varItem,id)
2084
- {
2085
- var overlayIndex=this.OverlayIndex;
2086
- var frame=overlayIndex.Frame;
2087
- let chart=new ChartBand();
2088
- chart.Canvas=hqChart.Canvas;
2089
- chart.Name=varItem.Name;
2090
- chart.ChartBorder=frame.Frame.ChartBorder;
2091
- chart.ChartFrame=frame.Frame;
2092
- chart.Identify=overlayIndex.Identify;
2093
-
2094
- chart.FirstColor = varItem.Draw.Color[0];
2095
- chart.SecondColor = varItem.Draw.Color[1];
2096
- chart.Data.Data=varItem.Draw.DrawData;
2097
-
2098
- frame.ChartPaint.push(chart);
2099
- }
2100
-
2101
- //创建K线图
2102
- this.CreateKLine=function(hqChart,windowIndex,varItem,id)
2103
- {
2104
- var overlayIndex=this.OverlayIndex;
2105
- var frame=overlayIndex.Frame;
2106
- let chart=new ChartKLine();
2107
- chart.Canvas=hqChart.Canvas;
2108
- chart.Name=varItem.Name;
2109
- chart.ChartBorder=frame.Frame.ChartBorder;
2110
- chart.ChartFrame=frame.Frame;
2111
- chart.Identify=overlayIndex.Identify;
2112
-
2113
- chart.Data.Data=varItem.Draw.DrawData;
2114
- chart.IsShowMaxMinPrice=false;
2115
- chart.IsShowKTooltip=false;
2116
-
2117
- if (varItem.Color) //如果设置了颜色,使用外面设置的颜色
2118
- chart.UnchagneColor=chart.DownColor=chart.UpColor=this.GetColor(varItem.Color);
2119
-
2120
- frame.ChartPaint.push(chart);
2121
- }
2122
-
2123
- this.CreatePolyLine=function(hqChart,windowIndex,varItem,id)
2124
- {
2125
- var overlayIndex=this.OverlayIndex;
2126
- var frame=overlayIndex.Frame;
2127
- let chart=new ChartLine();
2128
- chart.Canvas=hqChart.Canvas;
2129
- chart.Name=varItem.Name;
2130
- chart.ChartBorder=frame.Frame.ChartBorder;
2131
- chart.ChartFrame=frame.Frame;
2132
- chart.Identify=overlayIndex.Identify;
2133
- if (varItem.Color) chart.Color=this.GetColor(varItem.Color);
2134
- else chart.Color=this.GetDefaultColor(id);
2135
-
2136
- if (varItem.LineWidth)
2137
- {
2138
- let width=parseInt(varItem.LineWidth.replace("LINETHICK",""));
2139
- if (!isNaN(width) && width>0) chart.LineWidth=width;
2140
- }
2141
-
2142
- let titleIndex=windowIndex+1;
2143
- chart.Data.Data=varItem.Draw.DrawData;
2144
- var titlePaint=hqChart.TitlePaint[titleIndex];
2145
- titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(line.Data,' ',line.Color); //给一个空的标题
2146
-
2147
- frame.ChartPaint.push(chart);
2148
- }
2149
-
2150
- this.CreateNumberText=function(hqChart,windowIndex,varItem,id)
2151
- {
2152
- var overlayIndex=this.OverlayIndex;
2153
- var frame=overlayIndex.Frame;
2154
- let chart=new ChartSingleText();
2155
- chart.Canvas=hqChart.Canvas;
2156
-
2157
- chart.Name=varItem.Name;
2158
- chart.ChartBorder=frame.Frame.ChartBorder;
2159
- chart.ChartFrame=frame.Frame;
2160
- chart.Identify=overlayIndex.Identify;
2161
- chart.ReloadResource();
2162
-
2163
- chart.TextAlign="center";
2164
- if (varItem.Color) chart.Color=this.GetColor(varItem.Color);
2165
- else chart.Color=this.GetDefaultColor(id);
2166
- if (varItem.IsDrawAbove) chart.Direction=1;
2167
- else chart.Direction=2;
2168
-
2169
- if (varItem.Draw.Position) chart.Position=varItem.Draw.Position; //赋值坐标
2170
-
2171
- let titleIndex=windowIndex+1;
2172
- chart.Data.Data=varItem.Draw.DrawData.Value;
2173
- chart.Text=varItem.Draw.DrawData.Text;
2174
-
2175
- //hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
2176
-
2177
- frame.ChartPaint.push(chart);
2178
- }
2179
-
2180
- this.CreateTextLine=function(hqChart,windowIndex,varItem,id)
2181
- {
2182
- var overlayIndex=this.OverlayIndex;
2183
- var frame=overlayIndex.Frame;
2184
- let chart=new ChartTextLine();
2185
- chart.Canvas=hqChart.Canvas;
2186
-
2187
- chart.Name=varItem.Name;
2188
- chart.ChartBorder=frame.Frame.ChartBorder;
2189
- chart.ChartFrame=frame.Frame;
2190
- if (varItem.Draw && varItem.Draw.DrawData)
2191
- {
2192
- var drawData=varItem.Draw.DrawData;
2193
- chart.Text=drawData.Text;
2194
- chart.Line=drawData.Line;
2195
- chart.Price=drawData.Price;
2196
- }
2197
-
2198
- frame.ChartPaint.push(chart);
2199
- }
2200
-
2201
- this.CreateStackedBar=function(hqChart,windowIndex,varItem,id)
2202
- {
2203
- var overlayIndex=this.OverlayIndex;
2204
- var frame=overlayIndex.Frame;
2205
- let chart=new ChartStackedBar();
2206
- chart.Canvas=hqChart.Canvas;
2207
- chart.Name=varItem.Name;
2208
- chart.ChartBorder=frame.Frame.ChartBorder;
2209
- chart.ChartFrame=frame.Frame;
2210
- chart.Identify=overlayIndex.Identify;
2211
-
2212
- if (IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.BarColor)) chart.BarColor=varItem.Draw.BarColor;
2213
- if (IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.BarName)) chart.BarName=varItem.Draw.BarName;
2214
- if (IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth)) chart.LineWidth=varItem.Draw.LineWidth;
2215
- if (IFrameSplitOperator.IsNumber(varItem.Draw.BarType)) chart.BarType=varItem.Draw.BarType;
2216
-
2217
- chart.Data.Data=varItem.Draw.DrawData;
2218
-
2219
- var titleIndex=windowIndex+1;
2220
- var titlePaint=hqChart.TitlePaint[titleIndex];
2221
- var titleData=new DynamicTitleData(chart.Data,chart.BarName,chart.BarColor);
2222
- titleData.DataType="ChartStackedBar";
2223
- titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;
2224
-
2225
- frame.ChartPaint.push(chart);
2226
- }
2227
-
2228
- //创建图标
2229
- this.CreateIcon=function(hqChart,windowIndex,varItem,id)
2230
- {
2231
- var overlayIndex=this.OverlayIndex;
2232
- var frame=overlayIndex.Frame;
2233
- let chart=new ChartSingleText();
2234
- chart.Canvas=hqChart.Canvas;
2235
- chart.TextAlign='center';
2236
-
2237
- chart.Name=varItem.Name;
2238
- chart.ChartBorder=frame.Frame.ChartBorder;
2239
- chart.ChartFrame=frame.Frame;
2240
- chart.Identify=overlayIndex.Identify;
2241
-
2242
- if (varItem.DrawVAlign>=0)
2243
- {
2244
- if (varItem.DrawVAlign==0) chart.Direction=1;
2245
- else if (varItem.DrawVAlign==1) chart.Direction=0;
2246
- else if (varItem.DrawVAlign==2) chart.Direction=2;
2247
- }
2248
-
2249
- if (varItem.DrawAlign>=0)
2250
- {
2251
- if (varItem.DrawAlign==0) chart.TextAlign="left";
2252
- else if (varItem.DrawAlign==1) chart.TextAlign="center";
2253
- else if (varItem.DrawAlign==2) chart.TextAlign='right';
2254
- }
2255
-
2256
- if (IFrameSplitOperator.IsNumber(varItem.XOffset)) chart.ShowOffset.X=varItem.XOffset;
2257
- if (IFrameSplitOperator.IsNumber(varItem.YOffset)) chart.ShowOffset.Y=varItem.YOffset;
2258
-
2259
- chart.Data.Data=varItem.Draw.DrawData;
2260
- var icon=varItem.Draw.Icon;
2261
- if (icon.IconFont==true)
2262
- {
2263
- chart.IconFont={ Family:icon.Family, Text:icon.Symbol, Color:icon.Color };
2264
- }
2265
- else
2266
- {
2267
- chart.Text=icon.Symbol;
2268
- if (varItem.Color) chart.Color=this.GetColor(varItem.Color);
2269
- else if (icon.Color) chart.Color=icon.Color;
2270
- else chart.Color='rgb(0,0,0)';
2271
- }
2272
-
2273
-
2274
- //var titleIndex=windowIndex+1;
2275
- //hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
2276
- frame.ChartPaint.push(chart);
2277
- }
2278
-
2279
- this.CreateMultiLine=function(hqChart,windowIndex,varItem,i)
2280
- {
2281
- var overlayIndex=this.OverlayIndex;
2282
- var frame=overlayIndex.Frame;
2283
- let chart=new ChartMultiLine();
2284
- chart.Canvas=hqChart.Canvas;
2285
- chart.Name=varItem.Name;
2286
- chart.ChartBorder=frame.Frame.ChartBorder;
2287
- chart.ChartFrame=frame.Frame;
2288
- chart.Identify=overlayIndex.Identify;
2289
-
2290
- chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
2291
- chart.Lines=varItem.Draw.DrawData;
2292
- if (varItem.Draw.LineDash) chart.LineDash=varItem.Draw.LineDash;
2293
- if (IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth)) chart.LineWidth=varItem.Draw.LineWidth;
2294
- if(varItem.Draw.Arrow) //箭头配置
2295
- {
2296
- var item=varItem.Draw.Arrow;
2297
- if (item.Start==true) chart.Arrow.Start=true;
2298
- if (item.End==true) chart.Arrow.End=true;
2299
- if (IFrameSplitOperator.IsNumber(item.Angle)) chart.ArrawAngle=item.Angle;
2300
- if (IFrameSplitOperator.IsNumber(item.Length)) chart.ArrawLength=item.Length;
2301
- if (IFrameSplitOperator.IsNumber(item.LineWidth)) chart.ArrawLineWidth=item.LineWidth;
2302
- }
2303
- frame.ChartPaint.push(chart);
2304
- }
2305
-
2306
- this.CreateMultiPoint=function(hqChart,windowIndex,varItem,i)
2307
- {
2308
- var overlayIndex=this.OverlayIndex;
2309
- var frame=overlayIndex.Frame;
2310
- let chart=new ChartMultiLine();
2311
- chart.Canvas=hqChart.Canvas;
2312
- chart.Name=varItem.Name;
2313
- chart.ChartBorder=frame.Frame.ChartBorder;
2314
- chart.ChartFrame=frame.Frame;
2315
- chart.Identify=overlayIndex.Identify;
2316
-
2317
- chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
2318
- chart.PointGroup=varItem.Draw.DrawData;
2319
-
2320
- frame.ChartPaint.push(chart);
2321
- }
2322
-
2323
- this.CreateBackgroud=function(hqChart,windowIndex,varItem,i)
2324
- {
2325
- var overlayIndex=this.OverlayIndex;
2326
- var frame=overlayIndex.Frame;
2327
- let chart=new ChartBackground();
2328
- chart.Canvas=hqChart.Canvas;
2329
- chart.Name=varItem.Name;
2330
- chart.ChartBorder=frame.Frame.ChartBorder;
2331
- chart.ChartFrame=frame.Frame;
2332
- chart.Identify=overlayIndex.Identify;
2333
-
2334
- if (varItem.Draw && varItem.Draw.DrawData)
2335
- {
2336
- var drawData=varItem.Draw.DrawData;
2337
- chart.Color=drawData.Color;
2338
- chart.ColorAngle=drawData.Angle;
2339
-
2340
- if (drawData.Data) chart.Data.Data=drawData.Data;
2341
- }
2342
-
2343
- frame.ChartPaint.push(chart);
2344
- }
2345
-
2346
- this.CreateMultiBar=function(hqChart,windowIndex,varItem,id)
2347
- {
2348
- var overlayIndex=this.OverlayIndex;
2349
- var frame=overlayIndex.Frame;
2350
- let chart=new ChartMultiBar();
2351
- chart.Canvas=hqChart.Canvas;
2352
- chart.Name=varItem.Name;
2353
- chart.ChartBorder=frame.Frame.ChartBorder;
2354
- chart.ChartFrame=frame.Frame;
2355
- chart.Identify=overlayIndex.Identify;
2356
-
2357
- chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
2358
- chart.Bars=varItem.Draw.DrawData;
2359
-
2360
- var titleIndex=windowIndex+1;
2361
- var titlePaint=hqChart.TitlePaint[titleIndex];
2362
- var titleData=new DynamicTitleData({ KData:chart.Data, BarData:chart.Bars },varItem.Name,null);
2363
- titleData.IsShow=false;
2364
- titleData.DataType="MULTI_BAR";
2365
- titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;
2366
-
2367
- frame.ChartPaint.push(chart);
2368
- }
2369
-
2370
- this.CreateMultiText=function(hqChart,windowIndex,varItem,i)
2371
- {
2372
- var overlayIndex=this.OverlayIndex;
2373
- var frame=overlayIndex.Frame;
2374
- let chart=new ChartMultiText();
2375
- chart.Canvas=hqChart.Canvas;
2376
- chart.Name=varItem.Name;
2377
- chart.ChartBorder=frame.Frame.ChartBorder;
2378
- chart.ChartFrame=frame.Frame;
2379
- chart.Identify=overlayIndex.Identify;
2380
-
2381
- chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
2382
- chart.Texts=varItem.Draw.DrawData;
2383
- frame.ChartPaint.push(chart);
2384
- }
2385
-
2386
- this.CreateMulitHtmlDom=function(hqChart,windowIndex,varItem,i)
2387
- {
2388
- var overlayIndex=this.OverlayIndex;
2389
- var frame=overlayIndex.Frame;
2390
- let chart=new ChartMultiHtmlDom();
2391
- chart.Canvas=hqChart.Canvas;
2392
- chart.Name=varItem.Name;
2393
- chart.ChartBorder=frame.Frame.ChartBorder;
2394
- chart.ChartFrame=frame.Frame;
2395
- chart.Identify=overlayIndex.Identify;
2396
- chart.HQChart=hqChart;
2397
-
2398
- chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
2399
- chart.Texts=varItem.Draw.DrawData;
2400
- chart.DrawCallback= varItem.Draw.Callback;
2401
- frame.ChartPaint.push(chart);
2402
- }
2403
-
2404
- //给一个默认的颜色
2405
- this.GetDefaultColor=function(id)
2406
- {
2407
- let COLOR_ARRAY=
2408
- [
2409
- "rgb(24,71,178)",
2410
- "rgb(42,230,215)",
2411
- "rgb(252,96,154)",
2412
- "rgb(0,128,255)",
2413
- "rgb(229,0,79)",
2414
- "rgb(68,114,196)",
2415
- "rgb(255,174,0)",
2416
- "rgb(25,199,255)",
2417
- "rgb(175,95,162)",
2418
- "rgb(236,105,65)",
2419
- ];
2420
-
2421
- let number=parseInt(id);
2422
- return COLOR_ARRAY[number%(COLOR_ARRAY.length-1)];
2423
- }
2424
- }
2425
-
2426
-
2427
- function APIScriptIndex(name, script, args, option, isOverlay) //后台执行指标
2428
- {
2429
- if (isOverlay) this.newMethod=OverlayScriptIndex;
2430
- else this.newMethod = ScriptIndex; //派生
2431
- this.newMethod(name, script, args, option);
2432
- delete this.newMethod;
2433
-
2434
- this.ApiUrl; //指标执行api地址
2435
- this.HQDataType;
2436
-
2437
- if (option.API)
2438
- {
2439
- if (option.API.Url) this.ApiUrl = option.API.Url;
2440
- if (option.API.Name) this.Name = this.ID = option.API.Name;
2441
- if (option.API.ID) this.ID = option.API.ID;
2442
- }
2443
-
2444
- //接收到订阅指标数据
2445
- this.RecvSubscribeData=function(data, hqChart, windowIndex, hisData)
2446
- {
2447
- this.RecvAPIData(data,hqChart,windowIndex,hisData);
2448
- }
2449
-
2450
- this.ExecuteScript = function (hqChart, windowIndex, hisData)
2451
- {
2452
- JSConsole.Chart.Log('[APIScriptIndex::ExecuteScript] name, Arguments ', this.Name, this.Arguments);
2453
-
2454
- //数据类型
2455
- let hqDataType = HQ_DATA_TYPE.KLINE_ID; //默认K线
2456
- var dateRange=null;
2457
- if (hqChart.ClassName === 'MinuteChartContainer' || hqChart.ClassName === 'MinuteChartHScreenContainer')
2458
- {
2459
- if (hqChart.DayCount > 1) hqDataType = HQ_DATA_TYPE.MULTIDAY_MINUTE_ID; //多日分钟
2460
- else hqDataType = HQ_DATA_TYPE.MINUTE_ID; //分钟数据
2461
-
2462
- dateRange=hisData.GetDateRange();
2463
- }
2464
- else if (hqChart.ClassName === 'HistoryMinuteChartContainer')
2465
- {
2466
- hqDataType = HQ_DATA_TYPE.HISTORY_MINUTE_ID; //历史分钟
2467
- }
2468
- else
2469
- {
2470
- dateRange=hisData.GetDateRange();
2471
- }
2472
-
2473
- var args = [];
2474
- if (this.Arguments)
2475
- {
2476
- for (var i in this.Arguments)
2477
- {
2478
- var item = this.Arguments[i];
2479
- args.push({ name: item.Name, value: item.Value });
2480
- }
2481
- }
2482
-
2483
- var requestCount;
2484
- if (hqChart.GetRequestDataCount) requestCount= hqChart.GetRequestDataCount();
2485
- var self = this;
2486
- var postData =
2487
- {
2488
- indexname: this.ID, symbol: hqChart.Symbol, script: this.Script, args: args,
2489
- period: hqChart.Period, right: hqChart.Right, hqdatatype: hqDataType
2490
- };
2491
-
2492
- if (dateRange) postData.DateRange=dateRange;
2493
- if (requestCount)
2494
- {
2495
- postData.maxdatacount=requestCount.MaxRequestDataCount;
2496
- postData.maxminutedaycount=requestCount.MaxRequestMinuteDayCount;
2497
- }
2498
-
2499
- if (hqDataType == HQ_DATA_TYPE.MULTIDAY_MINUTE_ID || hqDataType == HQ_DATA_TYPE.MINUTE_ID) postData.daycount = hqChart.DayCount;
2500
- this.HQDataType = hqDataType;
2501
-
2502
- if (hqChart.NetworkFilter)
2503
- {
2504
- var obj =
2505
- {
2506
- Name: 'APIScriptIndex::ExecuteScript', //类名::
2507
- Explain: '指标计算',
2508
- Request: { Url: self.ApiUrl, Type: 'POST', Data: postData },
2509
- Self: this,
2510
- HQChart: hqChart,
2511
- PreventDefault: false
2512
- };
2513
-
2514
- hqChart.NetworkFilter(obj, function (data)
2515
- {
2516
- self.RecvAPIData(data, hqChart, windowIndex, hisData);
2517
- });
2518
-
2519
- if (obj.PreventDefault == true) return; //已被上层替换,不调用默认的网络请求
2520
- }
2521
-
2522
- wx.request({
2523
- url: self.ApiUrl,
2524
- data: postData,
2525
- method: 'POST',
2526
- dataType: "json",
2527
- async: true,
2528
- success: function (recvData)
2529
- {
2530
- self.RecvAPIData(recvData, hqChart, windowIndex, hisData);
2531
- },
2532
- error: function (request)
2533
- {
2534
- self.RecvError(request);
2535
- }
2536
- });
2537
- }
2538
-
2539
- this.RecvAPIData = function (recvData, hqChart, windowIndex, hisData)
2540
- {
2541
- var data=recvData.data;
2542
- JSConsole.Chart.Log('[APIScriptIndex::RecvAPIData] recv data ', this.Name, data);
2543
- if (data.code != 0) return;
2544
-
2545
- if (data.outdata && data.outdata.name) this.Name = data.outdata.name;
2546
-
2547
- if (data.outdata.args) //外部修改显示参数
2548
- {
2549
- this.Arguments = [];
2550
- for (var i in data.outdata.args)
2551
- {
2552
- var item = data.outdata.args[i];
2553
- this.Arguments.push({ Name: item.name, Value: item.value });
2554
- }
2555
- }
2556
-
2557
- if (this.HQDataType == HQ_DATA_TYPE.KLINE_ID)
2558
- {
2559
- this.OutVar = this.FittingData(data.outdata, hqChart);
2560
- JSConsole.Chart.Log('[APIScriptIndex::RecvAPIData] conver to OutVar ', this.OutVar);
2561
- }
2562
- else
2563
- {
2564
- this.OutVar = this.FittingMinuteData(data.outdata, hqChart); //走势图数据
2565
- }
2566
- this.BindData(hqChart, windowIndex, hisData);
2567
-
2568
- if (this.IsLocked == false) //不上锁
2569
- {
2570
- hqChart.Frame.SubFrame[windowIndex].Frame.SetLock(null);
2571
- }
2572
- else //上锁
2573
- {
2574
- let lockData =
2575
- {
2576
- IsLocked: true, Callback: this.LockCallback, IndexName: this.Name, ID: this.LockID,
2577
- BG: this.LockBG, Text: this.LockText, TextColor: this.LockTextColor, Font: this.LockFont, Count: this.LockCount, MinWidth: this.LockMinWidth
2578
- };
2579
- hqChart.Frame.SubFrame[windowIndex].Frame.SetLock(lockData);
2580
- }
2581
-
2582
- hqChart.UpdataDataoffset(); //更新数据偏移
2583
- hqChart.UpdateFrameMaxMin(); //调整坐标最大 最小值
2584
- hqChart.Draw();
2585
-
2586
- if (hqChart.GetIndexEvent)
2587
- {
2588
- var event = hqChart.GetIndexEvent(); //指标计算完成回调
2589
- if (event)
2590
- {
2591
- var data =
2592
- {
2593
- OutVar: this.OutVar, WindowIndex: windowIndex, Name: this.Name, Arguments: this.Arguments, HistoryData: hisData,
2594
- Stock: { Symbol: hqChart.Symbol, Name: hqChart.Name }
2595
- };
2596
- event.Callback(event, data, this);
2597
- }
2598
- }
2599
- }
2600
-
2601
- this.FittingData = function (jsonData, hqChart)
2602
- {
2603
- var outVar = jsonData.outvar;
2604
- var date = jsonData.date;
2605
- var time = jsonData.time;
2606
- var kdata = hqChart.ChartPaint[0].Data;
2607
-
2608
- //把数据拟合到kdata上
2609
- var result = [];
2610
-
2611
- for (var i in outVar)
2612
- {
2613
- var item = outVar[i];
2614
- var indexData = [];
2615
- var outVarItem = { Name: item.name, Type: item.type };
2616
- if (item.color) outVarItem.Color = item.color;
2617
- if (item.data)
2618
- {
2619
- outVarItem.Data = this.FittingArray(item.data, date, time, hqChart);
2620
-
2621
- if (item.color) outVarItem.Color = item.color;
2622
- if (item.linewidth >= 1) outVarItem.LineWidth = item.linewidth;
2623
- if (item.isshow == false) outVarItem.IsShow = false;
2624
- if (item.isexdata == true) outVarItem.IsExData = true;
2625
-
2626
- result.push(outVarItem);
2627
- }
2628
- else if (item.Draw)
2629
- {
2630
- var draw = item.Draw;
2631
- var drawItem = {};
2632
- if (draw.DrawType == 'DRAWICON') //图标
2633
- {
2634
- drawItem.Icon = draw.Icon;
2635
- //小程序不支持svg, 只能转文字
2636
- if (IFrameSplitOperator.IsNumber(draw.IconType))
2637
- drawItem.Icon=JSCommonComplier.g_JSComplierResource.GetDrawTextIcon(draw.IconType);
2638
- drawItem.Name = draw.Name;
2639
- drawItem.DrawType = draw.DrawType;
2640
- drawItem.DrawData = this.FittingArray(draw.DrawData, date, time, hqChart);
2641
- outVarItem.Draw = drawItem;
2642
-
2643
- result.push(outVarItem);
2644
- }
2645
- else if (draw.DrawType == 'DRAWTEXT') //文本
2646
- {
2647
- drawItem.Text = draw.Text;
2648
- drawItem.Name = draw.Name;
2649
- drawItem.DrawType = draw.DrawType;
2650
- drawItem.DrawData = this.FittingArray(draw.DrawData, date, time, hqChart);
2651
- outVarItem.Draw = drawItem;
2652
-
2653
- result.push(outVarItem);
2654
- }
2655
- else if (draw.DrawType == 'STICKLINE') //柱子
2656
- {
2657
- drawItem.Name = draw.Name;
2658
- drawItem.Type = draw.Type;
2659
- drawItem.Width = draw.Width;
2660
- drawItem.DrawType = draw.DrawType;
2661
- drawItem.DrawData = this.FittingArray(draw.DrawData, date, time, hqChart, 1);
2662
- outVarItem.Draw = drawItem;
2663
-
2664
- result.push(outVarItem);
2665
- }
2666
- else if (draw.DrawType=="DRAWBAND")
2667
- {
2668
- drawItem.Name=draw.Name;
2669
- drawItem.Type=draw.Type;
2670
- drawItem.DrawType=draw.DrawType;
2671
- drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);
2672
- drawItem.Color=draw.Color;
2673
- outVarItem.Draw=drawItem;
2674
-
2675
- result.push(outVarItem);
2676
- }
2677
- else if (draw.DrawType == 'MULTI_LINE')
2678
- {
2679
- drawItem.Text = draw.Text;
2680
- drawItem.Name = draw.Name;
2681
- drawItem.DrawType = draw.DrawType;
2682
- drawItem.DrawData = this.FittingMultiLine(draw.DrawData, date, time, hqChart);
2683
- outVarItem.Draw = drawItem;
2684
- if (IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData))
2685
- {
2686
- for(var k=0; k<drawItem.DrawData.length; ++k)
2687
- {
2688
- this.GetKLineData(drawItem.DrawData[k].Point, hqChart);
2689
- }
2690
- }
2691
-
2692
- if (draw.LineDash) drawItem.LineDash=draw.LineDash;
2693
- if (draw.Arrow) drawItem.Arrow=draw.Arrow;
2694
- if (IFrameSplitOperator.IsNumber(draw.LineWidth)) drawItem.LineWidth=draw.LineWidth;
2695
- result.push(outVarItem);
2696
- }
2697
- else if (draw.DrawType == 'MULTI_POINT')
2698
- {
2699
- drawItem.Text = draw.Text;
2700
- drawItem.Name = draw.Name;
2701
- drawItem.DrawType = draw.DrawType;
2702
- drawItem.DrawData = this.FittingMultiLine(draw.DrawData, date, time, hqChart);
2703
- outVarItem.Draw = drawItem;
2704
- if (IFrameSplitOperator.IsNonEmptyArray(drawItem.DrawData))
2705
- {
2706
- for(var k=0; k<drawItem.DrawData.length; ++k)
2707
- {
2708
- this.GetKLineData(drawItem.DrawData[k].Point, hqChart);
2709
- }
2710
- }
2711
-
2712
- result.push(outVarItem);
2713
- }
2714
- else if (draw.DrawType == 'MULTI_BAR')
2715
- {
2716
- drawItem.Text = draw.Text;
2717
- drawItem.Name = draw.Name;
2718
- drawItem.DrawType = draw.DrawType;
2719
- drawItem.DrawData = this.FittingMultiLine(draw.DrawData, date, time, hqChart);
2720
- outVarItem.Draw = drawItem;
2721
-
2722
- result.push(outVarItem);
2723
- }
2724
- else if (draw.DrawType==SCRIPT_CHART_NAME.OVERLAY_BARS)
2725
- {
2726
- drawItem.Name=draw.Name;
2727
- drawItem.Type=draw.Type;
2728
- drawItem.DrawType=draw.DrawType;
2729
- drawItem.BarName=draw.BarName;
2730
- drawItem.BarColor=draw.BarColor;
2731
- drawItem.LineWidth=draw.LineWidth;
2732
- drawItem.BarType=draw.BarType;
2733
- drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);
2734
- outVarItem.Draw=drawItem;
2735
-
2736
- result.push(outVarItem);
2737
- }
2738
- else if (draw.DrawType == 'MULTI_TEXT')
2739
- {
2740
- drawItem.Text = draw.Text;
2741
- drawItem.Name = draw.Name;
2742
- drawItem.DrawType = draw.DrawType;
2743
- drawItem.DrawData = this.FittingMultiText(draw.DrawData, date, time, hqChart);
2744
- this.GetKLineData(drawItem.DrawData, hqChart);
2745
- outVarItem.Draw = drawItem;
2746
- result.push(outVarItem);
2747
- }
2748
- else if (draw.DrawType=="MULTI_HTMLDOM") //外部自己创建dom
2749
- {
2750
- drawItem.Text=draw.Text;
2751
- drawItem.Name=draw.Name;
2752
- drawItem.DrawType=draw.DrawType;
2753
- drawItem.Callback=draw.Callback;
2754
- drawItem.DrawData=this.FittingMultiText(draw.DrawData,date,time,hqChart);
2755
- this.GetKLineData(drawItem.DrawData, hqChart);
2756
- outVarItem.Draw=drawItem;
2757
- result.push(outVarItem);
2758
- }
2759
- else if (draw.DrawType=="KLINE_BG")
2760
- {
2761
- drawItem.Name=draw.Name;
2762
- drawItem.DrawType=draw.DrawType;
2763
- drawItem.DrawData={ Color:draw.Color, Angle:draw.Angle };
2764
- drawItem.DrawData.Data=this.FittingKLineBG(draw.DrawData, hqChart);
2765
-
2766
- outVarItem.Draw=drawItem;
2767
- outVarItem.Name=draw.DrawType;
2768
- result.push(outVarItem);
2769
- }
2770
- }
2771
- }
2772
-
2773
- return result;
2774
- }
2775
-
2776
- // h, high, low l.
2777
- this.GetKLineData=function(data,hqChart)
2778
- {
2779
- if (!data) return;
2780
- if (!Array.isArray(data)) return;
2781
- var kData=hqChart.ChartPaint[0].Data; //K线
2782
-
2783
- for(var i in data)
2784
- {
2785
- var item=data[i];
2786
- if (!IFrameSplitOperator.IsString(item.Value)) continue;
2787
- if(!IFrameSplitOperator.IsNumber(item.Index)) continue;
2788
- if (item.Index<0 || item.Index>=kData.Data.length) continue;
2789
- var valueName=item.Value.toUpperCase();
2790
- var kItem=kData.Data[item.Index];
2791
- switch(valueName)
2792
- {
2793
- case "HIGH":
2794
- case "H":
2795
- item.Value=kItem.High;
2796
- break;
2797
- case "L":
2798
- case "LOW":
2799
- item.Value=kItem.Low;
2800
- break;
2801
- }
2802
- }
2803
- }
2804
-
2805
- this.FittingKLineBG=function(data, hqChart)
2806
- {
2807
- var kData=hqChart.ChartPaint[0].Data; //K线
2808
- var result=[];
2809
- if (ChartData.IsDayPeriod(hqChart.Period,true)) //日线
2810
- {
2811
- var bFill=false;
2812
- for(var i=0,j=0;i<kData.Data.length;)
2813
- {
2814
- result[i]=0;
2815
- var kItem=kData.Data[i];
2816
- if (j>=data.length)
2817
- {
2818
- ++i;
2819
- continue;
2820
- }
2821
- var dataItem=data[j];
2822
-
2823
- if (dataItem.Date<kItem.Date)
2824
- {
2825
- ++j;
2826
- }
2827
- else if (dataItem.Date>kItem.Date)
2828
- {
2829
- ++i;
2830
- }
2831
- else
2832
- {
2833
- bFill=true;
2834
- result[i]=1;
2835
- ++j;
2836
- ++i;
2837
- }
2838
- }
2839
-
2840
- if (bFill) return result;
2841
- }
2842
- else if (ChartData.IsMinutePeriod(hqChart.Period,true)) //分钟线
2843
- {
2844
- var bFill=false;
2845
- for(var i=0,j=0;i<kData.Data.length;)
2846
- {
2847
- result[i]=0;
2848
- var kItem=kData.Data[i];
2849
- if (j>=data.length)
2850
- {
2851
- ++i;
2852
- continue;
2853
- }
2854
- var dataItem=data[j];
2855
-
2856
- if (dataItem.Date<kItem.Date || (dataItem.Date==kItem.Date && dataItem.Time<kItem.Time))
2857
- {
2858
- ++j;
2859
- }
2860
- else if (dataItem.Date>kItem.Date || (dataItem.Date==kItem.Date && dataItem.Time>kItem.Time))
2861
- {
2862
- ++i;
2863
- }
2864
- else
2865
- {
2866
- bFill=true;
2867
- result[i]=1;
2868
- ++j;
2869
- ++i;
2870
- }
2871
- }
2872
-
2873
- if (bFill) return result;
2874
- }
2875
-
2876
- return null;
2877
- }
2878
-
2879
- this.FittingArray = function (sourceData, date, time, hqChart, arrayType) //arrayType 0=单值数组 1=结构体
2880
- {
2881
- var kdata = hqChart.ChartPaint[0].Data; //K线
2882
-
2883
- var arySingleData = [];
2884
- for (var i in sourceData)
2885
- {
2886
- var value = sourceData[i];
2887
- var indexItem = new SingleData(); //单列指标数据
2888
- indexItem.Date = date[i];
2889
- if (time && i < time.length) indexItem.Time = time[i];
2890
- indexItem.Value = value;
2891
- arySingleData.push(indexItem);
2892
- }
2893
-
2894
- var aryFittingData;
2895
- if (ChartData.IsDayPeriod(hqChart.Period,true))
2896
- aryFittingData = kdata.GetFittingData(arySingleData); //数据和主图K线拟合
2897
- else
2898
- aryFittingData = kdata.GetMinuteFittingData(arySingleData); //数据和主图K线拟合
2899
-
2900
- var bindData = new ChartData();
2901
- bindData.Data = aryFittingData;
2902
- var result;
2903
- if (arrayType == 1) result = bindData.GetObject();
2904
- else result = bindData.GetValue();
2905
- return result;
2906
- }
2907
-
2908
- this.FittingMultiLine = function (sourceData, date, time, hqChart)
2909
- {
2910
- var kdata = hqChart.ChartPaint[0].Data; //K线
2911
-
2912
- if (ChartData.IsDayPeriod(hqChart.Period, true)) //日线
2913
- {
2914
- var aryPoint = [];
2915
- for (var i in sourceData)
2916
- {
2917
- var item = sourceData[i];
2918
- for (var j in item.Point)
2919
- {
2920
- var point = item.Point[j];
2921
- aryPoint.push(point);
2922
- }
2923
- }
2924
-
2925
- aryPoint.sort(function (a, b) { return a.Date - b.Date; });
2926
- kdata.GetDateIndex(aryPoint);
2927
- return sourceData;
2928
- }
2929
- else if (ChartData.IsMinutePeriod(hqChart.Period, true)) //分钟线
2930
- {
2931
- var aryPoint = [];
2932
- for (var i in sourceData)
2933
- {
2934
- var item = sourceData[i];
2935
- for (var j in item.Point)
2936
- {
2937
- var point = item.Point[j];
2938
- aryPoint.push(point);
2939
- }
2940
- }
2941
-
2942
- aryPoint.sort(function (a, b) {
2943
- if (a.Date == b.Date) return a.Time - b.Time;
2944
- return a.Date - b.Date;
2945
- });
2946
-
2947
- kdata.GetDateTimeIndex(aryPoint);
2948
- return sourceData;
2949
- }
2950
-
2951
- return null;
2952
- }
2953
-
2954
- this.FittingMultiText = function (sourceData, date, time, hqChart)
2955
- {
2956
- var kdata = hqChart.ChartPaint[0].Data; //K线
2957
-
2958
- if (ChartData.IsDayPeriod(hqChart.Period, true)) //日线
2959
- {
2960
- sourceData.sort(function (a, b) { return a.Date - b.Date; });
2961
- kdata.GetDateIndex(sourceData);
2962
- return sourceData;
2963
- }
2964
- else if (ChartData.IsMinutePeriod(hqChart.Period, true)) //分钟线
2965
- {
2966
- sourceData.sort(function (a, b) {
2967
- if (a.Date == b.Date) return a.Time - b.Time;
2968
- return a.Date - b.Date;
2969
- }
2970
- );
2971
-
2972
- kdata.GetDateTimeIndex(sourceData);
2973
- return sourceData;
2974
- }
2975
-
2976
- return null;
2977
- }
2978
-
2979
- this.FittingMinuteData=function(jsonData, hqChart)
2980
- {
2981
- var outVar=jsonData.outvar;
2982
- var date=jsonData.date;
2983
- var time=jsonData.time;
2984
- var result=[];
2985
-
2986
- for(var i in outVar)
2987
- {
2988
- var item=outVar[i];
2989
- var outVarItem={Name:item.name,Type:item.type}
2990
- if (item.data)
2991
- {
2992
- outVarItem.Data=this.FittingMinuteArray(item.data,date,time,hqChart);
2993
- if (item.color) outVarItem.Color=item.color;
2994
- if (item.linewidth>=1) outVarItem.LineWidth=item.linewidth;
2995
- if (item.isshow==false) outVarItem.IsShow = false;
2996
- if (item.isexdata==true) outVarItem.IsExData = true;
2997
-
2998
- result.push(outVarItem);
2999
- }
3000
- else if (item.Draw)
3001
- {
3002
- var draw=item.Draw;
3003
- var drawItem={};
3004
- if (draw.DrawType=='DRAWICON') //图标
3005
- {
3006
- drawItem.Icon=draw.Icon;
3007
- drawItem.Name=draw.Name;
3008
- drawItem.DrawType=draw.DrawType;
3009
- drawItem.DrawData=this.FittingMinuteArray(draw.DrawData,date,time,hqChart);
3010
- outVarItem.Draw=drawItem;
3011
-
3012
- result.push(outVarItem);
3013
- }
3014
- else if (draw.DrawType=='DRAWTEXT') //文本
3015
- {
3016
- drawItem.Text=draw.Text;
3017
- drawItem.Name=draw.Name;
3018
- drawItem.DrawType=draw.DrawType;
3019
- drawItem.DrawData=this.FittingMinuteArray(draw.DrawData,date,time,hqChart);
3020
- outVarItem.Draw=drawItem;
3021
-
3022
- result.push(outVarItem);
3023
- }
3024
- else if (draw.DrawType=='STICKLINE') //柱子
3025
- {
3026
- drawItem.Name=draw.Name;
3027
- drawItem.Type=draw.Type;
3028
- drawItem.Width=draw.Width;
3029
- drawItem.DrawType=draw.DrawType;
3030
- drawItem.DrawData=this.FittingMinuteArray(draw.DrawData,date,time,hqChart,1);
3031
- outVarItem.Draw=drawItem;
3032
-
3033
- result.push(outVarItem);
3034
- }
3035
- else if (draw.DrawType==SCRIPT_CHART_NAME.OVERLAY_BARS)
3036
- {
3037
- drawItem.Name=draw.Name;
3038
- drawItem.Type=draw.Type;
3039
- drawItem.DrawType=draw.DrawType;
3040
- drawItem.BarName=draw.BarName;
3041
- drawItem.BarColor=draw.BarColor;
3042
- drawItem.LineWidth=draw.LineWidth;
3043
- drawItem.DrawData=this.FittingMinuteArray(draw.DrawData,date,time,hqChart,1);
3044
- outVarItem.Draw=drawItem;
3045
-
3046
- result.push(outVarItem);
3047
- }
3048
- else if (draw.DrawType=='MULTI_LINE')
3049
- {
3050
- drawItem.Text=draw.Text;
3051
- drawItem.Name=draw.Name;
3052
- drawItem.DrawType=draw.DrawType;
3053
- drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);
3054
- for(var k in drawItem.DrawData)
3055
- {
3056
- this.GetKLineData(drawItem.DrawData[k].Point, hqChart);
3057
- }
3058
-
3059
- outVarItem.Draw=drawItem;
3060
- if (draw.LineDash) drawItem.LineDash=draw.LineDash;
3061
- if (draw.Arrow) drawItem.Arrow=draw.Arrow;
3062
- if (IFrameSplitOperator.IsNumber(draw.LineWidth)) drawItem.LineWidth=draw.LineWidth;
3063
-
3064
- result.push(outVarItem);
3065
- }
3066
- else if (draw.DrawType=='MULTI_POINT')
3067
- {
3068
- drawItem.Text=draw.Text;
3069
- drawItem.Name=draw.Name;
3070
- drawItem.DrawType=draw.DrawType;
3071
- drawItem.DrawData=this.FittingMultiLine(draw.DrawData,date,time,hqChart);
3072
- for(var k in drawItem.DrawData)
3073
- {
3074
- this.GetKLineData(drawItem.DrawData[k].Point, hqChart);
3075
- }
3076
- outVarItem.Draw=drawItem;
3077
-
3078
- result.push(outVarItem);
3079
- }
3080
- else if (draw.DrawType=='MULTI_TEXT')
3081
- {
3082
- drawItem.Text=draw.Text;
3083
- drawItem.Name=draw.Name;
3084
- drawItem.DrawType=draw.DrawType;
3085
- drawItem.DrawData=this.FittingMultiText(draw.DrawData,date,time,hqChart);
3086
- this.GetKLineData(drawItem.DrawData, hqChart);
3087
- outVarItem.Draw=drawItem;
3088
- result.push(outVarItem);
3089
- }
3090
- else if (draw.DrawType=='MULTI_SVGICON')
3091
- {
3092
- drawItem.Text=draw.Text;
3093
- drawItem.Name=draw.Name;
3094
- drawItem.DrawType=draw.DrawType;
3095
- drawItem.DrawData={ Icon:this.FittingMultiText(draw.DrawData.Icon,date,time,hqChart), Family:draw.DrawData.Family };
3096
- this.GetKLineData(drawItem.DrawData.Icon, hqChart);
3097
- outVarItem.Draw=drawItem;
3098
-
3099
- result.push(outVarItem);
3100
- }
3101
- else if (draw.DrawType=="MULTI_HTMLDOM") //外部自己创建dom
3102
- {
3103
- drawItem.Text=draw.Text;
3104
- drawItem.Name=draw.Name;
3105
- drawItem.DrawType=draw.DrawType;
3106
- drawItem.Callback=draw.Callback;
3107
- drawItem.DrawData=this.FittingMultiText(draw.DrawData,date,time,hqChart);
3108
- this.GetKLineData(drawItem.DrawData, hqChart);
3109
- outVarItem.Draw=drawItem;
3110
-
3111
- result.push(outVarItem);
3112
- }
3113
- }
3114
- }
3115
-
3116
- return result;
3117
- }
3118
-
3119
- this.FittingMinuteArray=function(sourceData,date,time,hqChart)
3120
- {
3121
- var minutedata=hqChart.SourceData;; //分钟线
3122
-
3123
- var arySingleData=[];
3124
- for(var i in sourceData)
3125
- {
3126
- var value=sourceData[i];
3127
- var indexItem=new SingleData(); //单列指标数据
3128
- indexItem.Date=date[i];
3129
- if (time && i<time.length) indexItem.Time=time[i];
3130
- indexItem.Value=value;
3131
- arySingleData.push(indexItem);
3132
- }
3133
-
3134
- var aryFittingData=minutedata.GetMinuteFittingData(arySingleData); //数据和主图K线拟合
3135
- var bindData=new ChartData();
3136
- bindData.Data=aryFittingData;
3137
- var result=bindData.GetValue();
3138
- return result;
3139
- }
3140
- }
3141
-
3142
-
3143
-
3144
- //市场多空
3145
- function MarketLongShortIndex()
3146
- {
3147
- this.newMethod = BaseIndex; //派生
3148
- this.newMethod('市场多空');
3149
- delete this.newMethod;
3150
-
3151
- this.Index = new Array(
3152
- new IndexInfo("多空指标", null),
3153
- new IndexInfo("多头区域", null),
3154
- new IndexInfo("空头区域", null)
3155
- );
3156
-
3157
- this.Index[0].LineColor = g_JSChartResource.Index.LineColor[0];
3158
- this.Index[1].LineColor = g_JSChartResource.UpBarColor;
3159
- this.Index[2].LineColor = g_JSChartResource.DownBarColor;
3160
-
3161
- this.LongShortData; //多空数据
3162
-
3163
- this.Create = function (hqChart, windowIndex) {
3164
- for (var i in this.Index) {
3165
- var paint = null;
3166
- if (i == 0)
3167
- paint = new ChartLine();
3168
- else
3169
- paint = new ChartStraightLine();
3170
-
3171
- paint.Color = this.Index[i].LineColor;
3172
- paint.Canvas = hqChart.Canvas;
3173
- paint.Name = this.Name + "-" + i.toString();
3174
- paint.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
3175
- paint.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
3176
-
3177
- hqChart.ChartPaint.push(paint);
3178
- }
3179
- }
3180
-
3181
- //请求数据
3182
- this.RequestData = function (hqChart, windowIndex, hisData) {
3183
- var self = this;
3184
- var param =
3185
- {
3186
- HQChart: hqChart,
3187
- WindowIndex: windowIndex,
3188
- HistoryData: hisData
3189
- };
3190
-
3191
- this.LongShortData = [];
3192
-
3193
- if (param.HQChart.Period > 0) //周期数据
3194
- {
3195
- this.NotSupport(param.HQChart, param.WindowIndex, "不支持周期切换");
3196
- param.HQChart.Draw();
3197
- return false;
3198
- }
3199
-
3200
- //请求数据
3201
- wx.request({
3202
- url: g_JSChartResource.Index.MarketLongShortApiUrl,
3203
- data:
3204
- {
3205
-
3206
- },
3207
- method: 'POST',
3208
- dataType: "json",
3209
- async: true,
3210
- success: function (recvData) {
3211
- self.RecvData(recvData, param);
3212
- }
3213
- });
3214
-
3215
- return true;
3216
- }
3217
-
3218
- this.RecvData = function (recvData, param) {
3219
- if (recvData.data.data.length <= 0) return;
3220
-
3221
- var aryData = new Array();
3222
- for (var i in recvData.data.data) {
3223
- var item = recvData.data.data[i];
3224
- var indexData = new SingleData();
3225
- indexData.Date = item[0];
3226
- indexData.Value = item[1];
3227
- aryData.push(indexData);
3228
- }
3229
-
3230
- var aryFittingData = param.HistoryData.GetFittingData(aryData);
3231
-
3232
- var bindData = new ChartData();
3233
- bindData.Data = aryFittingData;
3234
- bindData.Period = param.HQChart.Period; //周期
3235
- bindData.Right = param.HQChart.Right; //复权
3236
-
3237
- this.LongShortData = bindData.GetValue();
3238
- this.BindData(param.HQChart, param.WindowIndex, param.HistoryData);
3239
-
3240
- param.HQChart.UpdataDataoffset(); //更新数据偏移
3241
- param.HQChart.UpdateFrameMaxMin(); //调整坐标最大 最小值
3242
- param.HQChart.Draw();
3243
-
3244
- }
3245
-
3246
-
3247
- this.BindData = function (hqChart, windowIndex, hisData) {
3248
- var paint = hqChart.GetChartPaint(windowIndex);
3249
-
3250
- if (paint.length != this.Index.length) return false;
3251
-
3252
- //paint[0].Data.Data=SWLData;
3253
- paint[0].Data.Data = this.LongShortData;
3254
- paint[0].NotSupportMessage = null;
3255
- paint[1].Data.Data[0] = 8;
3256
- paint[2].Data.Data[0] = 1;
3257
-
3258
- //指定[0,9]
3259
- hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin = { Max: 9, Min: 0, Count: 3 };
3260
-
3261
- var titleIndex = windowIndex + 1;
3262
-
3263
- for (var i in paint) {
3264
- hqChart.TitlePaint[titleIndex].Data[i] = new DynamicTitleData(paint[i].Data, this.Index[i].Name, this.Index[i].LineColor);
3265
- if (i > 0) hqChart.TitlePaint[titleIndex].Data[i].DataType = "StraightLine";
3266
- }
3267
-
3268
- hqChart.TitlePaint[titleIndex].Title = this.FormatIndexTitle();
3269
-
3270
- if (hqChart.UpdateUICallback) hqChart.UpdateUICallback('MarketLongShortIndex', paint, { WindowIndex: windowIndex, HistoryData: hisData }); //通知上层回调
3271
- return true;
3272
- }
3273
-
3274
- }
3275
-
3276
- //市场择时
3277
- function MarketTimingIndex()
3278
- {
3279
- this.newMethod = BaseIndex; //派生
3280
- this.newMethod('市场择时');
3281
- delete this.newMethod;
3282
-
3283
- this.Index = new Array(
3284
- new IndexInfo("因子择时", null)
3285
- );
3286
-
3287
- this.TimingData; //择时数据
3288
- this.TitleColor = g_JSChartResource.FrameSplitTextColor
3289
-
3290
- this.Create = function (hqChart, windowIndex)
3291
- {
3292
- for (var i in this.Index) {
3293
- var paint = new ChartMACD();
3294
- paint.Canvas = hqChart.Canvas;
3295
- paint.Name = this.Name + "-" + i.toString();
3296
- paint.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
3297
- paint.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
3298
-
3299
- hqChart.ChartPaint.push(paint);
3300
- }
3301
- }
3302
-
3303
- //请求数据
3304
- this.RequestData = function (hqChart, windowIndex, hisData)
3305
- {
3306
- var self = this;
3307
- var param =
3308
- {
3309
- HQChart: hqChart,
3310
- WindowIndex: windowIndex,
3311
- HistoryData: hisData
3312
- };
3313
-
3314
- this.LongShortData = [];
3315
-
3316
- if (param.HQChart.Period > 0) //周期数据
3317
- {
3318
- this.NotSupport(param.HQChart, param.WindowIndex, "不支持周期切换");
3319
- param.HQChart.Draw();
3320
- return false;
3321
- }
3322
-
3323
- //请求数据
3324
- JSNetwork.HttpRequest({
3325
- url: g_JSChartResource.Index.MarketLongShortApiUrl,
3326
- data:
3327
- {
3328
-
3329
- },
3330
- method: 'POST',
3331
- dataType: "json",
3332
- async: true,
3333
- success: function (recvData) {
3334
- self.RecvData(recvData, param);
3335
- }
3336
- });
3337
-
3338
- return true;
3339
- }
3340
-
3341
- this.RecvData = function (recvData, param)
3342
- {
3343
- if (recvData.data.data.length <= 0) return;
3344
-
3345
- var aryData = new Array();
3346
- for (var i in recvData.data.data)
3347
- {
3348
- var item = recvData.data.data[i];
3349
- var indexData = new SingleData();
3350
- indexData.Date = item[0];
3351
- indexData.Value = item[2];
3352
- aryData.push(indexData);
3353
- }
3354
-
3355
- var aryFittingData = param.HistoryData.GetFittingData(aryData);
3356
-
3357
- var bindData = new ChartData();
3358
- bindData.Data = aryFittingData;
3359
- bindData.Period = param.HQChart.Period; //周期
3360
- bindData.Right = param.HQChart.Right; //复权
3361
-
3362
- this.TimingData = bindData.GetValue();
3363
- this.BindData(param.HQChart, param.WindowIndex, param.HistoryData);
3364
-
3365
- param.HQChart.UpdataDataoffset(); //更新数据偏移
3366
- param.HQChart.UpdateFrameMaxMin(); //调整坐标最大 最小值
3367
- param.HQChart.Draw();
3368
- }
3369
-
3370
- this.BindData = function (hqChart, windowIndex, hisData)
3371
- {
3372
- var paint = hqChart.GetChartPaint(windowIndex);
3373
-
3374
- if (paint.length != this.Index.length) return false;
3375
-
3376
- //paint[0].Data.Data=SWLData;
3377
- paint[0].Data.Data = this.TimingData;
3378
- paint[0].NotSupportMessage = null;
3379
-
3380
- var titleIndex = windowIndex + 1;
3381
-
3382
- for (var i in paint)
3383
- {
3384
- hqChart.TitlePaint[titleIndex].Data[i] = new DynamicTitleData(paint[i].Data, this.Index[i].Name, this.TitleColor);
3385
- hqChart.TitlePaint[titleIndex].Data[i].StringFormat = STRING_FORMAT_TYPE.THOUSANDS;
3386
- hqChart.TitlePaint[titleIndex].Data[i].FloatPrecision = 0;
3387
- }
3388
-
3389
- hqChart.TitlePaint[titleIndex].Title = this.FormatIndexTitle();
3390
-
3391
- if (hqChart.UpdateUICallback) hqChart.UpdateUICallback('MarketTimingIndex', paint, { WindowIndex: windowIndex, HistoryData: hisData }); //通知上层回调
3392
- return true;
3393
- }
3394
- }
3395
-
3396
- //市场关注度
3397
- function MarketAttentionIndex()
3398
- {
3399
- this.newMethod = BaseIndex; //派生
3400
- this.newMethod('市场关注度');
3401
- delete this.newMethod;
3402
-
3403
- this.Index = new Array(
3404
- new IndexInfo("市场关注度指数", null)
3405
- );
3406
-
3407
- this.Data; //关注度数据
3408
- this.TitleColor = g_JSChartResource.FrameSplitTextColor;
3409
- this.ApiUrl = g_JSChartResource.Index.MarketAttentionApiUrl;
3410
-
3411
- this.Create = function (hqChart, windowIndex)
3412
- {
3413
- for (var i in this.Index)
3414
- {
3415
- var paint = new ChartBar(); //柱子
3416
- paint.Canvas = hqChart.Canvas;
3417
- paint.Name = this.Name + "-" + i.toString();
3418
- paint.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
3419
- paint.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
3420
- paint.UpBarColor = paint.DownBarColor = 'rgb(243,152,0)';
3421
-
3422
- hqChart.ChartPaint.push(paint);
3423
- }
3424
- }
3425
-
3426
- //调整框架
3427
- this.SetFrame = function (hqChart, windowIndex, hisData)
3428
- {
3429
- hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin = { Max: 6, Min: 0, Count: 3 };
3430
- }
3431
-
3432
- //请求数据
3433
- this.RequestData = function (hqChart, windowIndex, hisData)
3434
- {
3435
- var self = this;
3436
- var param =
3437
- {
3438
- HQChart: hqChart,
3439
- WindowIndex: windowIndex,
3440
- HistoryData: hisData
3441
- };
3442
-
3443
- this.Data = [];
3444
-
3445
- if (param.HQChart.Period > 0) //周期数据
3446
- {
3447
- this.NotSupport(param.HQChart, param.WindowIndex, "不支持周期切换");
3448
- param.HQChart.Draw();
3449
- return false;
3450
- }
3451
-
3452
- //请求数据
3453
- JSNetwork.HttpRequest({
3454
- url: this.ApiUrl,
3455
- data:
3456
- {
3457
- "symbol": param.HQChart.Symbol,
3458
- "startdate": 20100101,
3459
- },
3460
- method: 'POST',
3461
- dataType: "json",
3462
- success: function (recvData) {
3463
- self.RecvData(recvData.data, param);
3464
- }
3465
- });
3466
-
3467
- return true;
3468
- }
3469
-
3470
- this.RecvData = function (recvData, param)
3471
- {
3472
- if (recvData.date.length < 0) return;
3473
-
3474
- var aryData = new Array();
3475
- for (var i in recvData.date)
3476
- {
3477
- var indexData = new SingleData();
3478
- indexData.Date = recvData.date[i];
3479
- indexData.Value = recvData.value[i];
3480
- aryData.push(indexData);
3481
- }
3482
-
3483
- var aryFittingData = param.HistoryData.GetFittingData(aryData);
3484
-
3485
- var bindData = new ChartData();
3486
- bindData.Data = aryFittingData;
3487
- bindData.Period = param.HQChart.Period; //周期
3488
- bindData.Right = param.HQChart.Right; //复权
3489
-
3490
- this.Data = bindData.GetValue();
3491
- this.BindData(param.HQChart, param.WindowIndex, param.HistoryData);
3492
- this.SetFrame(param.HQChart, param.WindowIndex, param.HistoryData);
3493
-
3494
- param.HQChart.UpdataDataoffset(); //更新数据偏移
3495
- param.HQChart.UpdateFrameMaxMin(); //调整坐标最大 最小值
3496
- param.HQChart.Draw();
3497
-
3498
- // if (typeof (this.UpdateUICallback) == 'function') this.UpdateUICallback('RecvHistoryData', this);
3499
- }
3500
-
3501
-
3502
- this.BindData = function (hqChart, windowIndex, hisData)
3503
- {
3504
- var paint = hqChart.GetChartPaint(windowIndex);
3505
-
3506
- if (paint.length != this.Index.length) return false;
3507
-
3508
- //paint[0].Data.Data=SWLData;
3509
- paint[0].Data.Data = this.Data;
3510
- paint[0].NotSupportMessage = null;
3511
-
3512
- var titleIndex = windowIndex + 1;
3513
-
3514
- for (var i in paint) {
3515
- hqChart.TitlePaint[titleIndex].Data[i] = new DynamicTitleData(paint[i].Data, this.Index[i].Name, this.TitleColor);
3516
- hqChart.TitlePaint[titleIndex].Data[i].StringFormat = STRING_FORMAT_TYPE.THOUSANDS;
3517
- hqChart.TitlePaint[titleIndex].Data[i].FloatPrecision = 0;
3518
- }
3519
-
3520
- hqChart.TitlePaint[titleIndex].Title = this.FormatIndexTitle();
3521
- return true;
3522
- }
3523
- }
3524
-
3525
-
3526
- /*
3527
- 行业,指数热度
3528
- */
3529
- function MarketHeatIndex()
3530
- {
3531
- this.newMethod = BaseIndex; //派生
3532
- this.newMethod('指数/行业热度');
3533
- delete this.newMethod;
3534
-
3535
- this.Index = new Array(
3536
- new IndexInfo("热度指数", 5),
3537
- new IndexInfo('MA', 10),
3538
- new IndexInfo('MA', null)
3539
- );
3540
-
3541
- this.Data; //关注度数据
3542
-
3543
- this.ApiUrl = g_JSChartResource.Index.MarketHeatApiUrl;
3544
-
3545
- this.Index[0].LineColor = g_JSChartResource.FrameSplitTextColor;
3546
- this.Index[1].LineColor = g_JSChartResource.Index.LineColor[0];
3547
- this.Index[2].LineColor = g_JSChartResource.Index.LineColor[1];
3548
-
3549
- this.Create = function (hqChart, windowIndex)
3550
- {
3551
- for (var i in this.Index)
3552
- {
3553
- var paint = null;
3554
- if (i == 0)
3555
- {
3556
- paint = new ChartMACD(); //柱子
3557
- }
3558
- else
3559
- {
3560
- paint = new ChartLine();
3561
- paint.Color = this.Index[i].LineColor;
3562
- }
3563
-
3564
- paint.Canvas = hqChart.Canvas;
3565
- paint.Name = this.Name + "-" + i.toString();
3566
- paint.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
3567
- paint.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
3568
-
3569
- hqChart.ChartPaint.push(paint);
3570
- }
3571
- }
3572
-
3573
- //请求数据
3574
- this.RequestData = function (hqChart, windowIndex, hisData)
3575
- {
3576
- var self = this;
3577
- var param =
3578
- {
3579
- HQChart: hqChart,
3580
- WindowIndex: windowIndex,
3581
- HistoryData: hisData
3582
- };
3583
-
3584
- this.Data = [];
3585
-
3586
- if (param.HQChart.Period > 0) //周期数据
3587
- {
3588
- this.NotSupport(param.HQChart, param.WindowIndex, "不支持周期切换");
3589
- param.HQChart.Draw();
3590
- return false;
3591
- }
3592
-
3593
- //请求数据
3594
- JSNetwork.HttpRequest({
3595
- url: this.ApiUrl,
3596
- data:
3597
- {
3598
- "symbol": param.HQChart.Symbol,
3599
- "startdate": 20100101,
3600
- },
3601
- method: 'POST',
3602
- dataType: "json",
3603
- success: function (recvData) {
3604
- self.RecvData(recvData.data, param);
3605
- }
3606
- });
3607
-
3608
- return true;
3609
- }
3610
-
3611
- this.RecvData = function (recvData, param)
3612
- {
3613
- if (recvData.date.length < 0) return;
3614
-
3615
- var aryData = new Array();
3616
- for (var i in recvData.date)
3617
- {
3618
- var indexData = new SingleData();
3619
- indexData.Date = recvData.date[i];
3620
- indexData.Value = recvData.value[i];
3621
- aryData.push(indexData);
3622
- }
3623
-
3624
- var aryFittingData = param.HistoryData.GetFittingData(aryData);
3625
-
3626
- var bindData = new ChartData();
3627
- bindData.Data = aryFittingData;
3628
- bindData.Period = param.HQChart.Period; //周期
3629
- bindData.Right = param.HQChart.Right; //复权
3630
-
3631
- this.Data = bindData.GetValue();
3632
- this.BindData(param.HQChart, param.WindowIndex, param.HistoryData);
3633
-
3634
- param.HQChart.UpdataDataoffset(); //更新数据偏移
3635
- param.HQChart.UpdateFrameMaxMin(); //调整坐标最大 最小值
3636
- param.HQChart.Draw();
3637
- }
3638
-
3639
-
3640
- this.BindData = function (hqChart, windowIndex, hisData)
3641
- {
3642
- var paint = hqChart.GetChartPaint(windowIndex);
3643
-
3644
- if (paint.length != this.Index.length) return false;
3645
-
3646
- paint[0].Data.Data = this.Data;
3647
- paint[0].NotSupportMessage = null;
3648
-
3649
- var MA = HQIndexFormula.MA(this.Data, this.Index[0].Param);
3650
- paint[1].Data.Data = MA;
3651
-
3652
- var MA2 = HQIndexFormula.MA(this.Data, this.Index[1].Param);
3653
- paint[2].Data.Data = MA2;
3654
-
3655
- var titleIndex = windowIndex + 1;
3656
-
3657
- for (var i in paint)
3658
- {
3659
- var name = ""; //显示的名字特殊处理
3660
- if (i == 0)
3661
- name = hqChart.Name + this.Index[i].Name;
3662
- else
3663
- name = "MA" + this.Index[i - 1].Param;
3664
-
3665
- hqChart.TitlePaint[titleIndex].Data[i] = new DynamicTitleData(paint[i].Data, name, this.Index[i].LineColor);
3666
- hqChart.TitlePaint[titleIndex].Data[i].StringFormat = STRING_FORMAT_TYPE.DEFAULT;
3667
- hqChart.TitlePaint[titleIndex].Data[i].FloatPrecision = 2;
3668
- }
3669
-
3670
- hqChart.TitlePaint[titleIndex].Title = this.FormatIndexTitle();
3671
-
3672
- return true;
3673
- }
3674
-
3675
- }
3676
-
3677
- //自定义指数热度
3678
- function CustonIndexHeatIndex()
3679
- {
3680
- this.newMethod = BaseIndex; //派生
3681
- this.newMethod('Market-Heat');
3682
- delete this.newMethod;
3683
-
3684
- this.Index = new Array(
3685
- new IndexInfo('区域', 3),
3686
- new IndexInfo("热度指数", 10),
3687
- new IndexInfo('MA', 5),
3688
- new IndexInfo('MA', 10)
3689
- );
3690
-
3691
- this.Data; //热度数据
3692
-
3693
- this.ApiUrl = g_JSChartResource.Index.CustomIndexHeatApiUrl;
3694
-
3695
- this.Index[1].LineColor = g_JSChartResource.Index.LineColor[1];
3696
- this.Index[2].LineColor = g_JSChartResource.Index.LineColor[2];
3697
- this.Index[3].LineColor = g_JSChartResource.Index.LineColor[3];
3698
-
3699
- this.Create = function (hqChart, windowIndex)
3700
- {
3701
- for (var i in this.Index)
3702
- {
3703
- var paint = null;
3704
- if (i == 0)
3705
- {
3706
- paint = new ChartStraightArea();
3707
- }
3708
- else
3709
- {
3710
- paint = new ChartLine();
3711
- paint.Color = this.Index[i].LineColor;
3712
- }
3713
-
3714
- paint.Canvas = hqChart.Canvas;
3715
- paint.Name = this.Name + "-" + i.toString();
3716
- paint.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
3717
- paint.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
3718
-
3719
- hqChart.ChartPaint.push(paint);
3720
- }
3721
- }
3722
-
3723
- //请求数据
3724
- this.RequestData = function (hqChart, windowIndex, hisData)
3725
- {
3726
- var self = this;
3727
- var param =
3728
- {
3729
- HQChart: hqChart,
3730
- WindowIndex: windowIndex,
3731
- HistoryData: hisData
3732
- };
3733
-
3734
- this.Data = [];
3735
-
3736
- if (param.HQChart.Period > 0) //周期数据
3737
- {
3738
- this.NotSupport(param.HQChart, param.WindowIndex, "不支持周期切换");
3739
- param.HQChart.Draw();
3740
- return false;
3741
- }
3742
-
3743
- //请求数据
3744
- JSNetwork.HttpRequest({
3745
- url: this.ApiUrl,
3746
- data:
3747
- {
3748
- "stock": param.HQChart.CustomStock,
3749
- "date": { "startdate": param.HQChart.QueryDate.Start, "enddate": param.HQChart.QueryDate.End },
3750
- "day": [this.Index[0].Param, this.Index[1].Param],
3751
- },
3752
- method: 'POST',
3753
- dataType: "json",
3754
- success: function (recvData) {
3755
- self.RecvData(recvData, param);
3756
- }
3757
- });
3758
-
3759
- return true;
3760
- }
3761
-
3762
- this.RecvData = function (recvData, param)
3763
- {
3764
- let data = recvData.data;
3765
- if (data.data == null || data.data.length < 0) return;
3766
-
3767
- //JSConsole.Chart.Log(recvData.data);
3768
- let aryData = new Array();
3769
- for (let i in data.data)
3770
- {
3771
- let item = data.data[i];
3772
- let indexData = new SingleData();
3773
- indexData.Date = item[0];
3774
- indexData.Value = item[1];
3775
- aryData.push(indexData);
3776
- }
3777
-
3778
- var aryFittingData = param.HistoryData.GetFittingData(aryData);
3779
-
3780
- var bindData = new ChartData();
3781
- bindData.Data = aryFittingData;
3782
- bindData.Period = param.HQChart.Period; //周期
3783
- bindData.Right = param.HQChart.Right; //复权
3784
-
3785
- this.Data = bindData.GetValue();
3786
- this.BindData(param.HQChart, param.WindowIndex, param.HistoryData);
3787
-
3788
- param.HQChart.UpdataDataoffset(); //更新数据偏移
3789
- param.HQChart.UpdateFrameMaxMin(); //调整坐标最大 最小值
3790
- param.HQChart.Draw();
3791
- }
3792
-
3793
-
3794
- this.BindData = function (hqChart, windowIndex, hisData)
3795
- {
3796
- let paint = hqChart.GetChartPaint(windowIndex);
3797
-
3798
- if (paint.length != this.Index.length) return false;
3799
-
3800
- paint[0].NotSupportMessage = null;
3801
-
3802
- paint[0].Data.Data =
3803
- [
3804
- { Value: 0, Value2: 0.2, Color: 'rgb(46,139,87)', Title: '较差区', TitleColor: 'rgb(245,255 ,250)' },
3805
- { Value: 0.19, Value2: 0.4, Color: 'rgb(255,140,0)', Title: '变热区', TitleColor: 'rgb(245,255 ,250)' },
3806
- { Value: 0.39, Value2: 0.8, Color: 'rgb(255,106,106)', Title: '较好区', TitleColor: 'rgb(245,255 ,250)' },
3807
- { Value: 0.79, Value2: 1, Color: 'rgb(255,69,0)', Title: '过热区', TitleColor: 'rgb(245,255 ,250)' }
3808
- ];
3809
-
3810
- paint[1].Data.Data = this.Data;
3811
-
3812
- let MA = HQIndexFormula.MA(this.Data, this.Index[2].Param);
3813
- paint[2].Data.Data = MA;
3814
-
3815
- let MA2 = HQIndexFormula.MA(this.Data, this.Index[3].Param);
3816
- paint[3].Data.Data = MA2;
3817
-
3818
- //指定框架最大最小[0,1]
3819
- hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin = { Max: 1, Min: 0, Count: 3 };
3820
-
3821
- let titleIndex = windowIndex + 1;
3822
-
3823
- for (let i = 1; i < paint.length; ++i)
3824
- {
3825
- let name = this.Index[i].Name; //显示的名字特殊处理
3826
- if (name == 'MA') name = "MA" + this.Index[i].Param;
3827
-
3828
- hqChart.TitlePaint[titleIndex].Data[i] = new DynamicTitleData(paint[i].Data, name, this.Index[i].LineColor);
3829
- hqChart.TitlePaint[titleIndex].Data[i].StringFormat = STRING_FORMAT_TYPE.DEFAULT;
3830
- hqChart.TitlePaint[titleIndex].Data[i].FloatPrecision = 2;
3831
- }
3832
- hqChart.TitlePaint[titleIndex].Title = '热度' + '(' + this.Index[0].Param + ',' + this.Index[1].Param + ',' + this.Index[2].Param + ',' + this.Index[3].Param + ')';
3833
-
3834
- return true;
3835
- }
3836
- }
3837
-
3838
- /*
3839
- 本福特系数(财务粉饰)
3840
- */
3841
- function BenfordIndex()
3842
- {
3843
- this.newMethod = BaseIndex; //派生
3844
- this.newMethod('财务风险');
3845
- delete this.newMethod;
3846
-
3847
- this.Index = new Array(
3848
- new IndexInfo('区域', null),
3849
- new IndexInfo("系数", null),
3850
- );
3851
-
3852
- this.Data; //财务数据
3853
-
3854
- this.ApiUrl = g_JSChartResource.Index.StockHistoryDayApiUrl;
3855
-
3856
- this.Index[0].LineColor = g_JSChartResource.Index.LineColor[0];
3857
- this.Index[1].LineColor = 'rgb(105,105,105)';
3858
-
3859
- this.Create = function (hqChart, windowIndex)
3860
- {
3861
- for (var i in this.Index)
3862
- {
3863
- var paint = null;
3864
- if (i == 0)
3865
- paint = new ChartStraightArea();
3866
- else if (i == 1)
3867
- paint = new ChartLineMultiData();
3868
-
3869
- if (paint)
3870
- {
3871
- paint.Color = this.Index[i].LineColor;
3872
- paint.Canvas = hqChart.Canvas;
3873
- paint.Name = this.Name + "-" + i.toString();
3874
- paint.ChartBorder = hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
3875
- paint.ChartFrame = hqChart.Frame.SubFrame[windowIndex].Frame;
3876
-
3877
- hqChart.ChartPaint.push(paint);
3878
- }
3879
- }
3880
- }
3881
-
3882
- //请求数据
3883
- this.RequestData = function (hqChart, windowIndex, hisData)
3884
- {
3885
- var self = this;
3886
- var param =
3887
- {
3888
- HQChart: hqChart,
3889
- WindowIndex: windowIndex,
3890
- HistoryData: hisData
3891
- };
3892
-
3893
- this.Data = [];
3894
-
3895
- if (param.HQChart.Period != 2) //周期数据
3896
- {
3897
- this.NotSupport(param.HQChart, param.WindowIndex, "只支持月线");
3898
- param.HQChart.Draw();
3899
- return false;
3900
- }
3901
-
3902
- var aryField = ["finance.benford", "announcement2.quarter", "announcement1.quarter", "announcement3.quarter", "announcement4.quarter"];
3903
- var aryCondition =
3904
- [
3905
- { item: ["date", "int32", "gte", "20130101"] },
3906
- {
3907
- item: ["announcement1.year", "int32", "gte", 0,
3908
- "announcement2.year", "int32", "gte", 0,
3909
- "announcement3.year", "int32", "gte", 0,
3910
- "announcement4.year", "int32", "gte", 0,
3911
- "or"]
3912
- }
3913
- ];
3914
- //请求数据
3915
- JSNetwork.HttpRequest({
3916
- url: this.ApiUrl,
3917
- data:
3918
- {
3919
- "symbol": [param.HQChart.Symbol],
3920
- "field": aryField,
3921
- "condition": aryCondition
3922
- },
3923
- method: 'POST',
3924
- dataType: "json",
3925
- success: function (recvData) {
3926
- self.RecvData(recvData, param);
3927
- }
3928
- });
3929
-
3930
- return true;
3931
- }
3932
-
3933
- this.JsonDataToMapSingleData = function (recvData)
3934
- {
3935
- var stockData = recvData.stock[0].stockday;
3936
- var mapData = new Map();
3937
- for (var i in stockData)
3938
- {
3939
- var item = stockData[i];
3940
- var indexData = new SingleData();
3941
- indexData.Date = item.date;
3942
- indexData.Value = new Array();
3943
- if (item.finance1 != null && item.announcement1 != null)
3944
- {
3945
- let year = item.announcement1.year;
3946
- let quarter = item.announcement1.quarter;
3947
- let value = item.finance1.benford;
3948
- indexData.Value.push({ Year: year, Quarter: quarter, Value: value });
3949
- }
3950
- if (item.finance2 != null && item.announcement2 != null)
3951
- {
3952
- let year = item.announcement2.year;
3953
- let quarter = item.announcement2.quarter;
3954
- let value = item.finance2.benford;
3955
- indexData.Value.push({ Year: year, Quarter: quarter, Value: value });
3956
- }
3957
- if (item.finance3 != null && item.announcement3 != null)
3958
- {
3959
- let year = item.announcement3.year;
3960
- let quarter = item.announcement3.quarter;
3961
- let value = item.finance3.benford;
3962
- indexData.Value.push({ Year: year, Quarter: quarter, Value: value });
3963
- }
3964
- if (item.finance4 != null && item.announcement4 != null)
3965
- {
3966
- let year = item.announcement4.year;
3967
- let quarter = item.announcement4.quarter;
3968
- let value = item.finance4.benford;
3969
- indexData.Value.push({ Year: year, Quarter: quarter, Value: value });
3970
- }
3971
-
3972
- mapData.set(indexData.Date, indexData);
3973
- }
3974
-
3975
- var aryData = new Array();
3976
- for (var item of mapData)
3977
- {
3978
- aryData.push(item[1]);
3979
- }
3980
-
3981
- return aryData;
3982
- }
3983
-
3984
- this.RecvData = function (recvData, param)
3985
- {
3986
- JSConsole.Chart.Log(recvData);
3987
- if (recvData.data.stock == null || recvData.data.stock.length <= 0) return;
3988
-
3989
- var aryData = this.JsonDataToMapSingleData(recvData.data);
3990
- var aryFittingData = param.HistoryData.GetFittingMonthData(aryData);
3991
-
3992
- var bindData = new ChartData();
3993
- bindData.Data = aryFittingData;
3994
- bindData.Period = param.HQChart.Period; //周期
3995
- bindData.Right = param.HQChart.Right; //复权
3996
-
3997
- this.Data = bindData.GetValue();
3998
- this.BindData(param.HQChart, param.WindowIndex, param.HistoryData);
3999
-
4000
- param.HQChart.UpdataDataoffset(); //更新数据偏移
4001
- param.HQChart.UpdateFrameMaxMin(); //调整坐标最大 最小值
4002
- param.HQChart.Draw();
4003
- }
4004
-
4005
-
4006
- this.BindData = function (hqChart, windowIndex, hisData)
4007
- {
4008
- var paint = hqChart.GetChartPaint(windowIndex);
4009
-
4010
- if (paint.length != this.Index.length) return false;
4011
-
4012
- paint[0].NotSupportMessage = null;
4013
-
4014
- paint[0].Data.Data =
4015
- [
4016
- // { Value: 0, Value2: 0.2, Color: 'rgb(50,205,50)', Title: '安全区', TitleColor: 'rgb(245,255 ,250)' },
4017
- // { Value: 0.2, Value2: 0.4, Color: 'rgb(255,140,0)', Title: '预警区', TitleColor: 'rgb(245,255 ,250)' },
4018
- // { Value: 0.4, Value2: 1, Color: 'rgb(255,106,106)', Title: '警示区', TitleColor: 'rgb(245,255 ,250)' }
4019
- { Value: 0, Value2: 0.2, Color: 'rgb(219,255,193)', Title: '安全区', TitleColor: 'rgb(66,192,99)' },
4020
- { Value: 0.2, Value2: 0.4, Color: 'rgb(255,228,170)', Title: '预警区', TitleColor: 'rgb(255,124,3)' },
4021
- { Value: 0.4, Value2: 1, Color: 'rgb(254,219,212)', Title: '警示区', TitleColor: 'rgb(255,0,0)' }
4022
- ];
4023
-
4024
- paint[1].Data.Data = this.Data;
4025
-
4026
- //指定框架最大最小[0,1]
4027
- hqChart.Frame.SubFrame[windowIndex].Frame.YSpecificMaxMin = { Max: 1, Min: 0, Count: 3 };
4028
- hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale = [0.2,0.4];
4029
-
4030
- var titleIndex = windowIndex + 1;
4031
-
4032
- hqChart.TitlePaint[titleIndex].Data[1] = new DynamicTitleData(paint[1].Data, this.Index[1].Name, this.Index[1].LineColor);
4033
- hqChart.TitlePaint[titleIndex].Data[1].DataType = "MultiReport";
4034
-
4035
- hqChart.TitlePaint[titleIndex].Title = this.FormatIndexTitle();
4036
-
4037
- return true;
4038
- }
4039
- }
4040
-
4041
- export
4042
- {
4043
- IndexInfo,
4044
- BaseIndex,
4045
- ScriptIndex,
4046
- APIScriptIndex,
4047
- OverlayScriptIndex,
4048
-
4049
- MarketLongShortIndex,
4050
- MarketTimingIndex,
4051
- MarketAttentionIndex,
4052
- MarketHeatIndex,
4053
- CustonIndexHeatIndex,
4054
- BenfordIndex,
4055
- }
4056
-
4057
- /*
4058
- module.exports =
4059
- {
4060
- JSCommonIndex:
4061
- {
4062
- IndexInfo: IndexInfo,
4063
- BaseIndex: BaseIndex,
4064
- ScriptIndex:ScriptIndex,
4065
- APIScriptIndex:APIScriptIndex,
4066
- },
4067
-
4068
- //单个类导出
4069
- JSCommonIndex_IndexInfo: IndexInfo,
4070
- JSCommonIndex_BaseIndex: BaseIndex,
4071
- JSCommonIndex_ScriptIndex:ScriptIndex,
4072
- JSCommonIndex_APIScriptIndex:APIScriptIndex,
4073
- };
4074
- */