hqchart 1.1.15343 → 1.1.15349

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.
@@ -38602,6 +38602,7 @@ function ChartKLineTable()
38602
38602
  this.MapCache=null; //key=date/date-time value={ Date:, Time:, Data:[ ] }
38603
38603
  this.GetKValue=ChartData.GetKValue;
38604
38604
  this.AryCellRect=[]; //保存单元格信息
38605
+ this.AryNameRect=[]; //右侧行的名字
38605
38606
 
38606
38607
 
38607
38608
  this.SetOption=function(option)
@@ -38704,6 +38705,7 @@ function ChartKLineTable()
38704
38705
  this.Draw=function()
38705
38706
  {
38706
38707
  this.AryCellRect=[];
38708
+ this.AryNameRect=[];
38707
38709
  if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
38708
38710
  if (this.IsShowIndexTitleOnly()) return;
38709
38711
  if (this.IsHideScriptIndex()) return;
@@ -38910,6 +38912,8 @@ function ChartKLineTable()
38910
38912
  this.Canvas.textBaseline='bottom';
38911
38913
  this.Canvas.textAlign='left';
38912
38914
  this.Canvas.fillText(item.Name,rtBG.Left+2,yText);
38915
+
38916
+ this.AryNameRect.push({ Rect:rtBG, Item:item, Index:i });
38913
38917
  }
38914
38918
 
38915
38919
  y+=this.RowHeight;
@@ -93464,6 +93468,19 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
93464
93468
  this.ChartCorssCursor.OnDBClick(data);
93465
93469
  bDraw=data.Draw
93466
93470
  }
93471
+
93472
+ if (this.TryDBClickChartTooltipData) //外部预留接口
93473
+ {
93474
+ var data={ e:e, X:x, Y:y, Draw:false, PreventDefault:false };
93475
+ this.TryDBClickChartTooltipData(data, this);
93476
+ if (data.Draw) bDraw=true;
93477
+
93478
+ if (data.PreventDefault)
93479
+ {
93480
+ if (bDraw) this.Draw();
93481
+ return;
93482
+ }
93483
+ }
93467
93484
 
93468
93485
  if (this.EnableYDrag && (this.EnableYDrag.Left || this.EnableYDrag.Right) && this.Frame && this.Frame.PtInFrameY)
93469
93486
  {
@@ -112015,6 +112032,7 @@ var Syntax = {
112015
112032
  function Node(ErrorHandler)
112016
112033
  {
112017
112034
  this.IsNeedIndexData=false; //是否需要大盘数据
112035
+ this.IsNeedIndustryData=false; //行业数据下载
112018
112036
  this.IsNeedLatestIndexData=false; //是否需要下载最新大盘数据
112019
112037
  this.IsNeedSymbolData=false; //是否需要下载股票数据
112020
112038
  this.IsNeedMarginData=new Set();
@@ -112042,6 +112060,7 @@ function Node(ErrorHandler)
112042
112060
  if (this.IsNeedSymbolData) jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_DATA});
112043
112061
  if (this.IsNeedIndexData) jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_DATA});
112044
112062
  if (this.IsNeedLatestIndexData) jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_LATEST_INDEX_DATA});
112063
+ if (this.IsNeedIndustryData) jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDUSTRY_DATA});
112045
112064
 
112046
112065
  //最新的个股行情数据
112047
112066
  for(var i=0;i<this.Dynainfo.length;++i)
@@ -112128,6 +112147,13 @@ function Node(ErrorHandler)
112128
112147
  return;
112129
112148
  }
112130
112149
 
112150
+ let setIndustryName=new Set(['HY_INDEXA','HY_INDEXC','HY_INDEXH','HY_INDEXL',"HY_INDEXO","HY_INDEXV",'HY_INDEXADV','HY_INDEXDEC']);
112151
+ if (setIndustryName.has(varName))
112152
+ {
112153
+ this.IsNeedIndustryData=true;
112154
+ return;
112155
+ }
112156
+
112131
112157
  let setSymbolDataName=new Set(['CLOSE','C','VOL','V','OPEN','O','HIGH','H','LOW','L','AMOUNT','AMO','VOLINSTK']);
112132
112158
  if (setSymbolDataName.has(varName))
112133
112159
  {
@@ -122936,6 +122962,7 @@ function JSSymbolData(ast,option,jsExecute)
122936
122962
 
122937
122963
  this.LatestData=new Map(); //最新行情 key=id value=数据
122938
122964
  this.IndexData; //大盘指数
122965
+ this.IndustryData; //行业数据
122939
122966
  this.LatestIndexData; //最新大盘数据
122940
122967
  this.MarginData=new Map(); //融资融券
122941
122968
  this.HKToSHSZData=new Map(); //北上资金
@@ -123328,168 +123355,130 @@ function JSSymbolData(ast,option,jsExecute)
123328
123355
  this.GetIndexData=function()
123329
123356
  {
123330
123357
  if (this.IndexData) return this.Execute.RunNextJob();
123358
+ if (!this.NetworkFilter) return this.Execute.RunNextJob();
123331
123359
 
123332
- var self=this;
123333
- if (ChartData.IsDayPeriod(this.Period,true)) //请求日线数据 9=季线
123360
+ var dateRange=this.Data.GetDateRange();
123361
+ var period=this.Period;
123362
+ var obj=
123334
123363
  {
123335
- if (this.NetworkFilter)
123336
- {
123337
- var dateRange=this.Data.GetDateRange();
123338
- var obj=
123339
- {
123340
- Name:'JSSymbolData::GetIndexData', //类名::
123341
- Explain:'大盘数据',
123342
- Period:self.Period,
123343
- Request:
123344
- {
123345
- Url:self.KLineApiUrl, Type:'POST' ,
123346
- Data:
123347
- {
123348
- field:[ "name", "symbol","yclose","open","price","high","low","vol",'up','down','stop','unchanged'],
123349
- indexSymbol:"000001.sh", symbol: this.Symbol, period:this.Period,
123350
- dateRange:dateRange
123351
- }
123352
- },
123353
- Self:this,
123354
- PreventDefault:false
123355
- };
123356
- this.NetworkFilter(obj, function(data)
123364
+ Name:'JSSymbolData::GetIndexData', //类名::
123365
+ Explain:'大盘数据',
123366
+ Period:period,
123367
+ Request:
123368
+ {
123369
+ Type:'POST' ,
123370
+ Data:
123357
123371
  {
123358
- self.RecvIndexHistroyData(data);
123359
- self.Execute.RunNextJob();
123360
- });
123372
+ field:[ "name", "symbol","yclose","open","price","high","low","vol",'up','down','stop','unchanged'],
123373
+ indexSymbol:"000001.sh", symbol: this.Symbol, period:period,
123374
+ dateRange:dateRange
123375
+ }
123376
+ },
123377
+ Self:this,
123378
+ PreventDefault:false
123379
+ };
123361
123380
 
123362
- if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
123363
- }
123381
+ this.NetworkFilter(obj, (data)=>
123382
+ {
123383
+ JSConsole.Complier.Log('[JSSymbolData::GetIndexData] recv data' , data);
123364
123384
 
123365
- JSNetwork.HttpRequest({
123366
- url: self.KLineApiUrl,
123367
- data:
123368
- {
123369
- "field": [ "name", "symbol","yclose","open","price","high","low","vol",'up','down','stop','unchanged'],
123370
- "symbol": '000001.sh',
123371
- "start": -1,
123372
- "count": self.MaxRequestDataCount+500 //多请求2年的数据 确保股票剔除停牌日期以后可以对上
123373
- },
123374
- type:"post",
123375
- dataType: "json",
123376
- async:true,
123377
- success: function (recvData)
123378
- {
123379
- self.RecvIndexHistroyData(recvData);
123380
- self.Execute.RunNextJob();
123381
- },
123382
- error: function(request)
123385
+ this.IndexData=this.APIKDataToChartData(data, period);
123386
+ this.Execute.RunNextJob();
123387
+ });
123388
+
123389
+ }
123390
+
123391
+
123392
+ this.APIKDataToChartData=function(data, period)
123393
+ {
123394
+ var result=null;
123395
+ if (ChartData.IsDayPeriod(period,true)) //请求日线数据
123396
+ {
123397
+ var hisData=this.JsonDataToHistoryData(data);
123398
+ result=new ChartData();
123399
+ result.DataType=0; /*日线数据 */
123400
+ result.Data=hisData;
123401
+
123402
+ if (this.IsApiPeriod==true)
123403
+ {
123404
+ result.Period=period;
123405
+ result.Data=this.Data.FixKData(hisData,period);
123406
+ }
123407
+ else
123408
+ {
123409
+ var aryOverlayData=this.SourceData.GetOverlayData(result.Data); //和主图数据拟合以后的数据
123410
+ result.Data=aryOverlayData;
123411
+
123412
+ if (ChartData.IsDayPeriod(period,false)) //周期数据
123383
123413
  {
123384
- self.RecvError(request);
123414
+ var periodData=result.GetPeriodData(period);
123415
+ result.Data=periodData;
123385
123416
  }
123386
- });
123417
+ }
123387
123418
  }
123388
- else if (ChartData.IsMinutePeriod(this.Period, true)) //请求分钟数据
123419
+ else if (ChartData.IsMinutePeriod(period, true))
123389
123420
  {
123390
- if (this.NetworkFilter)
123391
- {
123392
- var dateRange=this.Data.GetDateRange();
123393
- var obj=
123394
- {
123395
- Name:'JSSymbolData::GetIndexData', //类名::
123396
- Explain:'大盘数据',
123397
- Period:self.Period,
123398
- Request:{ Url:self.MinuteKLineApiUrl, Type:'POST' ,
123399
- Data:
123400
- {
123401
- field:["name","symbol","yclose","open","price","high","low","vol"],
123402
- indexSymbol:"000001.sh", symbol: this.Symbol, period:this.Period,
123403
- dateRange:dateRange
123404
- }
123405
- },
123406
- Self:this,
123407
- PreventDefault:false
123408
- };
123409
- this.NetworkFilter(obj, function(data)
123410
- {
123411
- self.RecvIndexMinuteHistroyData(data);
123412
- self.Execute.RunNextJob();
123413
- });
123421
+ var hisData=this.JsonDataToMinuteHistoryData(data);
123422
+ result=new ChartData();
123423
+ result.DataType=1; /*分钟线数据 */
123424
+ result.Data=hisData;
123414
123425
 
123415
- if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
123426
+ if (this.IsApiPeriod==true)
123427
+ {
123428
+ result.Period=this.Period;
123429
+ result.Data=this.Data.FixKData(hisData,period);
123416
123430
  }
123431
+ else
123432
+ {
123433
+ var aryOverlayData=this.SourceData.GetOverlayMinuteData(result.Data); //和主图数据拟合以后的数据
123434
+ result.Data=aryOverlayData;
123417
123435
 
123418
- JSNetwork.HttpRequest({
123419
- url: self.MinuteKLineApiUrl,
123420
- data:
123436
+ if (ChartData.IsMinutePeriod(period,false)) //周期数据
123421
123437
  {
123422
- "field": ["name","symbol","yclose","open","price","high","low","vol"],
123423
- "symbol": '000001.sh',
123424
- "start": -1,
123425
- "count": self.MaxRequestMinuteDayCount+5
123426
- },
123427
- type:"post",
123428
- dataType: "json",
123429
- async:true,
123430
- success: function (data)
123431
- {
123432
- self.RecvIndexMinuteHistroyData(data);
123433
- self.Execute.RunNextJob();
123434
- },
123435
- error: function(request)
123436
- {
123437
- self.RecvError(request);
123438
+ var periodData=result.GetPeriodData(period);
123439
+ result.Data=periodData;
123438
123440
  }
123439
- });
123441
+ }
123440
123442
  }
123441
123443
 
123444
+ return result;
123442
123445
  }
123443
123446
 
123444
- this.RecvIndexHistroyData=function(data)
123447
+ //获取行业数据
123448
+ this.GetIndustryData=function()
123445
123449
  {
123446
- JSConsole.Complier.Log('[JSSymbolData::RecvIndexHistroyData] recv data' , data);
123447
-
123448
- let hisData=this.JsonDataToHistoryData(data);
123449
- this.IndexData=new ChartData();
123450
- this.IndexData.DataType=0; /*日线数据 */
123451
- this.IndexData.Data=hisData;
123450
+ if (this.IndustryData) return this.Execute.RunNextJob();
123451
+ if (!this.NetworkFilter) return this.Execute.RunNextJob();
123452
123452
 
123453
- if (this.IsApiPeriod==true)
123454
- {
123455
- this.IndexData.Period=this.Period;
123456
- this.IndexData.Data=this.Data.FixKData(hisData,this.Period);
123457
- }
123458
- else
123453
+ var dateRange=this.Data.GetDateRange();
123454
+ var period=this.Period;
123455
+ var obj=
123459
123456
  {
123460
- var aryOverlayData=this.SourceData.GetOverlayData(this.IndexData.Data); //和主图数据拟合以后的数据
123461
- this.IndexData.Data=aryOverlayData;
123462
-
123463
- if (ChartData.IsDayPeriod(this.Period,false)) //周期数据
123464
- {
123465
- let periodData=this.IndexData.GetPeriodData(this.Period);
123466
- this.IndexData.Data=periodData;
123467
- }
123468
- }
123469
- }
123470
-
123471
- this.RecvIndexMinuteHistroyData=function(data)
123472
- {
123473
- JSConsole.Complier.Log('[JSSymbolData::RecvIndexMinuteHistroyData] recv data' , data);
123457
+ Name:'JSSymbolData::GetIndustryData', //类名::
123458
+ Explain:'行业数据',
123459
+ Period:period,
123460
+ Request:
123461
+ {
123462
+ Url:self.KLineApiUrl, Type:'POST' ,
123463
+ Data:
123464
+ {
123465
+ field:[ "name", "symbol","yclose","open","price","high","low","vol",'up','down','stop','unchanged'],
123466
+ symbol: this.Symbol, period:period,
123467
+ dateRange:dateRange
123468
+ }
123469
+ },
123470
+ Self:this,
123471
+ PreventDefault:false
123472
+ };
123474
123473
 
123475
- let hisData=this.JsonDataToMinuteHistoryData(data);
123476
- this.IndexData=new ChartData();
123477
- this.IndexData.DataType=1; /*分钟线数据 */
123478
- this.IndexData.Data=hisData;
123474
+
123475
+ this.NetworkFilter(obj, (data)=>
123476
+ {
123477
+ JSConsole.Complier.Log('[JSSymbolData::GetIndustryData] recv data' , data);
123479
123478
 
123480
- if (this.IsApiPeriod==true)
123481
- {
123482
- this.IndexData.Period=this.Period;
123483
- this.IndexData.Data=this.Data.FixKData(hisData,this.Period);
123484
- }
123485
- else
123486
- {
123487
- if (ChartData.IsMinutePeriod(this.Period,false)) //周期数据
123488
- {
123489
- let periodData=this.IndexData.GetPeriodData(this.Period);
123490
- this.IndexData.Data=periodData;
123491
- }
123492
- }
123479
+ this.IndustryData=this.APIKDataToChartData(data, period);
123480
+ this.Execute.RunNextJob();
123481
+ });
123493
123482
  }
123494
123483
 
123495
123484
  this.GetOtherSymbolParam=function(name)
@@ -123833,6 +123822,32 @@ function JSSymbolData(ast,option,jsExecute)
123833
123822
  }
123834
123823
  }
123835
123824
 
123825
+ //获取大盘指数缓存数据
123826
+ this.GetIndustryCacheData=function(dataName)
123827
+ {
123828
+ if (!this.IndustryData) return [];
123829
+
123830
+ switch(dataName)
123831
+ {
123832
+ case 'HY_INDEXA':
123833
+ return this.IndustryData.GetAmount();
123834
+ case 'HY_INDEXC':
123835
+ return this.IndustryData.GetClose();
123836
+ case 'HY_INDEXH':
123837
+ return this.IndustryData.GetHigh();
123838
+ case 'HY_INDEXL':
123839
+ return this.IndustryData.GetLow();
123840
+ case 'HY_INDEXO':
123841
+ return this.IndustryData.GetOpen();
123842
+ case 'HY_INDEXV':
123843
+ return this.IndustryData.GetVol();
123844
+ case 'HY_INDEXADV':
123845
+ return this.IndustryData.GetUp();
123846
+ case 'HY_INDEXDEC':
123847
+ return this.IndustryData.GetDown();
123848
+ }
123849
+ }
123850
+
123836
123851
  //指数转成对应的板块
123837
123852
  this.GetBlockSymbol=function(symbol)
123838
123853
  {
@@ -127775,6 +127790,7 @@ var JS_EXECUTE_JOB_ID=
127775
127790
  JOB_DOWNLOAD_LATEST_INDEX_DATA:8, //下载最新大盘数据
127776
127791
  JOB_DOWNLOAD_OTHER_SYMBOL_DATA:9, //下载其他股票的K线数据
127777
127792
  JOB_DOWNLOAD_SYMBOL_PERIOD_DATA:10, //下载周期数据
127793
+ JOB_DOWNLOAD_INDUSTRY_DATA:11, //行业数据
127778
127794
 
127779
127795
  JOB_DOWNLOAD_FINVALUE:301, //引用专业财务数据 FINVALUE(ID),ID为数据编号
127780
127796
  JOB_DOWNLOAD_FINONE:302, //引用指定年和月日的某类型的财务数据 FINONE(ID,Y,MMDD),ID为数据编号,Y和MMDD表示年和月日.
@@ -128061,6 +128077,10 @@ function JSExecute(ast,option)
128061
128077
  ['INDEXA',null],['INDEXC',null],['INDEXH',null],['INDEXL',null],['INDEXO',null],['INDEXV',null],
128062
128078
  ['INDEXADV',null],['INDEXDEC',null],
128063
128079
 
128080
+ //行业数据
128081
+ ["HY_INDEXA",null],["HY_INDEXC",null],["HY_INDEXH",null],["HY_INDEXL",null],["HY_INDEXO",null],["HY_INDEXV",null],
128082
+ ["HY_INDEXADV",null],["HY_INDEXDEC",null],
128083
+
128064
128084
  ["ADVANCE",null],['DECLINE', null],
128065
128085
 
128066
128086
  ['FROMOPEN',null], //已开盘有多长分钟
@@ -128185,6 +128205,8 @@ function JSExecute(ast,option)
128185
128205
  return this.SymbolData.GetSymbolPeriodData(jobItem);
128186
128206
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_DATA:
128187
128207
  return this.SymbolData.GetIndexData();
128208
+ case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDUSTRY_DATA:
128209
+ return this.SymbolData.GetIndustryData();
128188
128210
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_LATEST_INDEX_DATA:
128189
128211
  return this.SymbolData.GetLatestIndexData();
128190
128212
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_INCREASE_DATA:
@@ -128309,6 +128331,16 @@ function JSExecute(ast,option)
128309
128331
  case 'INDEXADV':
128310
128332
  case 'INDEXDEC':
128311
128333
  return this.SymbolData.GetIndexCacheData(name);
128334
+ //行业数据
128335
+ case 'HY_INDEXA':
128336
+ case 'HY_INDEXC':
128337
+ case 'HY_INDEXH':
128338
+ case 'HY_INDEXL':
128339
+ case 'HY_INDEXO':
128340
+ case 'HY_INDEXV':
128341
+ case 'HY_INDEXADV':
128342
+ case 'HY_INDEXDEC':
128343
+ return this.SymbolData.GetIndustryCacheData(name);
128312
128344
  case 'CURRBARSCOUNT':
128313
128345
  return this.SymbolData.GetCurrBarsCount();
128314
128346
  case "BARPOS":
@@ -167413,7 +167445,7 @@ function HQChartScriptWorker()
167413
167445
 
167414
167446
 
167415
167447
 
167416
- var HQCHART_VERSION="1.1.15342";
167448
+ var HQCHART_VERSION="1.1.15348";
167417
167449
 
167418
167450
  function PrintHQChartVersion()
167419
167451
  {