hqchart 1.1.14125 → 1.1.14133

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.14125",
3
+ "version": "1.1.14133",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -488,6 +488,7 @@ function JSDialogTooltip()
488
488
  {
489
489
  var defaultfloatPrecision=GetfloatPrecision(this.HQChart.Symbol);//价格小数位数
490
490
  var upperSymbol=this.HQChart.Symbol.toUpperCase();
491
+ var unit=MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol);
491
492
  var priceFormat=0;
492
493
  if (this.Style==1) priceFormat=1;
493
494
 
@@ -505,7 +506,7 @@ function JSDialogTooltip()
505
506
  this.ForamtPrice(data.High,yClose, defaultfloatPrecision,'DialogTooltip-High',priceFormat),
506
507
  this.ForamtPrice(data.Low,yClose, defaultfloatPrecision,'DialogTooltip-Low',priceFormat),
507
508
  this.ForamtPrice(data.Close,yClose, defaultfloatPrecision,'DialogTooltip-Close',priceFormat),
508
- this.FormatVol(data.Vol,'DialogTooltip-Vol' ),
509
+ this.FormatVol(data.Vol/unit,'DialogTooltip-Vol' ),
509
510
  this.FormatAmount(data.Amount,'DialogTooltip-Amount' ),
510
511
  this.FormatIncrease(data.Close,yClose,defaultfloatPrecision,'DialogTooltip-Increase',priceFormat),
511
512
  this.FormatAmplitude(data.High,data.Low,yClose,defaultfloatPrecision,'DialogTooltip-Amplitude',priceFormat),
@@ -567,6 +568,8 @@ function JSDialogTooltip()
567
568
  this.GetFormatMinuteTooltipText=function(data)
568
569
  {
569
570
  var defaultfloatPrecision=GetfloatPrecision(this.HQChart.Symbol);//价格小数位数
571
+ var upperSymbol=this.HQChart.Symbol.toUpperCase();
572
+ var unit=MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol);
570
573
  var aryText=[];
571
574
  if (data.Type==0) //连续交易
572
575
  {
@@ -581,7 +584,7 @@ function JSDialogTooltip()
581
584
  this.ForamtPrice(item.AvPrice,item.YClose, defaultfloatPrecision,'DialogTooltip-AvPrice', 1),
582
585
  this.FormatRisefall(item.Close,item.YClose, defaultfloatPrecision,'DialogTooltip-Risefall'),
583
586
  this.FormatIncrease(item.Close,item.YClose,defaultfloatPrecision,'DialogTooltip-Increase', 1),
584
- this.FormatVol(item.Vol,'DialogTooltip-Vol' ),
587
+ this.FormatVol(item.Vol/unit,'DialogTooltip-Vol' ),
585
588
  this.FormatAmount(item.Amount,'DialogTooltip-Amount' ),
586
589
  ];
587
590
 
@@ -614,7 +617,7 @@ function JSDialogTooltip()
614
617
  this.FormatTime(item.Time, null, timeForamt, 'DialogTooltip-Time'),
615
618
  this.ForamtPrice(item.Price,item.YClose, defaultfloatPrecision,'DialogTooltip-AC-Price',1),
616
619
  this.FormatIncrease(item.Price,item.YClose,defaultfloatPrecision,'DialogTooltip-AC-Increase',1),
617
- this.FormatVol(item.Vol[0],'DialogTooltip-AC-Vol' ),
620
+ this.FormatVol(item.Vol[0]/unit,'DialogTooltip-AC-Vol' ),
618
621
  ];
619
622
  }
620
623
  else
@@ -1356,9 +1359,28 @@ function JSFloatTooltip()
1356
1359
 
1357
1360
  var item=tooltipData.Data.Item;
1358
1361
  var aryText=[];
1362
+ if (item && IFrameSplitOperator.IsObject(item.Text))
1363
+ {
1364
+ var tooltipData=item.Text;
1365
+ if (IFrameSplitOperator.IsNonEmptyArray(tooltipData.AryText))
1366
+ {
1367
+ for(var i=0;i<tooltipData.AryText.length;++i)
1368
+ {
1369
+ var tooltipItem=tooltipData.AryText[i];
1370
+ var textItem={ Title:tooltipItem.Title, Text:tooltipItem.Text, Color:this.ValueColor };
1371
+ if (tooltipItem.Color) textItem.Color=tooltipItem.Color;
1372
+ if (tooltipItem.Align=="Left") tooltipItem.ClassName=this.ValueAlign.Left;
1359
1373
 
1360
- var rowItem={ Text:"", HTMLTitle:item.Text, Color:this.ValueColor, IsMergeCell:true };
1361
- aryText.push(rowItem);
1374
+ aryText.push(tooltipItem);
1375
+ }
1376
+ }
1377
+ }
1378
+ else
1379
+ {
1380
+ var rowItem={ Text:"", HTMLTitle:item.Text, Color:this.ValueColor, IsMergeCell:true };
1381
+ aryText.push(rowItem);
1382
+ }
1383
+
1362
1384
 
1363
1385
  this.AryText=aryText;
1364
1386
  this.UpdateTableDOM();
@@ -1460,6 +1482,7 @@ function JSFloatTooltip()
1460
1482
  var symbol=kItem.Symbol;
1461
1483
  var upperSymbol=symbol.toUpperCase();
1462
1484
  var defaultfloatPrecision=GetfloatPrecision(symbol);//价格小数位数
1485
+ var unit=MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol);
1463
1486
 
1464
1487
  //日期
1465
1488
  var dateItem=this.ForamtDate(data.Date,"YYYY/MM/DD/W",'FloatTooltip-Date' );
@@ -1481,7 +1504,7 @@ function JSFloatTooltip()
1481
1504
  this.ForamtPrice(data.Low,yClose, defaultfloatPrecision,'FloatTooltip-Low'),
1482
1505
  this.ForamtPrice(data.Close,yClose, defaultfloatPrecision,'FloatTooltip-Close'),
1483
1506
  this.ForamtPrice(data.YClose,data.YClose, defaultfloatPrecision,'FloatTooltip-YClose'),
1484
- this.FormatVol(data.Vol,'FloatTooltip-Vol' ),
1507
+ this.FormatVol(data.Vol/unit,'FloatTooltip-Vol' ),
1485
1508
  this.FormatAmount(data.Amount,'FloatTooltip-Amount' ),
1486
1509
  this.FormatIncrease(data.Close,yClose,defaultfloatPrecision,'FloatTooltip-Increase'),
1487
1510
  this.FormatAmplitude(data.High,data.Low,yClose,defaultfloatPrecision,'FloatTooltip-Amplitude'),
@@ -11388,6 +11388,105 @@ function JSDraw(errorHandler,symbolData)
11388
11388
 
11389
11389
  return result;
11390
11390
  }
11391
+
11392
+
11393
+ ///////////////////////////////////////////////////////////////////////////////////
11394
+ //DRAWLASTBARICON :在最后一根k线绘制图标。
11395
+ //用法:DRAWLASTBARICON(PRICE,ICON);
11396
+ //最后一根k线,在PRICE位置画图标ICON。
11397
+ //
11398
+ //注:
11399
+ //1、该函数可以指定位置PRICE标注图标ICON
11400
+ //2、ICON位置可以写成'ICON'的形式,也可以写为数字的形式,即DRAWLASTBARICON(PRICE,'ICO1');等价于DRAWLASTBARICON(PRICE,1);
11401
+ //3、不支持将该函数定义为变量,即不支持下面的写法:
11402
+ //A:DRAWLASTBARICON(PRICE,ICON);
11403
+ //4、该函数可以用ALIGN,VALIGN设置图标的对齐方式。
11404
+ //例1:
11405
+ //DRAWLASTBARICON(LOW,'ICO1');//在最后一根k线最低价上画出图标ICON1。
11406
+ //例2:
11407
+ //MA5:=MA(C,5);
11408
+ //DRAWLASTBARICON(MA5,2);//表示在最后一根k线对应的MA5数值位置上画出图标ICON2。
11409
+
11410
+ this.DRAWLASTBARICON=function(data, type)
11411
+ {
11412
+ if (IFrameSplitOperator.IsString(type)) //把ICO1=>1
11413
+ {
11414
+ var value=type.replace('ICO',"");
11415
+ type=parseInt(value);
11416
+ }
11417
+
11418
+ var icon=g_JSComplierResource.GetDrawIcon(type);
11419
+ if (!icon) g_JSComplierResource.GetDrawTextIcon(type);
11420
+ if (!icon) icon={ Symbol:'🚩'};
11421
+
11422
+ var drawItem={ Value:null, Icon:icon, IconType:type };
11423
+ if (IFrameSplitOperator.IsNonEmptyArray(data)) drawItem.Value=data[data.length-1];
11424
+ else drawItem.Value=data;
11425
+
11426
+ var result={ DrawData:drawItem, DrawType:'DRAWLASTBARICON' };
11427
+
11428
+ return result;
11429
+ }
11430
+
11431
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
11432
+ //DRAWLASTBARTEXT:显在最后一根k线显示文字。
11433
+ //用法:DRAWLASTBARTEXT(PRICE,TEXT);
11434
+ //最后一根k线,在PRICE位置书写文字TEXT。
11435
+ //注:
11436
+ //1、显示的汉字用单引号标注
11437
+ //2、可以设置文字显示的对齐方式,字体大小以及文字的颜色,即支持下面的写法:
11438
+ //DRAWLASTBARTEXT(PRICE,TEXT),COLOR,ALIGN,VALIGN;
11439
+ //例1:
11440
+ //DRAWLASTBARTEXT(LOW,'注');//
11441
+ //最后一根k线,在最低价上写"注"字。
11442
+ //例2:
11443
+ //DRAWLASTBARTEXT(LOW,'低'),ALIGN0,FONTSIZE16,COLORRED;//在最后一根k线,在最低价写"低"字,文字左对齐,字体大小为16,文字颜色为红色。
11444
+
11445
+ this.DRAWLASTBARTEXT=function(data, text)
11446
+ {
11447
+ var drawItem={ Value:null, Text:text };
11448
+ if (IFrameSplitOperator.IsNonEmptyArray(data)) drawItem.Value=data[data.length-1];
11449
+ else drawItem.Value=data;
11450
+
11451
+ var result={ DrawData:drawItem, DrawType:'DRAWLASTBARTEXT' };
11452
+
11453
+ return result;
11454
+ }
11455
+
11456
+ /////////////////////////////////////////////////////////////////////////////////////////////////////
11457
+ //DRAWLASTBARNUMBER:在最后一根k线输出数值。
11458
+ //用法:DRAWLASTBARNUMBER(DATA,NUMBER,PRECISION,COLOR);
11459
+ //最后一根k线在DATA位置写数字NUMBER。PRECISION为精度(小数点后有几位数字)。COLOR为颜色。
11460
+ //注:
11461
+ //该函数支持在函数后设置文字的大小和文字对齐方式。即支持下面的写法:
11462
+ //DRAWLASTBARNUMBER(DATA,NUMBER,PRECISION,COLOR),ALIGN,VALIGN;
11463
+ //例1:
11464
+ //DRAWLASTBARNUMBER(HIGH,(CLOSE-OPEN)/OPEN*100,2,COLORRED);//最后一根k线在最高价位置红色显示涨幅数值(相对开盘价的百分比,精确2位小数)。
11465
+ //例2:
11466
+ //DRAWLASTBARNUMBER(L,REF(C,1),2,COLORRED),ALIGN0,VALIGN0;//表示最后一根k线的最低价处以红色显示昨收盘价数值(精确2位小数),标注文字居左,居上对齐。
11467
+
11468
+ this.DRAWLASTBARNUMBER=function(data,value,dec,color)
11469
+ {
11470
+ var drawItem={ Value:null, Text:null, Color:color };
11471
+ if (IFrameSplitOperator.IsNonEmptyArray(data)) drawItem.Value=data[data.length-1];
11472
+ else drawItem.Value=data;
11473
+
11474
+ var precision=2;
11475
+ if (IFrameSplitOperator.IsNumber(dec)) precision=parseInt(dec);
11476
+ if (IFrameSplitOperator.IsNumber(value))
11477
+ {
11478
+ drawItem.Text=value.toFixed(precision);
11479
+ }
11480
+ else if (IFrameSplitOperator.IsNonEmptyArray(value))
11481
+ {
11482
+ var lastValue=value[value.length-1];
11483
+ if (IFrameSplitOperator.IsNumber(lastValue)) drawItem.Text=lastValue.toFixed(precision);
11484
+ }
11485
+
11486
+ var result={ DrawData:drawItem, DrawType:'DRAWLASTBARNUMBER' };
11487
+
11488
+ return result;
11489
+ }
11391
11490
  }
11392
11491
 
11393
11492
 
@@ -11442,6 +11541,7 @@ JSDraw.prototype.IsDrawFunction=function(name)
11442
11541
  'DRAWOVERLAYLINE',"FILLRGN", "FILLRGN2","FILLTOPRGN", "FILLBOTTOMRGN", "FILLVERTICALRGN","FLOATRGN","DRAWSL", "DRAWGBK2","DRAWGBK_DIV",
11443
11542
  "VERTLINE","HORLINE","TIPICON",
11444
11543
  "BUY","SELL","SELLSHORT","BUYSHORT",
11544
+ "DRAWLASTBARICON","DRAWLASTBARNUMBER", "DRAWLASTBARTEXT",
11445
11545
  ]);
11446
11546
  if (setFunctionName.has(name)) return true;
11447
11547
 
@@ -12381,9 +12481,7 @@ function JSSymbolData(ast,option,jsExecute)
12381
12481
  return kData.GetClose();
12382
12482
  case 'VOL':
12383
12483
  case 'V':
12384
- if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol))
12385
- return kData.GetVol(100); //A股的 把股转成手
12386
- return kData.GetVol();
12484
+ return kData.GetVol(MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol));
12387
12485
  case 'OPEN':
12388
12486
  case 'O':
12389
12487
  return kData.GetOpen();
@@ -13012,9 +13110,7 @@ function JSSymbolData(ast,option,jsExecute)
13012
13110
  return this.Data.GetClose();
13013
13111
  case 'VOL':
13014
13112
  case 'V':
13015
- if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol) && this.DataType==HQ_DATA_TYPE.KLINE_ID) //!! A股K线量单位时股,分时图单位还是手
13016
- return this.Data.GetVol(100); //A股的 把股转成手
13017
- return this.Data.GetVol();
13113
+ return this.Data.GetVol(MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol));
13018
13114
  case 'OPEN':
13019
13115
  case 'O':
13020
13116
  return this.Data.GetOpen();
@@ -13260,9 +13356,7 @@ function JSSymbolData(ast,option,jsExecute)
13260
13356
  return result.GetAmount();
13261
13357
  case 'V':
13262
13358
  case "VOL":
13263
- if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol))
13264
- return result.GetVol(100);
13265
- return result.GetVol();
13359
+ return result.GetVol(MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol));
13266
13360
  case "VOLINSTK":
13267
13361
  return result.GetPosition();
13268
13362
  default:
@@ -16724,6 +16818,7 @@ function JSExecute(ast,option)
16724
16818
  ["OFFERCANCELVOL", null], //累计总有效撤卖量,专业版等(资金流向功能)沪深京品种行情专用 累计总有效委卖量-累计总有效撤卖量=总卖+总成交量
16725
16819
  ["AVGOFFERPX", null], //专业版等(资金流向功能)沪深京品种行情专用:最新委卖均价
16726
16820
  //["", null],
16821
+
16727
16822
  ]);
16728
16823
 
16729
16824
  this.SymbolData=new JSSymbolData(this.AST,option,this);
@@ -18180,6 +18275,20 @@ function JSExecute(ast,option)
18180
18275
  node.Draw=this.Draw.HORLINE(args[0],args[1],args[2],args[3]);
18181
18276
  node.Out=node.Draw.DrawData.Data;
18182
18277
  break;
18278
+
18279
+ case "DRAWLASTBARICON":
18280
+ node.Draw=this.Draw.DRAWLASTBARICON(args[0],args[1]);
18281
+ node.Out=[];
18282
+ break;
18283
+ case "DRAWLASTBARNUMBER":
18284
+ node.Draw=this.Draw.DRAWLASTBARNUMBER(args[0],args[1],args[2],args[3]);
18285
+ node.Out=[];
18286
+ break;
18287
+ case "DRAWLASTBARTEXT":
18288
+ node.Draw=this.Draw.DRAWLASTBARTEXT(args[0],args[1]);
18289
+ node.Out=[];
18290
+ break;
18291
+
18183
18292
  case 'CODELIKE':
18184
18293
  node.Out=this.SymbolData.CODELIKE(args[0]);
18185
18294
  break;
@@ -18592,6 +18701,22 @@ function JSExplainer(ast,option)
18592
18701
  ["OFFERCANCELVOL", "累计总有效撤卖量"],
18593
18702
  ["AVGOFFERPX", "最新委卖均价"],
18594
18703
 
18704
+ ['COLORBLACK','黑色'],
18705
+ ['COLORBLUE','蓝色'],
18706
+ ['COLORGREEN','绿色'],
18707
+ ['COLORCYAN','青色'],
18708
+ ['COLORRED','红色'],
18709
+ ['COLORMAGENTA','洋红色'],
18710
+ ['COLORBROWN','棕色'],
18711
+ ['COLORLIGRAY','淡灰色'],
18712
+ ['COLORGRAY','深灰色'],
18713
+ ['COLORLIBLUE','淡蓝色'],
18714
+ ['COLORLIGREEN','淡绿色'],
18715
+ ['COLORLICYAN','淡青色'],
18716
+ ['COLORLIRED','淡红色'],
18717
+ ['COLORLIMAGENTA','淡洋红色'],
18718
+ ['COLORWHITE','白色'],
18719
+ ['COLORYELLOW','黄色']
18595
18720
  ]);
18596
18721
 
18597
18722
  if (option)
@@ -19293,6 +19418,12 @@ function JSExplainer(ast,option)
19293
19418
  case "BUYSHORT":
19294
19419
  return "买入平仓";
19295
19420
 
19421
+ case "DRAWLASTBARNUMBER":
19422
+ return "在最后一根k线输出数值";
19423
+ case "DRAWLASTBARTEXT":
19424
+ return "在最后一根k线显示文字";
19425
+ case "DRAWLASTBARICON":
19426
+ return "在最后一根k线绘制图标";
19296
19427
  case "YMOVE":
19297
19428
  return;
19298
19429
  case "BACKGROUND":
@@ -21464,6 +21595,49 @@ function ScriptIndex(name,script,args,option)
21464
21595
  hqChart.ChartPaint.push(chart);
21465
21596
  }
21466
21597
 
21598
+ this.CreateDrawLastBarText=function(hqChart,windowIndex,varItem,id)
21599
+ {
21600
+ var chart=new ChartDrawLastBarText();
21601
+ chart.Canvas=hqChart.Canvas;
21602
+ chart.Name=varItem.Name;
21603
+ chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
21604
+ chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
21605
+
21606
+ if (hqChart.ChartPaint[0].IsMinuteFrame())
21607
+ chart.Data=hqChart.SourceData;
21608
+ else
21609
+ chart.Data=hqChart.ChartPaint[0].Data;//绑定K线
21610
+
21611
+ var lastItem=varItem.Draw.DrawData;
21612
+ if (lastItem)
21613
+ {
21614
+ if (lastItem.Color) lastItem.Color=this.GetColor(lastItem.Color);
21615
+ else lastItem.Color=this.GetDefaultColor(id);
21616
+ if (varItem.Color) lastItem.Color=this.GetColor(varItem.Color);
21617
+
21618
+ if (varItem.DrawVAlign>=0)
21619
+ {
21620
+ if (varItem.DrawVAlign==0) lastItem.TextBaseline='top';
21621
+ else if (varItem.DrawVAlign==1) lastItem.TextBaseline='middle';
21622
+ else if (varItem.DrawVAlign==2) lastItem.TextBaseline='bottom';
21623
+ }
21624
+
21625
+ if (varItem.DrawAlign>=0)
21626
+ {
21627
+ if (varItem.DrawAlign==0) lastItem.TextAlign="left";
21628
+ else if (varItem.DrawAlign==1) lastItem.TextAlign="center";
21629
+ else if (varItem.DrawAlign==2) lastItem.TextAlign='right';
21630
+ }
21631
+
21632
+ if (IFrameSplitOperator.IsNumber(varItem.YOffset)) lastItem.YOffset=varItem.YOffset;
21633
+ if (IFrameSplitOperator.IsNumber(varItem.XOffset)) lastItem.XOffset=varItem.XOffset;
21634
+ if (varItem.DrawFontSize>0) lastItem.FontSize=varItem.DrawFontSize;
21635
+ }
21636
+
21637
+ chart.LastBarItem=lastItem;
21638
+ hqChart.ChartPaint.push(chart);
21639
+ }
21640
+
21467
21641
  //创建通道
21468
21642
  this.CreateChannel=function(hqChart,windowIndex,varItem,id)
21469
21643
  {
@@ -22060,6 +22234,12 @@ function ScriptIndex(name,script,args,option)
22060
22234
  this.CreateTradeIcon(hqChart,windowIndex,item,i);
22061
22235
  break;
22062
22236
 
22237
+ case "DRAWLASTBARICON":
22238
+ case "DRAWLASTBARNUMBER":
22239
+ case "DRAWLASTBARTEXT":
22240
+ this.CreateDrawLastBarText(hqChart,windowIndex,item,i);
22241
+ break;
22242
+
22063
22243
  case SCRIPT_CHART_NAME.OVERLAY_BARS:
22064
22244
  this.CreateStackedBar(hqChart,windowIndex,item,i);
22065
22245
  break;