hqchart 1.1.14947 → 1.1.14953

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.
@@ -11774,7 +11774,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11774
11774
  {
11775
11775
  //清空当前鼠标坐标
11776
11776
  this.LastPoint.X=null;
11777
- this.LastPoint.Y=null
11777
+ this.LastPoint.Y=null;
11778
11778
  this.HideTooltip();
11779
11779
  this.CloseTooltipDialog();
11780
11780
  }
@@ -11783,7 +11783,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11783
11783
  if (IFrameSplitOperator.IsNumber(data.X) && IFrameSplitOperator.IsNumber(data.Y))
11784
11784
  {
11785
11785
  //设置鼠标位置
11786
- if (this.LastPoint && !IFrameSplitOperator.IsNumber(this.LastPoint.X) && !IFrameSplitOperator.IsNumber(this.LastPoint.Y))
11786
+ if (this.LastPoint && (!IFrameSplitOperator.IsNumber(this.LastPoint.X) || !IFrameSplitOperator.IsNumber(this.LastPoint.Y)))
11787
11787
  {
11788
11788
  this.LastPoint.X=data.X;
11789
11789
  this.LastPoint.Y=data.Y;
@@ -35324,10 +35324,10 @@ function ChartMinuteVolumBar()
35324
35324
  var unit=this.GetVolUnit();
35325
35325
  if (callAutionData.Ver==1.0)
35326
35326
  {
35327
- for(var i in callAutionData.Data)
35327
+ for(var i=0;i<callAutionData.Data.length;++i)
35328
35328
  {
35329
35329
  var item=callAutionData.Data[i];
35330
- if (!item || !IFrameSplitOperator.IsNumber(item.Vol[0])) continue;
35330
+ if (!item || !IFrameSplitOperator.IsNonEmptyArray(item.Vol) || !IFrameSplitOperator.IsNumber(item.Vol[0])) continue;
35331
35331
 
35332
35332
  if (isBeforeOpen)
35333
35333
  {
@@ -35361,11 +35361,11 @@ function ChartMinuteVolumBar()
35361
35361
  {
35362
35362
  var range={ Max: callAutionData.VolMax, Min:callAutionData.VolMin }
35363
35363
 
35364
- for(var i in callAutionData.Data)
35364
+ for(var i=0; i<callAutionData.Data.length; ++i)
35365
35365
  {
35366
35366
  var item=callAutionData.Data[i];
35367
35367
  if (!item) continue;
35368
- if (IFrameSplitOperator.IsPlusNumber(item.Vol[0]))
35368
+ if (item.Vol && IFrameSplitOperator.IsPlusNumber(item.Vol[0]))
35369
35369
  {
35370
35370
  if (isBeforeOpen)
35371
35371
  {
@@ -35395,7 +35395,7 @@ function ChartMinuteVolumBar()
35395
35395
  this.Canvas.stroke();
35396
35396
  }
35397
35397
 
35398
- if (IFrameSplitOperator.IsPlusNumber(item.Vol[1]))
35398
+ if (item.Vol && IFrameSplitOperator.IsPlusNumber(item.Vol[1]))
35399
35399
  {
35400
35400
  if (isBeforeOpen)
35401
35401
  {
@@ -40375,16 +40375,23 @@ function ChartMinutePriceLine()
40375
40375
  var item=callAutionData.Data[i];
40376
40376
  if (!item || !IFrameSplitOperator.IsNumber(item.Price))
40377
40377
  {
40378
- if (i==0 && isBeforeOpen && IFrameSplitOperator.IsNumber(this.YClose))
40378
+ if (i==0 && isBeforeOpen)
40379
40379
  {
40380
- var x=this.ChartFrame.GetLeftExtendXFromIndex(i,callAutionData);
40381
- var y=this.ChartFrame.GetLeftExtendYFromData(this.YClose);
40380
+ //盘前集合竞价起始点为昨收或昨结算
40381
+ var price=callAutionData.YClose;
40382
+ if (IFrameSplitOperator.IsNumber(callAutionData.YClearing)) price=callAutionData.YClearing;
40382
40383
 
40383
- this.Canvas.strokeStyle=this.BeforeLineColor;
40384
- this.Canvas.beginPath();
40385
- if (isHScreen) this.Canvas.moveTo(y,x);
40386
- else this.Canvas.moveTo(x,y);
40387
- bFirstPoint=false;
40384
+ if (IFrameSplitOperator.IsNumber(price))
40385
+ {
40386
+ var x=this.ChartFrame.GetLeftExtendXFromIndex(i,callAutionData);
40387
+ var y=this.ChartFrame.GetLeftExtendYFromData(price);
40388
+
40389
+ this.Canvas.strokeStyle=this.BeforeLineColor;
40390
+ this.Canvas.beginPath();
40391
+ if (isHScreen) this.Canvas.moveTo(y,x);
40392
+ else this.Canvas.moveTo(x,y);
40393
+ bFirstPoint=false;
40394
+ }
40388
40395
  }
40389
40396
 
40390
40397
  continue;
@@ -92553,6 +92560,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92553
92560
  //更新最新的几条数据
92554
92561
  this.UpdateLatestMinuteDataV2=function(minuteData)
92555
92562
  {
92563
+ if (!minuteData || !IFrameSplitOperator.IsNonEmptyArray(minuteData.Data)) return;
92564
+
92556
92565
  if (this.DayCount>1)
92557
92566
  {
92558
92567
  if (!this.DayData) return;
@@ -92561,7 +92570,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92561
92570
  for(var i=0; i<this.DayData.length; ++i)
92562
92571
  {
92563
92572
  var item=this.DayData[i];
92564
- if (item.Date===date)
92573
+ if (item.Date===minuteData.Date)
92565
92574
  {
92566
92575
  findItem=item;
92567
92576
  break;
@@ -92747,24 +92756,50 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92747
92756
  this.ColorLineData=aryColorLineData;
92748
92757
  }
92749
92758
 
92750
- this.UpdateCallCationData=function(beforeOpenData,afterCloseData)
92759
+ this.UpdateCallCationData=function(beforeOpenData,afterCloseData,option)
92751
92760
  {
92752
- if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
92761
+ var dataType=0;
92762
+ if (option && IFrameSplitOperator.IsNumber(option.DataType)) dataType=option.DataType;
92763
+
92764
+ if (dataType==1)
92753
92765
  {
92754
- var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
92755
- if (lastItem.Date==beforeOpenData.Date) //存在更新
92756
- this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1]=beforeOpenData;
92757
- else if (lastItem.Date<beforeOpenData.Date) //新的一天插入
92758
- this.MultiDayBeforeOpenData.push(beforeOpenData);
92759
- }
92766
+ if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
92767
+ {
92768
+ var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
92769
+ if (lastItem.Date==beforeOpenData.Date) //增量更新
92770
+ {
92771
+ this.UpdateLatestCallCationData(lastItem, beforeOpenData);
92772
+ }
92773
+ }
92760
92774
 
92761
- if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
92775
+ if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
92776
+ {
92777
+ var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
92778
+ if (lastItem.Date==afterCloseData.Date) //增量更新
92779
+ {
92780
+ this.UpdateLatestCallCationData(lastItem, afterCloseData);
92781
+ }
92782
+ }
92783
+ }
92784
+ else
92762
92785
  {
92763
- var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
92764
- if (lastItem.Date==afterCloseData.Date)
92765
- this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1]=afterCloseData;
92766
- else if (lastItem.Date<afterCloseData.Date)
92767
- this.MultiDayAfterCloseData.push(afterCloseData);
92786
+ if (beforeOpenData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayBeforeOpenData))
92787
+ {
92788
+ var lastItem=this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1];
92789
+ if (lastItem.Date==beforeOpenData.Date) //存在更新
92790
+ this.MultiDayBeforeOpenData[this.MultiDayBeforeOpenData.length-1]=beforeOpenData;
92791
+ else if (lastItem.Date<beforeOpenData.Date) //新的一天插入
92792
+ this.MultiDayBeforeOpenData.push(beforeOpenData);
92793
+ }
92794
+
92795
+ if (afterCloseData && IFrameSplitOperator.IsNonEmptyArray(this.MultiDayAfterCloseData))
92796
+ {
92797
+ var lastItem=this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1];
92798
+ if (lastItem.Date==afterCloseData.Date)
92799
+ this.MultiDayAfterCloseData[this.MultiDayAfterCloseData.length-1]=afterCloseData;
92800
+ else if (lastItem.Date<afterCloseData.Date)
92801
+ this.MultiDayAfterCloseData.push(afterCloseData);
92802
+ }
92768
92803
  }
92769
92804
 
92770
92805
  this.CaclutateCallCationYRange();
@@ -92780,9 +92815,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92780
92815
  var afterCloseData=MinuteChartContainer.JsonDataToAfterCloseData(data);
92781
92816
  var updateTime=MinuteChartContainer.JsonDataToMinuteLastUpdateTime(data); //数据最后的更新时间
92782
92817
 
92818
+ if (data.LatestPointFlash) //最新数据闪烁
92819
+ {
92820
+ var item=data.LatestPointFlash;
92821
+ if (IFrameSplitOperator.IsNumber(item.FlashCount))
92822
+ this.SetLatestPointFlash(item.FlashCount)
92823
+ }
92824
+
92783
92825
  if (this.DayCount>1) //多日走势图
92784
92826
  {
92785
- this.UpdateCallCationData(beforeOpenData,afterCloseData);
92827
+ this.UpdateCallCationData(beforeOpenData,afterCloseData, { DataType:1});
92786
92828
  this.UpdateLineColorData(aryColorData,minuteData.date);
92787
92829
  this.UpdateLatestMinuteDataV2(minuteData);
92788
92830
  this.UpdateHistoryMinuteUI(updateTime);
@@ -92794,10 +92836,13 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92794
92836
  return;
92795
92837
  }
92796
92838
 
92797
- if (this.IsBeforeData && beforeOpenData) this.BeforeOpenData=beforeOpenData;
92798
- if (this.IsAfterData && afterCloseData) this.AfterCloseData=afterCloseData;
92839
+ //if (this.IsBeforeData && beforeOpenData) this.BeforeOpenData=beforeOpenData;
92840
+ //if (this.IsAfterData && afterCloseData) this.AfterCloseData=afterCloseData;
92841
+
92842
+ //盘前盘后数据更新
92843
+ if (this.IsBeforeData && beforeOpenData) this.UpdateLatestCallCationData(this.BeforeOpenData, beforeOpenData);
92844
+ if (this.IsAfterData && afterCloseData) this.UpdateLatestCallCationData(this.AfterCloseData, afterCloseData);
92799
92845
 
92800
- //原始数据
92801
92846
  this.UpdateLatestMinuteDataV2(minuteData);
92802
92847
  this.UpdateMinuteUI(data.stock[0], {FunctionName:"RecvUpdateMinuteData"});
92803
92848
 
@@ -92812,6 +92857,45 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92812
92857
  }
92813
92858
  }
92814
92859
 
92860
+ this.UpdateLatestCallCationData=function(destData, updateData)
92861
+ {
92862
+ if (!destData) return;
92863
+ if (!updateData || !IFrameSplitOperator.IsNonEmptyArray(updateData.Data)) return;
92864
+
92865
+ if (destData.Data.length==0)
92866
+ {
92867
+ destData.Data=updateData.Data;
92868
+ destData.VolMax=updateData.VolMax;
92869
+ destData.VolMin=updateData.VolMin;
92870
+ return;
92871
+ }
92872
+
92873
+ //覆盖历史数据
92874
+ var mapData=new Map(updateData.Data.map((obj) => [obj.Time, obj]));
92875
+ var lastTime=null; //最后的时间
92876
+ for(var i=0;i<destData.Data.length;++i)
92877
+ {
92878
+ var item=destData.Data[i];
92879
+ lastTime=item.Time;
92880
+ if (!mapData.has(item.Time)) continue;
92881
+ var newItem=mapData.get(item.Time);
92882
+ if (!newItem || !IFrameSplitOperator.IsNumber(newItem.Price)) continue; //只覆盖有效数据
92883
+
92884
+ destData.Data[i]=newItem;
92885
+ }
92886
+
92887
+ //新数据往后插
92888
+ for(var i=0;i<updateData.Data.length;++i)
92889
+ {
92890
+ var item=updateData.Data[i];
92891
+ if (item.Time<=lastTime) continue;
92892
+ destData.Data.push(item);
92893
+ }
92894
+
92895
+ if (destData.VolMax<updateData.VolMax) destData.VolMax=updateData.VolMax;
92896
+ if (IFrameSplitOperator.IsNumber(updateData.TotalCount) && updateData.TotalCount>destData.TotalCount) updateData.TotalCount=destData.TotalCount;
92897
+ }
92898
+
92815
92899
  this.RecvBuySellData=function(data)
92816
92900
  {
92817
92901
  if (!data) return;
@@ -92878,7 +92962,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
92878
92962
 
92879
92963
  if (this.DayCount>1) //多日走势图
92880
92964
  {
92881
- this.UpdateCallCationData(beforeOpenData,afterCloseData);
92965
+ this.UpdateCallCationData(beforeOpenData,afterCloseData, { DataType:0});
92882
92966
  this.UpdateLineColorData(aryColorData,data.stock[0].date);
92883
92967
  this.UpdateLatestMinuteData(aryMinuteData, data.stock[0].date, data.stock[0]);
92884
92968
  this.UpdateTradeStatusData(data.TradeStatus);
@@ -94695,7 +94779,7 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
94695
94779
  var preClose=data.stock[0].yclose; //前一个数据价格
94696
94780
  var stockData=data.stock[0];
94697
94781
  var date=stockData.date; //日期
94698
- var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:date };
94782
+ var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:date, YClose:stockData.yclose, YClearing:stockData.yclearing };
94699
94783
  var extendDataIndex=JSCHART_DATA_FIELD_ID.MINUTE_BEFOREOPEN_EXTENDDATA; //扩展数据序号
94700
94784
  if (stockData.beforeinfo)
94701
94785
  {
@@ -94731,7 +94815,7 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
94731
94815
  else if (beforeOpenData.Ver==2.0)
94732
94816
  {
94733
94817
  var max=0;
94734
- for(var i in stockData.before)
94818
+ for(var i=0;i<stockData.before.length;++i)
94735
94819
  {
94736
94820
  var item=new BeforeOpenData();
94737
94821
  var jsData=stockData.before[i];
@@ -94743,7 +94827,6 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
94743
94827
  item.Vol[1]=jsData[3]; //未匹配量
94744
94828
  item.ColorID=jsData[4]; //柱子颜色ID
94745
94829
  if (IFrameSplitOperator.IsNumber(jsData[6])) item.Date=jsData[6] //日期
94746
- item.DateTime=`${item.Date} ${item.Time})`;
94747
94830
 
94748
94831
  var totalVol=item.Vol[0]+item.Vol[1];
94749
94832
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -94755,12 +94838,14 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
94755
94838
 
94756
94839
  beforeOpenData.VolMax=max/unit;
94757
94840
  beforeOpenData.VolMin=0;
94841
+
94842
+ if (stockData.beforeinfo && stockData.beforeinfo.TimeConfig) //固定时间
94843
+ MinuteChartContainer.CompleteCallAuctionData(stockData.beforeinfo.TimeConfig, beforeOpenData);
94758
94844
  }
94759
94845
  else if (beforeOpenData.Ver==3.0)
94760
94846
  {
94761
94847
  var max=0;
94762
-
94763
- for(var i in stockData.before)
94848
+ for(var i=0; i<stockData.before.length; ++i)
94764
94849
  {
94765
94850
  var item=new BeforeOpenData();
94766
94851
  var jsData=stockData.before[i];
@@ -94771,7 +94856,6 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
94771
94856
  item.AvPrice=jsData[2]; //均价
94772
94857
  item.Vol[0]=jsData[3]; //匹配量
94773
94858
  item.ColorID=jsData[4]; //柱子颜色ID
94774
- item.DateTime=date.toString()+" "+item.Time.toString();
94775
94859
 
94776
94860
  var totalVol=item.Vol[0];
94777
94861
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -94783,11 +94867,72 @@ MinuteChartContainer.JsonDataToBeforeOpenData=function(data)
94783
94867
 
94784
94868
  beforeOpenData.VolMax=max/unit;
94785
94869
  beforeOpenData.VolMin=0;
94870
+
94871
+ if (stockData.beforeinfo && stockData.beforeinfo.TimeConfig) //固定时间
94872
+ MinuteChartContainer.CompleteCallAuctionData(stockData.beforeinfo.TimeConfig, beforeOpenData);
94786
94873
  }
94787
94874
 
94788
94875
  return beforeOpenData;
94789
94876
  }
94790
94877
 
94878
+
94879
+ MinuteChartContainer.CompleteCallAuctionData=function(timeConfig, callAuctionData)
94880
+ {
94881
+ var aryData=MinuteChartContainer.CreateCallAuctionTimeData(timeConfig);
94882
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryData)) return false;
94883
+
94884
+ var mapData=new Map(callAuctionData.Data.map((obj) => [obj.Time, obj]));
94885
+ for(var i=0;i<aryData.length;++i)
94886
+ {
94887
+ var time=aryData[i].Time;
94888
+ if (!mapData.has(time)) continue;
94889
+
94890
+ var item=mapData.get(time);
94891
+ aryData[i]=item;
94892
+ }
94893
+
94894
+ callAuctionData.Data=aryData;
94895
+ callAuctionData.TotalCount=aryData.length;
94896
+
94897
+ return true;
94898
+ }
94899
+
94900
+ //创建集合竞价秒级时间 { AryTime:[ { Start:92500, End:92459, Date:20250101 } ] } hhmmss
94901
+ MinuteChartContainer.CreateCallAuctionTimeData=function(config)
94902
+ {
94903
+ if (!config || !IFrameSplitOperator.IsNonEmptyArray(config.AryTime)) return null;
94904
+
94905
+ var step=1; //1s
94906
+ if (IFrameSplitOperator.IsPlusNumber(config.Step)) step=config.Step;
94907
+ var aryData=[];
94908
+ for(var i=0;i<config.AryTime.length;++i)
94909
+ {
94910
+ var item=config.AryTime[i];
94911
+
94912
+ var value=item.Start;
94913
+ var hour=parseInt(value/10000);
94914
+ var minute=parseInt((value%10000)/100);
94915
+ var second=value%100;
94916
+ var startTime=new Date(2021,5,2, hour,minute, second);
94917
+
94918
+ value=item.End;
94919
+ var hour=parseInt(value/10000);
94920
+ var minute=parseInt((value%10000)/100);
94921
+ var second=value%100;
94922
+ var endTime=new Date(2021,5,2, hour,minute, second);
94923
+
94924
+ for(var j=0; j<5000 && startTime<=endTime; ++j)
94925
+ {
94926
+ var time=startTime.getHours()*10000+startTime.getMinutes()*100+startTime.getSeconds();
94927
+ var secItem={ Time:time, Date:item.Date };
94928
+ aryData.push(secItem);
94929
+ startTime.setSeconds(startTime.getSeconds()+step);
94930
+ }
94931
+ }
94932
+
94933
+ return aryData;
94934
+ }
94935
+
94791
94936
  //收盘集合竞价
94792
94937
  MinuteChartContainer.JsonDataToAfterCloseData=function(data)
94793
94938
  {
@@ -94798,7 +94943,7 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
94798
94943
  if (!stockData.afterinfo) return null;
94799
94944
  var symbol=data.stock[0].symbol;
94800
94945
  var upperSymbol=symbol.toUpperCase();
94801
- var afterCloseData={ Data:[], TotalCount:3*60, Ver:2.0, Date:date };
94946
+ var afterCloseData={ Data:[], TotalCount:3*60, Ver:2.0, Date:date, YClose:stockData.yclose, YClearing:stockData.yclearing };
94802
94947
  var item=stockData.afterinfo;
94803
94948
  if (IFrameSplitOperator.IsNumber(item.totalcount)) afterCloseData.TotalCount=item.totalcount;
94804
94949
  if (IFrameSplitOperator.IsNumber(item.ver)) afterCloseData.Ver=item.ver;
@@ -94828,7 +94973,7 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
94828
94973
  else if (afterCloseData.Ver==2.0)
94829
94974
  {
94830
94975
  var max=0;
94831
- for(var i in stockData.after)
94976
+ for(var i=0; i<stockData.after.length; ++i)
94832
94977
  {
94833
94978
  var item=new AfterCloseData();
94834
94979
  var jsData=stockData.after[i];
@@ -94851,6 +94996,9 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
94851
94996
 
94852
94997
  afterCloseData.VolMax=max/unit;
94853
94998
  afterCloseData.VolMin=0;
94999
+
95000
+ if (stockData.afterinfo && stockData.afterinfo.TimeConfig) //固定时间
95001
+ MinuteChartContainer.CompleteCallAuctionData(stockData.afterinfo.TimeConfig, afterCloseData);
94854
95002
  }
94855
95003
  else if (afterCloseData.Ver==3.0)
94856
95004
  {
@@ -94878,6 +95026,9 @@ MinuteChartContainer.JsonDataToAfterCloseData=function(data)
94878
95026
 
94879
95027
  afterCloseData.VolMax=max/unit;
94880
95028
  afterCloseData.VolMin=0;
95029
+
95030
+ if (stockData.afterinfo && stockData.afterinfo.TimeConfig) //固定时间
95031
+ MinuteChartContainer.CompleteCallAuctionData(stockData.afterinfo.TimeConfig, afterCloseData);
94881
95032
  }
94882
95033
 
94883
95034
  return afterCloseData;
@@ -94999,12 +95150,13 @@ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
94999
95150
 
95000
95151
  item.DateTime=`${item.Date} ${item.Time}`;
95001
95152
 
95002
- if (IFrameSplitOperator.IsNumber(minuteData.YClose) && item.Close)
95003
- item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100; //涨幅 (最新价格-昨收)/昨收*100;
95004
-
95005
- if (isFutures && minuteData.YClearing && item.Close)
95006
- item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100; //涨幅 (最新价格-昨结算价)/昨结算价*100;
95007
-
95153
+ if (!IFrameSplitOperator.IsNumber(item.Increase) && IFrameSplitOperator.IsNumber(minuteData.YClose) && item.Close)
95154
+ {
95155
+ if (isFutures && minuteData.YClearing && item.Close)
95156
+ item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100; //涨幅 (最新价格-昨结算价)/昨结算价*100;
95157
+ else
95158
+ item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100; //涨幅 (最新价格-昨收)/昨收*100;
95159
+ }
95008
95160
 
95009
95161
  minuteData.Data.push(item);
95010
95162
  }
@@ -95168,8 +95320,9 @@ MinuteChartContainer.JsonDataToHistoryMinuteLineColorData=function(data)
95168
95320
  }
95169
95321
 
95170
95322
 
95171
- MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, isBeforeOpen, symbol)
95323
+ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, isBeforeOpen, symbol, dataInfo)
95172
95324
  {
95325
+ if (!IFrameSplitOperator.IsNonEmptyArray(data)) return;
95173
95326
  var upperSymbol=symbol?symbol.toUpperCase():null;
95174
95327
  var unit=MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol);
95175
95328
 
@@ -95180,7 +95333,7 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
95180
95333
  if (callAuctionData.Ver==1.0)
95181
95334
  {
95182
95335
  var preClose=null;
95183
- for(var i in data)
95336
+ for(var i=0; i<data.length; ++i)
95184
95337
  {
95185
95338
  var item=isBeforeOpen? new BeforeOpenData() : new AfterCloseData();
95186
95339
  var jsData=data[i];
@@ -95204,7 +95357,7 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
95204
95357
  else if (callAuctionData.Ver==2.0)
95205
95358
  {
95206
95359
  var max=0;
95207
- for(var i in data)
95360
+ for(var i=0; i<data.length; ++i)
95208
95361
  {
95209
95362
  var item=isBeforeOpen? new BeforeOpenData() : new AfterCloseData();
95210
95363
  var jsData=data[i];
@@ -95216,7 +95369,6 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
95216
95369
  item.Vol[0]=jsData[2]; //匹配量
95217
95370
  item.Vol[1]=jsData[3]; //未匹配量
95218
95371
  item.ColorID=jsData[4]; //柱子颜色ID
95219
- item.DateTime=date.toString()+" "+item.Time.toString();
95220
95372
 
95221
95373
  var totalVol=item.Vol[0]+item.Vol[1];
95222
95374
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -95228,6 +95380,9 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
95228
95380
 
95229
95381
  callAuctionData.VolMax=max/unit;
95230
95382
  callAuctionData.VolMin=0;
95383
+
95384
+ if (dataInfo && dataInfo.TimeConfig) //固定时间
95385
+ MinuteChartContainer.CompleteCallAuctionData(dataInfo.TimeConfig, callAuctionData);
95231
95386
  }
95232
95387
  else if (beforeOpenData.Ver==3.0)
95233
95388
  {
@@ -95244,7 +95399,6 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
95244
95399
  item.AvPrice=jsData[2]; //均价
95245
95400
  item.Vol[0]=jsData[3]; //匹配量
95246
95401
  item.ColorID=jsData[4]; //柱子颜色ID
95247
- item.DateTime=date.toString()+" "+item.Time.toString();
95248
95402
 
95249
95403
  var totalVol=item.Vol[0];
95250
95404
  if (IFrameSplitOperator.IsNumber(jsData[5])) totalVol=jsData[5];
@@ -95256,6 +95410,9 @@ MinuteChartContainer.JsonDataToCallAuctionItem=function(data, callAuctionData, i
95256
95410
 
95257
95411
  callAuctionData.VolMax=max/unit;
95258
95412
  callAuctionData.VolMin=0;
95413
+
95414
+ if (dataInfo && dataInfo.TimeConfig) //固定时间
95415
+ MinuteChartContainer.CompleteCallAuctionData(dataInfo.TimeConfig, callAuctionData);
95259
95416
  }
95260
95417
  }
95261
95418
 
@@ -95264,7 +95421,7 @@ MinuteChartContainer.JosnDataToBeforeOpenDataArray=function(data)
95264
95421
  if (!data || !data.data) return null;
95265
95422
 
95266
95423
  var aryDay=[];
95267
- for(var i in data.data)
95424
+ for(var i=0; i<data.data.length; ++i)
95268
95425
  {
95269
95426
  var dayItem=data.data[i];
95270
95427
  var beforeOpenData={ Data:[], TotalCount:15, Ver:1.0, Date:dayItem.date, YClose:dayItem.yclose, YClearing:dayItem.YClearing };
@@ -95274,7 +95431,7 @@ MinuteChartContainer.JosnDataToBeforeOpenDataArray=function(data)
95274
95431
  if (IFrameSplitOperator.IsNumber(dayItem.beforeinfo.ver)) beforeOpenData.Ver=dayItem.beforeinfo.ver;
95275
95432
  }
95276
95433
 
95277
- MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.before, beforeOpenData, true, data.symbol);
95434
+ MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.before, beforeOpenData, true, data.symbol, dayItem.beforeinfo);
95278
95435
 
95279
95436
  aryDay.push(beforeOpenData);
95280
95437
  }
@@ -95289,7 +95446,7 @@ MinuteChartContainer.JosnDataToAfterCloseDataArray=function(data)
95289
95446
  if (!data || !data.data) return null;
95290
95447
 
95291
95448
  var aryDay=[];
95292
- for(var i in data.data)
95449
+ for(var i=0; i<data.data.length; ++i)
95293
95450
  {
95294
95451
  var dayItem=data.data[i];
95295
95452
  var afterCloseData={ Data:[], TotalCount:15, Ver:1.0, Date:dayItem.date, YClose:dayItem.yclose, YClearing:dayItem.YClearing };
@@ -95300,7 +95457,7 @@ MinuteChartContainer.JosnDataToAfterCloseDataArray=function(data)
95300
95457
  if (IFrameSplitOperator.IsNumber(dayItem.afterinfo.ver)) afterCloseData.Ver=dayItem.afterinfo.ver;
95301
95458
  }
95302
95459
 
95303
- MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.after, afterCloseData, false, data.symbol);
95460
+ MinuteChartContainer.JsonDataToCallAuctionItem(dayItem.after, afterCloseData, false, data.symbol, dayItem.afterinfo);
95304
95461
 
95305
95462
  aryDay.push(afterCloseData);
95306
95463
  }