hqchart 1.1.12463 → 1.1.12472

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.
@@ -9149,6 +9149,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9149
9149
  {
9150
9150
  this.ChartCorssCursor.LastPoint=this.LastPoint;
9151
9151
  this.ChartCorssCursor.CursorIndex=this.CursorIndex;
9152
+ if (this.EnableNewIndex)
9153
+ {
9154
+ this.ChartCorssCursor.CorssCursorIndex=this.CorssCursorIndex;
9155
+ this.ChartCorssCursor.EnableNewIndex=this.EnableNewIndex;
9156
+ }
9152
9157
 
9153
9158
  var bRestoreCanvas=false;
9154
9159
  if (this.CorssCursorCanvas) //独立的十字光标层
@@ -9511,6 +9516,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
9511
9516
  {
9512
9517
  this.ChartCorssCursor.LastPoint=this.LastPoint;
9513
9518
  this.ChartCorssCursor.CursorIndex=this.CursorIndex;
9519
+ if (this.EnableNewIndex)
9520
+ {
9521
+ this.ChartCorssCursor.CorssCursorIndex=this.CorssCursorIndex;
9522
+ this.ChartCorssCursor.EnableNewIndex=this.EnableNewIndex;
9523
+ }
9514
9524
 
9515
9525
  var bRestoreCanvas=false;
9516
9526
  if (this.CorssCursorCanvas) //独立的十字光标层
@@ -12562,6 +12572,30 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12562
12572
 
12563
12573
  return aryData;
12564
12574
  }
12575
+
12576
+ //重置指标计数器
12577
+ this.ClearIndexRunCount=function()
12578
+ {
12579
+ //主图指标
12580
+ for(var i=0;i<this.WindowIndex.length;++i)
12581
+ {
12582
+ var item=this.WindowIndex[i];
12583
+ if (!item) continue;
12584
+
12585
+ item.RunCount=0;
12586
+ }
12587
+
12588
+ //叠加指标
12589
+ for(var i=0;i<this.Frame.SubFrame.length;++i)
12590
+ {
12591
+ var item=this.Frame.SubFrame[i];
12592
+ for(var j=0; j<item.OverlayIndex.length; ++j)
12593
+ {
12594
+ var overlayItem=item.OverlayIndex[j];
12595
+ if (overlayItem.Script) overlayItem.Script.RunCount=0;
12596
+ }
12597
+ }
12598
+ }
12565
12599
  }
12566
12600
 
12567
12601
  function GetDevicePixelRatio()
@@ -49151,6 +49185,9 @@ function ChartCorssCursor()
49151
49185
  this.IsFixXLastTime=false; //是否修正X轴,超出当前时间的,X轴调整到当前最后的时间.
49152
49186
  this.IsDrawXRangeBG=false; //是否绘制十字光标背景
49153
49187
 
49188
+ this.EnableNewIndex=false; //分时图是否使用最新的索引结构 (由外部chart容器传入)
49189
+ this.CorssCursorIndex; //分时图新版本的索引结构 (由外部chart容器传入)
49190
+
49154
49191
  this.PointX;
49155
49192
  this.PointY;
49156
49193
 
@@ -49208,20 +49245,34 @@ function ChartCorssCursor()
49208
49245
 
49209
49246
  this.GetMinuteCloseYPoint=function(index)
49210
49247
  {
49211
- if (!IFrameSplitOperator.IsNumber(index)) return null;
49212
- index=parseInt(index);
49213
- if (!this.StringFormatX.Data) return null;
49214
- var data = this.StringFormatX.Data;
49215
- if (!data.Data || data.Data.length <= 0) return null;
49216
- var dataIndex = data.DataOffset + index;
49217
- if (dataIndex >= data.Data.length) dataIndex = data.Data.length - 1;
49218
- if (dataIndex < 0) return null;
49248
+ if (this.EnableNewIndex && this.CorssCursorIndex)
49249
+ {
49250
+ if (!this.StringFormatX || !this.StringFormatX.GetMinuteCloseYPoint) return null;
49251
+
49252
+ var closeData=this.StringFormatX.GetMinuteCloseYPoint(this.CorssCursorIndex);
49253
+ if (!closeData) return null;
49254
+
49255
+ this.Close=closeData.Price;
49256
+ return closeData.Y;
49257
+ }
49258
+ else
49259
+ {
49219
49260
 
49220
- var close = data.Data[dataIndex];
49221
- if (!IFrameSplitOperator.IsNumber(index)) return null;
49222
- this.Close=close;
49223
- var yPoint = this.Frame.GetYFromData(this.Close);
49224
- return yPoint;
49261
+ if (!IFrameSplitOperator.IsNumber(index)) return null;
49262
+ index=parseInt(index);
49263
+ if (!this.StringFormatX.Data) return null;
49264
+ var data = this.StringFormatX.Data;
49265
+ if (!data.Data || data.Data.length <= 0) return null;
49266
+ var dataIndex = data.DataOffset + index;
49267
+ if (dataIndex >= data.Data.length) dataIndex = data.Data.length - 1;
49268
+ if (dataIndex < 0) return null;
49269
+
49270
+ var close = data.Data[dataIndex];
49271
+ if (!IFrameSplitOperator.IsNumber(index)) return null;
49272
+ this.Close=close;
49273
+ var yPoint = this.Frame.GetYFromData(this.Close);
49274
+ return yPoint;
49275
+ }
49225
49276
  }
49226
49277
 
49227
49278
  this.GetDateTimeRange=function(index, option)
@@ -50888,6 +50939,7 @@ function HQMinuteTimeStringFormat()
50888
50939
  this.newMethod();
50889
50940
  delete this.newMethod;
50890
50941
 
50942
+ this.ClassName="HQMinuteTimeStringFormat";
50891
50943
  this.Frame;
50892
50944
  this.Symbol;
50893
50945
  this.Point;
@@ -51019,6 +51071,88 @@ function HQMinuteTimeStringFormat()
51019
51071
 
51020
51072
  return true;
51021
51073
  }
51074
+
51075
+ this.GetMinuteCloseYPoint=function(cursorIndexData)
51076
+ {
51077
+ var type=cursorIndexData.Type;
51078
+ if (type==1 || type==2 || type==3) //单日 1=主图 2=盘前 3=盘后
51079
+ {
51080
+ if (type==1)
51081
+ {
51082
+ if (!this.Data || this.Data.Data.length <= 0) return null;
51083
+ var index=cursorIndexData.DataIndex;
51084
+ if (index<0 || index>=this.Data.Data.length) index=this.Data.Data.length-1;
51085
+
51086
+ var close = this.Data.Data[index];
51087
+ var yPoint = this.Frame.GetYFromData(close);
51088
+ return { Price:close, Y:yPoint };
51089
+ }
51090
+ else if (type==2)
51091
+ {
51092
+ if (!this.BeforeOpenData || !this.BeforeOpenData.Data) return false;
51093
+ if (cursorIndexData.DataIndex<0 || cursorIndexData.DataIndex>=this.BeforeOpenData.Data.length) return null;
51094
+ var item=this.BeforeOpenData.Data[cursorIndexData.DataIndex];
51095
+
51096
+ var close=item.Price;
51097
+ var yPoint = this.Frame.GetYFromData(close);
51098
+ return { Price:close, Y:yPoint };
51099
+ }
51100
+ else if (type==3)
51101
+ {
51102
+ if (!this.AfterCloseData || !this.AfterCloseData.Data) return false;
51103
+ if (cursorIndexData.DataIndex<0 || cursorIndexData.DataIndex>=this.AfterCloseData.Data.length) return null;
51104
+ var item=this.AfterCloseData.Data[cursorIndexData.DataIndex];
51105
+
51106
+ var close=item.Price;
51107
+ var yPoint = this.Frame.GetYFromData(close);
51108
+ return { Price:close, Y:yPoint };
51109
+ }
51110
+ }
51111
+ else if (type==10 || type==20 || type==30) //多日 10=主图 20=盘前 30=盘后
51112
+ {
51113
+ if (type==10)
51114
+ {
51115
+ if (!this.Data || this.Data.Data.length <= 0) return null;
51116
+ var index=this.Frame.MinuteCount*cursorIndexData.DayIndex+cursorIndexData.DataIndex;
51117
+ if (index<0 || index>=this.Data.Data.length) index=this.Data.Data.length-1;
51118
+
51119
+ var close = this.Data.Data[index];
51120
+ var yPoint = this.Frame.GetYFromData(close);
51121
+ return { Price:close, Y:yPoint };
51122
+ }
51123
+ else if (type==20)
51124
+ {
51125
+ var multiDayBeforeOpenData=this.GetMultiDayBeforeOpenData();
51126
+ if (!multiDayBeforeOpenData) return null;
51127
+ if (cursorIndexData.DayIndex<0 || cursorIndexData.DayIndex>=multiDayBeforeOpenData.length) return null;
51128
+
51129
+ var dayItem=multiDayBeforeOpenData[cursorIndexData.DayIndex];
51130
+ if (cursorIndexData.DataIndex<0 || cursorIndexData.DataIndex>=dayItem.Data.length) return null;
51131
+ var item=dayItem.Data[cursorIndexData.DataIndex];
51132
+
51133
+ var close=item.Price;
51134
+ var yPoint = this.Frame.GetYFromData(close);
51135
+ return { Price:close, Y:yPoint };
51136
+ }
51137
+ else if (type==30)
51138
+ {
51139
+ var multiDayAfterCloseData=this.GetMultiDayAfterCloseData();
51140
+ if (!multiDayAfterCloseData) return null;
51141
+ if (cursorIndexData.DayIndex<0 || cursorIndexData.DayIndex>=multiDayAfterCloseData.length) return null;
51142
+
51143
+ var dayItem=multiDayAfterCloseData[cursorIndexData.DayIndex];
51144
+ if (cursorIndexData.DataIndex<0 || cursorIndexData.DataIndex>=dayItem.Data.length) return null;
51145
+ var item=dayItem.Data[cursorIndexData.DataIndex];
51146
+
51147
+ var close=item.Price;
51148
+ var yPoint = this.Frame.GetYFromData(close);
51149
+ return { Price:close, Y:yPoint };
51150
+ }
51151
+ }
51152
+
51153
+
51154
+ return null;
51155
+ }
51022
51156
  }
51023
51157
 
51024
51158
 
@@ -68429,22 +68563,27 @@ function KLineChartContainer(uielement,OffscreenElement)
68429
68563
  {
68430
68564
  if (!this.WindowIndex[windowIndex]) return;
68431
68565
 
68432
- if (typeof(this.WindowIndex[windowIndex].RequestData)=="function") //数据需要另外下载的.
68566
+ var item=this.WindowIndex[windowIndex];
68567
+ if (typeof(item.RequestData)=="function") //数据需要另外下载的.
68433
68568
  {
68434
- this.WindowIndex[windowIndex].RequestData(this,windowIndex,hisData, option);
68569
+ item.RequestData(this,windowIndex,hisData, option);
68435
68570
  return;
68436
68571
  }
68437
- if (typeof(this.WindowIndex[windowIndex].ExecuteScript)=='function')
68572
+
68573
+ if (typeof(item.ExecuteScript)=='function')
68438
68574
  {
68439
- this.WindowIndex[windowIndex].ExecuteScript(this,windowIndex,hisData);
68575
+ if (option && option.CheckRunCount)
68576
+ if (item.IsExcessRunCount()) return;
68577
+
68578
+ item.ExecuteScript(this,windowIndex,hisData);
68440
68579
  return;
68441
68580
  }
68442
68581
 
68443
- this.WindowIndex[windowIndex].BindData(this,windowIndex,hisData);
68582
+ item.BindData(this,windowIndex,hisData);
68444
68583
  }
68445
68584
 
68446
68585
  //叠加指标
68447
- this.BindOverlayIndexData=function(overlayItem, windowIndex, hisData)
68586
+ this.BindOverlayIndexData=function(overlayItem, windowIndex, hisData, option)
68448
68587
  {
68449
68588
  if (!overlayItem.Script) return;
68450
68589
 
@@ -68456,6 +68595,9 @@ function KLineChartContainer(uielement,OffscreenElement)
68456
68595
 
68457
68596
  if (typeof(overlayItem.Script.ExecuteScript)=='function')
68458
68597
  {
68598
+ if (option && option.CheckRunCount)
68599
+ if (overlayItem.Script.IsExcessRunCount()) return;
68600
+
68459
68601
  overlayItem.Script.ExecuteScript(this,windowIndex,hisData);
68460
68602
  return;
68461
68603
  }
@@ -68621,7 +68763,7 @@ function KLineChartContainer(uielement,OffscreenElement)
68621
68763
  });
68622
68764
  }
68623
68765
 
68624
- this.BindAllOverlayIndexData=function(hisData)
68766
+ this.BindAllOverlayIndexData=function(hisData, option)
68625
68767
  {
68626
68768
  if (!this.Frame || !this.Frame.SubFrame) return;
68627
68769
 
@@ -68632,7 +68774,7 @@ function KLineChartContainer(uielement,OffscreenElement)
68632
68774
  for(var j in item.OverlayIndex)
68633
68775
  {
68634
68776
  var overlayItem=item.OverlayIndex[j];
68635
- this.BindOverlayIndexData(overlayItem,i,hisData)
68777
+ this.BindOverlayIndexData(overlayItem,i,hisData,option)
68636
68778
  }
68637
68779
  }
68638
68780
  }
@@ -69315,7 +69457,7 @@ function KLineChartContainer(uielement,OffscreenElement)
69315
69457
 
69316
69458
  for(var i=0; i<this.Frame.SubFrame.length; ++i)
69317
69459
  {
69318
- this.BindIndexData(i,bindData);
69460
+ this.BindIndexData(i,bindData, { CheckRunCount:true });
69319
69461
  }
69320
69462
 
69321
69463
  //刷新画图
@@ -69328,7 +69470,7 @@ function KLineChartContainer(uielement,OffscreenElement)
69328
69470
  this.SendKLineUpdateEvent(bindData);
69329
69471
 
69330
69472
  //叠加指标计算
69331
- this.BindAllOverlayIndexData(bindData);
69473
+ this.BindAllOverlayIndexData(bindData,{ CheckRunCount:true });
69332
69474
 
69333
69475
  if (this.mapEvent.has(JSCHART_EVENT_ID.ON_RECV_REALTIME_DATA))
69334
69476
  {
@@ -70053,6 +70195,7 @@ function KLineChartContainer(uielement,OffscreenElement)
70053
70195
  this.ClearRectSelect(true);
70054
70196
  this.Frame.ClearUpDonwFrameYData();
70055
70197
  this.ClearCustomKLine();
70198
+
70056
70199
 
70057
70200
  var kLineDrawType=this.GetKLineDrawType();
70058
70201
  if (kLineDrawType==10 || kLineDrawType==11 || kLineDrawType==12 || kLineDrawType==16) isDataTypeChange=true;
@@ -70074,6 +70217,7 @@ function KLineChartContainer(uielement,OffscreenElement)
70074
70217
 
70075
70218
  if (isDataTypeChange==false && !this.IsApiPeriod)
70076
70219
  {
70220
+ this.ClearIndexRunCount();
70077
70221
  this.Update( {UpdateCursorIndexType:2} ); //更新的时候 取消显示十字光标
70078
70222
  return;
70079
70223
  }
@@ -70086,6 +70230,7 @@ function KLineChartContainer(uielement,OffscreenElement)
70086
70230
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangePeriod'); //切换周期先停止更新
70087
70231
  this.ResetScrollBar();
70088
70232
  this.ResetOverlaySymbolStatus();
70233
+ this.ClearIndexRunCount();
70089
70234
  this.RequestHistoryData(); //请求日线数据
70090
70235
  //this.ReqeustKLineInfoData();
70091
70236
  }
@@ -70095,6 +70240,7 @@ function KLineChartContainer(uielement,OffscreenElement)
70095
70240
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangePeriod'); //切换周期先停止更新
70096
70241
  this.ResetScrollBar();
70097
70242
  this.ResetOverlaySymbolStatus();
70243
+ this.ClearIndexRunCount();
70098
70244
  this.ReqeustHistoryMinuteData(); //请求分钟数据
70099
70245
  }
70100
70246
  else if (ChartData.IsTickPeriod(this.Period))
@@ -70102,6 +70248,7 @@ function KLineChartContainer(uielement,OffscreenElement)
70102
70248
  this.CancelAutoUpdate(); //先停止定时器
70103
70249
  this.AutoUpdateEvent(false,'KLineChartContainer::ChangePeriod');
70104
70250
  this.ResetScrollBar();
70251
+ this.ClearIndexRunCount();
70105
70252
  this.RequestTickData(); //请求分笔数据
70106
70253
  }
70107
70254
  }
@@ -71402,6 +71549,7 @@ function KLineChartContainer(uielement,OffscreenElement)
71402
71549
  this.ClearKLineCaluate();
71403
71550
  this.HideTooltip();
71404
71551
  this.ResetScrollBar();
71552
+ this.ClearIndexRunCount();
71405
71553
 
71406
71554
  this.Symbol=symbol;
71407
71555
  if (!symbol)
@@ -76499,6 +76647,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
76499
76647
  this.ClearIndexPaint(); //清空指标
76500
76648
  this.ResetOverlaySymbolStatus();
76501
76649
  this.ReloadChartDrawPicture();
76650
+ this.ClearIndexRunCount();
76502
76651
 
76503
76652
  if (option)
76504
76653
  {
@@ -77887,7 +78036,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
77887
78036
  }
77888
78037
  }
77889
78038
 
77890
- this.BindIndexData=function(windowIndex,hisData)
78039
+ this.BindIndexData=function(windowIndex, hisData, option)
77891
78040
  {
77892
78041
  if (!this.WindowIndex[windowIndex]) return;
77893
78042
 
@@ -78332,7 +78481,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78332
78481
  }
78333
78482
 
78334
78483
  //计算叠加指标
78335
- this.BindAllOverlayIndexData=function(hisData)
78484
+ this.BindAllOverlayIndexData=function(hisData, option)
78336
78485
  {
78337
78486
  if (!this.Frame || !this.Frame.SubFrame) return;
78338
78487
 
@@ -78343,13 +78492,13 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
78343
78492
  for(var j in item.OverlayIndex)
78344
78493
  {
78345
78494
  var overlayItem=item.OverlayIndex[j];
78346
- this.BindOverlayIndexData(overlayItem,i,hisData)
78495
+ this.BindOverlayIndexData(overlayItem,i,hisData,option)
78347
78496
  }
78348
78497
  }
78349
78498
  }
78350
78499
 
78351
78500
  //叠加指标
78352
- this.BindOverlayIndexData=function(overlayItem, windowIndex, hisData)
78501
+ this.BindOverlayIndexData=function(overlayItem, windowIndex, hisData, option)
78353
78502
  {
78354
78503
  if (!overlayItem.Script) return;
78355
78504
 
@@ -111267,6 +111416,9 @@ function ScriptIndex(name,script,args,option)
111267
111416
  this.IsSync=false; //是否是同步计算 (无数据请求)
111268
111417
  this.IsShow=true; //是否显示图形
111269
111418
 
111419
+ this.RunCount=0; //已执行次数
111420
+ this.MaxRunCount=-1; //最大执行次数 -1=无限
111421
+
111270
111422
  if (option)
111271
111423
  {
111272
111424
  if (option.FloatPrecision>=0) this.FloatPrecision=option.FloatPrecision;
@@ -111282,6 +111434,7 @@ function ScriptIndex(name,script,args,option)
111282
111434
  if (option.OutName) this.OutName=option.OutName;
111283
111435
  if (IFrameSplitOperator.IsNumber(option.YSplitType)) this.YSplitType=option.YSplitType;
111284
111436
  if (IFrameSplitOperator.IsBool(option.IsSync)) this.IsSync=option.IsSync;
111437
+ if (IFrameSplitOperator.IsNumber(option.MaxRunCount)) this.MaxRunCount=option.MaxRunCount;
111285
111438
 
111286
111439
  if (option.Debug)
111287
111440
  {
@@ -111351,6 +111504,14 @@ function ScriptIndex(name,script,args,option)
111351
111504
  }
111352
111505
  }
111353
111506
 
111507
+ //是否超出执行的最大次数
111508
+ this.IsExcessRunCount=function()
111509
+ {
111510
+ if (this.MaxRunCount<=0) return false; //没有限制
111511
+
111512
+ return this.RunCount>=this.MaxRunCount;
111513
+ }
111514
+
111354
111515
  this.ExecuteScript=function(hqChart,windowIndex,hisData)
111355
111516
  {
111356
111517
  this.OutVar=[];
@@ -111420,6 +111581,7 @@ function ScriptIndex(name,script,args,option)
111420
111581
  return;
111421
111582
  }
111422
111583
 
111584
+ ++this.RunCount;
111423
111585
  let code=this.Script;
111424
111586
  let run=JSComplier.Execute(code,option,hqChart.ScriptErrorCallback);
111425
111587
  }
@@ -114463,6 +114625,8 @@ function APIScriptIndex(name,script,args,option, isOverlay)
114463
114625
  if (hqDataType==HQ_DATA_TYPE.MULTIDAY_MINUTE_ID || hqDataType==HQ_DATA_TYPE.MINUTE_ID) postData.daycount=hqChart.DayCount;
114464
114626
  this.HQDataType=hqDataType;
114465
114627
 
114628
+ ++this.RunCount;
114629
+
114466
114630
  if (hqChart.NetworkFilter)
114467
114631
  {
114468
114632
  var obj=
@@ -127839,6 +128003,115 @@ function ScrollBarBGChart()
127839
128003
  }
127840
128004
 
127841
128005
 
128006
+ ///////////////////////////////////////////////////////////////////////////////////
128007
+ // 工作线程计算指标示例
128008
+ //
128009
+ //
128010
+ //////////////////////////////////////////////////////////////////////////////////
128011
+
128012
+ function HQChartScriptWorker()
128013
+ {
128014
+
128015
+ this.Create=function()
128016
+ {
128017
+ addEventListener('message', (obj)=>{ this.OnRecvMessage(obj); });
128018
+ }
128019
+
128020
+ this.NetworkFilter=function(data, callback, indexInfo)
128021
+ {
128022
+ JSConsole.Complier.Log(`[HQChartScriptWorker::NetworkFilter] [${data.Name}][${data.Explain}] data=`, data);
128023
+ //数据下载
128024
+ }
128025
+
128026
+ this.ExecuteScript=function(indexData, message)
128027
+ {
128028
+ var scriptObj={ };
128029
+
128030
+ if (indexData.Script)
128031
+ {
128032
+ scriptObj.Name=indexData.Name;
128033
+ scriptObj.ID=indexData.Index;
128034
+ scriptObj.Script=indexData.Script;
128035
+ }
128036
+ else
128037
+ {
128038
+ if (!indexData.Index) return false;
128039
+ var scriptData = new JSIndexScript();
128040
+ var finder = scriptData.Get(indexData.Index);
128041
+ if (!finder) return false;
128042
+
128043
+ scriptObj.ID=indexData.Index;
128044
+ scriptObj.Name=finder.Name;
128045
+ scriptObj.Script=finder.Script;
128046
+ scriptObj.Args=finder.Args;
128047
+ }
128048
+
128049
+ if (indexData.Args) scriptObj.Args=indexData.Args;
128050
+
128051
+ var indexInfo={ Name:scriptObj.Name, ID:scriptObj.ID, Script:scriptObj.Script, Args:scriptObj.Args, Guid:message.Guid };
128052
+ scriptObj.ErrorCallback=(error)=>{ this.OnExecuteError(error,indexInfo); };
128053
+ scriptObj.FinishCallback=(data, jsExectute)=>{ this.OnExecuteFinish(data, indexInfo, jsExectute); };
128054
+ scriptObj.NetworkFilter=(data, callback)=>{ this.NetworkFilter(data, callback, indexInfo); };
128055
+
128056
+ JSConsole.Complier.Log('[HQChartScriptWorker::ExecuteScript] scriptObj=',scriptObj);
128057
+
128058
+ var indexConsole=new ScriptIndexConsole(scriptObj);
128059
+
128060
+ var hisData=null;
128061
+ if (message && message.Data)
128062
+ {
128063
+ hisData=new ChartData();
128064
+ hisData.Data=message.Data;
128065
+ hisData.Right=message.Right;
128066
+ hisData.Period=message.Period;
128067
+ hisData.DataType=message.DataType; //0=日线 1=分钟
128068
+ hisData.Symbol=message.symbol;
128069
+ }
128070
+
128071
+ var stockObj=
128072
+ {
128073
+ HQDataType:HQ_DATA_TYPE.KLINE_ID,
128074
+ Stock: { Symbol:message.Symbol },
128075
+ Request: { MaxDataCount: 500, MaxMinuteDayCount:5 },
128076
+ Period:message.Period , Right:message.Right,
128077
+ Data:hisData
128078
+ };
128079
+
128080
+ if (IFrameSplitOperator.IsNumber(message.HQDataType)) stockObj.HQDataType=message.HQDataType;
128081
+
128082
+ indexConsole.ExecuteScript(stockObj);
128083
+ }
128084
+
128085
+ this.OnRecvMessage=function(message)
128086
+ {
128087
+ var data=message.data;
128088
+ if (!data) return;
128089
+
128090
+ if (data.ID==JSCHART_WORKER_MESSAGE_ID.EXECUTE_SCRIPT)
128091
+ {
128092
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.AryIndex)) return;
128093
+
128094
+ for(var i=0;i<data.AryIndex.length;++i)
128095
+ {
128096
+ var item=data.AryIndex[i];
128097
+ this.ExecuteScript(item,data);
128098
+ }
128099
+ }
128100
+ }
128101
+
128102
+ this.OnExecuteFinish=function(data, indexInfo, jsExectute)
128103
+ {
128104
+ var message={ Data:data, IndexInfo:indexInfo , ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT };
128105
+ postMessage(message);
128106
+ }
128107
+
128108
+ this.OnExecuteError=function(error,indexInfo)
128109
+ {
128110
+ var message={ IndexInfo:indexInfo, ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT, Error:error };
128111
+ postMessage(message);
128112
+ }
128113
+ }
128114
+
127842
128115
  /********************************************************************************
127843
128116
  * 版本信息输出
127844
128117
  *
@@ -127846,7 +128119,7 @@ function ScrollBarBGChart()
127846
128119
 
127847
128120
 
127848
128121
 
127849
- var HQCHART_VERSION="1.1.12464";
128122
+ var HQCHART_VERSION="1.1.12471";
127850
128123
 
127851
128124
  function PrintHQChartVersion()
127852
128125
  {
@@ -127976,5 +128249,8 @@ export default {
127976
128249
  JSCHART_DATA_FIELD_ID:JSCHART_DATA_FIELD_ID,
127977
128250
  JSCHART_WORKER_MESSAGE_ID:JSCHART_WORKER_MESSAGE_ID
127978
128251
  },
128252
+
128253
+
128254
+ HQChartScriptWorker:HQChartScriptWorker, //计算工作线程
127979
128255
 
127980
128256
  }
@@ -1,4 +1,4 @@
1
- copy ..\umychart.console.js+..\umychart.network.js+..\umychart.index.data.js+..\umychart.js+..\umychart.complier.js+..\umychart.style.js+..\umychart.deal.js+..\umychart.report.js+..\umychart.keyboard.js+..\umychart.scrollbar.js+..\umychart.version.js+umychart.vue.export.js ..\umychart.vue\umychart.vue.js /b
1
+ copy ..\umychart.console.js+..\umychart.network.js+..\umychart.index.data.js+..\umychart.js+..\umychart.complier.js+..\umychart.style.js+..\umychart.deal.js+..\umychart.report.js+..\umychart.keyboard.js+..\umychart.scrollbar.js+..\umychart.worker.js+..\umychart.version.js+umychart.vue.export.js ..\umychart.vue\umychart.vue.js /b
2
2
  copy ..\umychart.regressiontest.js+umychart.regressiontest.vue.export.js ..\umychart.vue\umychart.regressiontest.vue.js /b
3
3
  copy ..\umychart.listctrl.js+umychart.listctrl.vue.export.js ..\umychart.vue\umychart.listctrl.vue.js /b
4
4
 
@@ -105,5 +105,8 @@ export default {
105
105
  JSCHART_DATA_FIELD_ID:JSCHART_DATA_FIELD_ID,
106
106
  JSCHART_WORKER_MESSAGE_ID:JSCHART_WORKER_MESSAGE_ID
107
107
  },
108
+
109
+
110
+ HQChartScriptWorker:HQChartScriptWorker, //计算工作线程
108
111
 
109
112
  }
@@ -999,8 +999,11 @@ function DynamicMinuteTitlePainting()
999
999
 
1000
1000
  var item=data.Data;
1001
1001
  var defaultfloatPrecision = this.GetDecimal(this.Symbol); //价格小数位数
1002
+ var upperSymbol=this.Symbol.toUpperCase();
1003
+ var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol); //期货
1002
1004
  var aryText=[];
1003
1005
  var yClose=item.YClose;
1006
+ if (isFutures && IFrameSplitOperator.IsNumber(item.YClearing)) yClose=item.YClearing;
1004
1007
  if (this.IsShowName) aryText.push({ Text:this.Name, Color:this.NameColor });
1005
1008
 
1006
1009
  var text = IFrameSplitOperator.FormatDateTimeString(item.DateTime, this.IsShowDate ? 'YYYY-MM-DD HH-MM' : 'HH-MM');
@@ -271,11 +271,15 @@ var MARKET_SUFFIX_NAME=
271
271
 
272
272
  IsChinaFutures: function (upperSymbol) //是否是国内期货
273
273
  {
274
+ if (!upperSymbol) return false;
275
+
274
276
  return this.IsCFFEX(upperSymbol) || this.IsCZCE(upperSymbol) || this.IsDCE(upperSymbol) || this.IsSHFE(upperSymbol) || this.IsGZFE(upperSymbol) ;
275
277
  },
276
278
 
277
279
  IsFutures: function (upperSymbol) //是否是期货 包含国外的
278
280
  {
281
+ if (!upperSymbol) return false;
282
+
279
283
  return this.IsChinaFutures(upperSymbol) ||
280
284
  this.IsNYMEX(upperSymbol) || this.IsCOMEX(upperSymbol) || this.IsNYBOT(upperSymbol) || this.IsCBOT(upperSymbol) ||
281
285
  this.IsLME(upperSymbol);
@@ -455,8 +455,10 @@ function MinuteTooltipPaint()
455
455
  var upperSymbol;
456
456
  if (this.HQChart.Symbol) upperSymbol=this.HQChart.Symbol.toUpperCase();
457
457
  var defaultfloatPrecision = JSCommonCoordinateData.GetfloatPrecision(this.HQChart.Symbol);//价格小数位数
458
+ var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol); //期货
458
459
  this.YClose = this.KLineTitlePaint.YClose;
459
460
  this.YClose=item.YClose;
461
+ if (isFutures && IFrameSplitOperator.IsNumber(item.YClearing)) this.YClose=item.YClearing;
460
462
 
461
463
  var aryText=[];
462
464
  var result={ AryText:aryText };
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.12460";
8
+ var HQCHART_VERSION="1.1.12464";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {