hqchart 1.1.12472 → 1.1.12480

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.
@@ -4737,7 +4737,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
4737
4737
 
4738
4738
  if (IFrameSplitOperator.IsNumber(item.TitleHeight)) chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;
4739
4739
  else item.TitleHeight=chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;
4740
- if (item.IsShowTitleArraw==false) chart.Frame.SubFrame[i].Frame.IsShowTitleArraw=false;
4740
+ if (IFrameSplitOperator.IsNumber(item.IsShowTitleArrow)) chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
4741
4741
  if (item.IsShowIndexName==false) chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;
4742
4742
  if (item.IsShowOverlayIndexName==false) chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;
4743
4743
  if (IFrameSplitOperator.IsNumber(item.IndexParamSpace)) chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;
@@ -5172,9 +5172,9 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
5172
5172
  if (IFrameSplitOperator.IsNumber(item.YSplitType)) chart.Frame.SubFrame[index].Frame.YSplitOperator.SplitType=item.YSplitType;
5173
5173
  if (!isNaN(item.TitleHeight)) chart.Frame.SubFrame[index].Frame.ChartBorder.TitleHeight=item.TitleHeight;
5174
5174
  if (IFrameSplitOperator.IsBool(item.IsDrawTitleBG)) chart.Frame.SubFrame[index].Frame.IsDrawTitleBG=item.IsDrawTitleBG;
5175
- if (IFrameSplitOperator.IsBool(item.IsShowNameArrow)) chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;
5175
+ if (IFrameSplitOperator.IsBool(item.IsShowNameArrow)) chart.Frame.SubFrame[index].Frame.IsShowNameArrow=item.IsShowNameArrow;
5176
5176
 
5177
- if (item.IsShowTitleArraw==false) chart.Frame.SubFrame[index].Frame.IsShowTitleArraw=false;
5177
+ if (IFrameSplitOperator.IsBool(item.IsShowTitleArrow)) chart.Frame.SubFrame[index].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
5178
5178
  if (item.IsShowIndexName==false) chart.Frame.SubFrame[index].Frame.IsShowIndexName=false;
5179
5179
  if (item.IsShowOverlayIndexName==false) chart.Frame.SubFrame[index].Frame.IsShowOverlayIndexName=false;
5180
5180
  }
@@ -5575,7 +5575,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
5575
5575
 
5576
5576
  if (IFrameSplitOperator.IsNumber(item.TitleHeight)) chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;
5577
5577
 
5578
- if (item.IsShowTitleArraw==false) chart.Frame.SubFrame[i].Frame.IsShowTitleArraw=false;
5578
+ if (IFrameSplitOperator.IsBool(item.IsShowTitleArrow)) chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
5579
5579
  if (item.IsShowIndexName==false) chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;
5580
5580
  if (item.IsShowOverlayIndexName==false) chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;
5581
5581
  if (IFrameSplitOperator.IsNumber(item.IndexParamSpace)) chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;
@@ -11843,7 +11843,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11843
11843
  if (IFrameSplitOperator.IsNumber(windowItem.TitleHeight)) frame.ChartBorder.TitleHeight=windowItem.TitleHeight;
11844
11844
  else windowItem.TitleHeight=frame.ChartBorder.TitleHeight;
11845
11845
 
11846
- if (IFrameSplitOperator.IsBool(windowItem.IsShowTitleArraw)) frame.IsShowTitleArraw=windowItem.IsShowTitleArraw;
11846
+ if (IFrameSplitOperator.IsBool(windowItem.IsShowTitleArrow)) frame.IsShowTitleArrow=windowItem.IsShowTitleArrow;
11847
11847
  if (IFrameSplitOperator.IsBool(windowItem.IsShowIndexName)) frame.IsShowIndexName=windowItem.IsShowIndexName;
11848
11848
  if (IFrameSplitOperator.IsNumber(windowItem.IndexParamSpace)) frame.IndexParamSpace=windowItem.IndexParamSpace;
11849
11849
  if (IFrameSplitOperator.IsNumber(windowItem.IndexTitleSpace)) frame.IndexTitleSpace=windowItem.IndexTitleSpace;
@@ -11894,7 +11894,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11894
11894
 
11895
11895
  if (IFrameSplitOperator.IsNumber(option.SplitCount)) subFrame.Frame.YSplitOperator.SplitCount=option.SplitCount;
11896
11896
  if (IFrameSplitOperator.IsNumber(option.TitleHeight)) subFrame.Frame.ChartBorder.TitleHeight=option.TitleHeight;
11897
- if (IFrameSplitOperator.IsBool(option.IsShowTitleArraw)) subFrame.Frame.IsShowTitleArraw=option.IsShowTitleArraw;
11897
+ if (IFrameSplitOperator.IsBool(option.IsShowTitleArrow)) subFrame.Frame.IsShowTitleArrow=option.IsShowTitleArrow;
11898
11898
  if (IFrameSplitOperator.IsBool(option.IsShowIndexName)) subFrame.Frame.IsShowIndexName=option.IsShowIndexName;
11899
11899
  if (IFrameSplitOperator.IsBool(option.IsShowOverlayIndexName)) subFrame.Frame.IsShowOverlayIndexName=option.IsShowOverlayIndexName;
11900
11900
  if (IFrameSplitOperator.IsNumber(option.IndexParamSpace)) subFrame.Frame.IndexParamSpace=option.IndexParamSpace;
@@ -13115,7 +13115,7 @@ function IChartFramePainting()
13115
13115
 
13116
13116
  this.YSpecificMaxMin=null; //指定Y轴最大最小值
13117
13117
  this.IsShowBorder = true; //是否显示边框
13118
- this.IsShowTitleArraw=true; //是否显示指标信息上涨下跌箭头
13118
+ this.IsShowTitleArrow=true; //是否显示指标信息上涨下跌箭头
13119
13119
  this.IsShowIndexName=true; //是否显示指标名字
13120
13120
  this.IsShowOverlayIndexName=true; //是否显示叠加指标名字
13121
13121
  //this.OverlayIndexType= { Position:0, LineSpace:5 };
@@ -33187,6 +33187,7 @@ function ChartVolStick()
33187
33187
  }
33188
33188
  else //太细了直接话线
33189
33189
  {
33190
+ var preKItem=null;
33190
33191
  for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
33191
33192
  {
33192
33193
  var value=this.Data.Data[i];
@@ -33207,7 +33208,15 @@ function ChartVolStick()
33207
33208
 
33208
33209
  if (x>chartright) break;
33209
33210
 
33210
- var barColor=this.GetBarColor(kItem);
33211
+ if (isMinute)
33212
+ {
33213
+ var barColor=this.GetMinuteBarColor(kItem,preKItem); //分时图颜色单独计算
33214
+ }
33215
+ else
33216
+ {
33217
+ var barColor=this.GetBarColor(kItem);
33218
+ }
33219
+
33211
33220
  this.Canvas.strokeStyle=barColor.Color;
33212
33221
 
33213
33222
  //var x=this.ChartFrame.GetXFromIndex(j);
@@ -33215,6 +33224,8 @@ function ChartVolStick()
33215
33224
  this.Canvas.moveTo(ToFixedPoint(x),y);
33216
33225
  this.Canvas.lineTo(ToFixedPoint(x),yBottom);
33217
33226
  this.Canvas.stroke();
33227
+
33228
+ preKItem=kItem;
33218
33229
  }
33219
33230
  }
33220
33231
  }
@@ -33314,6 +33325,15 @@ function ChartVolStick()
33314
33325
  else return { Color:this.DownColor, IsUp:false };
33315
33326
  }
33316
33327
 
33328
+ this.GetMinuteBarColor=function(kItem, preItem)
33329
+ {
33330
+ var prePrice=kItem.YClose;
33331
+ if (preItem) prePrice=preItem.Close;
33332
+
33333
+ if (kItem.Close>=prePrice) return { Color:this.UpColor, IsUp:true }; //颜色, 是否是上涨
33334
+ else return { Color:this.DownColor, IsUp:false };
33335
+ }
33336
+
33317
33337
  this.GetItemData=function(indexData)
33318
33338
  {
33319
33339
  if (!indexData) return null;
@@ -46676,6 +46696,16 @@ IFrameSplitOperator.IsFloat=function(value)
46676
46696
  return value!=parseInt(value);
46677
46697
  }
46678
46698
 
46699
+ //是否有效
46700
+ IFrameSplitOperator.IsVaild=function(value)
46701
+ {
46702
+ if (isNaN(value)) return false;
46703
+ if (value==null) return false;
46704
+ if (value===undefined) return false;
46705
+
46706
+ return true;
46707
+ }
46708
+
46679
46709
  IFrameSplitOperator.RemoveZero=function(strValue)
46680
46710
  {
46681
46711
  while(strValue.length>0)
@@ -53450,7 +53480,7 @@ function DynamicChartTitlePainting()
53450
53480
  this.IsKLineFrame= this.Frame.ClassName=='KLineFrame' || this.Frame.ClassName=='KLineHScreenFrame';
53451
53481
  this.IsDrawTitleBG=this.Frame.IsDrawTitleBG;
53452
53482
  this.IsShowNameArrow=this.Frame.IsShowNameArrow;
53453
- this.IsShowUpDownArrow=this.Frame.IsShowTitleArraw;
53483
+ this.IsShowUpDownArrow=this.Frame.IsShowTitleArrow;
53454
53484
  this.IsShowIndexName=this.Frame.IsShowIndexName;
53455
53485
  this.IsShowOverlayIndexName=this.Frame.IsShowOverlayIndexName;
53456
53486
  this.OverlayIndexType.Position=this.Frame.OverlayIndexType.Position;
@@ -70956,7 +70986,7 @@ function KLineChartContainer(uielement,OffscreenElement)
70956
70986
 
70957
70987
  if (IFrameSplitOperator.IsNumber(item.TitleHeight)) this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;
70958
70988
  else item.TitleHeight=this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;
70959
- if (item.IsShowTitleArraw==false) this.Frame.SubFrame[i].Frame.IsShowTitleArraw=false;
70989
+ if (IFrameSplitOperator.IsNumber(item.IsShowTitleArrow)) this.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;
70960
70990
  if (item.IsShowIndexName==false) this.Frame.SubFrame[i].Frame.IsShowIndexName=false;
70961
70991
  if (item.IsShowOverlayIndexName==false) this.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;
70962
70992
  if (IFrameSplitOperator.IsNumber(item.IndexParamSpace)) this.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;
@@ -94836,6 +94866,9 @@ function JSAlgorithm(errorHandler,symbolData)
94836
94866
 
94837
94867
  if (i<data.length && i<data2.length)
94838
94868
  {
94869
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
94870
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
94871
+
94839
94872
  if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]>data2[i] ? 1:0);
94840
94873
  }
94841
94874
  }
@@ -94848,6 +94881,9 @@ function JSAlgorithm(errorHandler,symbolData)
94848
94881
  for(let i in data2)
94849
94882
  {
94850
94883
  result[i]=null;
94884
+ if (!IFrameSplitOperator.IsVaild(data)) continue;
94885
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
94886
+
94851
94887
  if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>data2[i] ? 1 : 0);
94852
94888
  }
94853
94889
  }
@@ -94856,6 +94892,9 @@ function JSAlgorithm(errorHandler,symbolData)
94856
94892
  for(let i in data)
94857
94893
  {
94858
94894
  result[i]=null;
94895
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
94896
+ if (!IFrameSplitOperator.IsVaild(data2)) continue;
94897
+
94859
94898
  if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]>data2 ? 1 : 0);
94860
94899
  }
94861
94900
  }
@@ -94883,7 +94922,10 @@ function JSAlgorithm(errorHandler,symbolData)
94883
94922
 
94884
94923
  if (i<data.length && i<data2.length)
94885
94924
  {
94886
- if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]>=data2[i] ? 1:0);
94925
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
94926
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
94927
+
94928
+ result[i]=(data[i]>=data2[i] ? 1:0);
94887
94929
  }
94888
94930
  }
94889
94931
 
@@ -94895,7 +94937,10 @@ function JSAlgorithm(errorHandler,symbolData)
94895
94937
  for(let i in data2)
94896
94938
  {
94897
94939
  result[i]=null;
94898
- if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>=data2[i] ? 1 : 0);
94940
+ if (!IFrameSplitOperator.IsVaild(data)) continue;
94941
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
94942
+
94943
+ result[i]=(data>=data2[i] ? 1 : 0);
94899
94944
  }
94900
94945
  }
94901
94946
  else if (isNumber2 && Array.isArray(data)) //数组-单数据
@@ -94903,7 +94948,10 @@ function JSAlgorithm(errorHandler,symbolData)
94903
94948
  for(let i in data)
94904
94949
  {
94905
94950
  result[i]=null;
94906
- if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]>=data2 ? 1 : 0);
94951
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
94952
+ if (!IFrameSplitOperator.IsVaild(data2)) continue;
94953
+
94954
+ result[i]=(data[i]>=data2 ? 1 : 0);
94907
94955
  }
94908
94956
  }
94909
94957
 
@@ -94930,7 +94978,10 @@ function JSAlgorithm(errorHandler,symbolData)
94930
94978
 
94931
94979
  if (i<data.length && i<data2.length)
94932
94980
  {
94933
- if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]<data2[i] ? 1:0);
94981
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
94982
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
94983
+
94984
+ result[i]=(data[i]<data2[i] ? 1:0);
94934
94985
  }
94935
94986
  }
94936
94987
 
@@ -94942,7 +94993,10 @@ function JSAlgorithm(errorHandler,symbolData)
94942
94993
  for(let i in data2)
94943
94994
  {
94944
94995
  result[i]=null;
94945
- if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data<data2[i] ? 1 : 0);
94996
+ if (!IFrameSplitOperator.IsVaild(data)) continue;
94997
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
94998
+
94999
+ result[i]=(data<data2[i] ? 1 : 0);
94946
95000
  }
94947
95001
  }
94948
95002
  else if (isNumber2 && Array.isArray(data)) //数组-单数据
@@ -94950,7 +95004,10 @@ function JSAlgorithm(errorHandler,symbolData)
94950
95004
  for(let i in data)
94951
95005
  {
94952
95006
  result[i]=null;
94953
- if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]<data2 ? 1 : 0);
95007
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
95008
+ if (!IFrameSplitOperator.IsVaild(data2)) continue;
95009
+
95010
+ result[i]=(data[i]<data2 ? 1 : 0);
94954
95011
  }
94955
95012
  }
94956
95013
 
@@ -94977,7 +95034,10 @@ function JSAlgorithm(errorHandler,symbolData)
94977
95034
 
94978
95035
  if (i<data.length && i<data2.length)
94979
95036
  {
94980
- if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]<=data2[i] ? 1:0);
95037
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
95038
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
95039
+
95040
+ result[i]=(data[i]<=data2[i] ? 1:0);
94981
95041
  }
94982
95042
  }
94983
95043
 
@@ -94989,7 +95049,10 @@ function JSAlgorithm(errorHandler,symbolData)
94989
95049
  for(let i in data2)
94990
95050
  {
94991
95051
  result[i]=null;
94992
- if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data<=data2[i] ? 1 : 0);
95052
+ if (!IFrameSplitOperator.IsVaild(data)) continue;
95053
+ if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
95054
+
95055
+ result[i]=(data<=data2[i] ? 1 : 0);
94993
95056
  }
94994
95057
  }
94995
95058
  else if (isNumber2 && Array.isArray(data)) //数组-单数据
@@ -94997,7 +95060,10 @@ function JSAlgorithm(errorHandler,symbolData)
94997
95060
  for(let i in data)
94998
95061
  {
94999
95062
  result[i]=null;
95000
- if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]<=data2 ? 1 : 0);
95063
+ if (!IFrameSplitOperator.IsVaild(data[i])) continue;
95064
+ if (!IFrameSplitOperator.IsVaild(data2)) continue;
95065
+
95066
+ result[i]=(data[i]<=data2 ? 1 : 0);
95001
95067
  }
95002
95068
  }
95003
95069
 
@@ -96084,9 +96150,16 @@ function JSAlgorithm(errorHandler,symbolData)
96084
96150
  for(var i=0;i<n.length;++i)
96085
96151
  {
96086
96152
  var period=n[i];
96087
- if (!IFrameSplitOperator.IsNumber(period)) continue;
96088
-
96089
- if (period<1) period=i+1;
96153
+
96154
+ if (period==0)
96155
+ {
96156
+ result[i]=0;
96157
+ continue;
96158
+ }
96159
+
96160
+ if (!IFrameSplitOperator.IsNumber(period) ) period=i+1; //无效周期 第一个有效值开始.
96161
+ else if (period<0) period=i+1;
96162
+
96090
96163
  count=0;
96091
96164
  for(var j=i, k=0 ;j>=0 && k<period ;--j,++k) //当前往前period天 统计
96092
96165
  {
@@ -96550,7 +96623,7 @@ function JSAlgorithm(errorHandler,symbolData)
96550
96623
 
96551
96624
  if (!Array.isArray(n))
96552
96625
  {
96553
- if (n==0)
96626
+ if (n<=0)
96554
96627
  {
96555
96628
  var start=-1;
96556
96629
  for(var i=0; i<data.length; ++i) //取第1个有效数
@@ -96573,6 +96646,12 @@ function JSAlgorithm(errorHandler,symbolData)
96573
96646
  }
96574
96647
  else
96575
96648
  {
96649
+ result[0]=data[0];
96650
+ for(var i=1;i<n && i<data.length;++i) //前面小于N周期的累加
96651
+ {
96652
+ result[i] = result[i-1]+data[i];
96653
+ }
96654
+
96576
96655
  for(var i=n-1,j=0;i<data.length;++i,++j)
96577
96656
  {
96578
96657
  for(var k=0;k<n;++k)
@@ -104995,7 +105074,7 @@ function JSSymbolData(ast,option,jsExecute)
104995
105074
  return this.Data.GetClose();
104996
105075
  case 'VOL':
104997
105076
  case 'V':
104998
- if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol))
105077
+ if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol) && this.DataType==HQ_DATA_TYPE.KLINE_ID) //!! A股K线量单位时股,分时图单位还是手
104999
105078
  return this.Data.GetVol(100); //A股的 把股转成手
105000
105079
  return this.Data.GetVol();
105001
105080
  case 'OPEN':
@@ -128119,7 +128198,7 @@ function HQChartScriptWorker()
128119
128198
 
128120
128199
 
128121
128200
 
128122
- var HQCHART_VERSION="1.1.12471";
128201
+ var HQCHART_VERSION="1.1.12479";
128123
128202
 
128124
128203
  function PrintHQChartVersion()
128125
128204
  {