hqchart 1.1.14617 → 1.1.14626

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.
@@ -15611,6 +15611,14 @@ function ToFixed(number, precision)
15611
15611
  return s;
15612
15612
  }
15613
15613
 
15614
+ function IsRectOverlap(rt, rt2)
15615
+ {
15616
+ 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))
15617
+ return true;
15618
+
15619
+ return false;
15620
+ }
15621
+
15614
15622
  Number.prototype.toFixed2=Number.prototype.toFixed; //备份下老的
15615
15623
  Number.prototype.toFixed = function( precision )
15616
15624
  {
@@ -38904,6 +38912,326 @@ function ChartScatterPlot()
38904
38912
 
38905
38913
  }
38906
38914
 
38915
+ //散点图
38916
+ function ChartScatterPlotV2()
38917
+ {
38918
+ this.newMethod=IChartPainting; //派生
38919
+ this.newMethod();
38920
+ delete this.newMethod;
38921
+
38922
+ this.ClassName='ChartScatterPlotV2'; //类名
38923
+
38924
+ //默认点配置
38925
+ this.Color=g_JSChartResource.ChartScatterPlotV2.Color; //点颜色
38926
+ this.TextColor=g_JSChartResource.ChartScatterPlotV2.TextColor;
38927
+ this.Radius=g_JSChartResource.ChartScatterPlotV2.Radius;
38928
+ this.Font=g_JSChartResource.ChartScatterPlotV2.Font; //半径
38929
+
38930
+ this.TooltipData=[];
38931
+ this.MapCache=null; //key=date/date-time value={ Data:[] }
38932
+ this.AryPoint=[ ]; //[{ Value:, Radius:半径(可选), Color:颜色(可选),ColorBorder:边框颜色(可选),
38933
+ // Text:{ Text:显示文字, Color:"rgb(0,30,100)", BaseLine:1, YOffset:5, Align:2 }; }]
38934
+ // BaseLine: 0=圆点上面 1=圆点下面 Align: 2=居中 1=左 3=右
38935
+
38936
+ this.GetKValue=ChartData.GetKValue;
38937
+ this.TextHeight=10;
38938
+ this.AryDrawRect=[];
38939
+
38940
+ this.ReloadResource=function(resource)
38941
+ {
38942
+ this.Color=g_JSChartResource.ChartScatterPlotV2.Color; //点颜色
38943
+ this.TextColor=g_JSChartResource.ChartScatterPlotV2.TextColor;
38944
+ this.Radius=g_JSChartResource.ChartScatterPlotV2.Radius;
38945
+ this.Font=g_JSChartResource.ChartScatterPlotV2.Font;
38946
+ }
38947
+
38948
+ this.BuildCacheData=function()
38949
+ {
38950
+ var mapData=new Map();
38951
+ this.MapCache=mapData;
38952
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryPoint)) return;
38953
+
38954
+ for(var i=0;i<this.AryPoint.length;++i)
38955
+ {
38956
+ var item=this.AryPoint[i];
38957
+ var key=this.BuildKey(item);
38958
+ if (mapData.has(key))
38959
+ {
38960
+ var mapItem=mapData.get(key);
38961
+ mapItem.Data.push(item);
38962
+ }
38963
+ else
38964
+ {
38965
+ mapData.set(key,{ Data:[item] });
38966
+ }
38967
+ }
38968
+ }
38969
+
38970
+ this.Draw=function()
38971
+ {
38972
+ this.TooltipData=[];
38973
+ this.AryDrawRect=[];
38974
+ if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
38975
+ if (this.IsShowIndexTitleOnly()) return;
38976
+ if (this.IsHideScriptIndex()) return;
38977
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryPoint)) return;
38978
+ if (!this.MapCache || this.MapCache.size<=0) return;
38979
+ if(!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return;
38980
+
38981
+ this.DrawScatterPlot();
38982
+ this.AryDrawRect=[];
38983
+ }
38984
+
38985
+ this.DrawScatterPlot=function()
38986
+ {
38987
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
38988
+ var isMinute=this.IsMinuteFrame();
38989
+ var dataWidth=this.ChartFrame.DataWidth;
38990
+ var distanceWidth=this.ChartFrame.DistanceWidth;
38991
+ var xPointCount=this.ChartFrame.XPointCount;
38992
+
38993
+ if (bHScreen)
38994
+ {
38995
+ var border=this.ChartBorder.GetHScreenBorder();
38996
+ var chartright=border.BottomEx;
38997
+ var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
38998
+ }
38999
+ else
39000
+ {
39001
+ var border=this.ChartBorder.GetBorder();
39002
+ var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
39003
+ var chartright=border.RightEx;
39004
+ }
39005
+
39006
+ var lockRect=this.GetLockRect();
39007
+ if (lockRect)
39008
+ {
39009
+ if (bHScreen) chartright=lockRect.Top;
39010
+ else chartright=lockRect.Left;
39011
+ }
39012
+
39013
+ this.Canvas.save();
39014
+ this.ClipClient(bHScreen);
39015
+
39016
+ this.Canvas.font=this.Font;
39017
+ this.Canvas.textAlign = "left";
39018
+ this.Canvas.textBaseline = "bottom";
39019
+ this.TextHeight=this.GetFontHeight();
39020
+ for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
39021
+ {
39022
+ var kItem=this.Data.Data[i];
39023
+ if (!kItem) continue;
39024
+
39025
+ var key=this.BuildKey(kItem);
39026
+ if (!this.MapCache.has(key)) continue;
39027
+ var mapItem=this.MapCache.get(key);
39028
+ if (!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data)) continue;
39029
+
39030
+ if (isMinute)
39031
+ {
39032
+ var x=this.ChartFrame.GetXFromIndex(j);
39033
+ }
39034
+ else
39035
+ {
39036
+ var left=xOffset;
39037
+ var right=xOffset+dataWidth;
39038
+ if (right>chartright) break;
39039
+ var x=left+(right-left)/2;
39040
+ }
39041
+
39042
+ if (x>chartright) break;
39043
+
39044
+ for(var k=0;k<mapItem.Data.length;++k)
39045
+ {
39046
+ var item=mapItem.Data[k];
39047
+ this.DrawItem(kItem, item, x);
39048
+ }
39049
+ }
39050
+
39051
+ this.Canvas.restore();
39052
+ }
39053
+
39054
+ this.DrawItem=function(kItem, item, x)
39055
+ {
39056
+ var dataWidth=this.ChartFrame.DataWidth;
39057
+ var maxRadius=dataWidth/2;
39058
+ if (!item) return;
39059
+ var price=item.Value;
39060
+ if (IFrameSplitOperator.IsString(item.Value)) price=this.GetKValue(kItem,item.Value);
39061
+ if (!IFrameSplitOperator.IsNumber(price)) return;
39062
+
39063
+ var y=this.GetYFromData(price,false);
39064
+
39065
+ var radius=this.Radius;
39066
+ if (item.Radius) radius=item.Radius;
39067
+ if (!IFrameSplitOperator.IsNumber(radius)) return;
39068
+ if (radius>maxRadius) radius=maxRadius;
39069
+
39070
+ this.Canvas.beginPath();
39071
+ this.Canvas.arc(x, y, radius, 0, 2 * Math.PI);
39072
+
39073
+ var color=this.Color;
39074
+ if (item.Color) color=item.Color;
39075
+ if (color)
39076
+ {
39077
+ this.Canvas.fillStyle=color;
39078
+ this.Canvas.fill();
39079
+ }
39080
+
39081
+ if (item.ColorBorder)
39082
+ {
39083
+ this.Canvas.strokeStyle=item.ColorBorder;
39084
+ this.Canvas.stroke()
39085
+ }
39086
+
39087
+ if (dataWidth>this.TextHeight)
39088
+ {
39089
+ this.DrawText(item.Text,x,y,radius);
39090
+ }
39091
+
39092
+ var itemTooltip={ X:x, Y:y, Radius:radius, Data:item };
39093
+ this.TooltipData.push(itemTooltip);
39094
+ }
39095
+
39096
+ this.DrawText=function(item, x, y, radius)
39097
+ {
39098
+ if (!item || !item.Text) return;
39099
+
39100
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
39101
+ if (bHScreen) return;
39102
+
39103
+ var text=item.Text;
39104
+ var textWidth=this.Canvas.measureText(text).width;
39105
+
39106
+ var baseLine=1; //1=上 2=下
39107
+ var align=2;
39108
+ var yOffset=2;
39109
+ var xText=x;
39110
+ if (IFrameSplitOperator.IsNumber(item.YOffset)) yOffset=item.YOffset; //Y偏移
39111
+ if (IFrameSplitOperator.IsNumber(item.BaseLine)) baseLine=item.BaseLine;
39112
+ var yText=y-radius-yOffset;
39113
+ if (baseLine==2) yText=y+radius+this.TextHeight+yOffset; //下
39114
+
39115
+ if (IFrameSplitOperator.IsNumber(item.Align)) align=item.Align; //左中右
39116
+ if (align==1) xText=x-textWidth;
39117
+ else if (align==2) xText=x-textWidth/2;
39118
+
39119
+ var rtText=null;
39120
+ if (item.BG && item.BG.Color)
39121
+ {
39122
+ var bgItem=item.BG;
39123
+ var marginLeft=2, marginRight=2, yBGOffset=1, marginBottom=0, marginTop=0;
39124
+ if (IFrameSplitOperator.IsNumber(bgItem.MarginLeft)) marginLeft=bgItem.MarginLeft;
39125
+ if (IFrameSplitOperator.IsNumber(bgItem.MarginRight)) marginRight=bgItem.MarginRight;
39126
+ if (IFrameSplitOperator.IsNumber(bgItem.MarginBottom)) marginBottom=bgItem.MarginBottom;
39127
+ if (IFrameSplitOperator.IsNumber(bgItem.MarginTop)) marginTop=bgItem.MarginTop;
39128
+ if (IFrameSplitOperator.IsNumber(bgItem.YOffset)) yBGOffset=bgItem.YOffset;
39129
+
39130
+ var rtBG={ Left:xText-marginLeft, Bottom:yText+yBGOffset+marginBottom, Width:textWidth+marginLeft+marginRight, Height:this.TextHeight+marginBottom+marginTop };
39131
+ rtBG.Right=rtBG.Left+rtBG.Width;
39132
+ rtBG.Top=rtBG.Bottom-rtBG.Height;
39133
+
39134
+ if (this.IsTextOverlap(rtBG)) return;
39135
+
39136
+ this.Canvas.fillStyle=bgItem.Color;
39137
+ this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);
39138
+
39139
+ rtText=rtBG;
39140
+ }
39141
+ else
39142
+ {
39143
+ rtText={ Left:xText, Bottom:yText, Width:textWidth, Height:this.TextHeight };
39144
+ rtText.Right=rtText.Left+rtText.Width;
39145
+ rtText.Top=rtText.Bottom-rtText.Height;
39146
+
39147
+ if (this.IsTextOverlap(rtText)) return;
39148
+ }
39149
+
39150
+ if (item.Color) this.Canvas.fillStyle=item.Color;
39151
+ else this.Canvas.fillStyle=this.TextColor;
39152
+ this.Canvas.fillText(text, xText, yText);
39153
+
39154
+ this.AryDrawRect.push(rtText);
39155
+ }
39156
+
39157
+ this.IsTextOverlap=function(rtText)
39158
+ {
39159
+ for(var i=0; i<this.AryDrawRect.length; ++i)
39160
+ {
39161
+ var item=this.AryDrawRect[i];
39162
+ if (IsRectOverlap(rtText,item)) return true;
39163
+ }
39164
+
39165
+ return false;
39166
+ }
39167
+
39168
+ this.GetMaxMin=function()
39169
+ {
39170
+ var range={Min:null, Max:null };
39171
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryPoint)) return range;
39172
+ if (!this.MapCache || this.MapCache.size<=0) return range;
39173
+ if(!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return range;
39174
+
39175
+ var xPointCount=this.ChartFrame.XPointCount;
39176
+ var start=this.Data.DataOffset;
39177
+ if (this.ChartFrame.GlobalOption && this.ChartFrame.GlobalOption.IsValueFullRange)
39178
+ {
39179
+ start=0;
39180
+ xPointCount=this.Data.Data.length;
39181
+ }
39182
+
39183
+ for(var i=start,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j)
39184
+ {
39185
+ var kItem=this.Data.Data[i];
39186
+ if (!kItem) continue;
39187
+
39188
+ var key=this.BuildKey(kItem);
39189
+ if (!this.MapCache.has(key)) continue;
39190
+ var mapItem=this.MapCache.get(key);
39191
+ if (!IFrameSplitOperator.IsNonEmptyArray(mapItem.Data)) continue;
39192
+
39193
+ for(k=0;k<mapItem.Data.length;++k)
39194
+ {
39195
+ var item=mapItem.Data[k];
39196
+ var value=item.Value;
39197
+ if (IFrameSplitOperator.IsString(item.Value)) value=this.GetKValue(kItem,item.Value);
39198
+ if (!IFrameSplitOperator.IsNumber(value)) continue;
39199
+
39200
+ if (range.Max==null) range.Max=value;
39201
+ else if (range.Max<value) range.Max=value;
39202
+ if (range.Min==null) range.Min=value;
39203
+ else if (range.Min>value) range.Min=value;
39204
+ }
39205
+ }
39206
+
39207
+ return range;
39208
+ }
39209
+
39210
+ this.GetTooltipData=function(x,y,tooltip)
39211
+ {
39212
+ if (!this.IsShow) return false;
39213
+
39214
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.TooltipData)) return false;
39215
+
39216
+ for(var i=this.TooltipData.length-1; i>=0; --i)
39217
+ {
39218
+ var item=this.TooltipData[i];
39219
+
39220
+ this.Canvas.beginPath();
39221
+ this.Canvas.arc(item.X, item.Y, item.Radius, 0, 2 * Math.PI);
39222
+ if (this.Canvas.isPointInPath(x,y))
39223
+ {
39224
+ JSConsole.Chart.Log('[ChartScatterPlotV2::GetTooltipData] point', item);
39225
+ tooltip.Data=item;
39226
+ tooltip.ChartPaint=this;
39227
+ tooltip.Type=6; //散点图
39228
+ return true;
39229
+ }
39230
+ }
39231
+ }
39232
+
39233
+ }
39234
+
38907
39235
  //子线段
38908
39236
  function ChartSubLine()
38909
39237
  {
@@ -77644,6 +77972,14 @@ function JSChartResource()
77644
77972
  DiffValueBGColor:"rgb(251,140,1)"
77645
77973
  }
77646
77974
 
77975
+ this.ChartScatterPlotV2=
77976
+ {
77977
+ Color:"rgb(0,0,255)",
77978
+ TextColor:"rgb(0,0,0)",
77979
+ Radius:3,
77980
+ Font:`${10*GetDevicePixelRatio()}px 微软雅黑`
77981
+ }
77982
+
77647
77983
  //筹码分布图
77648
77984
  this.StockChip=
77649
77985
  {
@@ -79044,6 +79380,7 @@ function JSChartResource()
79044
79380
  if (style.KLineToolbar) this.SetKLineToolbar(style.KLineToolbar);
79045
79381
 
79046
79382
  if (style.IndexLock) this.SetIndexLock(style.IndexLock);
79383
+ if (style.ChartScatterPlotV2) this.SetChartScatterPlotV2(style.ChartScatterPlotV2);
79047
79384
  }
79048
79385
 
79049
79386
 
@@ -79742,6 +80079,17 @@ function JSChartResource()
79742
80079
  if (item.Title) dest.Title=item.Title;
79743
80080
  }
79744
80081
 
80082
+ this.SetChartScatterPlotV2=function(style)
80083
+ {
80084
+ var item=style;
80085
+ var dest=this.ChartScatterPlotV2;
80086
+
80087
+ if (item.Color) dest.Color=item.Color;
80088
+ if (item.TextColor) dest.TextColor=item.TextColor;
80089
+ if (item.Font) dest.Font=item.Font;
80090
+ if (IFrameSplitOperator.IsNumber(item.Radius)) dest.Radius=item.Radius
80091
+ }
80092
+
79745
80093
  }
79746
80094
 
79747
80095
  var g_JSChartResource=new JSChartResource();
@@ -100197,6 +100545,22 @@ var MARKET_SUFFIX_NAME=
100197
100545
  return this.IsSZ(upperSymbol)|| this.IsSH(upperSymbol) || this.IsSHSZCustomIndex(upperSymbol);
100198
100546
  },
100199
100547
 
100548
+ IsSHSZETFOption:function(upperSymbol) //沪深ETF期权
100549
+ {
100550
+ if (!upperSymbol) return false;
100551
+
100552
+ if (this.IsSH(upperSymbol))
100553
+ {
100554
+ if (upperSymbol.charAt(0)=="1" && upperSymbol.length==8) return true;
100555
+ }
100556
+ else if (this.IsSZ(upperSymbol))
100557
+ {
100558
+ if (upperSymbol.charAt(0)=="9" && upperSymbol.length==8) return true;
100559
+ }
100560
+
100561
+ return false;
100562
+ },
100563
+
100200
100564
  IsSHSZFund:function(upperSymbol) //是否是交易所基金
100201
100565
  {
100202
100566
  if (!upperSymbol) return false;
@@ -100626,6 +100990,7 @@ var MARKET_SUFFIX_NAME=
100626
100990
  GetVolUnit:function(upperSymbol)
100627
100991
  {
100628
100992
  if (!upperSymbol) return 1;
100993
+ if (MARKET_SUFFIX_NAME.IsSHSZETFOption(upperSymbol)) return 1; //沪深ETF期权
100629
100994
  if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol)) return 100; //单位手=100股
100630
100995
  if (MARKET_SUFFIX_NAME.IsBJ(upperSymbol)) return 100; //单位手=100股
100631
100996
 
@@ -117518,9 +117883,7 @@ function JSSymbolData(ast,option,jsExecute)
117518
117883
  return result.GetAmount();
117519
117884
  case 'V':
117520
117885
  case "VOL":
117521
- if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol))
117522
- return result.GetVol(100);
117523
- return result.GetVol();
117886
+ return result.GetVol(MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol));
117524
117887
  case "VOLINSTK":
117525
117888
  return result.GetPosition();
117526
117889
  default:
@@ -124181,7 +124544,9 @@ var SCRIPT_CHART_NAME=
124181
124544
  {
124182
124545
  OVERLAY_BARS:"OVERLAY_BARS", //叠加柱子图
124183
124546
  KLINE_TABLE:"KLINE_TABLE",
124184
- SCATTER_PLOT:"SCATTER_PLOT", //散点图
124547
+ SCATTER_PLOT:"SCATTER_PLOT", //散点图
124548
+ SCATTER_PLOT_V2:"SCATTER_PLOT_V2", //散点图V2
124549
+
124185
124550
 
124186
124551
  CLIP_COLOR_STICK:"CLIP_COLOR_STICK", //上下柱子 裁剪
124187
124552
 
@@ -126188,6 +126553,34 @@ function ScriptIndex(name,script,args,option)
126188
126553
  hqChart.ChartPaint.push(chart);
126189
126554
  }
126190
126555
 
126556
+ this.CreateScatterPlotV2=function(hqChart,windowIndex,varItem,i)
126557
+ {
126558
+ var chart=new ChartScatterPlotV2();
126559
+ chart.Canvas=hqChart.Canvas;
126560
+ chart.Name=varItem.Name;
126561
+ chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
126562
+ chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
126563
+ chart.HQChart=hqChart;
126564
+ chart.Identify=this.Guid;
126565
+
126566
+ chart.Data=hqChart.GetKData(); //绑定K线
126567
+ chart.AryPoint=varItem.Draw.DrawData;
126568
+
126569
+ var config=varItem.Draw.Config;
126570
+ if (config)
126571
+ {
126572
+ if (config.Color) chart.Color=config.Color;
126573
+ if (IFrameSplitOperator.IsNumber(config.Radius)) chart.Radius=config.Radius;
126574
+ if (config.TextColor) chart.TextColor=config.TextColor;
126575
+ if (config.Font) chart.Font=config.Font;
126576
+ }
126577
+
126578
+ chart.BuildCacheData();
126579
+
126580
+ hqChart.ChartPaint.push(chart);
126581
+ }
126582
+
126583
+
126191
126584
  this.CreateClipColorStick=function(hqChart,windowIndex,varItem,id)
126192
126585
  {
126193
126586
  var chart=new ChartClipColorStick();
@@ -126550,6 +126943,9 @@ function ScriptIndex(name,script,args,option)
126550
126943
  case SCRIPT_CHART_NAME.SCATTER_PLOT:
126551
126944
  this.CreateScatterPlot(hqChart,windowIndex,item,i);
126552
126945
  break;
126946
+ case SCRIPT_CHART_NAME.SCATTER_PLOT_V2:
126947
+ this.CreateScatterPlotV2(hqChart,windowIndex,item,i);
126948
+ break;
126553
126949
  case SCRIPT_CHART_NAME.CLIP_COLOR_STICK:
126554
126950
  this.CreateClipColorStick(hqChart,windowIndex,item,i);
126555
126951
  break;
@@ -129111,6 +129507,16 @@ function APIScriptIndex(name,script,args,option, isOverlay)
129111
129507
 
129112
129508
  result.push(outVarItem);
129113
129509
  }
129510
+ else if (draw.DrawType==SCRIPT_CHART_NAME.SCATTER_PLOT_V2)
129511
+ {
129512
+ drawItem.Name=draw.Name;
129513
+ drawItem.Type=draw.Type;
129514
+ drawItem.DrawType=draw.DrawType;
129515
+ drawItem.DrawData=draw.DrawData;
129516
+ drawItem.Config=draw.Config;
129517
+ outVarItem.Draw=drawItem;
129518
+ result.push(outVarItem);
129519
+ }
129114
129520
  else if (draw.DrawType==SCRIPT_CHART_NAME.KLINE_TABLE)
129115
129521
  {
129116
129522
  drawItem.Name=draw.Name;
@@ -133206,6 +133612,14 @@ function JSReportChart(divElement)
133206
133612
  if (IFrameSplitOperator.IsBool(option.EnableDragHeader)) chart.EnableDragHeader=option.EnableDragHeader;
133207
133613
  if (IFrameSplitOperator.IsNumber(option.WheelPageType)) chart.WheelPageType=option.WheelPageType;
133208
133614
  if (IFrameSplitOperator.IsBool(option.PageUpDownCycle)) chart.PageUpDownCycle=option.PageUpDownCycle;
133615
+
133616
+ //数据下载提示信息
133617
+ if (IFrameSplitOperator.IsObject(option.SplashTitle))
133618
+ {
133619
+ var item=option.SplashTitle;
133620
+ if (item) chart.SplashTitle.StockList=item.StockList;
133621
+ if (item) chart.SplashTitle.MemberList=item.MemberList;
133622
+ }
133209
133623
 
133210
133624
 
133211
133625
  if (option.VScrollbar) chart.SetVScrollbar(option.VScrollbar);
@@ -146034,7 +146448,7 @@ function ScrollBarBGChart()
146034
146448
 
146035
146449
 
146036
146450
 
146037
- var HQCHART_VERSION="1.1.14616";
146451
+ var HQCHART_VERSION="1.1.14625";
146038
146452
 
146039
146453
  function PrintHQChartVersion()
146040
146454
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.14616";
8
+ var HQCHART_VERSION="1.1.14625";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -57545,6 +57545,8 @@ HQData.Report_APIIndex=function(data, callback)
57545
57545
  HQData.APIIndex_DRAWKLINE(data, callback);
57546
57546
  else if (request.Data.indexname=="API_TITLE")
57547
57547
  HQData.APIIndex_TITLE(data, callback);
57548
+ else if (request.Data.indexname=="API_SCATTER_PLOT_V2")
57549
+ HQData.APIIndex_SCATTER_PLOT_V2(data, callback);
57548
57550
  }
57549
57551
 
57550
57552
 
@@ -58545,6 +58547,67 @@ HQData.APIIndex_TITLE=function(data, callback)
58545
58547
  callback(apiData);
58546
58548
  }
58547
58549
 
58550
+ HQData.APIIndex_SCATTER_PLOT_V2=function(data, callback)
58551
+ {
58552
+ data.PreventDefault=true;
58553
+ var hqchart=data.HQChart;
58554
+ var kData=hqchart.GetKData();
58555
+
58556
+ var pointData=
58557
+ {
58558
+ name:"SCATTER_PLOT_V2", type:1,
58559
+ Draw:
58560
+ {
58561
+ Name:"SCATTER_PLOT_V2",
58562
+ DrawType:"SCATTER_PLOT_V2",
58563
+ DrawData:[],
58564
+ Config:{ Color:"rgb(100,100,0)", Radius:5 },
58565
+ },
58566
+ };
58567
+
58568
+ for(var i=0;i<kData.Data.length;++i)
58569
+ {
58570
+ var kItem=kData.Data[i];
58571
+
58572
+ var item={ Date:kItem.Date, Time:kItem.Time, Value:kItem.High, Color:"rgb(0,0,0)", IsEmpty:true };
58573
+ if (kItem.Close>kItem.Open)
58574
+ {
58575
+ item.ColorBorder="rgb(0,250,0)";
58576
+ 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 }};
58577
+ }
58578
+ else
58579
+ {
58580
+ item.ColorBorder="rgb(250,0,0)";
58581
+ item.Text=
58582
+ {
58583
+ Text:`${kItem.High.toFixed(2)}`, Color:"rgb(178,34,34)", BaseLine:2, YOffset:10, Align:2,
58584
+ //BG:{ Color:"rgb(255,255,0)" }
58585
+ };
58586
+ }
58587
+
58588
+
58589
+ item.Tooltip=
58590
+ [
58591
+ {Title:"日期", Text:`${kItem.Date}`},
58592
+ {Title:"最高", Text:`${kItem.High.toFixed(2)}`, TextColor:"rgb(250,0,0)"},
58593
+ {Title:"最低", Text:`${kItem.Low.toFixed(2)}`,TextColor:"rgb(0,255,0)" },
58594
+ ]
58595
+ pointData.Draw.DrawData.push(item);
58596
+ }
58597
+
58598
+ var apiData=
58599
+ {
58600
+ code:0,
58601
+ stock:{ name:hqchart.Name, symbol:hqchart.Symbol },
58602
+ outdata: { date:kData.GetDate(), time:kData.GetTime(), outvar:[ pointData] },
58603
+
58604
+ //error: { message:"无权限查看指标“测试指标1”" }
58605
+ };
58606
+
58607
+ console.log('[HQData.APIIndex_SCATTER_PLOT_V2] apiData ', apiData);
58608
+ callback(apiData);
58609
+ }
58610
+
58548
58611
 
58549
58612
  HQData.RequestVolumeProfileData=function(data, callback)
58550
58613
  {