hqchart 1.1.15438 → 1.1.15449

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.
@@ -514,12 +514,6 @@ function JSStockInfoChartContainer(uielement)
514
514
  var item=this.ChartPaint[i];
515
515
  item.Draw();
516
516
  }
517
-
518
- for(var i=0; i<this.ChartPaint.length; ++i)
519
- {
520
- var item=this.ChartPaint[i];
521
- item.Draw();
522
- }
523
517
  }
524
518
 
525
519
  this.OnSize=function()
@@ -2933,6 +2933,9 @@ var JSCHART_EVENT_ID=
2933
2933
  ON_BEFORE_DRAW_HLINE:180, //画图工具-水平线(ChartDrawPictureHorizontalLine) 绘图前
2934
2934
 
2935
2935
  ON_HIDE_ALL_POP_DIV:181, //隐藏所有弹框div
2936
+
2937
+ //工具条
2938
+ ON_CLICK_STATUSBAR_ITEM:301,
2936
2939
  }
2937
2940
 
2938
2941
  var JSCHART_OPERATOR_ID=
@@ -51084,6 +51087,9 @@ function StockChip()
51084
51087
  if (recvData && recvData.PreventDefault)
51085
51088
  return recvData.Result;
51086
51089
 
51090
+ if (MARKET_SUFFIX_NAME.IsIncludes(symbol, ARRAY_CHINA_FUTURES_SUFFIX))
51091
+ return this.CalculateChip_Futrues();
51092
+
51087
51093
  if (MARKET_SUFFIX_NAME.IsSHSZIndex(symbol)) return false; //指数暂时不支持移动筹码
51088
51094
 
51089
51095
  var bindData=this.HQChart.ChartPaint[0].Data;
@@ -51213,6 +51219,142 @@ function StockChip()
51213
51219
  return true;
51214
51220
  }
51215
51221
 
51222
+ this.CalculateChip_Futrues=function() //计算期货筹码 (持仓和量计算的)
51223
+ {
51224
+ if (!this.HQChart) return false;
51225
+ var symbol=this.HQChart.Symbol;
51226
+ if (!symbol) return false;
51227
+ var upperSymbol=symbol.toUpperCase();
51228
+
51229
+ if (!MARKET_SUFFIX_NAME.IsIncludes(symbol, ARRAY_CHINA_FUTURES_SUFFIX)) return false;
51230
+
51231
+ var bindData=this.HQChart.GetKData();
51232
+ //if (bindData.Period>=4) return false; //分钟K线不支持, 没时间做,以后再做吧
51233
+ var count=bindData.DataOffset+parseInt(this.HQChart.CursorIndex);
51234
+ if (count>=bindData.Data.length) count=bindData.Data.length-1;
51235
+ var selData=bindData.Data[count];
51236
+ var yPrice=selData.Close;
51237
+
51238
+ var mouseY=this.HQChart.LastPoint.Y;
51239
+ if (mouseY) yPrice=this.HQChart.Frame.SubFrame[0].Frame.GetYData(mouseY);
51240
+
51241
+ //JSConsole.Chart.Log("[StockChip::CalculateChip]",count,this.HQChart.CursorIndex,selData);
51242
+ const rate=1;
51243
+ var aryVol=[];
51244
+ var seed=1,vol,maxPrice,minPrice;
51245
+ for(let i=count;i>=0;--i)
51246
+ {
51247
+ var item=bindData.Data[i];
51248
+ var changeRate=1; //换手率
51249
+ if (item.Position>0) changeRate=item.Vol/item.Position;
51250
+ if (i==count) vol=item.Vol*changeRate;
51251
+ else vol=item.Vol*seed;
51252
+ var dataItem={Vol:vol,High:item.High,Low:item.Low};
51253
+ aryVol.push(dataItem);
51254
+ seed*=(1-changeRate*rate);
51255
+
51256
+ if (!maxPrice || maxPrice<item.High) maxPrice=item.High;
51257
+ if (!minPrice || minPrice>item.Low) minPrice=item.Low;
51258
+ }
51259
+
51260
+ //JSConsole.Chart.Log("[StockChip::CalculateChip]",maxPrice,minPrice);
51261
+ if (!maxPrice || !minPrice) return true;
51262
+
51263
+ var priceZoom=this.PriceZoom;
51264
+
51265
+ maxPrice=parseInt(maxPrice*priceZoom);
51266
+ minPrice=parseInt(minPrice*priceZoom);
51267
+
51268
+ var dataCount=maxPrice-minPrice;
51269
+ var aryChip=new Array()
51270
+ for(let i=0;i<=dataCount;++i)
51271
+ {
51272
+ aryChip.push(0);
51273
+ }
51274
+
51275
+ var dayChip=[];
51276
+ var distributeData;
51277
+ if (this.ShowType==2)
51278
+ {
51279
+ var dayChip=
51280
+ [
51281
+ {Day:100, Color:this.DAY_COLOR[1][5]}, {Day:60, Color:this.DAY_COLOR[1][4]}, {Day:30, Color:this.DAY_COLOR[1][3]},
51282
+ {Day:20, Color:this.DAY_COLOR[1][2]}, {Day:10, Color:this.DAY_COLOR[1][1]}, {Day:5, Color:this.DAY_COLOR[1][0]}
51283
+ ];
51284
+ for(let i in aryVol)
51285
+ {
51286
+ var item=aryVol[i];
51287
+ var high=parseInt(item.High*priceZoom);
51288
+ var low=parseInt(item.Low*priceZoom);
51289
+ var averageVol=item.Vol;
51290
+ if (high-low>0) averageVol=item.Vol/(high-low);
51291
+ if (averageVol<=0.000000001) continue;
51292
+
51293
+ for(var k=0;k<dayChip.length;++k)
51294
+ {
51295
+ if (i==dayChip[k].Day)
51296
+ {
51297
+ dayChip[k].Chip=aryChip.slice(0);
51298
+ break;
51299
+ }
51300
+ }
51301
+
51302
+ distributeData={Low:low, High:high, Vol:item.Vol, MaxPrice:maxPrice, MinPrice:minPrice};
51303
+ this.CalculateDistribute(aryChip, distributeData );
51304
+ }
51305
+ }
51306
+ else if (this.ShowType==1)
51307
+ {
51308
+ var dayChip=
51309
+ [
51310
+ {Day:5, Color:this.DAY_COLOR[0][0]},{Day:10, Color:this.DAY_COLOR[0][1]},{Day:20, Color:this.DAY_COLOR[0][2]},
51311
+ {Day:30, Color:this.DAY_COLOR[0][3]},{Day:60, Color:this.DAY_COLOR[0][4]},{Day:100, Color:this.DAY_COLOR[0][5]}
51312
+ ];
51313
+
51314
+ for(let i=aryVol.length-1;i>=0;--i)
51315
+ {
51316
+ var item=aryVol[i];
51317
+ var high=parseInt(item.High*priceZoom);
51318
+ var low=parseInt(item.Low*priceZoom);
51319
+ var averageVol=item.Vol;
51320
+ if (high-low>0) averageVol=item.Vol/(high-low);
51321
+ if (averageVol<=0.000000001) continue;
51322
+
51323
+ for(var k=0;k<dayChip.length;++k)
51324
+ {
51325
+ if (i==dayChip[k].Day)
51326
+ {
51327
+ dayChip[k].Chip=aryChip.slice(0);
51328
+ break;
51329
+ }
51330
+ }
51331
+
51332
+ distributeData={Low:low, High:high, Vol:item.Vol, MaxPrice:maxPrice, MinPrice:minPrice};
51333
+ this.CalculateDistribute(aryChip, distributeData);
51334
+ }
51335
+ }
51336
+ else
51337
+ {
51338
+ for(let i in aryVol)
51339
+ {
51340
+ var item=aryVol[i];
51341
+ var high=parseInt(item.High*priceZoom);
51342
+ var low=parseInt(item.Low*priceZoom);
51343
+ var averageVol=item.Vol;
51344
+ if (high-low>0) averageVol=item.Vol/(high-low);
51345
+ if (averageVol<=0.000000001) continue;
51346
+
51347
+ distributeData={Low:low, High:high, Vol:item.Vol, MaxPrice:maxPrice, MinPrice:minPrice};
51348
+ this.CalculateDistribute(aryChip, distributeData);
51349
+ }
51350
+ }
51351
+
51352
+ if (!distributeData) return false;
51353
+
51354
+ this.Data={AllChip:aryChip, MaxVol:distributeData.MaxVol, MaxPrice:maxPrice, MinPrice:minPrice,SelectData:selData, DayChip:dayChip, YPrice:yPrice};
51355
+ return true;
51356
+ }
51357
+
51216
51358
  this.DrawFrame=function() //X轴成交量坐标
51217
51359
  {
51218
51360
  if (this.IsShowX==false) return;
@@ -79813,6 +79955,57 @@ function JSChartResource()
79813
79955
  BorderColor:"rgb(192,192,192)"
79814
79956
  }
79815
79957
 
79958
+ this.StatusBar=
79959
+ {
79960
+ Table:
79961
+ {
79962
+ Font:14*GetDevicePixelRatio() +'px 微软雅黑',
79963
+ TitleColor:"rgb(90,90,90)",
79964
+ AryTextColor:["rgb(90,90,90)","rgb(192,192,0)"],
79965
+ Margin:{ Left:1*GetDevicePixelRatio(), Top:0, Bottom:0, Right:0 },
79966
+ CellMargin:
79967
+ {
79968
+ Top:5*GetDevicePixelRatio(),
79969
+ Bottom:5*GetDevicePixelRatio(),
79970
+ Left:5*GetDevicePixelRatio(),
79971
+ Right:5*GetDevicePixelRatio(),
79972
+ YOffset:1* GetDevicePixelRatio(),
79973
+ },
79974
+
79975
+ Separator: { Left:10, Right:10, Line:{ Width:1, Color:"rgb(192,192,192)", Top:2, Bottom:2 } }
79976
+ },
79977
+
79978
+ DateTime:
79979
+ {
79980
+ Font:14*GetDevicePixelRatio() +'px 微软雅黑',
79981
+ TitleColor:"rgb(90,90,90)",
79982
+ Format:"HH:MM:SS",
79983
+ MaxText:"99:99:99",
79984
+ Margin:{ Left:2*GetDevicePixelRatio(), Top:5*GetDevicePixelRatio(), Bottom:5*GetDevicePixelRatio(), Right:5*GetDevicePixelRatio(), YOffset:1*GetDevicePixelRatio() },
79985
+ },
79986
+
79987
+ RightToolbar:
79988
+ {
79989
+ Icon:{ Family:"iconfont", Size:14*GetDevicePixelRatio() },
79990
+
79991
+ Margin:{ Left:1*GetDevicePixelRatio(), Top:0, Bottom:0, Right:2*GetDevicePixelRatio() },
79992
+ CellMargin:
79993
+ {
79994
+ Top:5*GetDevicePixelRatio(),
79995
+ Bottom:5*GetDevicePixelRatio(),
79996
+ Left:2*GetDevicePixelRatio(),
79997
+ Right:2*GetDevicePixelRatio(),
79998
+ YOffset:0,
79999
+ },
80000
+ },
80001
+
80002
+ UpTextColor:"rgb(238,21,21)", //上涨文字颜色
80003
+ DownTextColor:"rgb(25,158,0)", //下跌文字颜色
80004
+ UnchangeTextColor:"rgb(90,90,90)", //平盘文字颜色
80005
+
80006
+ BorderColor:"rgb(192,192,192)"
80007
+ }
80008
+
79816
80009
 
79817
80010
  //自定义风格
79818
80011
  this.SetStyle=function(style)
@@ -80782,9 +80975,66 @@ function JSChartResource()
80782
80975
 
80783
80976
  if (style.SmallFloatTooltipV2) this.SetSmallFloatTooltipV2(style.SmallFloatTooltipV2);
80784
80977
  if (style.StockInfo) this.SetStockInfo(style.StockInfo);
80978
+ if (style.StatusBar) this.SetStatusBar(style.StatusBar);
80785
80979
 
80786
80980
  }
80787
80981
 
80982
+ this.SetStatusBar=function(style)
80983
+ {
80984
+ var dest=this.StatusBar;
80985
+
80986
+ if (style.Table)
80987
+ {
80988
+ var item=style.Table;
80989
+ if (item.Font) dest.Table.Font=item.Font;
80990
+ if (item.TitleColor) dest.Table.TitleColor=item.TitleColor;
80991
+ if (IFrameSplitOperator.IsNonEmptyArray(item.AryTextColor)) dest.Table.AryTextColor=item.AryTextColor.slice();
80992
+ CopyMarginConfig(dest.Table.Margin, item.Margin);
80993
+ if (item.CellMargin)
80994
+ {
80995
+ var subItem=item.CellMargin;
80996
+ CopyMarginConfig(dest.Table.CellMargin, subItem);
80997
+ if (IFrameSplitOperator.IsNumber(subItem.YOffset)) dest.Table.CellMargin.YOffset=subItem.YOffset
80998
+ }
80999
+
81000
+ if (item.Separator)
81001
+ {
81002
+ var subItem=item.Separator;
81003
+ var subDest=dest.Table.Separator;
81004
+ if (IFrameSplitOperator.IsNumber(subItem.Left)) subDest.Left=subItem.Left;
81005
+ if (IFrameSplitOperator.IsNumber(subItem.Right)) subDest.Left=subItem.Right;
81006
+
81007
+ if (subItem.Line)
81008
+ {
81009
+ if (IFrameSplitOperator.IsNumber(subItem.Line.Width)) subDest.Line.Width=subItem.Line.Width;
81010
+ if (IFrameSplitOperator.IsNumber(subItem.Line.Top)) subDest.Line.Top=subItem.Line.Top;
81011
+ if (IFrameSplitOperator.IsNumber(subItem.Line.Bottom)) subDest.Line.Bottom=subItem.Line.Bottom;
81012
+ if (subItem.Line.Color) subDest.Line.Color=subItem.Line.Color;
81013
+ }
81014
+ }
81015
+ }
81016
+
81017
+ if (style.DateTime)
81018
+ {
81019
+ var item=style.DateTime;
81020
+ if (item.Font) dest.DateTime.Font=item.Font;
81021
+ if (item.TitleColor) dest.DateTime.TitleColor=item.TitleColor;
81022
+ if (item.Format) dest.DateTime.Format=item.Format;
81023
+ if (item.MaxText) dest.DateTime.MaxText=item.MaxText;
81024
+ if (item.Margin)
81025
+ {
81026
+ var subItem=item.Margin;
81027
+ CopyMarginConfig(dest.DateTime.Margin, subItem);
81028
+ if (IFrameSplitOperator.IsNumber(subItem.YOffset)) dest.DateTime.Margin.YOffset=subItem.YOffset;
81029
+ }
81030
+ }
81031
+
81032
+ if (style.UpTextColor) dest.UpTextColor=style.UpTextColor;
81033
+ if (style.DownTextColor) dest.DownTextColor=style.DownTextColor;
81034
+ if (style.UnchangeTextColor) dest.UnchangeTextColor=style.UnchangeTextColor;
81035
+ if (style.BorderColor) dest.BorderColor=style.BorderColor;
81036
+ }
81037
+
80788
81038
  this.SetStockInfo=function(style)
80789
81039
  {
80790
81040
  var dest=this.StockInfo;
@@ -102753,13 +103003,55 @@ var MARKET_SUFFIX_NAME=
102753
103003
  return upperSymbol.indexOf(this.INE) > 0;
102754
103004
  },
102755
103005
 
103006
+ //是否包含某一个市场的
103007
+ IsIncludes:function(symbol, arySuffix)
103008
+ {
103009
+ if (!symbol) return false;
103010
+ if (!IFrameSplitOperator.IsNonEmptyArray(arySuffix)) return false;
103011
+ var upperSymbol=symbol.toUpperCase();
103012
+
103013
+ var bMatch=false;
103014
+ for(var i=0;i<arySuffix.length;++i)
103015
+ {
103016
+ var item=arySuffix[i];
103017
+ switch(item)
103018
+ {
103019
+ case this.SHFE:
103020
+ case this.SHFE2:
103021
+ if (this.IsSHFE(upperSymbol)) bMatch=true;
103022
+ break;
103023
+ case this.CFFEX2:
103024
+ case this.CFFEX:
103025
+ case this.CFFEX3:
103026
+ if (this.IsCFFEX(upperSymbol)) bMatch=true;
103027
+ break;
103028
+ case this.DCE:
103029
+ if (this.IsDCE(upperSymbol)) bMatch=true;
103030
+ break;
103031
+ case this.CZCE:
103032
+ if (this.IsCZCE(upperSymbol)) bMatch=true;
103033
+ break;
103034
+ case this.GZFE:
103035
+ if (this.IsGZFE(upperSymbol)) bMatch=true;
103036
+ break;
103037
+ case this.INE:
103038
+ if (this.IsINE(upperSymbol)) bMatch=true;
103039
+ break;
103040
+ }
103041
+
103042
+ if (bMatch) return true;
103043
+ }
103044
+
103045
+ return false;
103046
+ },
103047
+
102756
103048
  IsChinaFutures:function(upperSymbol) //是否是国内期货 /期权
102757
103049
  {
102758
103050
  if (!upperSymbol) return false;
102759
103051
 
102760
103052
  return this.IsSHO(upperSymbol) || this.IsSZO(upperSymbol) ||
102761
- this.IsGZFE(upperSymbol) || this.IsINE(upperSymbol) ||
102762
- this.IsCFFEX(upperSymbol) || this.IsCZCE(upperSymbol) || this.IsDCE(upperSymbol) || this.IsSHFE(upperSymbol);
103053
+ this.IsGZFE(upperSymbol) || this.IsINE(upperSymbol) ||
103054
+ this.IsCFFEX(upperSymbol) || this.IsCZCE(upperSymbol) || this.IsDCE(upperSymbol) || this.IsSHFE(upperSymbol);
102763
103055
  },
102764
103056
 
102765
103057
  IsFutures:function(upperSymbol) //是否是期货 包含国外的
@@ -103268,6 +103560,16 @@ var MARKET_SUFFIX_NAME=
103268
103560
 
103269
103561
  }
103270
103562
 
103563
+ //国内期货市场
103564
+ const ARRAY_CHINA_FUTURES_SUFFIX=
103565
+ [
103566
+ MARKET_SUFFIX_NAME.SHFE,
103567
+ MARKET_SUFFIX_NAME.CFFEX,
103568
+ MARKET_SUFFIX_NAME.DCE,
103569
+ MARKET_SUFFIX_NAME.CZCE,
103570
+ MARKET_SUFFIX_NAME.GZFE,
103571
+ MARKET_SUFFIX_NAME.INE
103572
+ ];
103271
103573
 
103272
103574
  //走势图分钟数据对应的时间
103273
103575
  function MinuteTimeStringData()
@@ -1,8 +1,8 @@
1
1
  @font-face {
2
2
  font-family: "iconfont"; /* Project id 1040563 */
3
- src: url('iconfont.woff2?t=1755154065744') format('woff2'),
4
- url('iconfont.woff?t=1755154065744') format('woff'),
5
- url('iconfont.ttf?t=1755154065744') format('truetype');
3
+ src: url('iconfont.woff2?t=1766373554606') format('woff2'),
4
+ url('iconfont.woff?t=1766373554606') format('woff'),
5
+ url('iconfont.ttf?t=1766373554606') format('truetype');
6
6
  }
7
7
 
8
8
  .iconfont {
@@ -13,6 +13,14 @@
13
13
  -moz-osx-font-smoothing: grayscale;
14
14
  }
15
15
 
16
+ .icon-network-error:before {
17
+ content: "\e6d0";
18
+ }
19
+
20
+ .icon-network:before {
21
+ content: "\e6cb";
22
+ }
23
+
16
24
  .icon-help:before {
17
25
  content: "\e6ca";
18
26
  }
@@ -1065,6 +1065,48 @@ function GetBlackStyle()
1065
1065
  UpTextColor:"rgb(238,21,21)", //上涨文字颜色
1066
1066
  DownTextColor:"rgb(25,158,0)", //下跌文字颜色
1067
1067
  UnchangeTextColor:"rgb(90,90,90)", //平盘文字颜色
1068
+ BorderColor:'rgb(38,38,41)', //边框线
1069
+ },
1070
+
1071
+
1072
+ StatusBar:
1073
+ {
1074
+ Table:
1075
+ {
1076
+ //Font:14*GetDevicePixelRatio() +'px 微软雅黑',
1077
+ TitleColor:"rgb(250,250,250)",
1078
+ AryTextColor:["rgb(250,250,250)", "rgb(255, 185, 15)"],
1079
+ //Margin:{ Left:0, Top:0, Bottom:0, Right:0 },
1080
+ //CellMargin:{ Top:5, Bottom:5, Left:5, Right:5, YOffset:0 },
1081
+ //ItemSpace:20,
1082
+
1083
+ Separator:
1084
+ {
1085
+ //Left:20,
1086
+ // Right:20,
1087
+ Line:
1088
+ {
1089
+ //Width:1,
1090
+ Color:"rgb(38,38,41)",
1091
+ //Top:2,
1092
+ //Bottom:2
1093
+ }
1094
+ }
1095
+ },
1096
+
1097
+ DateTime:
1098
+ {
1099
+ //Font:14*GetDevicePixelRatio() +'px 微软雅黑',
1100
+ TitleColor:"rgb(250,250,250)",
1101
+ //Format:"HH:MM:SS",
1102
+ //MaxText:"99:99:99",
1103
+ //Margin:{ Left:2*GetDevicePixelRatio(), Top:5*GetDevicePixelRatio(), Bottom:5*GetDevicePixelRatio(), Right:5*GetDevicePixelRatio(), YOffset:1*GetDevicePixelRatio() },
1104
+ },
1105
+
1106
+ UpTextColor:"rgb(238,21,21)", //上涨文字颜色
1107
+ DownTextColor:"rgb(25,158,0)", //下跌文字颜色
1108
+ UnchangeTextColor:"rgb(90,90,90)", //平盘文字颜色
1109
+
1068
1110
  BorderColor:'rgb(38,38,41)', //边框线
1069
1111
  }
1070
1112