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.
@@ -12688,6 +12688,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12688
12688
  return false;
12689
12689
  }
12690
12690
 
12691
+ this.IsHScreenModel=function()
12692
+ {
12693
+ if (this.ClassName=="KLineChartHScreenContainer" || this.ClassName=="MinuteChartHScreenContainer") return true;
12694
+
12695
+ return false;
12696
+ }
12697
+
12691
12698
  this.UpdatePointByCursorIndex=function(type) //type 1=根据十字光标更新 2=强制取消十字光标
12692
12699
  {
12693
12700
  if (type==1) //根据十字光标更新
@@ -12708,8 +12715,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12708
12715
  pt.X=null;
12709
12716
  }
12710
12717
  }
12711
- this.LastPoint.X=pt.X;
12712
- this.LastPoint.Y=pt.Y;
12718
+
12719
+ if (this.IsHScreenModel())
12720
+ {
12721
+ this.LastPoint.X=pt.Y;
12722
+ this.LastPoint.Y=pt.X;
12723
+ }
12724
+ else
12725
+ {
12726
+ this.LastPoint.X=pt.X;
12727
+ this.LastPoint.Y=pt.Y;
12728
+ }
12729
+
12713
12730
  }
12714
12731
  else if (type==2)
12715
12732
  {
@@ -12729,8 +12746,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12729
12746
  pt.Y=this.Frame.GetYFromData(close);
12730
12747
  this.LastPoint.FrameID=0;
12731
12748
  }
12732
- this.LastPoint.X=pt.X;
12733
- this.LastPoint.Y=pt.Y;
12749
+
12750
+ if (this.IsHScreenModel())
12751
+ {
12752
+ this.LastPoint.X=pt.Y;
12753
+ this.LastPoint.Y=pt.X;
12754
+ }
12755
+ else
12756
+ {
12757
+ this.LastPoint.X=pt.X;
12758
+ this.LastPoint.Y=pt.Y;
12759
+ }
12760
+
12734
12761
  }
12735
12762
  }
12736
12763
 
@@ -83567,6 +83594,13 @@ function JSChartResource()
83567
83594
  CloseColor:"rgb(30,144,255)",
83568
83595
  YCloseColor:"rgba(105,105,105,0.5)", //昨收线
83569
83596
  AreaColor:'rgba(0,191,255,0.2)',
83597
+
83598
+ UpColor:"rgb(255,0,0)",
83599
+ UpAreaColor:"rgba(255,0,0,0.5)",
83600
+ DownColor:"rgb(0,128,0)",
83601
+ DownAreaColor:"rgba(0,128,0,0.5)",
83602
+ UnchangeColor:'rgb(90,90,90)',
83603
+ UnchangeAreaColor:'rgba(90,90,90,0.5)',
83570
83604
  },
83571
83605
 
83572
83606
  KLine:
@@ -84965,6 +84999,13 @@ function JSChartResource()
84965
84999
  if (closeLine.CloseColor) this.Report.CloseLine.CloseColor=closeLine.CloseColor;
84966
85000
  if (closeLine.YCloseColor) this.Report.CloseLine.YCloseColor=closeLine.YCloseColor;
84967
85001
  if (closeLine.AreaColor) this.Report.CloseLine.AreaColor=closeLine.AreaColor;
85002
+
85003
+ if (closeLine.UpColor) this.Report.CloseLine.UpColor=closeLine.UpColor;
85004
+ if (closeLine.UpAreaColor) this.Report.CloseLine.UpAreaColor=closeLine.UpAreaColor;
85005
+ if (closeLine.DownColor) this.Report.CloseLine.DownColor=closeLine.DownColor;
85006
+ if (closeLine.DownAreaColor) this.Report.CloseLine.DownAreaColor=closeLine.DownAreaColor;
85007
+ if (closeLine.UnchangeColor) this.Report.CloseLine.UnchangeColor=closeLine.UnchangeColor;
85008
+ if (closeLine.UnchangeAreaColor) this.Report.CloseLine.UnchangeAreaColor=closeLine.UnchangeAreaColor;
84968
85009
  }
84969
85010
 
84970
85011
  if (item.KLine)
@@ -97713,21 +97754,31 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
97713
97754
 
97714
97755
  this.UpdatePointByCursorIndex=function()
97715
97756
  {
97716
- this.LastPoint.X=this.Frame.GetXFromIndex(this.CursorIndex);
97757
+ var x=null, y=null;
97758
+ x=this.Frame.GetXFromIndex(this.CursorIndex);
97717
97759
 
97718
97760
  var index=this.CursorIndex;
97719
97761
  index=parseInt(index.toFixed(0));
97720
97762
  var data=this.GetKData();
97721
- if (data.DataOffset+index>=data.Data.length)
97763
+ if (data.DataOffset+index<data.Data.length)
97722
97764
  {
97723
- return;
97765
+ var item=data.Data[data.DataOffset+index];
97766
+ var close=null;
97767
+ if (item.Before) close=item.Before.Close;
97768
+ else close=item.Close;
97769
+ y=this.Frame.GetYFromData(close);
97724
97770
  }
97725
- var item=data.Data[data.DataOffset+index];
97726
- var close=null;
97727
- if (item.Before) close=item.Before.Close;
97728
- else close=item.Close
97729
97771
 
97730
- this.LastPoint.Y=this.Frame.GetYFromData(close);
97772
+ if (this.IsHScreenModel())
97773
+ {
97774
+ this.LastPoint.X=y;
97775
+ this.LastPoint.Y=x;
97776
+ }
97777
+ else
97778
+ {
97779
+ this.LastPoint.X=x;
97780
+ this.LastPoint.Y=y;
97781
+ }
97731
97782
  this.LastPoint.FrameID=0;
97732
97783
  }
97733
97784
 
@@ -111341,6 +111392,24 @@ JSComplierHelper.GetConvertValueName=function(funcName)
111341
111392
 
111342
111393
  return valueName;
111343
111394
  }
111395
+
111396
+
111397
+ //DYNAINFO() 转换
111398
+ //["DYNA_NOW",null], //DYNA_NOW 现价 DYNAINFO(7) 即时行情数据 没有现价时(比如在开盘前),返回昨收盘价
111399
+ //["DYNA_ZAF",null], //DYNA_ZAF 涨幅 DYNAINFO(14) 即时行情数据(沪深京早盘竞价期间使用匹配价的涨幅) 转换成幅度需要乘100
111400
+ //["DYNA_LB", null], //DYNA_LB DYNAINFO(17) 量比 即时行情数据
111401
+ //["DYNA_ZAS",null], //DYNA_ZAS DYNAINFO(24) 返回涨速 报价界面行情数据 转换成幅度需要乘100
111402
+ //["SELLVOL", null], //返回内盘,即DYNAINFO(22) 即时行情数据
111403
+ //["BUYVOL", null], //返回外盘,即DYNAINFO(21) 即时行情数据
111404
+ const MAP_DYNAINFO_SHORTCUT=new Map(
111405
+ [
111406
+ ['DYNA_NOW', { Name:"DYNA_NOW", ID:7 } ],
111407
+ ['DYNA_LB', { Name:"DYNA_LB", ID:17 } ],
111408
+ ['DYNA_ZAS', { Name:"DYNA_ZAS", ID:24 } ],
111409
+ ['SELLVOL', { Name:"SELLVOL", ID:22 }],
111410
+ ['BUYVOL', { Name:"BUYVOL", ID:21 } ],
111411
+ ]
111412
+ );
111344
111413
 
111345
111414
 
111346
111415
 
@@ -112280,6 +112349,14 @@ function Node(ErrorHandler)
112280
112349
  return;
112281
112350
  }
112282
112351
 
112352
+ if (MAP_DYNAINFO_SHORTCUT.has(varName))
112353
+ {
112354
+ var item=MAP_DYNAINFO_SHORTCUT.get(varName);
112355
+ var item={ ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_LATEST_DATA, Args:[item.ID], FunctionName:varName };
112356
+ this.Dynainfo.push(item);
112357
+ return;
112358
+ }
112359
+
112283
112360
  if (varName.indexOf('#')>0)
112284
112361
  {
112285
112362
  var aryWrods = varName.split('#');
@@ -123035,8 +123112,10 @@ var DYNAINFO_ARGUMENT_ID=
123035
123112
  CLOSE:7,
123036
123113
  VOL:8,
123037
123114
  AMOUNT:10,
123115
+ UPDOWN:12, //DYNAINFO(12) 日涨跌 即时行情数据
123038
123116
  AMPLITUDE:13, //振幅
123039
123117
  INCREASE:14, //涨幅
123118
+
123040
123119
  EXCHANGERATE:37, //换手率
123041
123120
  };
123042
123121
 
@@ -123215,16 +123294,18 @@ function JSSymbolData(ast,option,jsExecute)
123215
123294
  let stock=data.stock[0];
123216
123295
  if (!stock) return;
123217
123296
 
123218
- if (IFrameSplitOperator.IsNumber(stock.yclose)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.YCLOSE,stock.yclose);
123219
- if (IFrameSplitOperator.IsNumber(stock.open)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.OPEN,stock.open);
123220
- if (IFrameSplitOperator.IsNumber(stock.high)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.HIGH,stock.high);
123221
- if (IFrameSplitOperator.IsNumber(stock.low)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.LOW,stock.low);
123222
- if (IFrameSplitOperator.IsNumber(stock.price)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.CLOSE,stock.price);
123223
- if (IFrameSplitOperator.IsNumber(stock.vol)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.VOL,stock.vol);
123224
- if (IFrameSplitOperator.IsNumber(stock.amount)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.AMOUNT,stock.amount);
123225
- if (IFrameSplitOperator.IsNumber(stock.increase)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.INCREASE,stock.increase);
123226
- if (IFrameSplitOperator.IsNumber(stock.exchangerate)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.EXCHANGERATE,stock.exchangerate);
123227
- if (IFrameSplitOperator.IsNumber(stock.amplitude)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.AMPLITUDE,stock.amplitude);
123297
+ if (IFrameSplitOperator.IsNumber(stock.yclose)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.YCLOSE),stock.yclose);
123298
+ if (IFrameSplitOperator.IsNumber(stock.open)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.OPEN),stock.open);
123299
+ if (IFrameSplitOperator.IsNumber(stock.high)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.HIGH),stock.high);
123300
+ if (IFrameSplitOperator.IsNumber(stock.low)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.LOW),stock.low);
123301
+ if (IFrameSplitOperator.IsNumber(stock.price)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.CLOSE),stock.price);
123302
+ if (IFrameSplitOperator.IsNumber(stock.vol)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.VOL),stock.vol);
123303
+ if (IFrameSplitOperator.IsNumber(stock.amount)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.AMOUNT),stock.amount);
123304
+ if (IFrameSplitOperator.IsNumber(stock.increase)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.INCREASE),stock.increase);
123305
+ if (IFrameSplitOperator.IsNumber(stock.exchangerate)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.EXCHANGERATE),stock.exchangerate);
123306
+ if (IFrameSplitOperator.IsNumber(stock.amplitude)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.AMPLITUDE),stock.amplitude);
123307
+ if (IFrameSplitOperator.IsNumber(stock.updown)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.UPDOWN),stock.updown);
123308
+
123228
123309
 
123229
123310
  /*
123230
123311
  this.LatestData={ Symbol:stock.symbol, Name:stock.name, Date:stock.date, Time:stock.time,
@@ -123249,7 +123330,7 @@ function JSSymbolData(ast,option,jsExecute)
123249
123330
  if (IFrameSplitOperator.IsNumber(item.value) || IFrameSplitOperator.IsString(item.value))
123250
123331
  {
123251
123332
  JSConsole.Complier.Log(`[JSSymbolData::RecvLatestDataVer2] symbol=${symbol} DYNAINFO(${item.id})=${item.value}.`);
123252
- this.LatestData.set(item.id, item.value);
123333
+ this.LatestData.set(this.GetLatestDataKey(item.id), item.value);
123253
123334
  }
123254
123335
 
123255
123336
  }
@@ -123257,9 +123338,48 @@ function JSSymbolData(ast,option,jsExecute)
123257
123338
  JSConsole.Complier.Log('[JSSymbolData::RecvLatestDataVer2]', this.LatestData);
123258
123339
  }
123259
123340
 
123260
- this.GetLatestCacheData=function(dataname)
123341
+ this.GetLatestCacheData=function(dataID)
123261
123342
  {
123262
- if (this.LatestData.has(dataname)) return this.LatestData.get(dataname);
123343
+ var key=this.GetLatestDataKey(dataID);
123344
+ if (!this.LatestData.has(key)) return null;
123345
+
123346
+ var data=this.LatestData.get(key);
123347
+
123348
+ //DYNAINFO(36) 自由流通换手率(序列数据,每个周期的数据不同,使用最新的自由流通股本) 转换成幅度需要乘100 比如DYNAINFO(36)>0.25表示换手超过25%
123349
+ //DYNAINFO(37) 换手率(序列数据,每个周期的数据不同,使用的流通股本为最近数据) 转换成幅度需要乘100 比如DYNAINFO(37)>0.1表示换手超过10%
123350
+ if (dataID==37 || dataID==36)
123351
+ {
123352
+ var value=null;
123353
+ if (IFrameSplitOperator.IsNumber(data)) value=data;
123354
+ else if (IFrameSplitOperator.IsNonEmptyArray(data) && IFrameSplitOperator.IsNumber(data[0])) value=data[0];
123355
+ else return null;
123356
+
123357
+ if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return null;
123358
+
123359
+ var aryData=[];
123360
+ for(var i=0;i<this.Data.Data.length;++i)
123361
+ {
123362
+ var kItem=this.Data.Data[i];
123363
+ aryData[i]=null;
123364
+ if (!kItem || !IFrameSplitOperator.IsNumber(kItem.Vol)) continue;
123365
+
123366
+ aryData[i]=kItem.Vol/value*100.0;// 换手率
123367
+ }
123368
+
123369
+ return aryData;
123370
+ }
123371
+
123372
+
123373
+ return data;
123374
+ }
123375
+
123376
+ this.GetDynaCacheData=function(name)
123377
+ {
123378
+ if (MAP_DYNAINFO_SHORTCUT.has(name))
123379
+ {
123380
+ var item=MAP_DYNAINFO_SHORTCUT.get(name);
123381
+ return this.GetLatestCacheData(item.ID);
123382
+ }
123263
123383
 
123264
123384
  return null;
123265
123385
  }
@@ -128246,6 +128366,13 @@ function JSExecute(ast,option)
128246
128366
  ["TR", null], //真实波幅
128247
128367
  ["AUTOFILTER", null],
128248
128368
 
128369
+ ["DYNA_NOW",null], //DYNA_NOW 现价 DYNAINFO(7) 即时行情数据 没有现价时(比如在开盘前),返回昨收盘价
128370
+ ["DYNA_ZAF",null], //DYNA_ZAF 涨幅 DYNAINFO(14) 即时行情数据(沪深京早盘竞价期间使用匹配价的涨幅) 转换成幅度需要乘100
128371
+ ["DYNA_LB", null], //DYNA_LB DYNAINFO(17) 量比 即时行情数据
128372
+ ["DYNA_ZAS",null], //DYNA_ZAS DYNAINFO(24) 返回涨速 报价界面行情数据 转换成幅度需要乘100
128373
+ ["SELLVOL", null], //返回内盘,即DYNAINFO(22) 即时行情数据
128374
+ ["BUYVOL", null], //返回外盘,即DYNAINFO(21) 即时行情数据
128375
+
128249
128376
  ['LARGEINTRDVOL', null], //逐笔买入大单成交量,相当于L2_VOL(0,0)+L2_VOL(1,0),沪深京品种的资金流向,仅日线以上周期,用于特定版本
128250
128377
  ['LARGEOUTTRDVOL', null], //逐笔卖出大单成交量,相当于L2_VOL(0,1)+L2_VOL(1,1),沪深京品种的资金流向,仅日线以上周期,用于特定版本
128251
128378
  ["TRADENUM", null], //逐笔成交总单数,沪深京品种的资金流向,仅日线以上周期,用于特定版本
@@ -128578,6 +128705,14 @@ function JSExecute(ast,option)
128578
128705
  return this.SymbolData.WEEKOFYEAR();
128579
128706
  case "DAYSTOTODAY":
128580
128707
  return this.SymbolData.DAYSTOTODAY();
128708
+
128709
+ case "DYNA_NOW":
128710
+ case "DYNA_ZAF":
128711
+ case "DYNA_LB":
128712
+ case "DYNA_ZAS":
128713
+ case "SELLVOL":
128714
+ case "BUYVOL":
128715
+ return this.SymbolData.GetDynaCacheData(name);
128581
128716
  }
128582
128717
 
128583
128718
  this.ThrowUnexpectedNode(node, '变量'+name+'不存在', name);
@@ -146978,7 +147113,15 @@ function ChartReport()
146978
147113
  {
146979
147114
  CloseColor:g_JSChartResource.Report.CloseLine.CloseColor,
146980
147115
  YCloseColor:g_JSChartResource.Report.CloseLine.YCloseColor,
146981
- AreaColor:g_JSChartResource.Report.CloseLine.AreaColor
147116
+ AreaColor:g_JSChartResource.Report.CloseLine.AreaColor,
147117
+
147118
+ UpColor:g_JSChartResource.Report.CloseLine.UpColor,
147119
+ DownColor:g_JSChartResource.Report.CloseLine.DownColor,
147120
+ UnchangeColor:g_JSChartResource.Report.CloseLine.UnchangeColor,
147121
+
147122
+ UpAreaColor:g_JSChartResource.Report.CloseLine.UpAreaColor,
147123
+ DownAreaColor:g_JSChartResource.Report.CloseLine.DownAreaColor,
147124
+ UnchangeAreaColor:g_JSChartResource.Report.CloseLine.UnchangeAreaColor,
146982
147125
  }
146983
147126
 
146984
147127
  //K线配置
@@ -147289,6 +147432,7 @@ function ChartReport()
147289
147432
  else if (item.Type==REPORT_COLUMN_ID.CLOSE_LINE_ID)
147290
147433
  {
147291
147434
  if (IFrameSplitOperator.IsBool(item.IsDrawArea)) colItem.IsDrawArea=item.IsDrawArea;
147435
+ if (IFrameSplitOperator.IsNumber(item.LineColorType)) colItem.LineColorType=item.LineColorType;
147292
147436
  }
147293
147437
  else if(item.Type==REPORT_COLUMN_ID.TIME_ID)
147294
147438
  {
@@ -147417,7 +147561,7 @@ function ChartReport()
147417
147561
  { Type:REPORT_COLUMN_ID.VOL_IN_ID, Title:"内盘", TextAlign:"right", TextColor:g_JSChartResource.Report.DownTextColor, Width:null, MaxText:"8888.8擎" },
147418
147562
  { Type:REPORT_COLUMN_ID.VOL_OUT_ID, Title:"外盘", TextAlign:"right", TextColor:g_JSChartResource.Report.UpTextColor, Width:null, MaxText:"8888.8擎" },
147419
147563
 
147420
- { Type:REPORT_COLUMN_ID.CLOSE_LINE_ID, Title:"走势", TextAlign:"center", TextColor:g_JSChartResource.Report.CloseLineColor, Width:null, MaxText:"88888.88888" },
147564
+ { Type:REPORT_COLUMN_ID.CLOSE_LINE_ID, Title:"走势", TextAlign:"center", TextColor:g_JSChartResource.Report.CloseLineColor, Width:null, MaxText:"88888.88888", LineColorType:0 },
147421
147565
 
147422
147566
 
147423
147567
  { Type:REPORT_COLUMN_ID.BUY_VOL_ID, Title:"买量", TextAlign:"right", TextColor:g_JSChartResource.Report.FieldColor.Vol, Width:null, MaxText:"8888.8擎" },
@@ -150456,8 +150600,7 @@ function ChartReport()
150456
150600
  this.Canvas.setLineDash([]);
150457
150601
  }
150458
150602
 
150459
- if (lineData.Color) this.Canvas.strokeStyle=lineData.Color;
150460
- else this.Canvas.strokeStyle=this.CloseLineConfig.CloseColor;
150603
+ this.Canvas.strokeStyle=this.GetCloseLineColor(lineData, column);
150461
150604
 
150462
150605
  var bFirstPoint=true;
150463
150606
  var ptFirst={}; //第1个点
@@ -150495,8 +150638,7 @@ function ChartReport()
150495
150638
  this.Canvas.lineTo(x,yCenter);
150496
150639
  this.Canvas.lineTo(ptFirst.X,yCenter);
150497
150640
  this.Canvas.closePath();
150498
- var areaColor=this.CloseLineConfig.AreaColor;
150499
- if (lineData.AreaColor) areaColor=lineData.AreaColor;
150641
+ var areaColor=this.GetCloseAreaColor(lineData, column);
150500
150642
  this.SetFillStyle(areaColor,left,top, left,bottom);
150501
150643
  this.Canvas.fill();
150502
150644
  }
@@ -150505,6 +150647,48 @@ function ChartReport()
150505
150647
  this.Canvas.restore();
150506
150648
  }
150507
150649
 
150650
+ this.GetCloseLineColor=function(lineData, column)
150651
+ {
150652
+ var color=this.CloseLineConfig.CloseColor;
150653
+ if (lineData.Color)
150654
+ {
150655
+ color=lineData.Color;
150656
+ }
150657
+ else if (column.LineColorType==1)
150658
+ {
150659
+ var color= this.CloseLineConfig.UnchangeColor;
150660
+ if (IFrameSplitOperator.IsNumber(lineData.YClose) && IFrameSplitOperator.IsNonEmptyArray(lineData.Data) && IFrameSplitOperator.IsNumber(lineData.Data[ lineData.Data.length -1 ]))
150661
+ {
150662
+ var lastValue=lineData.Data[ lineData.Data.length -1 ];
150663
+ if (lastValue>lineData.YClose) color=this.CloseLineConfig.UpColor;
150664
+ else if (lastValue<lineData.YClose) color=this.CloseLineConfig.DownColor;
150665
+ }
150666
+ }
150667
+
150668
+ return color;
150669
+ }
150670
+
150671
+ this.GetCloseAreaColor=function(lineData, column)
150672
+ {
150673
+ var color=this.CloseLineConfig.AreaColor;
150674
+ if (lineData.AreaColor)
150675
+ {
150676
+ color=lineData.AreaColor;
150677
+ }
150678
+ else if (column.LineColorType==1)
150679
+ {
150680
+ var color= this.CloseLineConfig.UnchangeAreaColor;
150681
+ if (IFrameSplitOperator.IsNumber(lineData.YClose) && IFrameSplitOperator.IsNonEmptyArray(lineData.Data) && IFrameSplitOperator.IsNumber(lineData.Data[ lineData.Data.length -1 ]))
150682
+ {
150683
+ var lastValue=lineData.Data[ lineData.Data.length -1 ];
150684
+ if (lastValue>lineData.YClose) color=this.CloseLineConfig.UpAreaColor;
150685
+ else if (lastValue<lineData.YClose) color=this.CloseLineConfig.DownAreaColor;
150686
+ }
150687
+ }
150688
+
150689
+ return color;
150690
+ }
150691
+
150508
150692
  //klineData={ Data:[ open, high, low, close ] }
150509
150693
  this.DrawKLine=function(klineData, column, rtItem, data)
150510
150694
  {
@@ -150574,7 +150758,31 @@ function ChartReport()
150574
150758
  var distanceWidth=this.KLineConfig.DistanceWidth;
150575
150759
  var xOffset=left;
150576
150760
  var x, xLeft, xRight;
150761
+ var drawCount=0;
150577
150762
  for(var i=0;i<aryKLine.length;++i,xOffset+=(dataWidth+distanceWidth))
150763
+ {
150764
+ xLeft=xOffset;
150765
+ xRight=xOffset+dataWidth;
150766
+ x=xLeft+(xRight-xLeft)/2;
150767
+ if (xRight>right) break;
150768
+ drawCount++;
150769
+ }
150770
+
150771
+ var xOffset=left;
150772
+ var startIndex=0;
150773
+ if (aryKLine.length>drawCount)
150774
+ {
150775
+ high=null,low=null;
150776
+ startIndex=aryKLine.length-drawCount;
150777
+ for(var i=startIndex;i<aryKLine.length;++i)
150778
+ {
150779
+ var item=aryKLine[i];
150780
+ if (high==null || high<item.High) high=item.High;
150781
+ if (low==null || low>item.Low) low=item.Low;
150782
+ }
150783
+ }
150784
+
150785
+ for(var i=startIndex;i<aryKLine.length;++i,xOffset+=(dataWidth+distanceWidth))
150578
150786
  {
150579
150787
  var item=aryKLine[i];
150580
150788
  xLeft=xOffset;
@@ -150662,7 +150870,11 @@ function ChartReport()
150662
150870
  }
150663
150871
  else
150664
150872
  {
150665
-
150873
+ this.Canvas.beginPath();
150874
+ var xBar=x;
150875
+ this.Canvas.moveTo(ToFixedPoint(xBar),ToFixedPoint(yBarTop));
150876
+ this.Canvas.lineTo(ToFixedPoint(xBar),ToFixedPoint(yBarBottom));
150877
+ this.Canvas.stroke();
150666
150878
  }
150667
150879
  }
150668
150880
 
@@ -155550,7 +155762,7 @@ function ScrollBarBGChart()
155550
155762
 
155551
155763
 
155552
155764
 
155553
- var HQCHART_VERSION="1.1.15381";
155765
+ var HQCHART_VERSION="1.1.15389";
155554
155766
 
155555
155767
  function PrintHQChartVersion()
155556
155768
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.15381";
8
+ var HQCHART_VERSION="1.1.15389";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {