hqchart 1.1.15382 → 1.1.15390

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.
@@ -12732,6 +12732,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12732
12732
  return false;
12733
12733
  }
12734
12734
 
12735
+ this.IsHScreenModel=function()
12736
+ {
12737
+ if (this.ClassName=="KLineChartHScreenContainer" || this.ClassName=="MinuteChartHScreenContainer") return true;
12738
+
12739
+ return false;
12740
+ }
12741
+
12735
12742
  this.UpdatePointByCursorIndex=function(type) //type 1=根据十字光标更新 2=强制取消十字光标
12736
12743
  {
12737
12744
  if (type==1) //根据十字光标更新
@@ -12752,8 +12759,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12752
12759
  pt.X=null;
12753
12760
  }
12754
12761
  }
12755
- this.LastPoint.X=pt.X;
12756
- this.LastPoint.Y=pt.Y;
12762
+
12763
+ if (this.IsHScreenModel())
12764
+ {
12765
+ this.LastPoint.X=pt.Y;
12766
+ this.LastPoint.Y=pt.X;
12767
+ }
12768
+ else
12769
+ {
12770
+ this.LastPoint.X=pt.X;
12771
+ this.LastPoint.Y=pt.Y;
12772
+ }
12773
+
12757
12774
  }
12758
12775
  else if (type==2)
12759
12776
  {
@@ -12773,8 +12790,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12773
12790
  pt.Y=this.Frame.GetYFromData(close);
12774
12791
  this.LastPoint.FrameID=0;
12775
12792
  }
12776
- this.LastPoint.X=pt.X;
12777
- this.LastPoint.Y=pt.Y;
12793
+
12794
+ if (this.IsHScreenModel())
12795
+ {
12796
+ this.LastPoint.X=pt.Y;
12797
+ this.LastPoint.Y=pt.X;
12798
+ }
12799
+ else
12800
+ {
12801
+ this.LastPoint.X=pt.X;
12802
+ this.LastPoint.Y=pt.Y;
12803
+ }
12804
+
12778
12805
  }
12779
12806
  }
12780
12807
 
@@ -83611,6 +83638,13 @@ function JSChartResource()
83611
83638
  CloseColor:"rgb(30,144,255)",
83612
83639
  YCloseColor:"rgba(105,105,105,0.5)", //昨收线
83613
83640
  AreaColor:'rgba(0,191,255,0.2)',
83641
+
83642
+ UpColor:"rgb(255,0,0)",
83643
+ UpAreaColor:"rgba(255,0,0,0.5)",
83644
+ DownColor:"rgb(0,128,0)",
83645
+ DownAreaColor:"rgba(0,128,0,0.5)",
83646
+ UnchangeColor:'rgb(90,90,90)',
83647
+ UnchangeAreaColor:'rgba(90,90,90,0.5)',
83614
83648
  },
83615
83649
 
83616
83650
  KLine:
@@ -85009,6 +85043,13 @@ function JSChartResource()
85009
85043
  if (closeLine.CloseColor) this.Report.CloseLine.CloseColor=closeLine.CloseColor;
85010
85044
  if (closeLine.YCloseColor) this.Report.CloseLine.YCloseColor=closeLine.YCloseColor;
85011
85045
  if (closeLine.AreaColor) this.Report.CloseLine.AreaColor=closeLine.AreaColor;
85046
+
85047
+ if (closeLine.UpColor) this.Report.CloseLine.UpColor=closeLine.UpColor;
85048
+ if (closeLine.UpAreaColor) this.Report.CloseLine.UpAreaColor=closeLine.UpAreaColor;
85049
+ if (closeLine.DownColor) this.Report.CloseLine.DownColor=closeLine.DownColor;
85050
+ if (closeLine.DownAreaColor) this.Report.CloseLine.DownAreaColor=closeLine.DownAreaColor;
85051
+ if (closeLine.UnchangeColor) this.Report.CloseLine.UnchangeColor=closeLine.UnchangeColor;
85052
+ if (closeLine.UnchangeAreaColor) this.Report.CloseLine.UnchangeAreaColor=closeLine.UnchangeAreaColor;
85012
85053
  }
85013
85054
 
85014
85055
  if (item.KLine)
@@ -97757,21 +97798,31 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
97757
97798
 
97758
97799
  this.UpdatePointByCursorIndex=function()
97759
97800
  {
97760
- this.LastPoint.X=this.Frame.GetXFromIndex(this.CursorIndex);
97801
+ var x=null, y=null;
97802
+ x=this.Frame.GetXFromIndex(this.CursorIndex);
97761
97803
 
97762
97804
  var index=this.CursorIndex;
97763
97805
  index=parseInt(index.toFixed(0));
97764
97806
  var data=this.GetKData();
97765
- if (data.DataOffset+index>=data.Data.length)
97807
+ if (data.DataOffset+index<data.Data.length)
97766
97808
  {
97767
- return;
97809
+ var item=data.Data[data.DataOffset+index];
97810
+ var close=null;
97811
+ if (item.Before) close=item.Before.Close;
97812
+ else close=item.Close;
97813
+ y=this.Frame.GetYFromData(close);
97768
97814
  }
97769
- var item=data.Data[data.DataOffset+index];
97770
- var close=null;
97771
- if (item.Before) close=item.Before.Close;
97772
- else close=item.Close
97773
97815
 
97774
- this.LastPoint.Y=this.Frame.GetYFromData(close);
97816
+ if (this.IsHScreenModel())
97817
+ {
97818
+ this.LastPoint.X=y;
97819
+ this.LastPoint.Y=x;
97820
+ }
97821
+ else
97822
+ {
97823
+ this.LastPoint.X=x;
97824
+ this.LastPoint.Y=y;
97825
+ }
97775
97826
  this.LastPoint.FrameID=0;
97776
97827
  }
97777
97828
 
@@ -111385,6 +111436,24 @@ JSComplierHelper.GetConvertValueName=function(funcName)
111385
111436
 
111386
111437
  return valueName;
111387
111438
  }
111439
+
111440
+
111441
+ //DYNAINFO() 转换
111442
+ //["DYNA_NOW",null], //DYNA_NOW 现价 DYNAINFO(7) 即时行情数据 没有现价时(比如在开盘前),返回昨收盘价
111443
+ //["DYNA_ZAF",null], //DYNA_ZAF 涨幅 DYNAINFO(14) 即时行情数据(沪深京早盘竞价期间使用匹配价的涨幅) 转换成幅度需要乘100
111444
+ //["DYNA_LB", null], //DYNA_LB DYNAINFO(17) 量比 即时行情数据
111445
+ //["DYNA_ZAS",null], //DYNA_ZAS DYNAINFO(24) 返回涨速 报价界面行情数据 转换成幅度需要乘100
111446
+ //["SELLVOL", null], //返回内盘,即DYNAINFO(22) 即时行情数据
111447
+ //["BUYVOL", null], //返回外盘,即DYNAINFO(21) 即时行情数据
111448
+ const MAP_DYNAINFO_SHORTCUT=new Map(
111449
+ [
111450
+ ['DYNA_NOW', { Name:"DYNA_NOW", ID:7 } ],
111451
+ ['DYNA_LB', { Name:"DYNA_LB", ID:17 } ],
111452
+ ['DYNA_ZAS', { Name:"DYNA_ZAS", ID:24 } ],
111453
+ ['SELLVOL', { Name:"SELLVOL", ID:22 }],
111454
+ ['BUYVOL', { Name:"BUYVOL", ID:21 } ],
111455
+ ]
111456
+ );
111388
111457
 
111389
111458
 
111390
111459
 
@@ -112324,6 +112393,14 @@ function Node(ErrorHandler)
112324
112393
  return;
112325
112394
  }
112326
112395
 
112396
+ if (MAP_DYNAINFO_SHORTCUT.has(varName))
112397
+ {
112398
+ var item=MAP_DYNAINFO_SHORTCUT.get(varName);
112399
+ var item={ ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_LATEST_DATA, Args:[item.ID], FunctionName:varName };
112400
+ this.Dynainfo.push(item);
112401
+ return;
112402
+ }
112403
+
112327
112404
  if (varName.indexOf('#')>0)
112328
112405
  {
112329
112406
  var aryWrods = varName.split('#');
@@ -123079,8 +123156,10 @@ var DYNAINFO_ARGUMENT_ID=
123079
123156
  CLOSE:7,
123080
123157
  VOL:8,
123081
123158
  AMOUNT:10,
123159
+ UPDOWN:12, //DYNAINFO(12) 日涨跌 即时行情数据
123082
123160
  AMPLITUDE:13, //振幅
123083
123161
  INCREASE:14, //涨幅
123162
+
123084
123163
  EXCHANGERATE:37, //换手率
123085
123164
  };
123086
123165
 
@@ -123259,16 +123338,18 @@ function JSSymbolData(ast,option,jsExecute)
123259
123338
  let stock=data.stock[0];
123260
123339
  if (!stock) return;
123261
123340
 
123262
- if (IFrameSplitOperator.IsNumber(stock.yclose)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.YCLOSE,stock.yclose);
123263
- if (IFrameSplitOperator.IsNumber(stock.open)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.OPEN,stock.open);
123264
- if (IFrameSplitOperator.IsNumber(stock.high)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.HIGH,stock.high);
123265
- if (IFrameSplitOperator.IsNumber(stock.low)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.LOW,stock.low);
123266
- if (IFrameSplitOperator.IsNumber(stock.price)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.CLOSE,stock.price);
123267
- if (IFrameSplitOperator.IsNumber(stock.vol)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.VOL,stock.vol);
123268
- if (IFrameSplitOperator.IsNumber(stock.amount)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.AMOUNT,stock.amount);
123269
- if (IFrameSplitOperator.IsNumber(stock.increase)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.INCREASE,stock.increase);
123270
- if (IFrameSplitOperator.IsNumber(stock.exchangerate)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.EXCHANGERATE,stock.exchangerate);
123271
- if (IFrameSplitOperator.IsNumber(stock.amplitude)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.AMPLITUDE,stock.amplitude);
123341
+ if (IFrameSplitOperator.IsNumber(stock.yclose)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.YCLOSE),stock.yclose);
123342
+ if (IFrameSplitOperator.IsNumber(stock.open)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.OPEN),stock.open);
123343
+ if (IFrameSplitOperator.IsNumber(stock.high)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.HIGH),stock.high);
123344
+ if (IFrameSplitOperator.IsNumber(stock.low)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.LOW),stock.low);
123345
+ if (IFrameSplitOperator.IsNumber(stock.price)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.CLOSE),stock.price);
123346
+ if (IFrameSplitOperator.IsNumber(stock.vol)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.VOL),stock.vol);
123347
+ if (IFrameSplitOperator.IsNumber(stock.amount)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.AMOUNT),stock.amount);
123348
+ if (IFrameSplitOperator.IsNumber(stock.increase)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.INCREASE),stock.increase);
123349
+ if (IFrameSplitOperator.IsNumber(stock.exchangerate)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.EXCHANGERATE),stock.exchangerate);
123350
+ if (IFrameSplitOperator.IsNumber(stock.amplitude)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.AMPLITUDE),stock.amplitude);
123351
+ if (IFrameSplitOperator.IsNumber(stock.updown)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.UPDOWN),stock.updown);
123352
+
123272
123353
 
123273
123354
  /*
123274
123355
  this.LatestData={ Symbol:stock.symbol, Name:stock.name, Date:stock.date, Time:stock.time,
@@ -123293,7 +123374,7 @@ function JSSymbolData(ast,option,jsExecute)
123293
123374
  if (IFrameSplitOperator.IsNumber(item.value) || IFrameSplitOperator.IsString(item.value))
123294
123375
  {
123295
123376
  JSConsole.Complier.Log(`[JSSymbolData::RecvLatestDataVer2] symbol=${symbol} DYNAINFO(${item.id})=${item.value}.`);
123296
- this.LatestData.set(item.id, item.value);
123377
+ this.LatestData.set(this.GetLatestDataKey(item.id), item.value);
123297
123378
  }
123298
123379
 
123299
123380
  }
@@ -123301,9 +123382,48 @@ function JSSymbolData(ast,option,jsExecute)
123301
123382
  JSConsole.Complier.Log('[JSSymbolData::RecvLatestDataVer2]', this.LatestData);
123302
123383
  }
123303
123384
 
123304
- this.GetLatestCacheData=function(dataname)
123385
+ this.GetLatestCacheData=function(dataID)
123305
123386
  {
123306
- if (this.LatestData.has(dataname)) return this.LatestData.get(dataname);
123387
+ var key=this.GetLatestDataKey(dataID);
123388
+ if (!this.LatestData.has(key)) return null;
123389
+
123390
+ var data=this.LatestData.get(key);
123391
+
123392
+ //DYNAINFO(36) 自由流通换手率(序列数据,每个周期的数据不同,使用最新的自由流通股本) 转换成幅度需要乘100 比如DYNAINFO(36)>0.25表示换手超过25%
123393
+ //DYNAINFO(37) 换手率(序列数据,每个周期的数据不同,使用的流通股本为最近数据) 转换成幅度需要乘100 比如DYNAINFO(37)>0.1表示换手超过10%
123394
+ if (dataID==37 || dataID==36)
123395
+ {
123396
+ var value=null;
123397
+ if (IFrameSplitOperator.IsNumber(data)) value=data;
123398
+ else if (IFrameSplitOperator.IsNonEmptyArray(data) && IFrameSplitOperator.IsNumber(data[0])) value=data[0];
123399
+ else return null;
123400
+
123401
+ if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return null;
123402
+
123403
+ var aryData=[];
123404
+ for(var i=0;i<this.Data.Data.length;++i)
123405
+ {
123406
+ var kItem=this.Data.Data[i];
123407
+ aryData[i]=null;
123408
+ if (!kItem || !IFrameSplitOperator.IsNumber(kItem.Vol)) continue;
123409
+
123410
+ aryData[i]=kItem.Vol/value*100.0;// 换手率
123411
+ }
123412
+
123413
+ return aryData;
123414
+ }
123415
+
123416
+
123417
+ return data;
123418
+ }
123419
+
123420
+ this.GetDynaCacheData=function(name)
123421
+ {
123422
+ if (MAP_DYNAINFO_SHORTCUT.has(name))
123423
+ {
123424
+ var item=MAP_DYNAINFO_SHORTCUT.get(name);
123425
+ return this.GetLatestCacheData(item.ID);
123426
+ }
123307
123427
 
123308
123428
  return null;
123309
123429
  }
@@ -128290,6 +128410,13 @@ function JSExecute(ast,option)
128290
128410
  ["TR", null], //真实波幅
128291
128411
  ["AUTOFILTER", null],
128292
128412
 
128413
+ ["DYNA_NOW",null], //DYNA_NOW 现价 DYNAINFO(7) 即时行情数据 没有现价时(比如在开盘前),返回昨收盘价
128414
+ ["DYNA_ZAF",null], //DYNA_ZAF 涨幅 DYNAINFO(14) 即时行情数据(沪深京早盘竞价期间使用匹配价的涨幅) 转换成幅度需要乘100
128415
+ ["DYNA_LB", null], //DYNA_LB DYNAINFO(17) 量比 即时行情数据
128416
+ ["DYNA_ZAS",null], //DYNA_ZAS DYNAINFO(24) 返回涨速 报价界面行情数据 转换成幅度需要乘100
128417
+ ["SELLVOL", null], //返回内盘,即DYNAINFO(22) 即时行情数据
128418
+ ["BUYVOL", null], //返回外盘,即DYNAINFO(21) 即时行情数据
128419
+
128293
128420
  ['LARGEINTRDVOL', null], //逐笔买入大单成交量,相当于L2_VOL(0,0)+L2_VOL(1,0),沪深京品种的资金流向,仅日线以上周期,用于特定版本
128294
128421
  ['LARGEOUTTRDVOL', null], //逐笔卖出大单成交量,相当于L2_VOL(0,1)+L2_VOL(1,1),沪深京品种的资金流向,仅日线以上周期,用于特定版本
128295
128422
  ["TRADENUM", null], //逐笔成交总单数,沪深京品种的资金流向,仅日线以上周期,用于特定版本
@@ -128622,6 +128749,14 @@ function JSExecute(ast,option)
128622
128749
  return this.SymbolData.WEEKOFYEAR();
128623
128750
  case "DAYSTOTODAY":
128624
128751
  return this.SymbolData.DAYSTOTODAY();
128752
+
128753
+ case "DYNA_NOW":
128754
+ case "DYNA_ZAF":
128755
+ case "DYNA_LB":
128756
+ case "DYNA_ZAS":
128757
+ case "SELLVOL":
128758
+ case "BUYVOL":
128759
+ return this.SymbolData.GetDynaCacheData(name);
128625
128760
  }
128626
128761
 
128627
128762
  this.ThrowUnexpectedNode(node, '变量'+name+'不存在', name);
@@ -147022,7 +147157,15 @@ function ChartReport()
147022
147157
  {
147023
147158
  CloseColor:g_JSChartResource.Report.CloseLine.CloseColor,
147024
147159
  YCloseColor:g_JSChartResource.Report.CloseLine.YCloseColor,
147025
- AreaColor:g_JSChartResource.Report.CloseLine.AreaColor
147160
+ AreaColor:g_JSChartResource.Report.CloseLine.AreaColor,
147161
+
147162
+ UpColor:g_JSChartResource.Report.CloseLine.UpColor,
147163
+ DownColor:g_JSChartResource.Report.CloseLine.DownColor,
147164
+ UnchangeColor:g_JSChartResource.Report.CloseLine.UnchangeColor,
147165
+
147166
+ UpAreaColor:g_JSChartResource.Report.CloseLine.UpAreaColor,
147167
+ DownAreaColor:g_JSChartResource.Report.CloseLine.DownAreaColor,
147168
+ UnchangeAreaColor:g_JSChartResource.Report.CloseLine.UnchangeAreaColor,
147026
147169
  }
147027
147170
 
147028
147171
  //K线配置
@@ -147333,6 +147476,7 @@ function ChartReport()
147333
147476
  else if (item.Type==REPORT_COLUMN_ID.CLOSE_LINE_ID)
147334
147477
  {
147335
147478
  if (IFrameSplitOperator.IsBool(item.IsDrawArea)) colItem.IsDrawArea=item.IsDrawArea;
147479
+ if (IFrameSplitOperator.IsNumber(item.LineColorType)) colItem.LineColorType=item.LineColorType;
147336
147480
  }
147337
147481
  else if(item.Type==REPORT_COLUMN_ID.TIME_ID)
147338
147482
  {
@@ -147461,7 +147605,7 @@ function ChartReport()
147461
147605
  { Type:REPORT_COLUMN_ID.VOL_IN_ID, Title:"内盘", TextAlign:"right", TextColor:g_JSChartResource.Report.DownTextColor, Width:null, MaxText:"8888.8擎" },
147462
147606
  { Type:REPORT_COLUMN_ID.VOL_OUT_ID, Title:"外盘", TextAlign:"right", TextColor:g_JSChartResource.Report.UpTextColor, Width:null, MaxText:"8888.8擎" },
147463
147607
 
147464
- { Type:REPORT_COLUMN_ID.CLOSE_LINE_ID, Title:"走势", TextAlign:"center", TextColor:g_JSChartResource.Report.CloseLineColor, Width:null, MaxText:"88888.88888" },
147608
+ { Type:REPORT_COLUMN_ID.CLOSE_LINE_ID, Title:"走势", TextAlign:"center", TextColor:g_JSChartResource.Report.CloseLineColor, Width:null, MaxText:"88888.88888", LineColorType:0 },
147465
147609
 
147466
147610
 
147467
147611
  { Type:REPORT_COLUMN_ID.BUY_VOL_ID, Title:"买量", TextAlign:"right", TextColor:g_JSChartResource.Report.FieldColor.Vol, Width:null, MaxText:"8888.8擎" },
@@ -150500,8 +150644,7 @@ function ChartReport()
150500
150644
  this.Canvas.setLineDash([]);
150501
150645
  }
150502
150646
 
150503
- if (lineData.Color) this.Canvas.strokeStyle=lineData.Color;
150504
- else this.Canvas.strokeStyle=this.CloseLineConfig.CloseColor;
150647
+ this.Canvas.strokeStyle=this.GetCloseLineColor(lineData, column);
150505
150648
 
150506
150649
  var bFirstPoint=true;
150507
150650
  var ptFirst={}; //第1个点
@@ -150539,8 +150682,7 @@ function ChartReport()
150539
150682
  this.Canvas.lineTo(x,yCenter);
150540
150683
  this.Canvas.lineTo(ptFirst.X,yCenter);
150541
150684
  this.Canvas.closePath();
150542
- var areaColor=this.CloseLineConfig.AreaColor;
150543
- if (lineData.AreaColor) areaColor=lineData.AreaColor;
150685
+ var areaColor=this.GetCloseAreaColor(lineData, column);
150544
150686
  this.SetFillStyle(areaColor,left,top, left,bottom);
150545
150687
  this.Canvas.fill();
150546
150688
  }
@@ -150549,6 +150691,48 @@ function ChartReport()
150549
150691
  this.Canvas.restore();
150550
150692
  }
150551
150693
 
150694
+ this.GetCloseLineColor=function(lineData, column)
150695
+ {
150696
+ var color=this.CloseLineConfig.CloseColor;
150697
+ if (lineData.Color)
150698
+ {
150699
+ color=lineData.Color;
150700
+ }
150701
+ else if (column.LineColorType==1)
150702
+ {
150703
+ var color= this.CloseLineConfig.UnchangeColor;
150704
+ if (IFrameSplitOperator.IsNumber(lineData.YClose) && IFrameSplitOperator.IsNonEmptyArray(lineData.Data) && IFrameSplitOperator.IsNumber(lineData.Data[ lineData.Data.length -1 ]))
150705
+ {
150706
+ var lastValue=lineData.Data[ lineData.Data.length -1 ];
150707
+ if (lastValue>lineData.YClose) color=this.CloseLineConfig.UpColor;
150708
+ else if (lastValue<lineData.YClose) color=this.CloseLineConfig.DownColor;
150709
+ }
150710
+ }
150711
+
150712
+ return color;
150713
+ }
150714
+
150715
+ this.GetCloseAreaColor=function(lineData, column)
150716
+ {
150717
+ var color=this.CloseLineConfig.AreaColor;
150718
+ if (lineData.AreaColor)
150719
+ {
150720
+ color=lineData.AreaColor;
150721
+ }
150722
+ else if (column.LineColorType==1)
150723
+ {
150724
+ var color= this.CloseLineConfig.UnchangeAreaColor;
150725
+ if (IFrameSplitOperator.IsNumber(lineData.YClose) && IFrameSplitOperator.IsNonEmptyArray(lineData.Data) && IFrameSplitOperator.IsNumber(lineData.Data[ lineData.Data.length -1 ]))
150726
+ {
150727
+ var lastValue=lineData.Data[ lineData.Data.length -1 ];
150728
+ if (lastValue>lineData.YClose) color=this.CloseLineConfig.UpAreaColor;
150729
+ else if (lastValue<lineData.YClose) color=this.CloseLineConfig.DownAreaColor;
150730
+ }
150731
+ }
150732
+
150733
+ return color;
150734
+ }
150735
+
150552
150736
  //klineData={ Data:[ open, high, low, close ] }
150553
150737
  this.DrawKLine=function(klineData, column, rtItem, data)
150554
150738
  {
@@ -150618,7 +150802,31 @@ function ChartReport()
150618
150802
  var distanceWidth=this.KLineConfig.DistanceWidth;
150619
150803
  var xOffset=left;
150620
150804
  var x, xLeft, xRight;
150805
+ var drawCount=0;
150621
150806
  for(var i=0;i<aryKLine.length;++i,xOffset+=(dataWidth+distanceWidth))
150807
+ {
150808
+ xLeft=xOffset;
150809
+ xRight=xOffset+dataWidth;
150810
+ x=xLeft+(xRight-xLeft)/2;
150811
+ if (xRight>right) break;
150812
+ drawCount++;
150813
+ }
150814
+
150815
+ var xOffset=left;
150816
+ var startIndex=0;
150817
+ if (aryKLine.length>drawCount)
150818
+ {
150819
+ high=null,low=null;
150820
+ startIndex=aryKLine.length-drawCount;
150821
+ for(var i=startIndex;i<aryKLine.length;++i)
150822
+ {
150823
+ var item=aryKLine[i];
150824
+ if (high==null || high<item.High) high=item.High;
150825
+ if (low==null || low>item.Low) low=item.Low;
150826
+ }
150827
+ }
150828
+
150829
+ for(var i=startIndex;i<aryKLine.length;++i,xOffset+=(dataWidth+distanceWidth))
150622
150830
  {
150623
150831
  var item=aryKLine[i];
150624
150832
  xLeft=xOffset;
@@ -150706,7 +150914,11 @@ function ChartReport()
150706
150914
  }
150707
150915
  else
150708
150916
  {
150709
-
150917
+ this.Canvas.beginPath();
150918
+ var xBar=x;
150919
+ this.Canvas.moveTo(ToFixedPoint(xBar),ToFixedPoint(yBarTop));
150920
+ this.Canvas.lineTo(ToFixedPoint(xBar),ToFixedPoint(yBarBottom));
150921
+ this.Canvas.stroke();
150710
150922
  }
150711
150923
  }
150712
150924
 
@@ -167609,7 +167821,7 @@ function HQChartScriptWorker()
167609
167821
 
167610
167822
 
167611
167823
 
167612
- var HQCHART_VERSION="1.1.15381";
167824
+ var HQCHART_VERSION="1.1.15389";
167613
167825
 
167614
167826
  function PrintHQChartVersion()
167615
167827
  {