umychart.coordinatedata.wechat.js 84 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443
  1. /*
  2. copyright (c) 2018 jones
  3. http://www.apache.org/licenses/LICENSE-2.0
  4. 开源项目 https://github.com/jones2000/HQChart
  5. jones_2000@163.com
  6. 各个品种分钟走势图坐标信息
  7. */
  8. function GetLocalTime(i) //得到标准时区的时间的函数
  9. {
  10. if (typeof i !== 'number') return;
  11. var d = new Date();
  12. //得到1970年一月一日到现在的秒数
  13. var len = d.getTime();
  14. //本地时间与GMT时间的时间偏移差
  15. var offset = d.getTimezoneOffset() * 60000;
  16. //得到现在的格林尼治时间
  17. var utcTime = len + offset;
  18. return new Date(utcTime + 3600000 * i);
  19. }
  20. var MARKET_SUFFIX_NAME=
  21. {
  22. SH:'.SH',
  23. SZ:'.SZ',
  24. SHSZ_C_Index:'.CI', //自定义指数
  25. SHO:'.SHO', //上海交易所 股票期权
  26. HK:'.HK',
  27. FHK: '.FHK', //港股期货
  28. SHFE: '.SHF', //上期所 (Shanghai Futures Exchange)
  29. SHFE2: '.SHFE', //上期所 (Shanghai Futures Exchange)
  30. CFFEX: '.CFE', //中期所 (China Financial Futures Exchange)
  31. DCE: '.DCE', //大连商品交易所(Dalian Commodity Exchange)
  32. CZCE: '.CZC', //郑州期货交易所
  33. USA: '.USA', //美股
  34. FTSE: '.FTSE', //富时中国
  35. BIT: '.BIT', //数字货币 如比特币
  36. BIZ: '.BIZ', //数字货币
  37. NYMEX: '.NYMEX', //纽约商品期货交易所(New York Mercantile Exchange)
  38. COMEX: ".COMEX", //纽约商品期货交易所(New York Mercantile Exchange)
  39. NYBOT: ".NYBOT", //美國紐約商品交易所
  40. CBOT: ".CBOT", //芝商所
  41. LME: ".LME", //伦敦金属交易所
  42. ET: '.ET', //其他未知的品种
  43. IsET: function (upperSymbol)
  44. {
  45. if (!upperSymbol) return false;
  46. return upperSymbol.indexOf(this.ET) > 0;
  47. },
  48. IsETShowAvPrice: function (upperSymbol) //是否显示均价
  49. {
  50. return false;
  51. },
  52. IsNYMEX: function (upperSymbol)
  53. {
  54. if (!upperSymbol) return false;
  55. return upperSymbol.indexOf(this.NYMEX) > 0;
  56. },
  57. IsCOMEX: function (upperSymbol)
  58. {
  59. if (!upperSymbol) return false;
  60. return upperSymbol.indexOf(this.COMEX) > 0;
  61. },
  62. IsNYBOT: function (upperSymbol)
  63. {
  64. if (!upperSymbol) return false;
  65. return upperSymbol.indexOf(this.NYBOT) > 0;
  66. },
  67. IsCBOT: function (upperSymbol)
  68. {
  69. if (!upperSymbol) return false;
  70. return upperSymbol.indexOf(this.CBOT) > 0;
  71. },
  72. IsLME: function (upperSymbol)
  73. {
  74. if (!upperSymbol) return false;
  75. return upperSymbol.indexOf(this.LME) > 0;
  76. },
  77. IsFTSE: function (upperSymbol)
  78. {
  79. if (!upperSymbol) return false;
  80. return upperSymbol.indexOf(this.FTSE) > 0;
  81. },
  82. IsFHK: function (upperSymbol)
  83. {
  84. if (!upperSymbol) return false;
  85. return upperSymbol.indexOf(this.FHK) > 0;
  86. },
  87. IsBIT: function (upperSymbol)
  88. {
  89. if (!upperSymbol) return false;
  90. if (upperSymbol.indexOf(this.BIT) > 0) return true;
  91. if (upperSymbol.indexOf(this.BIZ) > 0) return true;
  92. return false;
  93. },
  94. IsUSA: function (upperSymbol) //是否是美股
  95. {
  96. if (!upperSymbol) return false;
  97. return upperSymbol.indexOf(this.USA) > 0;
  98. },
  99. IsSH: function (upperSymbol)
  100. {
  101. //需要精确匹配最后3位
  102. var pos = upperSymbol.length-this.SH.length;
  103. var find = upperSymbol.indexOf(this.SH);
  104. return find == pos;
  105. },
  106. IsSZ: function (upperSymbol)
  107. {
  108. var pos = upperSymbol.length - this.SZ.length;
  109. var find = upperSymbol.indexOf(this.SZ);
  110. return find == pos;
  111. },
  112. //自定义指数
  113. IsSHSZCustomIndex:function(upperSymbol)
  114. {
  115. var pos = upperSymbol.length - this.SHSZ_C_Index.length;
  116. var find = upperSymbol.indexOf(this.SHSZ_C_Index);
  117. return find == pos;
  118. },
  119. IsSHO: function (upperSymbol)
  120. {
  121. var pos = upperSymbol.length - this.SHO.length;
  122. var find = upperSymbol.indexOf(this.SHO);
  123. return find == pos;
  124. },
  125. IsHK: function (upperSymbol)
  126. {
  127. var pos = upperSymbol.length - this.HK.length;
  128. var find = upperSymbol.indexOf(this.HK);
  129. return find == pos;
  130. },
  131. IsSHFE: function (upperSymbol)
  132. {
  133. if (!upperSymbol) return false;
  134. if (upperSymbol.indexOf(this.SHFE) > 0) return true;
  135. if (upperSymbol.indexOf(this.SHFE2) > 0) return true;
  136. return false;
  137. },
  138. IsCFFEX: function (upperSymbol)
  139. {
  140. if (!upperSymbol) return false;
  141. return upperSymbol.indexOf(this.CFFEX) > 0;
  142. },
  143. IsDCE: function (upperSymbol)
  144. {
  145. if (!upperSymbol) return false;
  146. return upperSymbol.indexOf(this.DCE) > 0;
  147. },
  148. IsCZCE: function (upperSymbol)
  149. {
  150. if (!upperSymbol) return false;
  151. return upperSymbol.indexOf(this.CZCE) > 0;
  152. },
  153. IsChinaFutures: function (upperSymbol) //是否是国内期货
  154. {
  155. return this.IsCFFEX(upperSymbol) || this.IsCZCE(upperSymbol) || this.IsDCE(upperSymbol) || this.IsSHFE(upperSymbol);
  156. },
  157. IsFutures: function (upperSymbol) //是否是期货 包含国外的
  158. {
  159. return this.IsChinaFutures(upperSymbol) ||
  160. this.IsNYMEX(upperSymbol) || this.IsCOMEX(upperSymbol) || this.IsNYBOT(upperSymbol) || this.IsCBOT(upperSymbol) ||
  161. this.IsLME(upperSymbol);
  162. },
  163. IsSHSZ: function (upperSymbol) //是否是沪深的股票
  164. {
  165. return this.IsSZ(upperSymbol) || this.IsSH(upperSymbol) || this.IsSHSZCustomIndex(upperSymbol);
  166. },
  167. IsSHSZFund: function (upperSymbol) //是否是交易所基金
  168. {
  169. if (!upperSymbol) return false;
  170. if (this.IsSH(upperSymbol)) //51XXXX.SH
  171. {
  172. if (upperSymbol.charAt(0) == '5' && upperSymbol.charAt(1) == '1') return true;
  173. }
  174. else if (this.IsSZ(upperSymbol)) //15XXXX.sz, 16XXXX.sz, 17XXXX.sz, 18XXXX.sz
  175. {
  176. if (upperSymbol.charAt(0) == '1' &&
  177. (upperSymbol.charAt(1) == '5' || upperSymbol.charAt(1) == '6' || upperSymbol.charAt(1) == '7' || upperSymbol.charAt(1) == '8')) return true;
  178. }
  179. return false;
  180. },
  181. IsSHSZIndex: function (symbol) //是否是沪深指数代码
  182. {
  183. if (!symbol) return false;
  184. var upperSymbol = symbol.toUpperCase();
  185. if (this.IsSH(upperSymbol))
  186. {
  187. var temp = upperSymbol.replace('.SH', '');
  188. if (upperSymbol.charAt(0) == '0' && parseInt(temp) <= 3000) return true;
  189. }
  190. else if (this.IsSZ(upperSymbol))
  191. {
  192. if (upperSymbol.charAt(0) == '3' && upperSymbol.charAt(1) == '9') return true;
  193. }
  194. else if (this.IsSHSZCustomIndex(upperSymbol)) //自定义指数
  195. {
  196. return true;
  197. }
  198. return false;
  199. },
  200. IsSHSZStockA: function (symbol) //是否是沪深A股
  201. {
  202. if (!symbol) return false;
  203. var upperSymbol = symbol.toUpperCase();
  204. if (this.IsSH(upperSymbol))
  205. {
  206. var temp = upperSymbol.replace('.SH', '');
  207. if (upperSymbol.charAt(0) == '6') return true;
  208. }
  209. else if (this.IsSZ(upperSymbol))
  210. {
  211. if (upperSymbol.charAt(0) == '0')
  212. {
  213. if (upperSymbol.charAt(1) == '0' && upperSymbol.charAt(2) == '2') return true; //002 中小板
  214. if (upperSymbol.charAt(1) != '7' && upperSymbol.charAt(1) != '8') return true;
  215. }
  216. }
  217. return false;
  218. },
  219. IsSHStockSTAR: function (symbol) // 是否是科创板 Sci-Tech innovAtion boaRd (STAR Market)
  220. {
  221. if (!symbol) return false;
  222. var upperSymbol = symbol.toUpperCase();
  223. if (!this.IsSH(upperSymbol)) return false;
  224. if (upperSymbol.charAt(0) == '6' && upperSymbol.charAt(1) == '8' && upperSymbol.charAt(2) == '8')
  225. return true;
  226. return false;
  227. },
  228. GetMarketStatus: function (symbol) //获取市场状态 0=闭市 1=盘前 2=盘中 3=盘后
  229. {
  230. if (!symbol) return 0;
  231. var upperSymbol = symbol.toUpperCase();
  232. var nowDate = new Date();
  233. var day = nowDate.getDay();
  234. var time = nowDate.getHours() * 100 + nowDate.getMinutes();
  235. if (this.IsUSA(upperSymbol))
  236. {
  237. var usaDate = GetLocalTime(-4);
  238. var day = usaDate.getDay();
  239. var time = usaDate.getHours() * 100 + usaDate.getMinutes();
  240. if (day == 6 || day == 0) return 0; //周末
  241. //9:30 - 16:00 考虑夏令时间时间增加1小时 9:30 - 17:00
  242. if (time > 1730) return 3;
  243. if (time < 930) return 1;
  244. return 2;
  245. }
  246. else if (this.IsBIT(upperSymbol)) //数字货币24小时
  247. {
  248. return 2;
  249. }
  250. else if (this.IsFTSE(upperSymbol)) //富时中国 9:00-16:30 17:00-04:45
  251. {
  252. if (day == 6 || day == 0) return 0; //周末
  253. if (time >= 830 && time <= 2359) return 2;
  254. if (time >= 0 && time <= 500) return 2;
  255. return 0;
  256. }
  257. else if (this.IsFHK(upperSymbol)) //港股指数期货 9:15-12:00 13:00-16:30 17:15-01:00
  258. {
  259. if (day == 6 || day == 0) return 0; //周末
  260. if (time >= 900 && time <= 2359) return 2;
  261. if (time >= 0 && time <= 120) return 2;
  262. return 0;
  263. }
  264. else if (this.IsET(upperSymbol))
  265. {
  266. return this.GetETMarketStatus(symbol);
  267. }
  268. else if (this.IsHK(upperSymbol)) //港股
  269. {
  270. if (day == 6 || day == 0) return 0; //周末
  271. if (time > 1630) return 3;
  272. if (time < 925) return 1;
  273. return 2;
  274. }
  275. else if (this.IsNYMEX(upperSymbol))
  276. {
  277. return this.GetNYMEXMarketStatus(upperSymbol);
  278. }
  279. else if (this.IsCOMEX(upperSymbol))
  280. {
  281. return this.GetCOMEXMarketStatus(upperSymbol);
  282. }
  283. else if (this.IsNYBOT(upperSymbol))
  284. {
  285. return this.GetNYBOTMarketStatus(upperSymbol);
  286. }
  287. else if (this.IsCBOT(upperSymbol))
  288. {
  289. return this.GetCBOTMarketStatus(upperSymbol);
  290. }
  291. else if (this.IsChinaFutures(upperSymbol)) //国内期货
  292. {
  293. if(day == 6 || day== 0) return 0; //周末
  294. //21:00-2:30
  295. if(time>=2100) return 2;
  296. if (time<=240) return 2;
  297. //8:55-11:30, 13:00-15:00
  298. if(time>=830 && time<=1510) return 2;
  299. return 1;
  300. }
  301. else //9:30 - 15:40
  302. {
  303. if (day == 6 || day == 0) return 0; //周末
  304. if (time > 1540) return 3;
  305. if (time < 925) return 1;
  306. return 2;
  307. }
  308. },
  309. GetDefaultDecimal:function(symbol)
  310. {
  311. return 2;
  312. },
  313. GetFHKDecimal: function (symbol) //港股指数期货 小数位数
  314. {
  315. return 0;
  316. },
  317. GetFTSEDecimal: function (symbol) //富时中国A50期货 小数位数
  318. {
  319. return 0;
  320. },
  321. GetBITDecimal: function (symbol)
  322. {
  323. return 2;
  324. },
  325. GetETDecimal: function (symbol)
  326. {
  327. return 2;
  328. },
  329. GetSHODecimal: function (symbol)
  330. {
  331. return 4;
  332. },
  333. GetNYMEXDecimal: function (symbol) //纽约期货交易所
  334. {
  335. return g_NYMEXTimeData.GetDecimal(symbol);
  336. },
  337. GetCOMEXDecimal:function(symbol)
  338. {
  339. return g_COMEXTimeData.GetDecimal(symbol);
  340. },
  341. GetNYBOTDecimal:function(symbol)
  342. {
  343. return g_NYBOTTimeData.GetDecimal(symbol);
  344. },
  345. GetCBOTDecimal:function(symbol)
  346. {
  347. return g_CBOTTimeData.GetDecimal(symbol);
  348. },
  349. GetLMEDecimal:function(symbol)
  350. {
  351. return g_LMETimeData.GetDecimal(symbol);
  352. },
  353. GetETMarketStatus: function (symbol)
  354. {
  355. // 0=闭市 1=盘前 2=盘中 3=盘后
  356. return 2;
  357. },
  358. GetCOMEXMarketStatus:function(symbol)
  359. {
  360. return g_COMEXTimeData.GetMarketStatus(symbol);
  361. },
  362. GetNYBOTMarketStatus:function(symbol)
  363. {
  364. return g_NYBOTTimeData.GetMarketStatus(symbol);
  365. },
  366. GetCBOTMarketStatus:function(symbol)
  367. {
  368. return g_CBOTTimeData.GetMarketStatus(symbol);
  369. },
  370. GetNYMEXMarketStatus: function (symbol)
  371. {
  372. return g_NYMEXTimeData.GetMarketStatus(symbol);
  373. },
  374. GetLimitPriceRange:function(symbol, name) //涨停范围
  375. {
  376. if (!this.IsSHSZStockA(symbol)) return null;
  377. if (this.IsSHStockSTAR(symbol)) return {Max:0.2 , Min:-0.2}; //科创板 [20%- -20%]
  378. if (!name) return null;
  379. if (name.indexOf('ST')>=0) return { Max:0.05, Min:-0.05 }; //ST 股票 [5% - -5%]
  380. return {Max:0.1 , Min:-0.1}; //[10% - -10%]
  381. },
  382. }
  383. //走势图分钟数据对应的时间
  384. function MinuteTimeStringData()
  385. {
  386. this.SHSZ = null; //上海深证交易所时间
  387. this.HK = null; //香港交易所时间
  388. this.Futures=new Map(); //期货交易时间 key=时间名称 Value=数据
  389. this.USA = null; //美股交易时间
  390. this.FTSE = null; //富时中国
  391. this.FHK = null; //港股指数期货
  392. this.BIT=null; //数字货币
  393. this.Initialize = function () //初始化 默认只初始化沪深的 其他市场动态生成
  394. {
  395. //this.SHSZ = this.CreateSHSZData();
  396. //this.HK = this.CreateHKData();
  397. }
  398. this.GetET = function (upperSymbol) //当天所有的分钟
  399. {
  400. throw { Name: 'MinuteTimeStringData::GetET', Error: 'not implement' };
  401. }
  402. this.GetSHSZ=function() //动态创建
  403. {
  404. if (!this.SHSZ) this.SHSZ=this.CreateSHSZData();
  405. return this.SHSZ;
  406. }
  407. this.GetSHO = function ()
  408. {
  409. if (!this.SHO) this.SHO = this.CreateSHOData();
  410. return this.SHO;
  411. }
  412. this.GetHK=function()
  413. {
  414. if (!this.HK) this.HK = this.CreateHKData();
  415. return this.HK;
  416. }
  417. this.GetFutures=function(splitData)
  418. {
  419. if (!this.Futures.has(splitData.Name))
  420. {
  421. var data = this.CreateTimeData(splitData.Data);
  422. this.Futures.set(splitData.Name,data);
  423. }
  424. return this.Futures.get(splitData.Name);
  425. }
  426. this.GetUSA=function()
  427. {
  428. if (!this.USA) this.USA=this.CreateUSAData();
  429. return this.USA;
  430. }
  431. this.GetFTSE = function ()
  432. {
  433. if (!this.FTSE) this.FTSE = this.CreateFTSEData();
  434. return this.FTSE;
  435. }
  436. this.GetFHK = function ()
  437. {
  438. if (!this.FHK) this.FHK = this.CreateFHKData();
  439. return this.FHK;
  440. }
  441. this.GetBIT=function(upperSymbol)
  442. {
  443. if (!this.BIT) this.BIT=this.CreateBITData();
  444. return this.BIT;
  445. }
  446. this.CreateSHSZData = function ()
  447. {
  448. const TIME_SPLIT =
  449. [
  450. { Start: 925, End: 925 },
  451. { Start: 930, End: 1130 },
  452. { Start: 1300, End: 1500 }
  453. ];
  454. return this.CreateTimeData(TIME_SPLIT);
  455. }
  456. this.CreateSHOData = function ()
  457. {
  458. const TIME_SPLIT =
  459. [
  460. { Start: 930, End: 1129 },
  461. { Start: 1300, End: 1500 }
  462. ];
  463. return this.CreateTimeData(TIME_SPLIT);
  464. }
  465. this.CreateHKData = function ()
  466. {
  467. const TIME_SPLIT =
  468. [
  469. { Start: 930, End: 1200 },
  470. { Start: 1300, End: 1600 }
  471. ];
  472. return this.CreateTimeData(TIME_SPLIT);
  473. }
  474. this.CreateUSAData=function()
  475. {
  476. //美国夏令时
  477. const TIME_SUMMER_SPLIT =
  478. [
  479. { Start: 2130, End: 2359 },
  480. { Start: 0, End: 400 }
  481. ];
  482. //非夏令时
  483. const TIME_SPLIT =
  484. [
  485. { Start: 2230, End: 2359 },
  486. { Start: 0, End: 500 }
  487. ];
  488. //使用美国本地时间
  489. const TIME_LOCAL_SPLIT =
  490. [
  491. { Start: 930, End: 1600 } //美国东部时间9:30到16:00
  492. ];
  493. return this.CreateTimeData(TIME_LOCAL_SPLIT);
  494. }
  495. this.CreateFTSEData = function ()
  496. {
  497. const TIME_SPLIT =
  498. [
  499. { Start: 1700, End: 2359 },
  500. { Start: 0, End: 445 },
  501. { Start: 900, End: 1630 }
  502. ];
  503. return this.CreateTimeData(TIME_SPLIT);
  504. }
  505. this.CreateFHKData = function ()
  506. {
  507. //港股指数期货 9:15-12:00 13:00-16:30 17:15-01:00
  508. const TIME_SPLIT =
  509. [
  510. { Start: 1715, End: 2359 },
  511. { Start: 0, End: 100 },
  512. { Start: 915, End: 1200 },
  513. { Start: 1300, End: 1630 },
  514. ];
  515. return this.CreateTimeData(TIME_SPLIT);
  516. }
  517. this.CreateBITData=function()
  518. {
  519. //数字货币 7:00 - 6:59
  520. const TIME_SPLIT=
  521. [
  522. { Start:600, End:2359 },
  523. { Start:0, End:559 },
  524. ];
  525. return this.CreateTimeData(TIME_SPLIT);
  526. }
  527. this.CreateTimeData = function (timeSplit)
  528. {
  529. var data = [];
  530. for (var i in timeSplit)
  531. {
  532. var item = timeSplit[i];
  533. for (var j = item.Start; j <= item.End; ++j)
  534. {
  535. if (j % 100 >= 60) continue; //大于60分钟的数据去掉
  536. data.push(j);
  537. }
  538. }
  539. return data;
  540. }
  541. this.GetTimeData = function (symbol)
  542. {
  543. if (!symbol) return this.SHSZ;
  544. var upperSymbol = symbol.toLocaleUpperCase(); //转成大写
  545. if (MARKET_SUFFIX_NAME.IsSH(upperSymbol) || MARKET_SUFFIX_NAME.IsSZ(upperSymbol) || MARKET_SUFFIX_NAME.IsSHSZIndex(upperSymbol)) return this.GetSHSZ();
  546. if (MARKET_SUFFIX_NAME.IsHK(upperSymbol)) return this.GetHK();
  547. if (MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol) || MARKET_SUFFIX_NAME.IsCZCE(upperSymbol) || MARKET_SUFFIX_NAME.IsDCE(upperSymbol) || MARKET_SUFFIX_NAME.IsSHFE(upperSymbol))
  548. {
  549. var splitData = g_FuturesTimeData.GetSplitData(upperSymbol);
  550. if (!splitData) return null;
  551. return this.GetFutures(splitData);
  552. }
  553. if (MARKET_SUFFIX_NAME.IsFTSE(upperSymbol)) return this.GetFTSE();
  554. if (MARKET_SUFFIX_NAME.IsFHK(upperSymbol)) return this.GetFHK();
  555. if (MARKET_SUFFIX_NAME.IsET(upperSymbol)) return this.GetET(upperSymbol);
  556. if (MARKET_SUFFIX_NAME.IsBIT(upperSymbol)) return this.GetBIT(upperSymbol);
  557. if (MARKET_SUFFIX_NAME.IsNYMEX(upperSymbol)) //纽约期货交易所
  558. {
  559. var splitData = g_NYMEXTimeData.GetSplitData(upperSymbol);
  560. if (!splitData) return null;
  561. return this.GetFutures(splitData);
  562. }
  563. if (MARKET_SUFFIX_NAME.IsCOMEX(upperSymbol)) //纽约期货交易所
  564. {
  565. var splitData = g_COMEXTimeData.GetSplitData(upperSymbol);
  566. if (!splitData) return null;
  567. return this.GetFutures(splitData);
  568. }
  569. if (MARKET_SUFFIX_NAME.IsNYBOT(upperSymbol)) //纽约期货交易所
  570. {
  571. var splitData = g_NYBOTTimeData.GetSplitData(upperSymbol);
  572. if (!splitData) return null;
  573. return this.GetFutures(splitData);
  574. }
  575. if (MARKET_SUFFIX_NAME.IsCBOT(upperSymbol)) //芝商所
  576. {
  577. var splitData = g_CBOTTimeData.GetSplitData(upperSymbol);
  578. if (!splitData) return null;
  579. return this.GetFutures(splitData);
  580. }
  581. if (MARKET_SUFFIX_NAME.IsLME(upperSymbol)) //伦敦LME
  582. {
  583. var splitData = g_LMETimeData.GetSplitData(upperSymbol);
  584. if (!splitData) return null;
  585. return this.GetFutures(splitData);
  586. }
  587. }
  588. }
  589. //走势图刻度分钟线
  590. function MinuteCoordinateData()
  591. {
  592. //沪深走势图时间刻度
  593. const SHZE_MINUTE_X_COORDINATE =
  594. {
  595. Full: //完整模式
  596. [
  597. [0, 0, "rgb(200,200,200)", "09:30"],
  598. [31, 0, "RGB(200,200,200)", "10:00"],
  599. [61, 0, "RGB(200,200,200)", "10:30"],
  600. [91, 0, "RGB(200,200,200)", "11:00"],
  601. [122, 1, "RGB(200,200,200)", "13:00"],
  602. [152, 0, "RGB(200,200,200)", "13:30"],
  603. [182, 0, "RGB(200,200,200)", "14:00"],
  604. [212, 0, "RGB(200,200,200)", "14:30"],
  605. [242, 1, "RGB(200,200,200)", "15:00"], // 15:00
  606. ],
  607. Simple: //简洁模式
  608. [
  609. [0, 0, "rgb(200,200,200)", "09:30"],
  610. [61, 0, "RGB(200,200,200)", "10:30"],
  611. [122, 1, "RGB(200,200,200)", "13:00"],
  612. [182, 0, "RGB(200,200,200)", "14:00"],
  613. [242, 1, "RGB(200,200,200)", "15:00"]
  614. ],
  615. Min: //最小模式
  616. [
  617. [0, 0, "rgb(200,200,200)", "09:30"],
  618. [122, 1, "RGB(200,200,200)", "13:00"],
  619. [242, 1, "RGB(200,200,200)", "15:00"]
  620. ],
  621. Count: 243,
  622. MiddleCount: 122,
  623. GetData: function (width)
  624. {
  625. if (width < 200) return this.Min;
  626. else if (width < 400) return this.Simple;
  627. return this.Full;
  628. }
  629. };
  630. //上海股票期权时间刻度
  631. const SHO_MINUTE_X_COORDINATE =
  632. {
  633. Full: //完整模式
  634. [
  635. [0, 0, "rgb(200,200,200)", "09:30"],
  636. [30, 0, "RGB(200,200,200)", "10:00"],
  637. [60, 0, "RGB(200,200,200)", "10:30"],
  638. [90, 0, "RGB(200,200,200)", "11:00"],
  639. [120, 1, "RGB(200,200,200)", "13:00"],
  640. [150, 0, "RGB(200,200,200)", "13:30"],
  641. [180, 0, "RGB(200,200,200)", "14:00"],
  642. [210, 0, "RGB(200,200,200)", "14:30"],
  643. [240, 1, "RGB(200,200,200)", "15:00"], // 15:00
  644. ],
  645. Simple: //简洁模式
  646. [
  647. [0, 0, "rgb(200,200,200)", "09:30"],
  648. [60, 0, "RGB(200,200,200)", "10:30"],
  649. [120, 1, "RGB(200,200,200)", "13:00"],
  650. [180, 0, "RGB(200,200,200)", "14:00"],
  651. [240, 1, "RGB(200,200,200)", "15:00"]
  652. ],
  653. Min: //最小模式
  654. [
  655. [0, 0, "rgb(200,200,200)", "09:30"],
  656. [120, 1, "RGB(200,200,200)", "13:00"],
  657. [240, 1, "RGB(200,200,200)", "15:00"]
  658. ],
  659. Count: 241,
  660. MiddleCount: 120,
  661. GetData: function (width) {
  662. if (width < 200) return this.Min;
  663. else if (width < 400) return this.Simple;
  664. return this.Full;
  665. }
  666. };
  667. //港股走势图时间刻度
  668. const HK_MINUTE_X_COORDINATE =
  669. {
  670. Full: //完整模式
  671. [
  672. [0, 1, "RGB(200,200,200)", "09:30"],
  673. [30, 0, "RGB(200,200,200)", "10:00"],
  674. [60, 1, "RGB(200,200,200)", "10:30"],
  675. [90, 0, "RGB(200,200,200)", "11:00"],
  676. [120, 1, "RGB(200,200,200)", "11:30"],
  677. [151, 0, "RGB(200,200,200)", "13:00"],
  678. [181, 1, "RGB(200,200,200)", "13:30"],
  679. [211, 0, "RGB(200,200,200)", "14:00"],
  680. [241, 1, "RGB(200,200,200)", "14:30"],
  681. [271, 0, "RGB(200,200,200)", "15:00"],
  682. [301, 1, "RGB(200,200,200)", "15:30"],
  683. [331, 1, "RGB(200,200,200)", "16:00"]
  684. ],
  685. Simple: //简洁模式
  686. [
  687. [0, 1, "RGB(200,200,200)", "09:30"],
  688. [60, 1, "RGB(200,200,200)", "10:30"],
  689. [120, 1, "RGB(200,200,200)", "11:30"],
  690. [211, 0, "RGB(200,200,200)", "14:00"],
  691. [271, 0, "RGB(200,200,200)", "15:00"],
  692. [331, 1, "RGB(200,200,200)", "16:00"]
  693. ],
  694. Min: //最小模式
  695. [
  696. [0, 1, "RGB(200,200,200)", "09:30"],
  697. [151, 0, "RGB(200,200,200)", "13:00"],
  698. [331, 1, "RGB(200,200,200)", "16:00"]
  699. ],
  700. Count: 332,
  701. MiddleCount: 151,
  702. GetData: function (width)
  703. {
  704. if (width < 200) return this.Min;
  705. else if (width < 450) return this.Simple;
  706. return this.Full;
  707. }
  708. };
  709. //富时中国
  710. const FTSE_MINUTE_X_COORDINATE =
  711. {
  712. Full: //完整模式
  713. [
  714. [0, 1, "RGB(200,200,200)", "17:00"],
  715. //[60, 0, "RGB(200,200,200)", "18:00"],
  716. [120, 1, "RGB(200,200,200)", "19:00"],
  717. //[180, 0, "RGB(200,200,200)", "20:00"],
  718. [240, 1, "RGB(200,200,200)", "21:00"],
  719. //[300, 0, "RGB(200,200,200)", "22:00"],
  720. [360, 1, "RGB(200,200,200)", "23:00"],
  721. //[420, 0, "RGB(200,200,200)", "00:00"],
  722. [480, 1, "RGB(200,200,200)", "01:00"],
  723. //[540, 0, "RGB(200,200,200)", "02:00"],
  724. [600, 1, "RGB(200,200,200)", "03:00"],
  725. //[660, 1, "RGB(200,200,200)", "04:00"],
  726. [706, 1, "RGB(200,200,200)", "09:00"],
  727. //[766, 1, "RGB(200,200,200)", "10:00"],
  728. [826, 1, "RGB(200,200,200)", "11:00"],
  729. //[886, 1, "RGB(200,200,200)", "12:00"],
  730. [946, 1, "RGB(200,200,200)", "13:00"],
  731. //[1006, 1, "RGB(200,200,200)", "14:00"],
  732. [1066, 1, "RGB(200,200,200)", "15:00"],
  733. [1156, 1, "RGB(200,200,200)", "16:30"],
  734. ],
  735. Simple: //简洁模式
  736. [
  737. [0, 1, "RGB(200,200,200)", "17:00"],
  738. //[60, 0, "RGB(200,200,200)", "18:00"],
  739. //[120, 1, "RGB(200,200,200)", "19:00"],
  740. //[180, 0, "RGB(200,200,200)", "20:00"],
  741. [240, 1, "RGB(200,200,200)", "21:00"],
  742. //[300, 0, "RGB(200,200,200)", "22:00"],
  743. //[360, 1, "RGB(200,200,200)", "23:30"],
  744. //[420, 0, "RGB(200,200,200)", "00:00"],
  745. [480, 1, "RGB(200,200,200)", "01:00"],
  746. //[540, 0, "RGB(200,200,200)", "02:00"],
  747. //[600, 1, "RGB(200,200,200)", "03:00"],
  748. //[660, 1, "RGB(200,200,200)", "04:00"],
  749. [706, 1, "RGB(200,200,200)", "09:00"],
  750. //[766, 1, "RGB(200,200,200)", "10:00"],
  751. //[826, 1, "RGB(200,200,200)", "11:00"],
  752. //[886, 1, "RGB(200,200,200)", "12:00"],
  753. [946, 1, "RGB(200,200,200)", "13:00"],
  754. //[1006, 1, "RGB(200,200,200)", "14:00"],
  755. //[1066, 1, "RGB(200,200,200)", "15:00"],
  756. [1156, 1, "RGB(200,200,200)", "16:30"],
  757. ],
  758. Min: //最小模式
  759. [
  760. [0, 1, "RGB(200,200,200)", "17:00"],
  761. [706, 1, "RGB(200,200,200)", "09:00"],
  762. [1156, 1, "RGB(200,200,200)", "16:30"],
  763. ],
  764. Count: 1157,
  765. MiddleCount: 707,
  766. GetData: function (width) {
  767. if (width < 200) return this.Min;
  768. else if (width < 450) return this.Simple;
  769. return this.Full;
  770. }
  771. };
  772. //港股指数期货
  773. const FHK_MINUTE_X_COORDINATE =
  774. {
  775. Full: //完整模式
  776. [
  777. [0, 1, "RGB(200,200,200)", "17:15"],
  778. //[45, 0, "RGB(200,200,200)", "18:00"],
  779. [105, 1, "RGB(200,200,200)", "19:00"],
  780. //[165, 0, "RGB(200,200,200)", "20:00"],
  781. [225, 1, "RGB(200,200,200)", "21:00"],
  782. //[285, 0, "RGB(200,200,200)", "22:00"],
  783. [345, 1, "RGB(200,200,200)", "23:00"],
  784. //[405, 0, "RGB(200,200,200)", "00:00"],
  785. [466, 0, "RGB(200,200,200)", "09:15"],
  786. //[511, 1, "RGB(200,200,200)", "10:00"],
  787. [571, 1, "RGB(200,200,200)", "11:00"],
  788. //[632, 1, "RGB(200,200,200)", "13:00"],
  789. [692, 1, "RGB(200,200,200)", "14:00"],
  790. //[752, 1, "RGB(200,200,200)", "15:00"],
  791. [843, 1, "RGB(200,200,200)", "16:30"],
  792. ],
  793. Simple: //简洁模式
  794. [
  795. [0, 1, "RGB(200,200,200)", "17:15"],
  796. //[45, 0, "RGB(200,200,200)", "18:00"],
  797. //[105, 1, "RGB(200,200,200)", "19:00"],
  798. //[165, 0, "RGB(200,200,200)", "20:00"],
  799. [225, 1, "RGB(200,200,200)", "21:00"],
  800. //[285, 0, "RGB(200,200,200)", "22:00"],
  801. //[345, 1, "RGB(200,200,200)", "23:00"],
  802. //[405, 0, "RGB(200,200,200)", "00:00"],
  803. [466, 0, "RGB(200,200,200)", "09:15"],
  804. //[511, 1, "RGB(200,200,200)", "10:00"],
  805. //[571, 1, "RGB(200,200,200)", "11:00"],
  806. [632, 1, "RGB(200,200,200)", "13:00"],
  807. //[692, 1, "RGB(200,200,200)", "14:00"],
  808. //[752, 1, "RGB(200,200,200)", "15:00"],
  809. [843, 1, "RGB(200,200,200)", "16:30"],
  810. ],
  811. Min: //最小模式
  812. [
  813. [0, 1, "RGB(200,200,200)", "17:15"],
  814. [466, 0, "RGB(200,200,200)", "09:15"],
  815. [843, 1, "RGB(200,200,200)", "16:30"],
  816. ],
  817. Count: 843,
  818. MiddleCount: 466,
  819. GetData: function (width) {
  820. if (width < 200) return this.Min;
  821. else if (width < 450) return this.Simple;
  822. return this.Full;
  823. }
  824. };
  825. this.GetCoordinateData = function (symbol, width)
  826. {
  827. var data = null;
  828. if (!symbol)
  829. {
  830. data = SHZE_MINUTE_X_COORDINATE; //默认沪深股票
  831. }
  832. else
  833. {
  834. var upperSymbol = symbol.toLocaleUpperCase(); //转成大写
  835. if (MARKET_SUFFIX_NAME.IsSH(upperSymbol) || MARKET_SUFFIX_NAME.IsSZ(upperSymbol))
  836. data = this.GetSHSZData(upperSymbol, width);
  837. else if (MARKET_SUFFIX_NAME.IsSHO(upperSymbol))
  838. data = this.GetSHOData(upperSymbol, width);
  839. else if (MARKET_SUFFIX_NAME.IsHK(upperSymbol))
  840. data = HK_MINUTE_X_COORDINATE;
  841. else if (MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol) || MARKET_SUFFIX_NAME.IsCZCE(upperSymbol) || MARKET_SUFFIX_NAME.IsDCE(upperSymbol) || MARKET_SUFFIX_NAME.IsSHFE(upperSymbol))
  842. return this.GetChinatFuturesData(upperSymbol,width);
  843. else if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol))
  844. data = this.GetUSAData(upperSymbol, width);
  845. else if (MARKET_SUFFIX_NAME.IsFTSE(upperSymbol, width))
  846. data = this.GetFTSEData(upperSymbol, width);
  847. else if (MARKET_SUFFIX_NAME.IsFHK(upperSymbol, width))
  848. data = this.GetFHKData(upperSymbol, width);
  849. else if (MARKET_SUFFIX_NAME.IsET(upperSymbol))
  850. data = this.GetETData(upperSymbol, width);
  851. else if (MARKET_SUFFIX_NAME.IsNYMEX(upperSymbol, width))
  852. return data = this.GetNYMEXData(upperSymbol, width);
  853. else if (MARKET_SUFFIX_NAME.IsCOMEX(upperSymbol,width))
  854. return data=this.GetCOMEXData(upperSymbol,width);
  855. else if (MARKET_SUFFIX_NAME.IsNYBOT(upperSymbol,width))
  856. return data=this.GetNYBOTData(upperSymbol,width);
  857. else if (MARKET_SUFFIX_NAME.IsCBOT(upperSymbol,width))
  858. return data=this.GetCBOTData(upperSymbol,width);
  859. else if (MARKET_SUFFIX_NAME.IsLME(upperSymbol,width))
  860. return data=this.GetLMEData(upperSymbol,width);
  861. else if ((MARKET_SUFFIX_NAME.IsBIT(upperSymbol,width)))
  862. data=this.GetBITData(upperSymbol,width);
  863. }
  864. //console.log('[MiuteCoordinateData]', width);
  865. var result = { Count: data.Count, MiddleCount: data.MiddleCount, Data: data.GetData(width) };
  866. return result;
  867. }
  868. this.GetSHSZData = function (upperSymbol, width)
  869. {
  870. var result = SHZE_MINUTE_X_COORDINATE;
  871. return result;
  872. }
  873. this.GetFuturesData = function (upperSymbol,width,timeData)
  874. {
  875. var splitData = timeData.GetSplitData(upperSymbol);
  876. if (!splitData) return null;
  877. var stringData = g_MinuteTimeStringData.GetFutures(splitData);
  878. if (!stringData) return null;
  879. var result = { Count: stringData.length };
  880. var coordinate=null;
  881. var minWidth=200, simpleWidth=480;
  882. /*
  883. if (splitData.Name =='21:00-1:00,9:00-10:15,10:30-11:30,13:30-15:00')
  884. {
  885. minWidth=250;
  886. simpleWidth=500;
  887. }
  888. */
  889. if (width < minWidth) coordinate = splitData.Coordinate.Min;
  890. else if (width < simpleWidth) coordinate = splitData.Coordinate.Simple;
  891. else coordinate = splitData.Coordinate.Full;
  892. var data=[];
  893. for(var i=0;i<stringData.length;++i)
  894. {
  895. var value = stringData[i];
  896. for(var j=0;j<coordinate.length;++j)
  897. {
  898. var coordinateItem = coordinate[j];
  899. if (value == coordinateItem.Value)
  900. {
  901. var item = [i, 0, 'RGB(200,200,200)', coordinateItem.Text];
  902. data.push(item);
  903. break;
  904. }
  905. }
  906. }
  907. result.Data = data;
  908. return result;
  909. }
  910. this.GetChinatFuturesData=function(upperSymbol,width)
  911. {
  912. return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData);
  913. }
  914. this.GetNYMEXData=function(upperSymbol,width)
  915. {
  916. return this.GetFuturesData(upperSymbol,width, g_NYMEXTimeData);
  917. }
  918. this.GetCOMEXData=function(upperSymbol,width)
  919. {
  920. return this.GetFuturesData(upperSymbol,width, g_COMEXTimeData);
  921. }
  922. this.GetNYBOTData=function(upperSymbol,width)
  923. {
  924. return this.GetFuturesData(upperSymbol,width, g_NYBOTTimeData);
  925. }
  926. this.GetCBOTData=function(upperSymbol,width)
  927. {
  928. return this.GetFuturesData(upperSymbol,width, g_CBOTTimeData);
  929. }
  930. this.GetLMEData=function(upperSymbol,width)
  931. {
  932. return this.GetFuturesData(upperSymbol,width, g_LMETimeData);
  933. }
  934. this.GetFTSEData = function (upperSymbol, width)
  935. {
  936. var result = FTSE_MINUTE_X_COORDINATE;
  937. return result;
  938. }
  939. this.GetFHKData = function (upperSymbol, width)
  940. {
  941. var result = FHK_MINUTE_X_COORDINATE;
  942. return result
  943. }
  944. this.GetETData = function (upperSymbol, width)
  945. {
  946. throw { Name: 'MinuteCoordinateData::GetETData', Error: 'not implement' };
  947. }
  948. this.GetBITData=function(upperSymbol,width)
  949. {
  950. throw { Name: 'MinuteCoordinateData::GetBITData', Error: 'not implement' };
  951. }
  952. this.GetUSAData = function (upperSymbol, width)
  953. {
  954. var result = USA_MINUTE_X_COORDINATE;
  955. return result;
  956. }
  957. this.GetSHOData = function (upperSymbol, width)
  958. {
  959. var result = SHO_MINUTE_X_COORDINATE;
  960. return result;
  961. }
  962. }
  963. //期货不同品种 交易时间数据
  964. function FuturesTimeData()
  965. {
  966. this.TIME_SPLIT=
  967. [
  968. {
  969. Name:'9:00-10:15,10:30-11:30,13:30-15:00',
  970. Data:
  971. [
  972. //9:00-10:15,10:30-11:30,13:30-15:00
  973. { Start: 900, End: 1015 },
  974. { Start: 1031, End: 1130 },
  975. { Start: 1331, End: 1500 }
  976. ],
  977. Coordinate:
  978. {
  979. Full://完整模式
  980. [
  981. { Value: 900, Text: '9:00' },
  982. { Value: 930, Text: '9:30' },
  983. { Value: 1000, Text: '10:00' },
  984. { Value: 1031, Text: '10:30' },
  985. { Value: 1100, Text: '11:00' },
  986. { Value: 1331, Text: '13:30' },
  987. { Value: 1400, Text: '14:00' },
  988. { Value: 1430, Text: '14:30' },
  989. { Value: 1500, Text: '15:00' },
  990. ],
  991. Simple: //简洁模式
  992. [
  993. { Value: 900, Text: '9:00' },
  994. { Value: 1000, Text: '10:00' },
  995. { Value: 1331, Text: '13:30' },
  996. { Value: 1430, Text: '14:30' },
  997. { Value: 1500, Text: '15:00' },
  998. ],
  999. Min: //最小模式
  1000. [
  1001. { Value: 900, Text: '9:00' },
  1002. { Value: 1331, Text: '13:30' },
  1003. { Value: 1500, Text: '15:00' },
  1004. ]
  1005. }
  1006. },
  1007. {
  1008. Name:'9:15-11:30,13:00-15:15',
  1009. Data:
  1010. [
  1011. { Start: 915, End: 1130 },
  1012. { Start: 1301, End: 1515 }
  1013. ],
  1014. Coordinate:
  1015. {
  1016. Full://完整模式
  1017. [
  1018. { Value: 930, Text: '9:30' },
  1019. { Value: 1000, Text: '10:00' },
  1020. { Value: 1030, Text: '10:30' },
  1021. { Value: 1100, Text: '11:00' },
  1022. { Value: 1301, Text: '13:00' },
  1023. { Value: 1330, Text: '13:30' },
  1024. { Value: 1400, Text: '14:00' },
  1025. { Value: 1430, Text: '14:30' },
  1026. { Value: 1515, Text: '15:15' },
  1027. ],
  1028. Simple: //简洁模式
  1029. [
  1030. { Value: 930, Text: '9:30' },
  1031. { Value: 1030, Text: '10:30' },
  1032. { Value: 1301, Text: '13:00' },
  1033. { Value: 1400, Text: '14:00' },
  1034. { Value: 1515, Text: '15:15' },
  1035. ],
  1036. Min: //最小模式
  1037. [
  1038. { Value: 930, Text: '9:30' },
  1039. { Value: 1301, Text: '13:00' },
  1040. { Value: 1515, Text: '15:15' },
  1041. ]
  1042. }
  1043. },
  1044. {
  1045. Name:'9:30-11:30,13:00-15:00',
  1046. Data:
  1047. [
  1048. { Start: 930, End: 1130 },
  1049. { Start: 1301, End: 1500 }
  1050. ],
  1051. Coordinate:
  1052. {
  1053. Full://完整模式
  1054. [
  1055. { Value: 930, Text: '9:30' },
  1056. { Value: 1000, Text: '10:00' },
  1057. { Value: 1030, Text: '10:30' },
  1058. { Value: 1100, Text: '11:00' },
  1059. { Value: 1301, Text: '13:00' },
  1060. { Value: 1330, Text: '13:30' },
  1061. { Value: 1400, Text: '14:00' },
  1062. { Value: 1430, Text: '14:30' },
  1063. { Value: 1500, Text: '15:00' },
  1064. ],
  1065. Simple: //简洁模式
  1066. [
  1067. { Value: 930, Text: '9:30' },
  1068. { Value: 1030, Text: '10:30' },
  1069. { Value: 1301, Text: '13:00' },
  1070. { Value: 1400, Text: '14:00' },
  1071. { Value: 1500, Text: '15:00' },
  1072. ],
  1073. Min: //最小模式
  1074. [
  1075. { Value: 930, Text: '9:30' },
  1076. { Value: 1301, Text: '13:00' },
  1077. { Value: 1500, Text: '15:00' },
  1078. ]
  1079. }
  1080. },
  1081. {
  1082. Name:'21:00-23:30,9:00-10:15,10:30-11:30,13:30-15:00',
  1083. Data:
  1084. [
  1085. { Start: 2100, End: 2330 },
  1086. { Start: 901, End: 1015 },
  1087. { Start: 1031, End: 1130 },
  1088. { Start: 1331, End: 1500 }
  1089. ],
  1090. Coordinate:
  1091. {
  1092. Full://完整模式
  1093. [
  1094. { Value: 2100, Text: '21:00' },
  1095. { Value: 2200, Text: '22:00' },
  1096. { Value: 2300, Text: '23:00' },
  1097. { Value: 901, Text: '9:00' },
  1098. { Value: 1031, Text: '10:30' },
  1099. { Value: 1331, Text: '13:30' },
  1100. { Value: 1430, Text: '14:30' },
  1101. { Value: 1500, Text: '15:00' },
  1102. ],
  1103. Simple: //简洁模式
  1104. [
  1105. { Value: 2100, Text: '21:00' },
  1106. { Value: 901, Text: '9:00' },
  1107. { Value: 1331, Text: '13:30' },
  1108. { Value: 1500, Text: '15:00' },
  1109. ],
  1110. Min: //最小模式
  1111. [
  1112. { Value: 2100, Text: '21:00' },
  1113. { Value: 901, Text: '9:00' },
  1114. { Value: 1500, Text: '15:00' },
  1115. ]
  1116. }
  1117. },
  1118. {
  1119. Name:'21:00-1:00,9:00-10:15,10:30-11:30,13:30-15:00',
  1120. Data:
  1121. [
  1122. { Start: 2100, End: 2359 },
  1123. { Start: 0, End: 100 },
  1124. { Start: 901, End: 1015 },
  1125. { Start: 1031, End: 1130 },
  1126. { Start: 1301, End: 1500 }
  1127. ],
  1128. Coordinate:
  1129. {
  1130. Full://完整模式
  1131. [
  1132. { Value: 2100, Text: '21:00' },
  1133. { Value: 2200, Text: '22:00' },
  1134. { Value: 2300, Text: '23:00' },
  1135. { Value: 901, Text: '9:00' },
  1136. { Value: 1030, Text: '10:30' },
  1137. { Value: 1331, Text: '13:30' },
  1138. { Value: 1500, Text: '15:00' },
  1139. ],
  1140. Simple: //简洁模式
  1141. [
  1142. { Value: 2100, Text: '21:00' },
  1143. { Value: 2300, Text: '23:00' },
  1144. { Value: 901, Text: '9:00' },
  1145. { Value: 1031, Text: '10:30' },
  1146. { Value: 1500, Text: '15:00' },
  1147. ],
  1148. Min: //最小模式
  1149. [
  1150. { Value: 2100, Text: '21:00' },
  1151. { Value: 901, Text: '9:00' },
  1152. { Value: 1500, Text: '15:00' },
  1153. ]
  1154. }
  1155. },
  1156. {
  1157. Name:'21:00-2:30,9:00-10:15,10:30-11:30,13:30-15:00',
  1158. Data:
  1159. [
  1160. { Start: 2100, End: 2359 },
  1161. { Start: 0, End: 230 },
  1162. { Start: 901, End: 1015 },
  1163. { Start: 1031, End: 1130 },
  1164. { Start: 1331, End: 1500 }
  1165. ],
  1166. Coordinate:
  1167. {
  1168. Full://完整模式
  1169. [
  1170. { Value: 2100, Text: '21:00' },
  1171. { Value: 2300, Text: '23:00' },
  1172. { Value: 100, Text: '1:00' },
  1173. { Value: 901, Text: '9:00' },
  1174. { Value: 1031, Text: '10:30' },
  1175. { Value: 1331, Text: '13:30' },
  1176. { Value: 1500, Text: '15:00' },
  1177. ],
  1178. Simple: //简洁模式
  1179. [
  1180. { Value: 2100, Text: '21:00' },
  1181. { Value: 2300, Text: '23:00' },
  1182. { Value: 901, Text: '9:00' },
  1183. { Value: 1100, Text: '11:00' },
  1184. { Value: 1500, Text: '15:00' },
  1185. ],
  1186. Min: //最小模式
  1187. [
  1188. { Value: 2100, Text: '21:00' },
  1189. { Value: 901, Text: '9:00' },
  1190. { Value: 1500, Text: '15:00' },
  1191. ]
  1192. }
  1193. },
  1194. {
  1195. Name: '21:00-23:00,9:00-10:15,10:30-11:30,13:30-15:00',
  1196. Data:
  1197. [
  1198. { Start: 2100, End: 2300 },
  1199. { Start: 901, End: 1015 },
  1200. { Start: 1031, End: 1130 },
  1201. { Start: 1331, End: 1500 }
  1202. ],
  1203. Coordinate:
  1204. {
  1205. Full://完整模式
  1206. [
  1207. { Value: 2100, Text: '21:00' },
  1208. { Value: 2200, Text: '22:00' },
  1209. { Value: 2300, Text: '23:00' },
  1210. { Value: 1031, Text: '10:30' },
  1211. { Value: 1331, Text: '13:30' },
  1212. { Value: 1430, Text: '14:30' },
  1213. { Value: 1500, Text: '15:00' },
  1214. ],
  1215. Simple: //简洁模式
  1216. [
  1217. { Value: 2100, Text: '21:00' },
  1218. { Value: 2300, Text: '23:00' },
  1219. { Value: 1331, Text: '13:30' },
  1220. { Value: 1500, Text: '15:00' },
  1221. ],
  1222. Min: //最小模式
  1223. [
  1224. { Value: 2100, Text: '21:00' },
  1225. { Value: 2300, Text: '23:00' },
  1226. { Value: 1500, Text: '15:00' },
  1227. ]
  1228. }
  1229. }
  1230. ];
  1231. this.MAP_TWOWORDS = new Map([
  1232. //大连商品交易所
  1233. [MARKET_SUFFIX_NAME.DCE + '-JD', {Time:0,Decimal:0,Name:"鸡蛋"}],
  1234. [MARKET_SUFFIX_NAME.DCE + '-FB', {Time:0,Decimal:2,Name:"纤板"}],
  1235. [MARKET_SUFFIX_NAME.DCE + '-BB', {Time:0,Decimal:2,Name:"胶板"}],
  1236. [MARKET_SUFFIX_NAME.DCE + '-PP', {Time:6,Decimal:0,Name:"丙烯"}],
  1237. [MARKET_SUFFIX_NAME.DCE + '-JM', {Time:6,Decimal:1,Name:'焦煤'}],
  1238. [MARKET_SUFFIX_NAME.DCE + '-EG', {Time:6,Decimal:0,Name:'乙二醇'}],
  1239. [MARKET_SUFFIX_NAME.DCE + '-EB', {Time:6,Decimal:0,Name:'苯乙烯'}],
  1240. [MARKET_SUFFIX_NAME.DCE + '-CS', {Time:6,Decimal:0,Name:'淀粉'}],
  1241. [MARKET_SUFFIX_NAME.DCE + '-PG', {Time:6,Decimal:0,Name:'液化气'}],
  1242. [MARKET_SUFFIX_NAME.DCE + '-RR', {Time:6,Decimal:0,Name:'梗米'}],
  1243. //上期所
  1244. [MARKET_SUFFIX_NAME.SHFE + '-CU', { Time: 4, Decimal: 0 }],
  1245. [MARKET_SUFFIX_NAME.SHFE + '-AL', { Time: 4, Decimal: 0 }],
  1246. [MARKET_SUFFIX_NAME.SHFE + '-NI', { Time: 4, Decimal: 0 }],
  1247. [MARKET_SUFFIX_NAME.SHFE + '-SN', { Time: 4, Decimal: 0 }],
  1248. [MARKET_SUFFIX_NAME.SHFE + '-ZN', { Time: 4, Decimal: 0 }],
  1249. [MARKET_SUFFIX_NAME.SHFE + '-PB', { Time: 4, Decimal: 0 }],
  1250. [MARKET_SUFFIX_NAME.SHFE + '-RU', { Time: 6, Decimal: 0 }],
  1251. [MARKET_SUFFIX_NAME.SHFE + '-FU', { Time: 6, Decimal: 0 }],
  1252. [MARKET_SUFFIX_NAME.SHFE + '-RB', { Time: 6, Decimal: 0 }],
  1253. [MARKET_SUFFIX_NAME.SHFE + '-BU', { Time: 6, Decimal: 0 }],
  1254. [MARKET_SUFFIX_NAME.SHFE + '-HC', { Time: 6, Decimal: 0 }],
  1255. [MARKET_SUFFIX_NAME.SHFE + '-WR', { Time: 0, Decimal: 0 }],
  1256. [MARKET_SUFFIX_NAME.SHFE + '-AG', { Time: 5, Decimal: 0 }],
  1257. [MARKET_SUFFIX_NAME.SHFE + '-AU', { Time: 5, Decimal: 2 }],
  1258. [MARKET_SUFFIX_NAME.SHFE + '-SP', { Time: 5, Decimal: 2 }],
  1259. [MARKET_SUFFIX_NAME.SHFE + '-SS', { Time: 5, Decimal: 2 }],
  1260. //上期能源
  1261. [MARKET_SUFFIX_NAME.SHFE + '-NR', {Time:6,Decimal:1,Name:'20号胶'}],
  1262. [MARKET_SUFFIX_NAME.SHFE + '-SC', {Time:6,Decimal:1,Name:'中质含硫原油'}],
  1263. [MARKET_SUFFIX_NAME.SHFE + '-LU', {Time:6,Decimal:0,Name:'低硫燃料油'}],
  1264. [MARKET_SUFFIX_NAME.SHFE + '-BC', {Time:6,Decimal:0,Name:'国际铜'}],
  1265. //郑州期货交易所
  1266. [MARKET_SUFFIX_NAME.CZCE + '-CF', { Time: 3, Decimal: 0 }],
  1267. [MARKET_SUFFIX_NAME.CZCE + '-SR', { Time: 3, Decimal: 0 }],
  1268. [MARKET_SUFFIX_NAME.CZCE + '-MA', { Time: 3, Decimal: 0 }],
  1269. [MARKET_SUFFIX_NAME.CZCE + '-ZC', { Time: 3, Decimal: 1 }],
  1270. [MARKET_SUFFIX_NAME.CZCE + '-TA', { Time: 3, Decimal: 0 }],
  1271. [MARKET_SUFFIX_NAME.CZCE + '-RM', { Time: 3, Decimal: 0 }],
  1272. [MARKET_SUFFIX_NAME.CZCE + '-OI', { Time: 3, Decimal: 0 }],
  1273. [MARKET_SUFFIX_NAME.CZCE + '-ME', { Time: 3, Decimal: 0 }],
  1274. [MARKET_SUFFIX_NAME.CZCE + '-FG', { Time: 3, Decimal: 0 }],
  1275. [MARKET_SUFFIX_NAME.CZCE + '-WS', { Time: 0, Decimal: 0 }],
  1276. [MARKET_SUFFIX_NAME.CZCE + '-WT', { Time: 0, Decimal: 0 }],
  1277. [MARKET_SUFFIX_NAME.CZCE + '-GN', { Time: 0, Decimal: 0 }],
  1278. [MARKET_SUFFIX_NAME.CZCE + '-RO', { Time: 0, Decimal: 0 }],
  1279. [MARKET_SUFFIX_NAME.CZCE + '-RS', { Time: 0, Decimal: 0 }],
  1280. [MARKET_SUFFIX_NAME.CZCE + '-ER', { Time: 0, Decimal: 0 }],
  1281. [MARKET_SUFFIX_NAME.CZCE + '-RI', { Time: 0, Decimal: 0 }],
  1282. [MARKET_SUFFIX_NAME.CZCE + '-WH', { Time: 0, Decimal: 0 }],
  1283. [MARKET_SUFFIX_NAME.CZCE + '-AP', { Time: 0, Decimal: 0 }],
  1284. [MARKET_SUFFIX_NAME.CZCE + '-PM', { Time: 0, Decimal: 0 }],
  1285. [MARKET_SUFFIX_NAME.CZCE + '-QM', { Time: 0, Decimal: 0 }],
  1286. [MARKET_SUFFIX_NAME.CZCE + '-TC', { Time: 0, Decimal: 0 }],
  1287. [MARKET_SUFFIX_NAME.CZCE + '-JR', { Time: 0, Decimal: 0 }],
  1288. [MARKET_SUFFIX_NAME.CZCE + '-LR', { Time: 0, Decimal: 0 }],
  1289. [MARKET_SUFFIX_NAME.CZCE + '-SF', { Time: 0, Decimal: 0 }],
  1290. [MARKET_SUFFIX_NAME.CZCE + '-SM', { Time: 0, Decimal: 0 }],
  1291. [MARKET_SUFFIX_NAME.CZCE + '-PK', { Time: 0, Decimal: 0, Name:"花生" }],
  1292. [MARKET_SUFFIX_NAME.CZCE + '-CJ', { Time: 0, Decimal: 0, Name:"红枣"}],
  1293. [MARKET_SUFFIX_NAME.CZCE + '-CY', { Time: 0, Decimal: 0, Name:"棉纱" }],
  1294. [MARKET_SUFFIX_NAME.CZCE + '-UR', { Time: 0, Decimal: 0, Name:"尿素" }],
  1295. [MARKET_SUFFIX_NAME.CZCE + '-PF', { Time: 0, Decimal: 0, Name:"短纤" }],
  1296. [MARKET_SUFFIX_NAME.CZCE + '-SA', { Time: 0, Decimal: 0, Name:"纯碱" }],
  1297. //中期所
  1298. [MARKET_SUFFIX_NAME.CFFEX + '-TF', {Time:1,Decimal:3,Name:"二债"}],
  1299. [MARKET_SUFFIX_NAME.CFFEX + '-TS', {Time:1,Decimal:3,Name:"五债"}],
  1300. [MARKET_SUFFIX_NAME.CFFEX + '-IH', {Time:2,Decimal:1,Name:'上证股指期货'}],
  1301. [MARKET_SUFFIX_NAME.CFFEX + '-IC', {Time:2,Decimal:1,Name:'中证股指期货'}],
  1302. [MARKET_SUFFIX_NAME.CFFEX + '-IF', {Time:2,Decimal:1,Name:'沪深股指期货'}],
  1303. ]);
  1304. this.MAP_ONEWORD = new Map([
  1305. //大连商品交易所
  1306. [MARKET_SUFFIX_NAME.DCE + '-C', {Time:6,Decimal:0,Name:"玉米"}],
  1307. [MARKET_SUFFIX_NAME.DCE + '-L', {Time:6,Decimal:0,Name:"乙烯"}],
  1308. [MARKET_SUFFIX_NAME.DCE + '-V', {Time:6,Decimal:0,Name:"PVC"}],
  1309. [MARKET_SUFFIX_NAME.DCE + '-A', {Time:6,Decimal:0,Name:"豆一"}],
  1310. [MARKET_SUFFIX_NAME.DCE + '-B', {Time:6,Decimal:0,Name:"豆二"}],
  1311. [MARKET_SUFFIX_NAME.DCE + '-M', {Time:6,Decimal:0,Name:"豆粕"}],
  1312. [MARKET_SUFFIX_NAME.DCE + '-Y', {Time:6,Decimal:0,Name:"豆油"}],
  1313. [MARKET_SUFFIX_NAME.DCE + '-P', {Time:6,Decimal:0,Name:"棕榈"}],
  1314. [MARKET_SUFFIX_NAME.DCE + '-J', {Time:6,Decimal:1,Name:'焦炭'}],
  1315. [MARKET_SUFFIX_NAME.DCE + '-I', {Time:6,Decimal:1,Name:"铁矿"}],
  1316. //中期所
  1317. [MARKET_SUFFIX_NAME.CFFEX + '-T', { Time: 1, Decimal: 3, Name:"十债"}],
  1318. ]);
  1319. this.GetData = function (upperSymbol)
  1320. {
  1321. var oneWord = upperSymbol.charAt(0);
  1322. var twoWords = upperSymbol.substr(0, 2);
  1323. var oneWordName = null, twoWordsName = null;
  1324. if (MARKET_SUFFIX_NAME.IsDCE(upperSymbol)) //大连商品交易所
  1325. {
  1326. oneWordName = MARKET_SUFFIX_NAME.DCE + '-' + oneWord;
  1327. twoWordsName = MARKET_SUFFIX_NAME.DCE + '-' + twoWords;
  1328. }
  1329. else if (MARKET_SUFFIX_NAME.IsSHFE(upperSymbol)) //上期所
  1330. {
  1331. oneWordName = MARKET_SUFFIX_NAME.SHFE + '-' + oneWord;
  1332. twoWordsName = MARKET_SUFFIX_NAME.SHFE + '-' + twoWords;
  1333. }
  1334. else if (MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol)) //中期所
  1335. {
  1336. oneWordName = MARKET_SUFFIX_NAME.CFFEX + '-' + oneWord;
  1337. twoWordsName = MARKET_SUFFIX_NAME.CFFEX + '-' + twoWords;
  1338. }
  1339. else if (MARKET_SUFFIX_NAME.IsCZCE(upperSymbol)) //郑州期货交易所
  1340. {
  1341. oneWordName = MARKET_SUFFIX_NAME.CZCE + '-' + oneWord;
  1342. twoWordsName = MARKET_SUFFIX_NAME.CZCE + '-' + twoWords;
  1343. }
  1344. if (this.MAP_TWOWORDS.has(twoWordsName))
  1345. {
  1346. return this.MAP_TWOWORDS.get(twoWordsName);
  1347. }
  1348. if (this.MAP_ONEWORD.has(oneWordName))
  1349. {
  1350. return this.MAP_ONEWORD.get(oneWordName);
  1351. }
  1352. return null;
  1353. }
  1354. this.GetSplitData = function (upperSymbol)
  1355. {
  1356. var data = this.GetData(upperSymbol);
  1357. if (!data) return null;
  1358. return this.TIME_SPLIT[data.Time];
  1359. }
  1360. this.GetDecimal = function (upperSymbol) //期货价格小数位数
  1361. {
  1362. var data = this.GetData(upperSymbol);
  1363. if (!data) return 2;
  1364. return data.Decimal;
  1365. }
  1366. //添加新品种
  1367. this.AddNewFutures=function(obj) //{ Suffix:后缀, Symbol:品种代码, Time:交易时间段, Decimal:小数位数, Name:名字 }
  1368. {
  1369. if (!obj) return;
  1370. var key=obj.Suffix+'-'+obj.Symbol;
  1371. var item={ Time:obj.Time, Decimal:obj.Decimal, Name:obj.Name };
  1372. if (obj.Symbol.length==1)
  1373. {
  1374. this.MAP_ONEWORD.set(key, item);
  1375. }
  1376. else if (obj.Symbol.length==2)
  1377. {
  1378. this.MAP_TWOWORDS.set(key, item);
  1379. }
  1380. }
  1381. }
  1382. //纽约商品期货交易所 交易时间数据
  1383. function NYMEXTimeData()
  1384. {
  1385. this.MarketSuffix=".NYMEX";
  1386. this.TimeType=0; // 0=标准时间 1=夏令时间
  1387. //美国标准时间
  1388. this.TIME_SPLIT =
  1389. [
  1390. {
  1391. Name: '6:00-5:00',
  1392. Data:
  1393. [
  1394. //6:00 - 5:00
  1395. { Start: 600, End: 2359 },
  1396. { Start: 0, End: 500 },
  1397. ],
  1398. Coordinate:
  1399. {
  1400. Full://完整模式
  1401. [
  1402. { Value: 600, Text: '6:00' },
  1403. { Value: 800, Text: '8:00' },
  1404. { Value: 1000, Text: '10:00' },
  1405. { Value: 1200, Text: '12:00' },
  1406. { Value: 1400, Text: '14:00' },
  1407. { Value: 1600, Text: '16:00' },
  1408. { Value: 1800, Text: '18:00' },
  1409. { Value: 2000, Text: '20:00' },
  1410. { Value: 2200, Text: '22:00' },
  1411. { Value: 0, Text: '0:00' },
  1412. { Value: 200, Text: '2:00' },
  1413. { Value: 400, Text: '4:00' },
  1414. ],
  1415. Simple: //简洁模式
  1416. [
  1417. { Value: 600, Text: '6:00' },
  1418. //{ Value: 800, Text: '8:00' },
  1419. { Value: 1000, Text: '10:00' },
  1420. //{ Value: 1200, Text: '12:00' },
  1421. { Value: 1400, Text: '14:00' },
  1422. //{ Value: 1600, Text: '16:00' },
  1423. { Value: 1800, Text: '18:00' },
  1424. //{ Value: 2000, Text: '20:00' },
  1425. { Value: 2200, Text: '22:00' },
  1426. //{ Value: 0, Text: '0:00' },
  1427. { Value: 200, Text: '2:00' }
  1428. //{ Value: 400, Text: '4:00' },
  1429. ],
  1430. Min: //最小模式
  1431. [
  1432. { Value: 600, Text: '6:00' },
  1433. { Value: 1800, Text: '18:00' },
  1434. { Value: 500, Text: '5:00' }
  1435. ]
  1436. }
  1437. }
  1438. ]
  1439. //美国夏时令
  1440. this.TIME_SPLIT2=
  1441. [
  1442. {
  1443. Name:'7:00-6:00',
  1444. Data:
  1445. [
  1446. //6:00 - 5:00
  1447. { Start: 700, End: 2359 },
  1448. { Start: 0, End: 600 },
  1449. ],
  1450. Coordinate:
  1451. {
  1452. Full://完整模式
  1453. [
  1454. { Value: 700, Text: '7:00' },
  1455. { Value: 900, Text: '9:00' },
  1456. { Value: 1100, Text: '11:00' },
  1457. { Value: 1300, Text: '13:00' },
  1458. { Value: 1500, Text: '15:00' },
  1459. { Value: 1700, Text: '17:00' },
  1460. { Value: 1900, Text: '19:00' },
  1461. { Value: 2100, Text: '21:00' },
  1462. { Value: 2300, Text: '23:00' },
  1463. { Value: 1, Text: '1:00' },
  1464. { Value: 300, Text: '3:00' },
  1465. { Value: 500, Text: '5:00' }
  1466. ],
  1467. Simple: //简洁模式
  1468. [
  1469. { Value: 700, Text: '7:00' },
  1470. //{ Value: 900, Text: '9:00' },
  1471. { Value: 1100, Text: '11:00' },
  1472. //{ Value: 1300, Text: '13:00' },
  1473. { Value: 1500, Text: '15:00' },
  1474. //{ Value: 1700, Text: '17:00' },
  1475. { Value: 1900, Text: '19:00' },
  1476. //{ Value: 2100, Text: '21:00' },
  1477. { Value: 2300, Text: '23:00' },
  1478. //{ Value: 1, Text: '1:00' },
  1479. { Value: 300, Text: '3:00' }
  1480. //{ Value: 500, Text: '5:00' }
  1481. ],
  1482. Min: //最小模式
  1483. [
  1484. { Value: 700, Text: '7:00' },
  1485. { Value: 1900, Text: '19:00' },
  1486. { Value: 500, Text: '5:00' }
  1487. ]
  1488. }
  1489. }
  1490. ]
  1491. this.FUTURES_LIST=
  1492. [
  1493. { Symbol:"CL", Decimal:2, Time:0 }, //原油
  1494. { Symbol:"NG", Decimal:3, Time:0 }, //天然气
  1495. { Symbol:"RB", Decimal:4, Time:0 }, //汽油
  1496. { Symbol:"PL", Decimal:1, Time:0 }, //铂金
  1497. { Symbol:"PA", Decimal:2, Time:0 }, //钯金
  1498. { Symbol:"HR", Decimal:0, Time:0 }, //热轧钢卷
  1499. { Symbol:"QM", Decimal:3, Time:0 }, //迷你原油
  1500. { Symbol:"HO", Decimal:4, Time:0 }, //燃油
  1501. ]
  1502. this.GetFuturesInfo=function(upperSymbol)
  1503. {
  1504. if (upperSymbol.indexOf(this.MarketSuffix)<=0) return null;
  1505. for(var i in this.FUTURES_LIST)
  1506. {
  1507. var item=this.FUTURES_LIST[i];
  1508. if (upperSymbol.indexOf(item.Symbol)==0)
  1509. {
  1510. return item;
  1511. }
  1512. }
  1513. return null;
  1514. }
  1515. this.GetSplitData = function (upperSymbol)
  1516. {
  1517. //夏令和标准时间切换
  1518. var timeSplit=this.TimeType==0 ? this.TIME_SPLIT : this.TIME_SPLIT2;
  1519. var find=this.GetFuturesInfo(upperSymbol);
  1520. if (find) return timeSplit[find.Time];
  1521. return timeSplit[0];
  1522. }
  1523. this.GetDecimal = function (upperSymbol)
  1524. {
  1525. var find=this.GetFuturesInfo(upperSymbol);
  1526. if (find) return find.Decimal;
  1527. return 3;
  1528. }
  1529. this.GetMarketStatus = function (upperSymbol) // 0=闭市 1=盘前 2=盘中 3=盘后
  1530. {
  1531. var usaDate=GetLocalTime(-4); //需要转成美国时间的 周6 周日
  1532. var nowDate= new Date();
  1533. var day = usaDate.getDay();
  1534. var time = nowDate.getHours() * 100 + nowDate.getMinutes();
  1535. if(day == 6 || day== 0) return 0; //周末
  1536. if(time>430 && time<730) return 1;
  1537. return 2;
  1538. }
  1539. }
  1540. function COMEXTimeData()
  1541. {
  1542. this.newMethod=NYMEXTimeData; //派生
  1543. this.newMethod();
  1544. delete this.newMethod;
  1545. this.FUTURES_LIST=
  1546. [
  1547. { Symbol:"GC", Decimal:1, Time:0 }, //COMEX黄金
  1548. { Symbol:"QO", Decimal:2, Time:0 }, //迷你黄金
  1549. { Symbol:"MG", Decimal:1, Time:0 }, //微型黄金
  1550. { Symbol:"QI", Decimal:4, Time:0 }, //迷你白银
  1551. { Symbol:"SI", Decimal:3, Time:0 }, //COMEX白银
  1552. { Symbol:"QI", Decimal:4, Time:0 }, //迷你白银
  1553. { Symbol:"HG", Decimal:4, Time:0 } //COMEX铜
  1554. ]
  1555. this.MarketSuffix=".COMEX";
  1556. }
  1557. function NYBOTTimeData()
  1558. {
  1559. this.newMethod=NYMEXTimeData; //派生
  1560. this.newMethod();
  1561. delete this.newMethod;
  1562. //美国标准时间
  1563. this.TIME_SPLIT=
  1564. [
  1565. {
  1566. Name:'9:00-2:20',
  1567. Data:
  1568. [
  1569. //9:00-2:20
  1570. { Start: 900, End: 2359 },
  1571. { Start: 0, End: 220 },
  1572. ],
  1573. Coordinate:
  1574. {
  1575. Full://完整模式
  1576. [
  1577. { Value: 900, Text: '9:00' },
  1578. { Value: 1100, Text: '11:00' },
  1579. { Value: 1300, Text: '13:00' },
  1580. { Value: 1500, Text: '15:00' },
  1581. { Value: 1700, Text: '17:00' },
  1582. { Value: 1900, Text: '19:00' },
  1583. { Value: 2100, Text: '21:00' },
  1584. { Value: 2300, Text: '23:00' },
  1585. { Value: 100, Text: '1:00' }
  1586. ],
  1587. Simple: //简洁模式
  1588. [
  1589. { Value: 900, Text: '9:00' },
  1590. //{ Value: 1100, Text: '11:00' },
  1591. { Value: 1300, Text: '13:00' },
  1592. //{ Value: 1500, Text: '15:00' },
  1593. { Value: 1700, Text: '17:00' },
  1594. //{ Value: 1900, Text: '19:00' },
  1595. { Value: 2100, Text: '21:00' },
  1596. //{ Value: 2300, Text: '23:00' },
  1597. { Value: 100, Text: '1:00' }
  1598. ],
  1599. Min: //最小模式
  1600. [
  1601. { Value: 900, Text: '9:00' },
  1602. { Value: 1700, Text: '17:00' },
  1603. { Value: 100, Text: '1:00' }
  1604. ]
  1605. }
  1606. },
  1607. {
  1608. Name:'15:30-1:00',
  1609. Data:
  1610. [
  1611. //9:00-2:20
  1612. { Start: 1530, End: 2359 },
  1613. { Start: 0, End: 100 },
  1614. ],
  1615. Coordinate:
  1616. {
  1617. Full://完整模式
  1618. [
  1619. { Value: 1600, Text: '16:00' },
  1620. { Value: 1700, Text: '17:00' },
  1621. { Value: 1800, Text: '18:00' },
  1622. { Value: 1900, Text: '19:00' },
  1623. { Value: 2000, Text: '20:00' },
  1624. { Value: 2100, Text: '21:00' },
  1625. { Value: 2200, Text: '22:00' },
  1626. { Value: 2300, Text: '23:00' },
  1627. { Value: 0, Text: '0:00' },
  1628. { Value: 100, Text: '1:00' }
  1629. ],
  1630. Simple: //简洁模式
  1631. [
  1632. { Value: 1600, Text: '16:00' },
  1633. //{ Value: 1600, Text: '17:00' },
  1634. { Value: 1800, Text: '18:00' },
  1635. //{ Value: 1900, Text: '19:00' },
  1636. { Value: 2000, Text: '20:00' },
  1637. //{ Value: 2100, Text: '21:00' },
  1638. { Value: 2200, Text: '22:00' },
  1639. //{ Value: 2300, Text: '23:00' },
  1640. { Value: 0, Text: '0:00' },
  1641. //{ Value: 100, Text: '1:00' }
  1642. ],
  1643. Min: //最小模式
  1644. [
  1645. { Value: 1600, Text: '16:00' },
  1646. { Value: 2100, Text: '21:00' },
  1647. { Value: 100, Text: '1:00' }
  1648. ]
  1649. }
  1650. }
  1651. ]
  1652. //美国夏时令
  1653. this.TIME_SPLIT2=
  1654. [
  1655. {
  1656. Name:'10:00-3:20',
  1657. Data:
  1658. [
  1659. //9:00-2:20
  1660. { Start: 1000, End: 2359 },
  1661. { Start: 0, End: 320 },
  1662. ],
  1663. Coordinate:
  1664. {
  1665. Full://完整模式
  1666. [
  1667. { Value: 1000, Text: '10:00' },
  1668. { Value: 1200, Text: '12:00' },
  1669. { Value: 1400, Text: '14:00' },
  1670. { Value: 1600, Text: '16:00' },
  1671. { Value: 1800, Text: '18:00' },
  1672. { Value: 2000, Text: '20:00' },
  1673. { Value: 2200, Text: '22:00' },
  1674. { Value: 0, Text: '0:00' },
  1675. { Value: 200, Text: '2:00' }
  1676. ],
  1677. Simple: //简洁模式
  1678. [
  1679. { Value: 1000, Text: '10:00' },
  1680. //{ Value: 1200, Text: '12:00' },
  1681. { Value: 1400, Text: '14:00' },
  1682. //{ Value: 1600, Text: '16:00' },
  1683. { Value: 1800, Text: '18:00' },
  1684. //{ Value: 2000, Text: '20:00' },
  1685. { Value: 2200, Text: '22:00' },
  1686. //{ Value: 0, Text: '0:00' },
  1687. { Value: 200, Text: '2:00' }
  1688. ],
  1689. Min: //最小模式
  1690. [
  1691. { Value: 1000, Text: '10:00' },
  1692. { Value: 1800, Text: '18:00' },
  1693. { Value: 200, Text: '2:00' }
  1694. ]
  1695. }
  1696. },
  1697. {
  1698. Name:'16:30-2:00',
  1699. Data:
  1700. [
  1701. { Start: 1630, End: 2359 },
  1702. { Start: 0, End: 200 },
  1703. ],
  1704. Coordinate:
  1705. {
  1706. Full://完整模式
  1707. [
  1708. { Value: 1700, Text: '17:00' },
  1709. { Value: 1800, Text: '18:00' },
  1710. { Value: 1900, Text: '19:00' },
  1711. { Value: 2000, Text: '20:00' },
  1712. { Value: 2100, Text: '21:00' },
  1713. { Value: 2200, Text: '22:00' },
  1714. { Value: 2300, Text: '23:00' },
  1715. { Value: 0, Text: '0:00' },
  1716. { Value: 100, Text: '1:00' },
  1717. { Value: 200, Text: '2:00' }
  1718. ],
  1719. Simple: //简洁模式
  1720. [
  1721. { Value: 1700, Text: '17:00' },
  1722. //{ Value: 1800, Text: '18:00' },
  1723. { Value: 1900, Text: '19:00' },
  1724. //{ Value: 2000, Text: '20:00' },
  1725. { Value: 2100, Text: '21:00' },
  1726. //{ Value: 2200, Text: '22:00' },
  1727. { Value: 2300, Text: '23:00' },
  1728. //{ Value: 0, Text: '0:00' },
  1729. { Value: 100, Text: '1:00' }
  1730. //{ Value: 200, Text: '2:00' }
  1731. ],
  1732. Min: //最小模式
  1733. [
  1734. { Value: 1700, Text: '17:00' },
  1735. { Value: 2100, Text: '21:00' },
  1736. { Value: 200, Text: '2:00' }
  1737. ]
  1738. }
  1739. }
  1740. ]
  1741. this.FUTURES_LIST=
  1742. [
  1743. { Symbol:"SB", Decimal:2, Time:1 }, //11号白糖
  1744. { Symbol:"CT", Decimal:2, Time:0 }, //棉花
  1745. //{ Symbol:"KC", Decimal:2, Time:0 }, //咖啡
  1746. //{ Symbol:"DX", Decimal:2, Time:0 }, //美元指数
  1747. //{ Symbol:"CC", Decimal:2, Time:0 } //可可
  1748. ]
  1749. this.MarketSuffix=".NYBOT";
  1750. this.GetMarketStatus=function(upperSymbol) // 0=闭市 1=盘前 2=盘中 3=盘后
  1751. {
  1752. var usaDate=GetLocalTime(-4); //需要转成美国时间的 周6 周日
  1753. var day = usaDate.getDay();
  1754. var time = usaDate.getHours() * 100 + usaDate.getMinutes();
  1755. if(day == 6 || day== 0) return 0; //周末
  1756. var find=this.GetFuturesInfo(upperSymbol);
  1757. if (!find) return 2;
  1758. if (find.Symbol=="SB") //Sugar No. 11 Futures 03:30 - 13:00
  1759. {
  1760. if (time>300 && time<1400) return 2;
  1761. }
  1762. else if (find.Symbol=="CT") //美棉 21:00-14:20
  1763. {
  1764. if( (time>=0 && time<=1500 ) || (time>=2000 && time<=2359) ) return 2;
  1765. return 1;
  1766. }
  1767. return 0;
  1768. }
  1769. }
  1770. //芝商所
  1771. function CBOTTimeData()
  1772. {
  1773. this.newMethod=NYMEXTimeData; //派生
  1774. this.newMethod();
  1775. delete this.newMethod;
  1776. //夏令时间
  1777. this.TIME_SPLIT=
  1778. [
  1779. {
  1780. Name:'8:00-2:20',
  1781. Data:
  1782. [
  1783. //6:00 - 5:00
  1784. { Start: 800, End: 2359 },
  1785. { Start: 0, End: 220 },
  1786. ],
  1787. Coordinate:
  1788. {
  1789. Full://完整模式
  1790. [
  1791. { Value: 800, Text: '8:00' },
  1792. { Value: 1000, Text: '10:00' },
  1793. { Value: 1200, Text: '12:00' },
  1794. { Value: 1400, Text: '14:00' },
  1795. { Value: 1600, Text: '16:00' },
  1796. { Value: 1800, Text: '18:00' },
  1797. { Value: 2000, Text: '20:00' },
  1798. { Value: 2200, Text: '22:00' },
  1799. { Value: 0, Text: '0:00' },
  1800. { Value: 200, Text: '2:00' }
  1801. ],
  1802. Simple: //简洁模式
  1803. [
  1804. { Value: 800, Text: '8:00' },
  1805. //{ Value: 1000, Text: '10:00' },
  1806. { Value: 1200, Text: '12:00' },
  1807. //{ Value: 1400, Text: '14:00' },
  1808. { Value: 1600, Text: '16:00' },
  1809. //{ Value: 1800, Text: '18:00' },
  1810. { Value: 2000, Text: '20:00' },
  1811. //{ Value: 2200, Text: '22:00' },
  1812. { Value: 0, Text: '0:00' }
  1813. //{ Value: 200, Text: '2:00' }
  1814. ],
  1815. Min: //最小模式
  1816. [
  1817. { Value: 800, Text: '8:00' },
  1818. { Value: 1800, Text: '18:00' },
  1819. { Value: 200, Text: '2:00' }
  1820. ]
  1821. }
  1822. },
  1823. {
  1824. Name:'8:00-2:45',
  1825. Data:
  1826. [
  1827. //6:00 - 5:00
  1828. { Start: 800, End: 2359 },
  1829. { Start: 0, End: 245 },
  1830. ],
  1831. Coordinate:
  1832. {
  1833. Full://完整模式
  1834. [
  1835. { Value: 800, Text: '8:00' },
  1836. { Value: 1000, Text: '10:00' },
  1837. { Value: 1200, Text: '12:00' },
  1838. { Value: 1400, Text: '14:00' },
  1839. { Value: 1600, Text: '16:00' },
  1840. { Value: 1800, Text: '18:00' },
  1841. { Value: 2000, Text: '20:00' },
  1842. { Value: 2200, Text: '22:00' },
  1843. { Value: 0, Text: '0:00' },
  1844. { Value: 200, Text: '2:00' }
  1845. ],
  1846. Simple: //简洁模式
  1847. [
  1848. { Value: 800, Text: '8:00' },
  1849. //{ Value: 1000, Text: '10:00' },
  1850. { Value: 1200, Text: '12:00' },
  1851. //{ Value: 1400, Text: '14:00' },
  1852. { Value: 1600, Text: '16:00' },
  1853. //{ Value: 1800, Text: '18:00' },
  1854. { Value: 2000, Text: '20:00' },
  1855. //{ Value: 2200, Text: '22:00' },
  1856. { Value: 0, Text: '0:00' }
  1857. //{ Value: 200, Text: '2:00' }
  1858. ],
  1859. Min: //最小模式
  1860. [
  1861. { Value: 800, Text: '8:00' },
  1862. { Value: 1800, Text: '18:00' },
  1863. { Value: 200, Text: '2:00' }
  1864. ]
  1865. }
  1866. },
  1867. {
  1868. Name:'6:00-5:00',
  1869. Data:
  1870. [
  1871. //6:00 - 5:00
  1872. { Start: 600, End: 2359 },
  1873. { Start: 0, End: 500 },
  1874. ],
  1875. Coordinate:
  1876. {
  1877. Full://完整模式
  1878. [
  1879. { Value: 600, Text: '6:00' },
  1880. { Value: 800, Text: '8:00' },
  1881. { Value: 1000, Text: '10:00' },
  1882. { Value: 1200, Text: '12:00' },
  1883. { Value: 1400, Text: '14:00' },
  1884. { Value: 1600, Text: '16:00' },
  1885. { Value: 1800, Text: '18:00' },
  1886. { Value: 2000, Text: '20:00' },
  1887. { Value: 2200, Text: '22:00' },
  1888. { Value: 0, Text: '0:00' },
  1889. { Value: 200, Text: '2:00' },
  1890. { Value: 400, Text: '4:00' },
  1891. ],
  1892. Simple: //简洁模式
  1893. [
  1894. { Value: 600, Text: '6:00' },
  1895. //{ Value: 800, Text: '8:00' },
  1896. { Value: 1000, Text: '10:00' },
  1897. //{ Value: 1200, Text: '12:00' },
  1898. { Value: 1400, Text: '14:00' },
  1899. //{ Value: 1600, Text: '16:00' },
  1900. { Value: 1800, Text: '18:00' },
  1901. //{ Value: 2000, Text: '20:00' },
  1902. { Value: 2200, Text: '22:00' },
  1903. //{ Value: 0, Text: '0:00' },
  1904. { Value: 200, Text: '2:00' }
  1905. //{ Value: 400, Text: '4:00' },
  1906. ],
  1907. Min: //最小模式
  1908. [
  1909. { Value: 600, Text: '6:00' },
  1910. { Value: 1800, Text: '18:00' },
  1911. { Value: 500, Text: '5:00' }
  1912. ]
  1913. }
  1914. }
  1915. ]
  1916. //标准时间
  1917. this.TIME_SPLIT2=
  1918. [
  1919. {
  1920. Name:'9:00-3:20',
  1921. Data:
  1922. [
  1923. { Start: 900, End: 2359 },
  1924. { Start: 0, End: 320 },
  1925. ],
  1926. Coordinate:
  1927. {
  1928. Full://完整模式
  1929. [
  1930. { Value: 900, Text: '9:00' },
  1931. { Value: 1100, Text: '11:00' },
  1932. { Value: 1300, Text: '13:00' },
  1933. { Value: 1500, Text: '15:00' },
  1934. { Value: 1700, Text: '17:00' },
  1935. { Value: 1900, Text: '19:00' },
  1936. { Value: 2100, Text: '21:00' },
  1937. { Value: 2300, Text: '23:00' },
  1938. { Value: 1, Text: '1:00' },
  1939. { Value: 300, Text: '3:00' }
  1940. ],
  1941. Simple: //简洁模式
  1942. [
  1943. { Value: 900, Text: '9:00' },
  1944. //{ Value: 1100, Text: '11:00' },
  1945. { Value: 1300, Text: '13:00' },
  1946. //{ Value: 1500, Text: '15:00' },
  1947. { Value: 1700, Text: '17:00' },
  1948. //{ Value: 1900, Text: '19:00' },
  1949. { Value: 2100, Text: '21:00' },
  1950. //{ Value: 2300, Text: '23:00' },
  1951. { Value: 1, Text: '1:00' }
  1952. //{ Value: 300, Text: '3:00' }
  1953. ],
  1954. Min: //最小模式
  1955. [
  1956. { Value: 900, Text: '9:00' },
  1957. { Value: 1900, Text: '19:00' },
  1958. { Value: 300, Text: '3:00' }
  1959. ]
  1960. }
  1961. },
  1962. {
  1963. Name:'9:00-3:45',
  1964. Data:
  1965. [
  1966. { Start: 900, End: 2359 },
  1967. { Start: 0, End: 345 },
  1968. ],
  1969. Coordinate:
  1970. {
  1971. Full://完整模式
  1972. [
  1973. { Value: 900, Text: '9:00' },
  1974. { Value: 1100, Text: '11:00' },
  1975. { Value: 1300, Text: '13:00' },
  1976. { Value: 1500, Text: '15:00' },
  1977. { Value: 1700, Text: '17:00' },
  1978. { Value: 1900, Text: '19:00' },
  1979. { Value: 2100, Text: '21:00' },
  1980. { Value: 2300, Text: '23:00' },
  1981. { Value: 1, Text: '1:00' },
  1982. { Value: 300, Text: '3:00' }
  1983. ],
  1984. Simple: //简洁模式
  1985. [
  1986. { Value: 900, Text: '9:00' },
  1987. //{ Value: 1100, Text: '11:00' },
  1988. { Value: 1300, Text: '13:00' },
  1989. //{ Value: 1500, Text: '15:00' },
  1990. { Value: 1700, Text: '17:00' },
  1991. //{ Value: 1900, Text: '19:00' },
  1992. { Value: 2100, Text: '21:00' },
  1993. //{ Value: 2300, Text: '23:00' },
  1994. { Value: 1, Text: '1:00' }
  1995. //{ Value: 300, Text: '3:00' }
  1996. ],
  1997. Min: //最小模式
  1998. [
  1999. { Value: 900, Text: '9:00' },
  2000. { Value: 1900, Text: '19:00' },
  2001. { Value: 300, Text: '3:00' }
  2002. ]
  2003. }
  2004. },
  2005. {
  2006. Name:'7:00-6:00',
  2007. Data:
  2008. [
  2009. { Start: 700, End: 2359 },
  2010. { Start: 0, End: 600 },
  2011. ],
  2012. Coordinate:
  2013. {
  2014. Full://完整模式
  2015. [
  2016. { Value: 700, Text: '7:00' },
  2017. { Value: 900, Text: '9:00' },
  2018. { Value: 1100, Text: '11:00' },
  2019. { Value: 1300, Text: '13:00' },
  2020. { Value: 1500, Text: '15:00' },
  2021. { Value: 1700, Text: '17:00' },
  2022. { Value: 1900, Text: '19:00' },
  2023. { Value: 2100, Text: '21:00' },
  2024. { Value: 2300, Text: '23:00' },
  2025. { Value: 1, Text: '1:00' },
  2026. { Value: 300, Text: '3:00' },
  2027. { Value: 500, Text: '5:00' }
  2028. ],
  2029. Simple: //简洁模式
  2030. [
  2031. { Value: 700, Text: '7:00' },
  2032. //{ Value: 900, Text: '9:00' },
  2033. { Value: 1100, Text: '11:00' },
  2034. //{ Value: 1300, Text: '13:00' },
  2035. { Value: 1500, Text: '15:00' },
  2036. //{ Value: 1700, Text: '17:00' },
  2037. { Value: 1900, Text: '19:00' },
  2038. //{ Value: 2100, Text: '21:00' },
  2039. { Value: 2300, Text: '23:00' },
  2040. //{ Value: 1, Text: '1:00' },
  2041. { Value: 300, Text: '3:00' }
  2042. //{ Value: 500, Text: '5:00' }
  2043. ],
  2044. Min: //最小模式
  2045. [
  2046. { Value: 700, Text: '7:00' },
  2047. { Value: 1800, Text: '18:00' },
  2048. { Value: 500, Text: '5:00' }
  2049. ]
  2050. }
  2051. }
  2052. ]
  2053. this.FUTURES_LIST=
  2054. [
  2055. { Symbol:"ZC", Decimal:2, Time:0 }, //玉米
  2056. { Symbol:"XC", Decimal:2, Time:1 }, //迷你玉米
  2057. { Symbol:"ZS", Decimal:2, Time:0 }, //大豆
  2058. { Symbol:"XK", Decimal:2, Time:1 }, //迷你大豆
  2059. { Symbol:"ZL", Decimal:2, Time:0 }, //豆油
  2060. { Symbol:"ZR", Decimal:2, Time:0 }, //稻谷
  2061. { Symbol:"ZO", Decimal:2, Time:0 }, //燕麦
  2062. { Symbol:"ZW", Decimal:2, Time:0 }, //小麦
  2063. { Symbol:"XW", Decimal:2, Time:1 }, //迷你小麦
  2064. { Symbol:"ZM", Decimal:1, Time:0 }, //豆粕
  2065. { Symbol:"EH", Decimal:3, Time:2 }, //乙醇
  2066. { Symbol:"YM", Decimal:0, Time:2 }, //小型道指
  2067. { Symbol:"ES", Decimal:2, Time:2 }, //小型标普
  2068. { Symbol:"NQ", Decimal:2, Time:2 }, //小型纳指
  2069. { Symbol:"TY", Decimal:4, Time:2 }, //10年美国债
  2070. { Symbol:"TU", Decimal:4, Time:2 }, //2年美国债
  2071. { Symbol:"FV", Decimal:4, Time:2 }, //5年美国债
  2072. { Symbol:"US", Decimal:4, Time:2 }, //30年美国债
  2073. { Symbol:"UL", Decimal:4, Time:2 }, //超国债
  2074. ]
  2075. this.MarketSuffix=".CBOT";
  2076. }
  2077. function LMETimeData()
  2078. {
  2079. this.newMethod=NYMEXTimeData; //派生
  2080. this.newMethod();
  2081. delete this.newMethod;
  2082. //标准时间
  2083. this.TIME_SPLIT=
  2084. [
  2085. {
  2086. Name:'LME 9:00-3:00',
  2087. Data:
  2088. [
  2089. { Start: 900, End: 2359 },
  2090. { Start: 0, End: 300 },
  2091. ],
  2092. Coordinate:
  2093. {
  2094. Full://完整模式
  2095. [
  2096. { Value: 900, Text: '9:00' },
  2097. { Value: 1100, Text: '11:00' },
  2098. { Value: 1300, Text: '13:00' },
  2099. { Value: 1500, Text: '15:00' },
  2100. { Value: 1700, Text: '17:00' },
  2101. { Value: 1900, Text: '19:00' },
  2102. { Value: 2100, Text: '21:00' },
  2103. { Value: 2300, Text: '23:00' },
  2104. { Value: 100, Text: '1:00' },
  2105. { Value: 300, Text: '3:00' }
  2106. ],
  2107. Simple: //简洁模式
  2108. [
  2109. { Value: 900, Text: '9:00' },
  2110. //{ Value: 1100, Text: '11:00' },
  2111. { Value: 1300, Text: '13:00' },
  2112. //{ Value: 1500, Text: '15:00' },
  2113. { Value: 1700, Text: '17:00' },
  2114. //{ Value: 1900, Text: '19:00' },
  2115. { Value: 2100, Text: '21:00' },
  2116. //{ Value: 2300, Text: '23:00' },
  2117. { Value: 100, Text: '1:00' }
  2118. // { Value: 300, Text: '3:00' }
  2119. ],
  2120. Min: //最小模式
  2121. [
  2122. { Value: 900, Text: '9:00' },
  2123. { Value: 1800, Text: '18:00' },
  2124. { Value: 300, Text: '3:00' }
  2125. ]
  2126. }
  2127. }
  2128. ]
  2129. //夏令
  2130. this.TIME_SPLIT=
  2131. [
  2132. {
  2133. Name:'LME 8:00-2:00',
  2134. Data:
  2135. [
  2136. { Start: 800, End: 2359 },
  2137. { Start: 0, End: 200 },
  2138. ],
  2139. Coordinate:
  2140. {
  2141. Full://完整模式
  2142. [
  2143. { Value: 800, Text: '8:00' },
  2144. { Value: 1000, Text: '10:00' },
  2145. { Value: 1200, Text: '12:00' },
  2146. { Value: 1400, Text: '14:00' },
  2147. { Value: 1600, Text: '16:00' },
  2148. { Value: 1800, Text: '18:00' },
  2149. { Value: 2000, Text: '20:00' },
  2150. { Value: 2200, Text: '22:00' },
  2151. { Value: 0, Text: '0:00' },
  2152. { Value: 200, Text: '2:00' }
  2153. ],
  2154. Simple: //简洁模式
  2155. [
  2156. { Value: 800, Text: '8:00' },
  2157. //{ Value: 1000, Text: '10:00' },
  2158. { Value: 1200, Text: '12:00' },
  2159. //{ Value: 1400, Text: '14:00' },
  2160. { Value: 1600, Text: '16:00' },
  2161. //{ Value: 1800, Text: '18:00' },
  2162. { Value: 2000, Text: '20:00' },
  2163. //{ Value: 2200, Text: '22:00' },
  2164. { Value: 0, Text: '0:00' }
  2165. //{ Value: 200, Text: '2:00' }
  2166. ],
  2167. Min: //最小模式
  2168. [
  2169. { Value: 800, Text: '8:00' },
  2170. { Value: 1800, Text: '18:00' },
  2171. { Value: 200, Text: '2:00' }
  2172. ]
  2173. }
  2174. }
  2175. ]
  2176. this.FUTURES_LIST=
  2177. [
  2178. { Symbol:"SND", Decimal:0, Time:0 }, //综合锡03
  2179. { Symbol:"AHD", Decimal:2, Time:0 }, //综合铝03
  2180. { Symbol:"PBD", Decimal:2, Time:0 }, //综合铅03
  2181. { Symbol:"ZSD", Decimal:2, Time:0 }, //综合锌03
  2182. { Symbol:"CAD", Decimal:2, Time:0 }, //综合铜03
  2183. { Symbol:"NID", Decimal:0, Time:0 }, //综合镍03
  2184. ]
  2185. this.MarketSuffix=".LME";
  2186. }
  2187. var g_MinuteTimeStringData = new MinuteTimeStringData();
  2188. var g_MinuteCoordinateData = new MinuteCoordinateData();
  2189. var g_FuturesTimeData = new FuturesTimeData();
  2190. var g_NYMEXTimeData = new NYMEXTimeData();
  2191. var g_COMEXTimeData=new COMEXTimeData();
  2192. var g_NYBOTTimeData=new NYBOTTimeData();
  2193. var g_CBOTTimeData=new CBOTTimeData();
  2194. var g_LMETimeData=new LMETimeData();
  2195. function GetfloatPrecision(symbol) //获取小数位数
  2196. {
  2197. var defaultfloatPrecision = 2; //默认2位
  2198. if (!symbol) return defaultfloatPrecision;
  2199. var upperSymbol = symbol.toUpperCase();
  2200. //全部由外部控制
  2201. if (typeof(MARKET_SUFFIX_NAME.GetCustomDecimal)=='function') return MARKET_SUFFIX_NAME.GetCustomDecimal(upperSymbol);
  2202. if (MARKET_SUFFIX_NAME.IsSHSZFund(upperSymbol)) defaultfloatPrecision = 3; //基金3位小数
  2203. else if (MARKET_SUFFIX_NAME.IsSHO(upperSymbol)) defaultfloatPrecision = MARKET_SUFFIX_NAME.GetSHODecimal(upperSymbol);
  2204. else if (MARKET_SUFFIX_NAME.IsChinaFutures(upperSymbol)) defaultfloatPrecision = g_FuturesTimeData.GetDecimal(upperSymbol); //期货小数位数读配置
  2205. else if (MARKET_SUFFIX_NAME.IsFHK(upperSymbol)) defaultfloatPrecision = MARKET_SUFFIX_NAME.GetFHKDecimal(upperSymbol);
  2206. else if (MARKET_SUFFIX_NAME.IsFTSE(upperSymbol)) defaultfloatPrecision = MARKET_SUFFIX_NAME.GetFTSEDecimal(upperSymbol);
  2207. else if (MARKET_SUFFIX_NAME.IsBIT(upperSymbol)) defaultfloatPrecision = MARKET_SUFFIX_NAME.GetBITDecimal(upperSymbol);
  2208. else if (MARKET_SUFFIX_NAME.IsET(upperSymbol)) defaultfloatPrecision = MARKET_SUFFIX_NAME.GetETDecimal(upperSymbol);
  2209. else if (MARKET_SUFFIX_NAME.IsNYMEX(upperSymbol)) defaultfloatPrecision=g_NYMEXTimeData.GetDecimal(upperSymbol);
  2210. else if (MARKET_SUFFIX_NAME.IsCOMEX(upperSymbol)) defaultfloatPrecision=g_COMEXTimeData.GetDecimal(upperSymbol);
  2211. else if (MARKET_SUFFIX_NAME.IsNYBOT(upperSymbol)) defaultfloatPrecision=g_NYBOTTimeData.GetDecimal(upperSymbol);
  2212. else if (MARKET_SUFFIX_NAME.IsCBOT(upperSymbol)) defaultfloatPrecision=g_CBOTTimeData.GetDecimal(upperSymbol);
  2213. else defaultfloatPrecision=MARKET_SUFFIX_NAME.GetDefaultDecimal(upperSymbol);
  2214. return defaultfloatPrecision;
  2215. }
  2216. //导出统一使用JSCommon命名空间名
  2217. module.exports =
  2218. {
  2219. JSCommonCoordinateData:
  2220. {
  2221. MinuteCoordinateData: g_MinuteCoordinateData,
  2222. MinuteTimeStringData: g_MinuteTimeStringData,
  2223. MARKET_SUFFIX_NAME: MARKET_SUFFIX_NAME,
  2224. GetfloatPrecision: GetfloatPrecision
  2225. },
  2226. JSCommonCoordinateData_MARKET_SUFFIX_NAME: MARKET_SUFFIX_NAME,
  2227. JSCommonCoordinateData_Global_FuturesTimeData: g_FuturesTimeData,
  2228. JSCommonCoordinateData_Global_NYMEXTimeData: g_NYMEXTimeData,
  2229. JSCommonCoordinateData_Global_COMEXTimeData: g_COMEXTimeData,
  2230. JSCommonCoordinateData_Global_NYBOTTimeData: g_NYBOTTimeData,
  2231. JSCommonCoordinateData_Global_LMETimeData: g_LMETimeData,
  2232. JSCommonCoordinateData_Global_CBOTTimeData: g_CBOTTimeData,
  2233. };