hqchart 1.1.15375 → 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.
@@ -11216,7 +11216,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11216
11216
  {
11217
11217
  var item=this.OverlayChartPaint[i];
11218
11218
  if (!item) continue;
11219
- if (item.YInfoType!=4) continue;
11219
+ if (item.YInfoConfig.Type===0) continue;
11220
11220
  var data=item.Data;
11221
11221
  if (!data || !IFrameSplitOperator.IsNonEmptyArray(data.Data)) continue;
11222
11222
  if (!IFrameSplitOperator.IsNumber(item.DrawKRange.Start) || !IFrameSplitOperator.IsNumber(item.DrawKRange.End)) continue;
@@ -11236,15 +11236,29 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11236
11236
 
11237
11237
  var endKLine=data.Data[item.DrawKRange.End];
11238
11238
  var value=(endKLine.Close-startKLine.Close)/startKLine.Close*100;
11239
-
11239
+ var text="";
11240
+ if (item.YInfoConfig.Type===3)
11241
+ {
11242
+ var dec=GetfloatPrecision(item.Symbol); //小数位数
11243
+ text=endKLine.Close.toFixed(dec);
11244
+ }
11245
+ else if (item.YInfoConfig.Type===4)
11246
+ {
11247
+ text=value.toFixed(2)+"%";
11248
+ }
11249
+ else
11250
+ {
11251
+ continue;
11252
+ }
11253
+
11240
11254
  var info=new CoordinateInfo();
11241
11255
  info.Value=endKLine.Close/item.ShowRange.FirstOverlayOpen*item.ShowRange.FirstOpen;
11242
- info.Message[1]=value.toFixed(2)+"%";
11256
+ info.Message[1]=text
11243
11257
  info.LineType=-1;
11244
- info.Type=item.YInfoType; //叠加股票
11258
+ info.Type=4; //叠加股票
11245
11259
  info.LineColor=item.Color;
11246
11260
  info.TextColor=g_JSChartResource.FrameLatestPrice.OverlayTextColor;
11247
- if (item.Title) info.Title=item.Title;
11261
+ if (item.Title && item.YInfoConfig.IsShowName) info.Title=item.Title;
11248
11262
  frame.CustomHorizontalInfo.push(info);
11249
11263
  }
11250
11264
  }
@@ -12718,6 +12732,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12718
12732
  return false;
12719
12733
  }
12720
12734
 
12735
+ this.IsHScreenModel=function()
12736
+ {
12737
+ if (this.ClassName=="KLineChartHScreenContainer" || this.ClassName=="MinuteChartHScreenContainer") return true;
12738
+
12739
+ return false;
12740
+ }
12741
+
12721
12742
  this.UpdatePointByCursorIndex=function(type) //type 1=根据十字光标更新 2=强制取消十字光标
12722
12743
  {
12723
12744
  if (type==1) //根据十字光标更新
@@ -12738,8 +12759,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12738
12759
  pt.X=null;
12739
12760
  }
12740
12761
  }
12741
- this.LastPoint.X=pt.X;
12742
- 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
+
12743
12774
  }
12744
12775
  else if (type==2)
12745
12776
  {
@@ -12759,8 +12790,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12759
12790
  pt.Y=this.Frame.GetYFromData(close);
12760
12791
  this.LastPoint.FrameID=0;
12761
12792
  }
12762
- this.LastPoint.X=pt.X;
12763
- 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
+
12764
12805
  }
12765
12806
  }
12766
12807
 
@@ -31730,6 +31771,7 @@ function IChartPainting()
31730
31771
  var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
31731
31772
  var chartright=border.RightEx;
31732
31773
  var xPointCount=this.ChartFrame.XPointCount;
31774
+ if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return null;
31733
31775
 
31734
31776
  if (isHScreen)
31735
31777
  {
@@ -38066,13 +38108,19 @@ function ChartOverlayKLine()
38066
38108
  this.CloseLineWidth=g_JSChartResource.CloseLineWidth;
38067
38109
  this.ShowRange={ }; //K线显示范围 { Start:, End:, DataCount:, ShowCount: }
38068
38110
  this.DrawKRange={ Start:null, End:null }; //当前屏K线的索引{ Start: , End:}
38069
- this.YInfoType=4;
38111
+ this.YInfoConfig={ Type:0, IsShowName:false } //右侧Y轴自定刻度设置 0不显示 3=名字|最新价 4=名字|涨幅
38070
38112
 
38071
38113
  this.SetOption=function(option)
38072
38114
  {
38073
38115
  if (!option) return;
38074
38116
  if (IFrameSplitOperator.IsNumber(option.DrawType)) this.CustomDrawType=option.DrawType;
38075
- if (IFrameSplitOperator.IsNumber(option.YInfoType)) this.YInfoType=option.YInfoType;
38117
+ if (IFrameSplitOperator.IsNumber(option.YInfoType)) this.YInfoConfig.Type=option.YInfoType;
38118
+ if (option.YInfo)
38119
+ {
38120
+ var item=option.YInfo;
38121
+ if (IFrameSplitOperator.IsNumber(item.Type)) this.YInfoConfig.Type=item.Type;
38122
+ if (IFrameSplitOperator.IsBool(item.IsShowName)) this.YInfoConfig.IsShowName=item.IsShowName;
38123
+ }
38076
38124
  }
38077
38125
 
38078
38126
  this.DrawKBar=function(firstOpen) //firstOpen 当前屏第1个显示数据
@@ -83590,6 +83638,13 @@ function JSChartResource()
83590
83638
  CloseColor:"rgb(30,144,255)",
83591
83639
  YCloseColor:"rgba(105,105,105,0.5)", //昨收线
83592
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)',
83593
83648
  },
83594
83649
 
83595
83650
  KLine:
@@ -84988,6 +85043,13 @@ function JSChartResource()
84988
85043
  if (closeLine.CloseColor) this.Report.CloseLine.CloseColor=closeLine.CloseColor;
84989
85044
  if (closeLine.YCloseColor) this.Report.CloseLine.YCloseColor=closeLine.YCloseColor;
84990
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;
84991
85053
  }
84992
85054
 
84993
85055
  if (item.KLine)
@@ -92186,8 +92248,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
92186
92248
  {
92187
92249
  Name:'KLineChartContainer::RequestOverlayHistoryData', //类名::
92188
92250
  Explain:'叠加股票日K线数据',
92189
- Request:{ Url:self.KLineApiUrl, Data: { symbol: symbol, count: dataCount.MaxRequestDataCount,"first":{ date: firstDate },
92190
- field:["name","symbol","yclose","open","price","high",'vol','amount'] }, Type:'POST' },
92251
+ Request:
92252
+ {
92253
+ Url:self.KLineApiUrl,
92254
+ Data:
92255
+ {
92256
+ symbol: symbol, period:this.Period, count: dataCount.MaxRequestDataCount, first:{ date: firstDate },
92257
+ Main:{ Symbol:this.Symbol, Period:this.Period, Right:this.Right }
92258
+ },
92259
+ },
92191
92260
  Self:this,
92192
92261
  PreventDefault:false
92193
92262
  };
@@ -92279,8 +92348,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
92279
92348
  {
92280
92349
  Name:'KLineChartContainer::RequestOverlayHistoryMinuteData', //类名::
92281
92350
  Explain:'叠加股票分钟K线数据',
92282
- Request:{ Url:self.MinuteKLineApiUrl, Data: { symbol: symbol, count: dataCount.MaxRequestMinuteDayCount,"first":{ date: firstDate, time:firstTime },
92283
- field:["name","symbol","yclose","open","price","high",'vol','amount'] }, Type:'POST' },
92351
+ Request:
92352
+ {
92353
+ Url:self.MinuteKLineApiUrl,
92354
+ Data:
92355
+ {
92356
+ symbol: symbol, period:this.Period, count: dataCount.MaxRequestMinuteDayCount, first:{ date: firstDate, time:firstTime },
92357
+ Main:{ Symbol:this.Symbol, Period:this.Period, Right:this.Right }
92358
+ },
92359
+ },
92284
92360
  Self:this,
92285
92361
  PreventDefault:false
92286
92362
  };
@@ -97722,21 +97798,31 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
97722
97798
 
97723
97799
  this.UpdatePointByCursorIndex=function()
97724
97800
  {
97725
- this.LastPoint.X=this.Frame.GetXFromIndex(this.CursorIndex);
97801
+ var x=null, y=null;
97802
+ x=this.Frame.GetXFromIndex(this.CursorIndex);
97726
97803
 
97727
97804
  var index=this.CursorIndex;
97728
97805
  index=parseInt(index.toFixed(0));
97729
97806
  var data=this.GetKData();
97730
- if (data.DataOffset+index>=data.Data.length)
97807
+ if (data.DataOffset+index<data.Data.length)
97731
97808
  {
97732
- 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);
97733
97814
  }
97734
- var item=data.Data[data.DataOffset+index];
97735
- var close=null;
97736
- if (item.Before) close=item.Before.Close;
97737
- else close=item.Close
97738
97815
 
97739
- 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
+ }
97740
97826
  this.LastPoint.FrameID=0;
97741
97827
  }
97742
97828
 
@@ -111350,6 +111436,24 @@ JSComplierHelper.GetConvertValueName=function(funcName)
111350
111436
 
111351
111437
  return valueName;
111352
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
+ );
111353
111457
 
111354
111458
 
111355
111459
 
@@ -112289,6 +112393,14 @@ function Node(ErrorHandler)
112289
112393
  return;
112290
112394
  }
112291
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
+
112292
112404
  if (varName.indexOf('#')>0)
112293
112405
  {
112294
112406
  var aryWrods = varName.split('#');
@@ -123044,8 +123156,10 @@ var DYNAINFO_ARGUMENT_ID=
123044
123156
  CLOSE:7,
123045
123157
  VOL:8,
123046
123158
  AMOUNT:10,
123159
+ UPDOWN:12, //DYNAINFO(12) 日涨跌 即时行情数据
123047
123160
  AMPLITUDE:13, //振幅
123048
123161
  INCREASE:14, //涨幅
123162
+
123049
123163
  EXCHANGERATE:37, //换手率
123050
123164
  };
123051
123165
 
@@ -123224,16 +123338,18 @@ function JSSymbolData(ast,option,jsExecute)
123224
123338
  let stock=data.stock[0];
123225
123339
  if (!stock) return;
123226
123340
 
123227
- if (IFrameSplitOperator.IsNumber(stock.yclose)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.YCLOSE,stock.yclose);
123228
- if (IFrameSplitOperator.IsNumber(stock.open)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.OPEN,stock.open);
123229
- if (IFrameSplitOperator.IsNumber(stock.high)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.HIGH,stock.high);
123230
- if (IFrameSplitOperator.IsNumber(stock.low)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.LOW,stock.low);
123231
- if (IFrameSplitOperator.IsNumber(stock.price)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.CLOSE,stock.price);
123232
- if (IFrameSplitOperator.IsNumber(stock.vol)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.VOL,stock.vol);
123233
- if (IFrameSplitOperator.IsNumber(stock.amount)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.AMOUNT,stock.amount);
123234
- if (IFrameSplitOperator.IsNumber(stock.increase)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.INCREASE,stock.increase);
123235
- if (IFrameSplitOperator.IsNumber(stock.exchangerate)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.EXCHANGERATE,stock.exchangerate);
123236
- 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
+
123237
123353
 
123238
123354
  /*
123239
123355
  this.LatestData={ Symbol:stock.symbol, Name:stock.name, Date:stock.date, Time:stock.time,
@@ -123258,7 +123374,7 @@ function JSSymbolData(ast,option,jsExecute)
123258
123374
  if (IFrameSplitOperator.IsNumber(item.value) || IFrameSplitOperator.IsString(item.value))
123259
123375
  {
123260
123376
  JSConsole.Complier.Log(`[JSSymbolData::RecvLatestDataVer2] symbol=${symbol} DYNAINFO(${item.id})=${item.value}.`);
123261
- this.LatestData.set(item.id, item.value);
123377
+ this.LatestData.set(this.GetLatestDataKey(item.id), item.value);
123262
123378
  }
123263
123379
 
123264
123380
  }
@@ -123266,9 +123382,48 @@ function JSSymbolData(ast,option,jsExecute)
123266
123382
  JSConsole.Complier.Log('[JSSymbolData::RecvLatestDataVer2]', this.LatestData);
123267
123383
  }
123268
123384
 
123269
- this.GetLatestCacheData=function(dataname)
123385
+ this.GetLatestCacheData=function(dataID)
123270
123386
  {
123271
- 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
+ }
123272
123427
 
123273
123428
  return null;
123274
123429
  }
@@ -128255,6 +128410,13 @@ function JSExecute(ast,option)
128255
128410
  ["TR", null], //真实波幅
128256
128411
  ["AUTOFILTER", null],
128257
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
+
128258
128420
  ['LARGEINTRDVOL', null], //逐笔买入大单成交量,相当于L2_VOL(0,0)+L2_VOL(1,0),沪深京品种的资金流向,仅日线以上周期,用于特定版本
128259
128421
  ['LARGEOUTTRDVOL', null], //逐笔卖出大单成交量,相当于L2_VOL(0,1)+L2_VOL(1,1),沪深京品种的资金流向,仅日线以上周期,用于特定版本
128260
128422
  ["TRADENUM", null], //逐笔成交总单数,沪深京品种的资金流向,仅日线以上周期,用于特定版本
@@ -128587,6 +128749,14 @@ function JSExecute(ast,option)
128587
128749
  return this.SymbolData.WEEKOFYEAR();
128588
128750
  case "DAYSTOTODAY":
128589
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);
128590
128760
  }
128591
128761
 
128592
128762
  this.ThrowUnexpectedNode(node, '变量'+name+'不存在', name);
@@ -146987,7 +147157,15 @@ function ChartReport()
146987
147157
  {
146988
147158
  CloseColor:g_JSChartResource.Report.CloseLine.CloseColor,
146989
147159
  YCloseColor:g_JSChartResource.Report.CloseLine.YCloseColor,
146990
- 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,
146991
147169
  }
146992
147170
 
146993
147171
  //K线配置
@@ -147298,6 +147476,7 @@ function ChartReport()
147298
147476
  else if (item.Type==REPORT_COLUMN_ID.CLOSE_LINE_ID)
147299
147477
  {
147300
147478
  if (IFrameSplitOperator.IsBool(item.IsDrawArea)) colItem.IsDrawArea=item.IsDrawArea;
147479
+ if (IFrameSplitOperator.IsNumber(item.LineColorType)) colItem.LineColorType=item.LineColorType;
147301
147480
  }
147302
147481
  else if(item.Type==REPORT_COLUMN_ID.TIME_ID)
147303
147482
  {
@@ -147426,7 +147605,7 @@ function ChartReport()
147426
147605
  { Type:REPORT_COLUMN_ID.VOL_IN_ID, Title:"内盘", TextAlign:"right", TextColor:g_JSChartResource.Report.DownTextColor, Width:null, MaxText:"8888.8擎" },
147427
147606
  { Type:REPORT_COLUMN_ID.VOL_OUT_ID, Title:"外盘", TextAlign:"right", TextColor:g_JSChartResource.Report.UpTextColor, Width:null, MaxText:"8888.8擎" },
147428
147607
 
147429
- { 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 },
147430
147609
 
147431
147610
 
147432
147611
  { Type:REPORT_COLUMN_ID.BUY_VOL_ID, Title:"买量", TextAlign:"right", TextColor:g_JSChartResource.Report.FieldColor.Vol, Width:null, MaxText:"8888.8擎" },
@@ -150465,8 +150644,7 @@ function ChartReport()
150465
150644
  this.Canvas.setLineDash([]);
150466
150645
  }
150467
150646
 
150468
- if (lineData.Color) this.Canvas.strokeStyle=lineData.Color;
150469
- else this.Canvas.strokeStyle=this.CloseLineConfig.CloseColor;
150647
+ this.Canvas.strokeStyle=this.GetCloseLineColor(lineData, column);
150470
150648
 
150471
150649
  var bFirstPoint=true;
150472
150650
  var ptFirst={}; //第1个点
@@ -150504,8 +150682,7 @@ function ChartReport()
150504
150682
  this.Canvas.lineTo(x,yCenter);
150505
150683
  this.Canvas.lineTo(ptFirst.X,yCenter);
150506
150684
  this.Canvas.closePath();
150507
- var areaColor=this.CloseLineConfig.AreaColor;
150508
- if (lineData.AreaColor) areaColor=lineData.AreaColor;
150685
+ var areaColor=this.GetCloseAreaColor(lineData, column);
150509
150686
  this.SetFillStyle(areaColor,left,top, left,bottom);
150510
150687
  this.Canvas.fill();
150511
150688
  }
@@ -150514,6 +150691,48 @@ function ChartReport()
150514
150691
  this.Canvas.restore();
150515
150692
  }
150516
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
+
150517
150736
  //klineData={ Data:[ open, high, low, close ] }
150518
150737
  this.DrawKLine=function(klineData, column, rtItem, data)
150519
150738
  {
@@ -150583,7 +150802,31 @@ function ChartReport()
150583
150802
  var distanceWidth=this.KLineConfig.DistanceWidth;
150584
150803
  var xOffset=left;
150585
150804
  var x, xLeft, xRight;
150805
+ var drawCount=0;
150586
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))
150587
150830
  {
150588
150831
  var item=aryKLine[i];
150589
150832
  xLeft=xOffset;
@@ -150671,7 +150914,11 @@ function ChartReport()
150671
150914
  }
150672
150915
  else
150673
150916
  {
150674
-
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();
150675
150922
  }
150676
150923
  }
150677
150924
 
@@ -167574,7 +167821,7 @@ function HQChartScriptWorker()
167574
167821
 
167575
167822
 
167576
167823
 
167577
- var HQCHART_VERSION="1.1.15374";
167824
+ var HQCHART_VERSION="1.1.15389";
167578
167825
 
167579
167826
  function PrintHQChartVersion()
167580
167827
  {