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.
@@ -11172,7 +11172,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11172
11172
  {
11173
11173
  var item=this.OverlayChartPaint[i];
11174
11174
  if (!item) continue;
11175
- if (item.YInfoType!=4) continue;
11175
+ if (item.YInfoConfig.Type===0) continue;
11176
11176
  var data=item.Data;
11177
11177
  if (!data || !IFrameSplitOperator.IsNonEmptyArray(data.Data)) continue;
11178
11178
  if (!IFrameSplitOperator.IsNumber(item.DrawKRange.Start) || !IFrameSplitOperator.IsNumber(item.DrawKRange.End)) continue;
@@ -11192,15 +11192,29 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
11192
11192
 
11193
11193
  var endKLine=data.Data[item.DrawKRange.End];
11194
11194
  var value=(endKLine.Close-startKLine.Close)/startKLine.Close*100;
11195
-
11195
+ var text="";
11196
+ if (item.YInfoConfig.Type===3)
11197
+ {
11198
+ var dec=GetfloatPrecision(item.Symbol); //小数位数
11199
+ text=endKLine.Close.toFixed(dec);
11200
+ }
11201
+ else if (item.YInfoConfig.Type===4)
11202
+ {
11203
+ text=value.toFixed(2)+"%";
11204
+ }
11205
+ else
11206
+ {
11207
+ continue;
11208
+ }
11209
+
11196
11210
  var info=new CoordinateInfo();
11197
11211
  info.Value=endKLine.Close/item.ShowRange.FirstOverlayOpen*item.ShowRange.FirstOpen;
11198
- info.Message[1]=value.toFixed(2)+"%";
11212
+ info.Message[1]=text
11199
11213
  info.LineType=-1;
11200
- info.Type=item.YInfoType; //叠加股票
11214
+ info.Type=4; //叠加股票
11201
11215
  info.LineColor=item.Color;
11202
11216
  info.TextColor=g_JSChartResource.FrameLatestPrice.OverlayTextColor;
11203
- if (item.Title) info.Title=item.Title;
11217
+ if (item.Title && item.YInfoConfig.IsShowName) info.Title=item.Title;
11204
11218
  frame.CustomHorizontalInfo.push(info);
11205
11219
  }
11206
11220
  }
@@ -12674,6 +12688,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12674
12688
  return false;
12675
12689
  }
12676
12690
 
12691
+ this.IsHScreenModel=function()
12692
+ {
12693
+ if (this.ClassName=="KLineChartHScreenContainer" || this.ClassName=="MinuteChartHScreenContainer") return true;
12694
+
12695
+ return false;
12696
+ }
12697
+
12677
12698
  this.UpdatePointByCursorIndex=function(type) //type 1=根据十字光标更新 2=强制取消十字光标
12678
12699
  {
12679
12700
  if (type==1) //根据十字光标更新
@@ -12694,8 +12715,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12694
12715
  pt.X=null;
12695
12716
  }
12696
12717
  }
12697
- this.LastPoint.X=pt.X;
12698
- 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
+
12699
12730
  }
12700
12731
  else if (type==2)
12701
12732
  {
@@ -12715,8 +12746,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12715
12746
  pt.Y=this.Frame.GetYFromData(close);
12716
12747
  this.LastPoint.FrameID=0;
12717
12748
  }
12718
- this.LastPoint.X=pt.X;
12719
- 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
+
12720
12761
  }
12721
12762
  }
12722
12763
 
@@ -31686,6 +31727,7 @@ function IChartPainting()
31686
31727
  var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
31687
31728
  var chartright=border.RightEx;
31688
31729
  var xPointCount=this.ChartFrame.XPointCount;
31730
+ if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return null;
31689
31731
 
31690
31732
  if (isHScreen)
31691
31733
  {
@@ -38022,13 +38064,19 @@ function ChartOverlayKLine()
38022
38064
  this.CloseLineWidth=g_JSChartResource.CloseLineWidth;
38023
38065
  this.ShowRange={ }; //K线显示范围 { Start:, End:, DataCount:, ShowCount: }
38024
38066
  this.DrawKRange={ Start:null, End:null }; //当前屏K线的索引{ Start: , End:}
38025
- this.YInfoType=4;
38067
+ this.YInfoConfig={ Type:0, IsShowName:false } //右侧Y轴自定刻度设置 0不显示 3=名字|最新价 4=名字|涨幅
38026
38068
 
38027
38069
  this.SetOption=function(option)
38028
38070
  {
38029
38071
  if (!option) return;
38030
38072
  if (IFrameSplitOperator.IsNumber(option.DrawType)) this.CustomDrawType=option.DrawType;
38031
- if (IFrameSplitOperator.IsNumber(option.YInfoType)) this.YInfoType=option.YInfoType;
38073
+ if (IFrameSplitOperator.IsNumber(option.YInfoType)) this.YInfoConfig.Type=option.YInfoType;
38074
+ if (option.YInfo)
38075
+ {
38076
+ var item=option.YInfo;
38077
+ if (IFrameSplitOperator.IsNumber(item.Type)) this.YInfoConfig.Type=item.Type;
38078
+ if (IFrameSplitOperator.IsBool(item.IsShowName)) this.YInfoConfig.IsShowName=item.IsShowName;
38079
+ }
38032
38080
  }
38033
38081
 
38034
38082
  this.DrawKBar=function(firstOpen) //firstOpen 当前屏第1个显示数据
@@ -83546,6 +83594,13 @@ function JSChartResource()
83546
83594
  CloseColor:"rgb(30,144,255)",
83547
83595
  YCloseColor:"rgba(105,105,105,0.5)", //昨收线
83548
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)',
83549
83604
  },
83550
83605
 
83551
83606
  KLine:
@@ -84944,6 +84999,13 @@ function JSChartResource()
84944
84999
  if (closeLine.CloseColor) this.Report.CloseLine.CloseColor=closeLine.CloseColor;
84945
85000
  if (closeLine.YCloseColor) this.Report.CloseLine.YCloseColor=closeLine.YCloseColor;
84946
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;
84947
85009
  }
84948
85010
 
84949
85011
  if (item.KLine)
@@ -92142,8 +92204,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
92142
92204
  {
92143
92205
  Name:'KLineChartContainer::RequestOverlayHistoryData', //类名::
92144
92206
  Explain:'叠加股票日K线数据',
92145
- Request:{ Url:self.KLineApiUrl, Data: { symbol: symbol, count: dataCount.MaxRequestDataCount,"first":{ date: firstDate },
92146
- field:["name","symbol","yclose","open","price","high",'vol','amount'] }, Type:'POST' },
92207
+ Request:
92208
+ {
92209
+ Url:self.KLineApiUrl,
92210
+ Data:
92211
+ {
92212
+ symbol: symbol, period:this.Period, count: dataCount.MaxRequestDataCount, first:{ date: firstDate },
92213
+ Main:{ Symbol:this.Symbol, Period:this.Period, Right:this.Right }
92214
+ },
92215
+ },
92147
92216
  Self:this,
92148
92217
  PreventDefault:false
92149
92218
  };
@@ -92235,8 +92304,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
92235
92304
  {
92236
92305
  Name:'KLineChartContainer::RequestOverlayHistoryMinuteData', //类名::
92237
92306
  Explain:'叠加股票分钟K线数据',
92238
- Request:{ Url:self.MinuteKLineApiUrl, Data: { symbol: symbol, count: dataCount.MaxRequestMinuteDayCount,"first":{ date: firstDate, time:firstTime },
92239
- field:["name","symbol","yclose","open","price","high",'vol','amount'] }, Type:'POST' },
92307
+ Request:
92308
+ {
92309
+ Url:self.MinuteKLineApiUrl,
92310
+ Data:
92311
+ {
92312
+ symbol: symbol, period:this.Period, count: dataCount.MaxRequestMinuteDayCount, first:{ date: firstDate, time:firstTime },
92313
+ Main:{ Symbol:this.Symbol, Period:this.Period, Right:this.Right }
92314
+ },
92315
+ },
92240
92316
  Self:this,
92241
92317
  PreventDefault:false
92242
92318
  };
@@ -97678,21 +97754,31 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
97678
97754
 
97679
97755
  this.UpdatePointByCursorIndex=function()
97680
97756
  {
97681
- this.LastPoint.X=this.Frame.GetXFromIndex(this.CursorIndex);
97757
+ var x=null, y=null;
97758
+ x=this.Frame.GetXFromIndex(this.CursorIndex);
97682
97759
 
97683
97760
  var index=this.CursorIndex;
97684
97761
  index=parseInt(index.toFixed(0));
97685
97762
  var data=this.GetKData();
97686
- if (data.DataOffset+index>=data.Data.length)
97763
+ if (data.DataOffset+index<data.Data.length)
97687
97764
  {
97688
- 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);
97689
97770
  }
97690
- var item=data.Data[data.DataOffset+index];
97691
- var close=null;
97692
- if (item.Before) close=item.Before.Close;
97693
- else close=item.Close
97694
97771
 
97695
- 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
+ }
97696
97782
  this.LastPoint.FrameID=0;
97697
97783
  }
97698
97784
 
@@ -111306,6 +111392,24 @@ JSComplierHelper.GetConvertValueName=function(funcName)
111306
111392
 
111307
111393
  return valueName;
111308
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
+ );
111309
111413
 
111310
111414
 
111311
111415
 
@@ -112245,6 +112349,14 @@ function Node(ErrorHandler)
112245
112349
  return;
112246
112350
  }
112247
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
+
112248
112360
  if (varName.indexOf('#')>0)
112249
112361
  {
112250
112362
  var aryWrods = varName.split('#');
@@ -123000,8 +123112,10 @@ var DYNAINFO_ARGUMENT_ID=
123000
123112
  CLOSE:7,
123001
123113
  VOL:8,
123002
123114
  AMOUNT:10,
123115
+ UPDOWN:12, //DYNAINFO(12) 日涨跌 即时行情数据
123003
123116
  AMPLITUDE:13, //振幅
123004
123117
  INCREASE:14, //涨幅
123118
+
123005
123119
  EXCHANGERATE:37, //换手率
123006
123120
  };
123007
123121
 
@@ -123180,16 +123294,18 @@ function JSSymbolData(ast,option,jsExecute)
123180
123294
  let stock=data.stock[0];
123181
123295
  if (!stock) return;
123182
123296
 
123183
- if (IFrameSplitOperator.IsNumber(stock.yclose)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.YCLOSE,stock.yclose);
123184
- if (IFrameSplitOperator.IsNumber(stock.open)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.OPEN,stock.open);
123185
- if (IFrameSplitOperator.IsNumber(stock.high)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.HIGH,stock.high);
123186
- if (IFrameSplitOperator.IsNumber(stock.low)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.LOW,stock.low);
123187
- if (IFrameSplitOperator.IsNumber(stock.price)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.CLOSE,stock.price);
123188
- if (IFrameSplitOperator.IsNumber(stock.vol)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.VOL,stock.vol);
123189
- if (IFrameSplitOperator.IsNumber(stock.amount)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.AMOUNT,stock.amount);
123190
- if (IFrameSplitOperator.IsNumber(stock.increase)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.INCREASE,stock.increase);
123191
- if (IFrameSplitOperator.IsNumber(stock.exchangerate)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.EXCHANGERATE,stock.exchangerate);
123192
- 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
+
123193
123309
 
123194
123310
  /*
123195
123311
  this.LatestData={ Symbol:stock.symbol, Name:stock.name, Date:stock.date, Time:stock.time,
@@ -123214,7 +123330,7 @@ function JSSymbolData(ast,option,jsExecute)
123214
123330
  if (IFrameSplitOperator.IsNumber(item.value) || IFrameSplitOperator.IsString(item.value))
123215
123331
  {
123216
123332
  JSConsole.Complier.Log(`[JSSymbolData::RecvLatestDataVer2] symbol=${symbol} DYNAINFO(${item.id})=${item.value}.`);
123217
- this.LatestData.set(item.id, item.value);
123333
+ this.LatestData.set(this.GetLatestDataKey(item.id), item.value);
123218
123334
  }
123219
123335
 
123220
123336
  }
@@ -123222,9 +123338,48 @@ function JSSymbolData(ast,option,jsExecute)
123222
123338
  JSConsole.Complier.Log('[JSSymbolData::RecvLatestDataVer2]', this.LatestData);
123223
123339
  }
123224
123340
 
123225
- this.GetLatestCacheData=function(dataname)
123341
+ this.GetLatestCacheData=function(dataID)
123226
123342
  {
123227
- 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
+ }
123228
123383
 
123229
123384
  return null;
123230
123385
  }
@@ -128211,6 +128366,13 @@ function JSExecute(ast,option)
128211
128366
  ["TR", null], //真实波幅
128212
128367
  ["AUTOFILTER", null],
128213
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
+
128214
128376
  ['LARGEINTRDVOL', null], //逐笔买入大单成交量,相当于L2_VOL(0,0)+L2_VOL(1,0),沪深京品种的资金流向,仅日线以上周期,用于特定版本
128215
128377
  ['LARGEOUTTRDVOL', null], //逐笔卖出大单成交量,相当于L2_VOL(0,1)+L2_VOL(1,1),沪深京品种的资金流向,仅日线以上周期,用于特定版本
128216
128378
  ["TRADENUM", null], //逐笔成交总单数,沪深京品种的资金流向,仅日线以上周期,用于特定版本
@@ -128543,6 +128705,14 @@ function JSExecute(ast,option)
128543
128705
  return this.SymbolData.WEEKOFYEAR();
128544
128706
  case "DAYSTOTODAY":
128545
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);
128546
128716
  }
128547
128717
 
128548
128718
  this.ThrowUnexpectedNode(node, '变量'+name+'不存在', name);
@@ -146943,7 +147113,15 @@ function ChartReport()
146943
147113
  {
146944
147114
  CloseColor:g_JSChartResource.Report.CloseLine.CloseColor,
146945
147115
  YCloseColor:g_JSChartResource.Report.CloseLine.YCloseColor,
146946
- 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,
146947
147125
  }
146948
147126
 
146949
147127
  //K线配置
@@ -147254,6 +147432,7 @@ function ChartReport()
147254
147432
  else if (item.Type==REPORT_COLUMN_ID.CLOSE_LINE_ID)
147255
147433
  {
147256
147434
  if (IFrameSplitOperator.IsBool(item.IsDrawArea)) colItem.IsDrawArea=item.IsDrawArea;
147435
+ if (IFrameSplitOperator.IsNumber(item.LineColorType)) colItem.LineColorType=item.LineColorType;
147257
147436
  }
147258
147437
  else if(item.Type==REPORT_COLUMN_ID.TIME_ID)
147259
147438
  {
@@ -147382,7 +147561,7 @@ function ChartReport()
147382
147561
  { Type:REPORT_COLUMN_ID.VOL_IN_ID, Title:"内盘", TextAlign:"right", TextColor:g_JSChartResource.Report.DownTextColor, Width:null, MaxText:"8888.8擎" },
147383
147562
  { Type:REPORT_COLUMN_ID.VOL_OUT_ID, Title:"外盘", TextAlign:"right", TextColor:g_JSChartResource.Report.UpTextColor, Width:null, MaxText:"8888.8擎" },
147384
147563
 
147385
- { 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 },
147386
147565
 
147387
147566
 
147388
147567
  { Type:REPORT_COLUMN_ID.BUY_VOL_ID, Title:"买量", TextAlign:"right", TextColor:g_JSChartResource.Report.FieldColor.Vol, Width:null, MaxText:"8888.8擎" },
@@ -150421,8 +150600,7 @@ function ChartReport()
150421
150600
  this.Canvas.setLineDash([]);
150422
150601
  }
150423
150602
 
150424
- if (lineData.Color) this.Canvas.strokeStyle=lineData.Color;
150425
- else this.Canvas.strokeStyle=this.CloseLineConfig.CloseColor;
150603
+ this.Canvas.strokeStyle=this.GetCloseLineColor(lineData, column);
150426
150604
 
150427
150605
  var bFirstPoint=true;
150428
150606
  var ptFirst={}; //第1个点
@@ -150460,8 +150638,7 @@ function ChartReport()
150460
150638
  this.Canvas.lineTo(x,yCenter);
150461
150639
  this.Canvas.lineTo(ptFirst.X,yCenter);
150462
150640
  this.Canvas.closePath();
150463
- var areaColor=this.CloseLineConfig.AreaColor;
150464
- if (lineData.AreaColor) areaColor=lineData.AreaColor;
150641
+ var areaColor=this.GetCloseAreaColor(lineData, column);
150465
150642
  this.SetFillStyle(areaColor,left,top, left,bottom);
150466
150643
  this.Canvas.fill();
150467
150644
  }
@@ -150470,6 +150647,48 @@ function ChartReport()
150470
150647
  this.Canvas.restore();
150471
150648
  }
150472
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
+
150473
150692
  //klineData={ Data:[ open, high, low, close ] }
150474
150693
  this.DrawKLine=function(klineData, column, rtItem, data)
150475
150694
  {
@@ -150539,7 +150758,31 @@ function ChartReport()
150539
150758
  var distanceWidth=this.KLineConfig.DistanceWidth;
150540
150759
  var xOffset=left;
150541
150760
  var x, xLeft, xRight;
150761
+ var drawCount=0;
150542
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))
150543
150786
  {
150544
150787
  var item=aryKLine[i];
150545
150788
  xLeft=xOffset;
@@ -150627,7 +150870,11 @@ function ChartReport()
150627
150870
  }
150628
150871
  else
150629
150872
  {
150630
-
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();
150631
150878
  }
150632
150879
  }
150633
150880
 
@@ -155515,7 +155762,7 @@ function ScrollBarBGChart()
155515
155762
 
155516
155763
 
155517
155764
 
155518
- var HQCHART_VERSION="1.1.15374";
155765
+ var HQCHART_VERSION="1.1.15389";
155519
155766
 
155520
155767
  function PrintHQChartVersion()
155521
155768
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.15374";
8
+ var HQCHART_VERSION="1.1.15389";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {