hqchart 1.1.14617 → 1.1.14621

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.
@@ -20256,7 +20256,9 @@ var SCRIPT_CHART_NAME=
20256
20256
  {
20257
20257
  OVERLAY_BARS:"OVERLAY_BARS", //叠加柱子图
20258
20258
  KLINE_TABLE:"KLINE_TABLE",
20259
- SCATTER_PLOT:"SCATTER_PLOT", //散点图
20259
+ SCATTER_PLOT:"SCATTER_PLOT", //散点图
20260
+ SCATTER_PLOT_V2:"SCATTER_PLOT_V2", //散点图V2
20261
+
20260
20262
 
20261
20263
  CLIP_COLOR_STICK:"CLIP_COLOR_STICK", //上下柱子 裁剪
20262
20264
 
@@ -22263,6 +22265,34 @@ function ScriptIndex(name,script,args,option)
22263
22265
  hqChart.ChartPaint.push(chart);
22264
22266
  }
22265
22267
 
22268
+ this.CreateScatterPlotV2=function(hqChart,windowIndex,varItem,i)
22269
+ {
22270
+ var chart=new ChartScatterPlotV2();
22271
+ chart.Canvas=hqChart.Canvas;
22272
+ chart.Name=varItem.Name;
22273
+ chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
22274
+ chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
22275
+ chart.HQChart=hqChart;
22276
+ chart.Identify=this.Guid;
22277
+
22278
+ chart.Data=hqChart.GetKData(); //绑定K线
22279
+ chart.AryPoint=varItem.Draw.DrawData;
22280
+
22281
+ var config=varItem.Draw.Config;
22282
+ if (config)
22283
+ {
22284
+ if (config.Color) chart.Color=config.Color;
22285
+ if (IFrameSplitOperator.IsNumber(config.Radius)) chart.Radius=config.Radius;
22286
+ if (config.TextColor) chart.TextColor=config.TextColor;
22287
+ if (config.Font) chart.Font=config.Font;
22288
+ }
22289
+
22290
+ chart.BuildCacheData();
22291
+
22292
+ hqChart.ChartPaint.push(chart);
22293
+ }
22294
+
22295
+
22266
22296
  this.CreateClipColorStick=function(hqChart,windowIndex,varItem,id)
22267
22297
  {
22268
22298
  var chart=new ChartClipColorStick();
@@ -22625,6 +22655,9 @@ function ScriptIndex(name,script,args,option)
22625
22655
  case SCRIPT_CHART_NAME.SCATTER_PLOT:
22626
22656
  this.CreateScatterPlot(hqChart,windowIndex,item,i);
22627
22657
  break;
22658
+ case SCRIPT_CHART_NAME.SCATTER_PLOT_V2:
22659
+ this.CreateScatterPlotV2(hqChart,windowIndex,item,i);
22660
+ break;
22628
22661
  case SCRIPT_CHART_NAME.CLIP_COLOR_STICK:
22629
22662
  this.CreateClipColorStick(hqChart,windowIndex,item,i);
22630
22663
  break;
@@ -25186,6 +25219,16 @@ function APIScriptIndex(name,script,args,option, isOverlay)
25186
25219
 
25187
25220
  result.push(outVarItem);
25188
25221
  }
25222
+ else if (draw.DrawType==SCRIPT_CHART_NAME.SCATTER_PLOT_V2)
25223
+ {
25224
+ drawItem.Name=draw.Name;
25225
+ drawItem.Type=draw.Type;
25226
+ drawItem.DrawType=draw.DrawType;
25227
+ drawItem.DrawData=draw.DrawData;
25228
+ drawItem.Config=draw.Config;
25229
+ outVarItem.Draw=drawItem;
25230
+ result.push(outVarItem);
25231
+ }
25189
25232
  else if (draw.DrawType==SCRIPT_CHART_NAME.KLINE_TABLE)
25190
25233
  {
25191
25234
  drawItem.Name=draw.Name;
@@ -11515,6 +11515,14 @@ function ToFixed(number, precision)
11515
11515
  return s;
11516
11516
  }
11517
11517
 
11518
+ function IsRectOverlap(rt, rt2)
11519
+ {
11520
+ if (Math.max(rt.Left,rt2.Left)<Math.min(rt.Right,rt2.Right) && Math.max(rt.Top,rt2.Top)<Math.min(rt.Bottom, rt2.Bottom))
11521
+ return true;
11522
+
11523
+ return false;
11524
+ }
11525
+
11518
11526
  Number.prototype.toFixed2=Number.prototype.toFixed; //备份下老的
11519
11527
  Number.prototype.toFixed = function( precision )
11520
11528
  {
@@ -34808,6 +34816,326 @@ function ChartScatterPlot()
34808
34816
 
34809
34817
  }
34810
34818
 
34819
+ //散点图
34820
+ function ChartScatterPlotV2()
34821
+ {
34822
+ this.newMethod=IChartPainting; //派生
34823
+ this.newMethod();
34824
+ delete this.newMethod;
34825
+
34826
+ this.ClassName='ChartScatterPlotV2'; //类名
34827
+
34828
+ //默认点配置
34829
+ this.Color=g_JSChartResource.ChartScatterPlotV2.Color; //点颜色
34830
+ this.TextColor=g_JSChartResource.ChartScatterPlotV2.TextColor;
34831
+ this.Radius=g_JSChartResource.ChartScatterPlotV2.Radius;
34832
+ this.Font=g_JSChartResource.ChartScatterPlotV2.Font; //半径
34833
+
34834
+ this.TooltipData=[];
34835
+ this.MapCache=null; //key=date/date-time value={ Data:[] }
34836
+ this.AryPoint=[ ]; //[{ Value:, Radius:半径(可选), Color:颜色(可选),ColorBorder:边框颜色(可选),
34837
+ // Text:{ Text:显示文字, Color:"rgb(0,30,100)", BaseLine:1, YOffset:5, Align:2 }; }]
34838
+ // BaseLine: 0=圆点上面 1=圆点下面 Align: 2=居中 1=左 3=右
34839
+
34840
+ this.GetKValue=ChartData.GetKValue;
34841
+ this.TextHeight=10;
34842
+ this.AryDrawRect=[];
34843
+
34844
+ this.ReloadResource=function(resource)
34845
+ {
34846
+ this.Color=g_JSChartResource.ChartScatterPlotV2.Color; //点颜色
34847
+ this.TextColor=g_JSChartResource.ChartScatterPlotV2.TextColor;
34848
+ this.Radius=g_JSChartResource.ChartScatterPlotV2.Radius;
34849
+ this.Font=g_JSChartResource.ChartScatterPlotV2.Font;
34850
+ }
34851
+
34852
+ this.BuildCacheData=function()
34853
+ {
34854
+ var mapData=new Map();
34855
+ this.MapCache=mapData;
34856
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryPoint)) return;
34857
+
34858
+ for(var i=0;i<this.AryPoint.length;++i)
34859
+ {
34860
+ var item=this.AryPoint[i];
34861
+ var key=this.BuildKey(item);
34862
+ if (mapData.has(key))
34863
+ {
34864
+ var mapItem=mapData.get(key);
34865
+ mapItem.Data.push(item);
34866
+ }
34867
+ else
34868
+ {
34869
+ mapData.set(key,{ Data:[item] });
34870
+ }
34871
+ }
34872
+ }
34873
+
34874
+ this.Draw=function()
34875
+ {
34876
+ this.TooltipData=[];
34877
+ this.AryDrawRect=[];
34878
+ if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
34879
+ if (this.IsShowIndexTitleOnly()) return;
34880
+ if (this.IsHideScriptIndex()) return;
34881
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryPoint)) return;
34882
+ if (!this.MapCache || this.MapCache.size<=0) return;
34883
+ if(!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return;
34884
+
34885
+ this.DrawScatterPlot();
34886
+ this.AryDrawRect=[];
34887
+ }
34888
+
34889
+ this.DrawScatterPlot=function()
34890
+ {
34891
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
34892
+ var isMinute=this.IsMinuteFrame();
34893
+ var dataWidth=this.ChartFrame.DataWidth;
34894
+ var distanceWidth=this.ChartFrame.DistanceWidth;
34895
+ var xPointCount=this.ChartFrame.XPointCount;
34896
+
34897
+ if (bHScreen)
34898
+ {
34899
+ var border=this.ChartBorder.GetHScreenBorder();
34900
+ var chartright=border.BottomEx;
34901
+ var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
34902
+ }
34903
+ else
34904
+ {
34905
+ var border=this.ChartBorder.GetBorder();
34906
+ var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
34907
+ var chartright=border.RightEx;
34908
+ }
34909
+
34910
+ var lockRect=this.GetLockRect();
34911
+ if (lockRect)
34912
+ {
34913
+ if (bHScreen) chartright=lockRect.Top;
34914
+ else chartright=lockRect.Left;
34915
+ }
34916
+
34917
+ this.Canvas.save();
34918
+ this.ClipClient(bHScreen);
34919
+
34920
+ this.Canvas.font=this.Font;
34921
+ this.Canvas.textAlign = "left";
34922
+ this.Canvas.textBaseline = "bottom";
34923
+ this.TextHeight=this.GetFontHeight();
34924
+ for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
34925
+ {
34926
+ var kItem=this.Data.Data[i];
34927
+ if (!kItem) continue;
34928
+
34929
+ var key=this.BuildKey(kItem);
34930
+ if (!this.MapCache.has(key)) continue;
34931
+ var mapItem=this.MapCache.get(key);
34932
+ if (!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data)) continue;
34933
+
34934
+ if (isMinute)
34935
+ {
34936
+ var x=this.ChartFrame.GetXFromIndex(j);
34937
+ }
34938
+ else
34939
+ {
34940
+ var left=xOffset;
34941
+ var right=xOffset+dataWidth;
34942
+ if (right>chartright) break;
34943
+ var x=left+(right-left)/2;
34944
+ }
34945
+
34946
+ if (x>chartright) break;
34947
+
34948
+ for(var k=0;k<mapItem.Data.length;++k)
34949
+ {
34950
+ var item=mapItem.Data[k];
34951
+ this.DrawItem(kItem, item, x);
34952
+ }
34953
+ }
34954
+
34955
+ this.Canvas.restore();
34956
+ }
34957
+
34958
+ this.DrawItem=function(kItem, item, x)
34959
+ {
34960
+ var dataWidth=this.ChartFrame.DataWidth;
34961
+ var maxRadius=dataWidth/2;
34962
+ if (!item) return;
34963
+ var price=item.Value;
34964
+ if (IFrameSplitOperator.IsString(item.Value)) price=this.GetKValue(kItem,item.Value);
34965
+ if (!IFrameSplitOperator.IsNumber(price)) return;
34966
+
34967
+ var y=this.GetYFromData(price,false);
34968
+
34969
+ var radius=this.Radius;
34970
+ if (item.Radius) radius=item.Radius;
34971
+ if (!IFrameSplitOperator.IsNumber(radius)) return;
34972
+ if (radius>maxRadius) radius=maxRadius;
34973
+
34974
+ this.Canvas.beginPath();
34975
+ this.Canvas.arc(x, y, radius, 0, 2 * Math.PI);
34976
+
34977
+ var color=this.Color;
34978
+ if (item.Color) color=item.Color;
34979
+ if (color)
34980
+ {
34981
+ this.Canvas.fillStyle=color;
34982
+ this.Canvas.fill();
34983
+ }
34984
+
34985
+ if (item.ColorBorder)
34986
+ {
34987
+ this.Canvas.strokeStyle=item.ColorBorder;
34988
+ this.Canvas.stroke()
34989
+ }
34990
+
34991
+ if (dataWidth>this.TextHeight)
34992
+ {
34993
+ this.DrawText(item.Text,x,y,radius);
34994
+ }
34995
+
34996
+ var itemTooltip={ X:x, Y:y, Radius:radius, Data:item };
34997
+ this.TooltipData.push(itemTooltip);
34998
+ }
34999
+
35000
+ this.DrawText=function(item, x, y, radius)
35001
+ {
35002
+ if (!item || !item.Text) return;
35003
+
35004
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
35005
+ if (bHScreen) return;
35006
+
35007
+ var text=item.Text;
35008
+ var textWidth=this.Canvas.measureText(text).width;
35009
+
35010
+ var baseLine=1; //1=上 2=下
35011
+ var align=2;
35012
+ var yOffset=2;
35013
+ var xText=x;
35014
+ if (IFrameSplitOperator.IsNumber(item.YOffset)) yOffset=item.YOffset; //Y偏移
35015
+ if (IFrameSplitOperator.IsNumber(item.BaseLine)) baseLine=item.BaseLine;
35016
+ var yText=y-radius-yOffset;
35017
+ if (baseLine==2) yText=y+radius+this.TextHeight+yOffset; //下
35018
+
35019
+ if (IFrameSplitOperator.IsNumber(item.Align)) align=item.Align; //左中右
35020
+ if (align==1) xText=x-textWidth;
35021
+ else if (align==2) xText=x-textWidth/2;
35022
+
35023
+ var rtText=null;
35024
+ if (item.BG && item.BG.Color)
35025
+ {
35026
+ var bgItem=item.BG;
35027
+ var marginLeft=2, marginRight=2, yBGOffset=1, marginBottom=0, marginTop=0;
35028
+ if (IFrameSplitOperator.IsNumber(bgItem.MarginLeft)) marginLeft=bgItem.MarginLeft;
35029
+ if (IFrameSplitOperator.IsNumber(bgItem.MarginRight)) marginRight=bgItem.MarginRight;
35030
+ if (IFrameSplitOperator.IsNumber(bgItem.MarginBottom)) marginBottom=bgItem.MarginBottom;
35031
+ if (IFrameSplitOperator.IsNumber(bgItem.MarginTop)) marginTop=bgItem.MarginTop;
35032
+ if (IFrameSplitOperator.IsNumber(bgItem.YOffset)) yBGOffset=bgItem.YOffset;
35033
+
35034
+ var rtBG={ Left:xText-marginLeft, Bottom:yText+yBGOffset+marginBottom, Width:textWidth+marginLeft+marginRight, Height:this.TextHeight+marginBottom+marginTop };
35035
+ rtBG.Right=rtBG.Left+rtBG.Width;
35036
+ rtBG.Top=rtBG.Bottom-rtBG.Height;
35037
+
35038
+ if (this.IsTextOverlap(rtBG)) return;
35039
+
35040
+ this.Canvas.fillStyle=bgItem.Color;
35041
+ this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);
35042
+
35043
+ rtText=rtBG;
35044
+ }
35045
+ else
35046
+ {
35047
+ rtText={ Left:xText, Bottom:yText, Width:textWidth, Height:this.TextHeight };
35048
+ rtText.Right=rtText.Left+rtText.Width;
35049
+ rtText.Top=rtText.Bottom-rtText.Height;
35050
+
35051
+ if (this.IsTextOverlap(rtText)) return;
35052
+ }
35053
+
35054
+ if (item.Color) this.Canvas.fillStyle=item.Color;
35055
+ else this.Canvas.fillStyle=this.TextColor;
35056
+ this.Canvas.fillText(text, xText, yText);
35057
+
35058
+ this.AryDrawRect.push(rtText);
35059
+ }
35060
+
35061
+ this.IsTextOverlap=function(rtText)
35062
+ {
35063
+ for(var i=0; i<this.AryDrawRect.length; ++i)
35064
+ {
35065
+ var item=this.AryDrawRect[i];
35066
+ if (IsRectOverlap(rtText,item)) return true;
35067
+ }
35068
+
35069
+ return false;
35070
+ }
35071
+
35072
+ this.GetMaxMin=function()
35073
+ {
35074
+ var range={Min:null, Max:null };
35075
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryPoint)) return range;
35076
+ if (!this.MapCache || this.MapCache.size<=0) return range;
35077
+ if(!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return range;
35078
+
35079
+ var xPointCount=this.ChartFrame.XPointCount;
35080
+ var start=this.Data.DataOffset;
35081
+ if (this.ChartFrame.GlobalOption && this.ChartFrame.GlobalOption.IsValueFullRange)
35082
+ {
35083
+ start=0;
35084
+ xPointCount=this.Data.Data.length;
35085
+ }
35086
+
35087
+ for(var i=start,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j)
35088
+ {
35089
+ var kItem=this.Data.Data[i];
35090
+ if (!kItem) continue;
35091
+
35092
+ var key=this.BuildKey(kItem);
35093
+ if (!this.MapCache.has(key)) continue;
35094
+ var mapItem=this.MapCache.get(key);
35095
+ if (!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data)) continue;
35096
+
35097
+ for(k=0;k<mapItem.Data.length;++k)
35098
+ {
35099
+ var item=mapItem.Data[k];
35100
+ var value=item.Value;
35101
+ if (IFrameSplitOperator.IsString(item.Value)) value=this.GetKValue(kItem,item.Value);
35102
+ if (!IFrameSplitOperator.IsNumber(value)) continue;
35103
+
35104
+ if (range.Max==null) range.Max=value;
35105
+ else if (range.Max<value) range.Max=value;
35106
+ if (range.Min==null) range.Min=value;
35107
+ else if (range.Min>value) range.Min=value;
35108
+ }
35109
+ }
35110
+
35111
+ return range;
35112
+ }
35113
+
35114
+ this.GetTooltipData=function(x,y,tooltip)
35115
+ {
35116
+ if (!this.IsShow) return false;
35117
+
35118
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.TooltipData)) return false;
35119
+
35120
+ for(var i=this.TooltipData.length-1; i>=0; --i)
35121
+ {
35122
+ var item=this.TooltipData[i];
35123
+
35124
+ this.Canvas.beginPath();
35125
+ this.Canvas.arc(item.X, item.Y, item.Radius, 0, 2 * Math.PI);
35126
+ if (this.Canvas.isPointInPath(x,y))
35127
+ {
35128
+ JSConsole.Chart.Log('[ChartScatterPlotV2::GetTooltipData] point', item);
35129
+ tooltip.Data=item;
35130
+ tooltip.ChartPaint=this;
35131
+ tooltip.Type=6; //散点图
35132
+ return true;
35133
+ }
35134
+ }
35135
+ }
35136
+
35137
+ }
35138
+
34811
35139
  //子线段
34812
35140
  function ChartSubLine()
34813
35141
  {
@@ -73548,6 +73876,14 @@ function JSChartResource()
73548
73876
  DiffValueBGColor:"rgb(251,140,1)"
73549
73877
  }
73550
73878
 
73879
+ this.ChartScatterPlotV2=
73880
+ {
73881
+ Color:"rgb(0,0,255)",
73882
+ TextColor:"rgb(0,0,0)",
73883
+ Radius:3,
73884
+ Font:`${10*GetDevicePixelRatio()}px 微软雅黑`
73885
+ }
73886
+
73551
73887
  //筹码分布图
73552
73888
  this.StockChip=
73553
73889
  {
@@ -74948,6 +75284,7 @@ function JSChartResource()
74948
75284
  if (style.KLineToolbar) this.SetKLineToolbar(style.KLineToolbar);
74949
75285
 
74950
75286
  if (style.IndexLock) this.SetIndexLock(style.IndexLock);
75287
+ if (style.ChartScatterPlotV2) this.SetChartScatterPlotV2(style.ChartScatterPlotV2);
74951
75288
  }
74952
75289
 
74953
75290
 
@@ -75646,6 +75983,17 @@ function JSChartResource()
75646
75983
  if (item.Title) dest.Title=item.Title;
75647
75984
  }
75648
75985
 
75986
+ this.SetChartScatterPlotV2=function(style)
75987
+ {
75988
+ var item=style;
75989
+ var dest=this.ChartScatterPlotV2;
75990
+
75991
+ if (item.Color) dest.Color=item.Color;
75992
+ if (item.TextColor) dest.TextColor=item.TextColor;
75993
+ if (item.Font) dest.Font=item.Font;
75994
+ if (IFrameSplitOperator.IsNumber(item.Radius)) dest.Radius=item.Radius
75995
+ }
75996
+
75649
75997
  }
75650
75998
 
75651
75999
  var g_JSChartResource=new JSChartResource();
@@ -192,6 +192,14 @@ function JSReportChart(divElement)
192
192
  if (IFrameSplitOperator.IsBool(option.EnableDragHeader)) chart.EnableDragHeader=option.EnableDragHeader;
193
193
  if (IFrameSplitOperator.IsNumber(option.WheelPageType)) chart.WheelPageType=option.WheelPageType;
194
194
  if (IFrameSplitOperator.IsBool(option.PageUpDownCycle)) chart.PageUpDownCycle=option.PageUpDownCycle;
195
+
196
+ //数据下载提示信息
197
+ if (IFrameSplitOperator.IsObject(option.SplashTitle))
198
+ {
199
+ var item=option.SplashTitle;
200
+ if (item) chart.SplashTitle.StockList=item.StockList;
201
+ if (item) chart.SplashTitle.MemberList=item.MemberList;
202
+ }
195
203
 
196
204
 
197
205
  if (option.VScrollbar) chart.SetVScrollbar(option.VScrollbar);
@@ -2013,6 +2013,8 @@ HQData.Report_APIIndex=function(data, callback)
2013
2013
  HQData.APIIndex_DRAWKLINE(data, callback);
2014
2014
  else if (request.Data.indexname=="API_TITLE")
2015
2015
  HQData.APIIndex_TITLE(data, callback);
2016
+ else if (request.Data.indexname=="API_SCATTER_PLOT_V2")
2017
+ HQData.APIIndex_SCATTER_PLOT_V2(data, callback);
2016
2018
  }
2017
2019
 
2018
2020
 
@@ -3013,6 +3015,67 @@ HQData.APIIndex_TITLE=function(data, callback)
3013
3015
  callback(apiData);
3014
3016
  }
3015
3017
 
3018
+ HQData.APIIndex_SCATTER_PLOT_V2=function(data, callback)
3019
+ {
3020
+ data.PreventDefault=true;
3021
+ var hqchart=data.HQChart;
3022
+ var kData=hqchart.GetKData();
3023
+
3024
+ var pointData=
3025
+ {
3026
+ name:"SCATTER_PLOT_V2", type:1,
3027
+ Draw:
3028
+ {
3029
+ Name:"SCATTER_PLOT_V2",
3030
+ DrawType:"SCATTER_PLOT_V2",
3031
+ DrawData:[],
3032
+ Config:{ Color:"rgb(100,100,0)", Radius:5 },
3033
+ },
3034
+ };
3035
+
3036
+ for(var i=0;i<kData.Data.length;++i)
3037
+ {
3038
+ var kItem=kData.Data[i];
3039
+
3040
+ var item={ Date:kItem.Date, Time:kItem.Time, Value:kItem.High, Color:"rgb(0,0,0)", IsEmpty:true };
3041
+ if (kItem.Close>kItem.Open)
3042
+ {
3043
+ item.ColorBorder="rgb(0,250,0)";
3044
+ item.Text={ Text:`${kItem.High.toFixed(2)}`, Color:"rgb(250,250,250)", BaseLine:1, YOffset:8, Align:2, BG:{ Color:"rgb(255,140,0)", MarginLeft:5, MarginRight:5, YOffset:5, MarginTop:8, MarginBottom:1 }};
3045
+ }
3046
+ else
3047
+ {
3048
+ item.ColorBorder="rgb(250,0,0)";
3049
+ item.Text=
3050
+ {
3051
+ Text:`${kItem.High.toFixed(2)}`, Color:"rgb(178,34,34)", BaseLine:2, YOffset:10, Align:2,
3052
+ //BG:{ Color:"rgb(255,255,0)" }
3053
+ };
3054
+ }
3055
+
3056
+
3057
+ item.Tooltip=
3058
+ [
3059
+ {Title:"日期", Text:`${kItem.Date}`},
3060
+ {Title:"最高", Text:`${kItem.High.toFixed(2)}`, TextColor:"rgb(250,0,0)"},
3061
+ {Title:"最低", Text:`${kItem.Low.toFixed(2)}`,TextColor:"rgb(0,255,0)" },
3062
+ ]
3063
+ pointData.Draw.DrawData.push(item);
3064
+ }
3065
+
3066
+ var apiData=
3067
+ {
3068
+ code:0,
3069
+ stock:{ name:hqchart.Name, symbol:hqchart.Symbol },
3070
+ outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[ pointData] },
3071
+
3072
+ //error: { message:"无权限查看指标“测试指标1”" }
3073
+ };
3074
+
3075
+ console.log('[HQData.APIIndex_SCATTER_PLOT_V2] apiData ', apiData);
3076
+ callback(apiData);
3077
+ }
3078
+
3016
3079
 
3017
3080
  HQData.RequestVolumeProfileData=function(data, callback)
3018
3081
  {