hqchart 1.1.15343 → 1.1.15347

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.15343",
3
+ "version": "1.1.15347",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -1212,6 +1212,7 @@ var Syntax = {
1212
1212
  function Node(ErrorHandler)
1213
1213
  {
1214
1214
  this.IsNeedIndexData=false; //是否需要大盘数据
1215
+ this.IsNeedIndustryData=false; //行业数据下载
1215
1216
  this.IsNeedLatestIndexData=false; //是否需要下载最新大盘数据
1216
1217
  this.IsNeedSymbolData=false; //是否需要下载股票数据
1217
1218
  this.IsNeedMarginData=new Set();
@@ -1239,6 +1240,7 @@ function Node(ErrorHandler)
1239
1240
  if (this.IsNeedSymbolData) jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_DATA});
1240
1241
  if (this.IsNeedIndexData) jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_DATA});
1241
1242
  if (this.IsNeedLatestIndexData) jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_LATEST_INDEX_DATA});
1243
+ if (this.IsNeedIndustryData) jobs.push({ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDUSTRY_DATA});
1242
1244
 
1243
1245
  //最新的个股行情数据
1244
1246
  for(var i=0;i<this.Dynainfo.length;++i)
@@ -1325,6 +1327,13 @@ function Node(ErrorHandler)
1325
1327
  return;
1326
1328
  }
1327
1329
 
1330
+ let setIndustryName=new Set(['HY_INDEXA','HY_INDEXC','HY_INDEXH','HY_INDEXL',"HY_INDEXO","HY_INDEXV",'HY_INDEXADV','HY_INDEXDEC']);
1331
+ if (setIndustryName.has(varName))
1332
+ {
1333
+ this.IsNeedIndustryData=true;
1334
+ return;
1335
+ }
1336
+
1328
1337
  let setSymbolDataName=new Set(['CLOSE','C','VOL','V','OPEN','O','HIGH','H','LOW','L','AMOUNT','AMO','VOLINSTK']);
1329
1338
  if (setSymbolDataName.has(varName))
1330
1339
  {
@@ -12133,6 +12142,7 @@ function JSSymbolData(ast,option,jsExecute)
12133
12142
 
12134
12143
  this.LatestData=new Map(); //最新行情 key=id value=数据
12135
12144
  this.IndexData; //大盘指数
12145
+ this.IndustryData; //行业数据
12136
12146
  this.LatestIndexData; //最新大盘数据
12137
12147
  this.MarginData=new Map(); //融资融券
12138
12148
  this.HKToSHSZData=new Map(); //北上资金
@@ -12525,168 +12535,130 @@ function JSSymbolData(ast,option,jsExecute)
12525
12535
  this.GetIndexData=function()
12526
12536
  {
12527
12537
  if (this.IndexData) return this.Execute.RunNextJob();
12538
+ if (!this.NetworkFilter) return this.Execute.RunNextJob();
12528
12539
 
12529
- var self=this;
12530
- if (ChartData.IsDayPeriod(this.Period,true)) //请求日线数据 9=季线
12540
+ var dateRange=this.Data.GetDateRange();
12541
+ var period=this.Period;
12542
+ var obj=
12531
12543
  {
12532
- if (this.NetworkFilter)
12533
- {
12534
- var dateRange=this.Data.GetDateRange();
12535
- var obj=
12536
- {
12537
- Name:'JSSymbolData::GetIndexData', //类名::
12538
- Explain:'大盘数据',
12539
- Period:self.Period,
12540
- Request:
12541
- {
12542
- Url:self.KLineApiUrl, Type:'POST' ,
12543
- Data:
12544
- {
12545
- field:[ "name", "symbol","yclose","open","price","high","low","vol",'up','down','stop','unchanged'],
12546
- indexSymbol:"000001.sh", symbol: this.Symbol, period:this.Period,
12547
- dateRange:dateRange
12548
- }
12549
- },
12550
- Self:this,
12551
- PreventDefault:false
12552
- };
12553
- this.NetworkFilter(obj, function(data)
12544
+ Name:'JSSymbolData::GetIndexData', //类名::
12545
+ Explain:'大盘数据',
12546
+ Period:period,
12547
+ Request:
12548
+ {
12549
+ Type:'POST' ,
12550
+ Data:
12554
12551
  {
12555
- self.RecvIndexHistroyData(data);
12556
- self.Execute.RunNextJob();
12557
- });
12552
+ field:[ "name", "symbol","yclose","open","price","high","low","vol",'up','down','stop','unchanged'],
12553
+ indexSymbol:"000001.sh", symbol: this.Symbol, period:period,
12554
+ dateRange:dateRange
12555
+ }
12556
+ },
12557
+ Self:this,
12558
+ PreventDefault:false
12559
+ };
12558
12560
 
12559
- if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
12560
- }
12561
+ this.NetworkFilter(obj, (data)=>
12562
+ {
12563
+ JSConsole.Complier.Log('[JSSymbolData::GetIndexData] recv data' , data);
12561
12564
 
12562
- JSNetwork.HttpRequest({
12563
- url: self.KLineApiUrl,
12564
- data:
12565
- {
12566
- "field": [ "name", "symbol","yclose","open","price","high","low","vol",'up','down','stop','unchanged'],
12567
- "symbol": '000001.sh',
12568
- "start": -1,
12569
- "count": self.MaxRequestDataCount+500 //多请求2年的数据 确保股票剔除停牌日期以后可以对上
12570
- },
12571
- type:"post",
12572
- dataType: "json",
12573
- async:true,
12574
- success: function (recvData)
12575
- {
12576
- self.RecvIndexHistroyData(recvData);
12577
- self.Execute.RunNextJob();
12578
- },
12579
- error: function(request)
12565
+ this.IndexData=this.APIKDataToChartData(data, period);
12566
+ this.Execute.RunNextJob();
12567
+ });
12568
+
12569
+ }
12570
+
12571
+
12572
+ this.APIKDataToChartData=function(data, period)
12573
+ {
12574
+ var result=null;
12575
+ if (ChartData.IsDayPeriod(period,true)) //请求日线数据
12576
+ {
12577
+ var hisData=this.JsonDataToHistoryData(data);
12578
+ result=new ChartData();
12579
+ result.DataType=0; /*日线数据 */
12580
+ result.Data=hisData;
12581
+
12582
+ if (this.IsApiPeriod==true)
12583
+ {
12584
+ result.Period=period;
12585
+ result.Data=this.Data.FixKData(hisData,period);
12586
+ }
12587
+ else
12588
+ {
12589
+ var aryOverlayData=this.SourceData.GetOverlayData(result.Data); //和主图数据拟合以后的数据
12590
+ result.Data=aryOverlayData;
12591
+
12592
+ if (ChartData.IsDayPeriod(period,false)) //周期数据
12580
12593
  {
12581
- self.RecvError(request);
12594
+ var periodData=result.GetPeriodData(period);
12595
+ result.Data=periodData;
12582
12596
  }
12583
- });
12597
+ }
12584
12598
  }
12585
- else if (ChartData.IsMinutePeriod(this.Period, true)) //请求分钟数据
12599
+ else if (ChartData.IsMinutePeriod(period, true))
12586
12600
  {
12587
- if (this.NetworkFilter)
12588
- {
12589
- var dateRange=this.Data.GetDateRange();
12590
- var obj=
12591
- {
12592
- Name:'JSSymbolData::GetIndexData', //类名::
12593
- Explain:'大盘数据',
12594
- Period:self.Period,
12595
- Request:{ Url:self.MinuteKLineApiUrl, Type:'POST' ,
12596
- Data:
12597
- {
12598
- field:["name","symbol","yclose","open","price","high","low","vol"],
12599
- indexSymbol:"000001.sh", symbol: this.Symbol, period:this.Period,
12600
- dateRange:dateRange
12601
- }
12602
- },
12603
- Self:this,
12604
- PreventDefault:false
12605
- };
12606
- this.NetworkFilter(obj, function(data)
12607
- {
12608
- self.RecvIndexMinuteHistroyData(data);
12609
- self.Execute.RunNextJob();
12610
- });
12601
+ var hisData=this.JsonDataToMinuteHistoryData(data);
12602
+ result=new ChartData();
12603
+ result.DataType=1; /*分钟线数据 */
12604
+ result.Data=hisData;
12611
12605
 
12612
- if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
12606
+ if (this.IsApiPeriod==true)
12607
+ {
12608
+ result.Period=this.Period;
12609
+ result.Data=this.Data.FixKData(hisData,period);
12613
12610
  }
12611
+ else
12612
+ {
12613
+ var aryOverlayData=this.SourceData.GetOverlayMinuteData(result.Data); //和主图数据拟合以后的数据
12614
+ result.Data=aryOverlayData;
12614
12615
 
12615
- JSNetwork.HttpRequest({
12616
- url: self.MinuteKLineApiUrl,
12617
- data:
12616
+ if (ChartData.IsMinutePeriod(period,false)) //周期数据
12618
12617
  {
12619
- "field": ["name","symbol","yclose","open","price","high","low","vol"],
12620
- "symbol": '000001.sh',
12621
- "start": -1,
12622
- "count": self.MaxRequestMinuteDayCount+5
12623
- },
12624
- type:"post",
12625
- dataType: "json",
12626
- async:true,
12627
- success: function (data)
12628
- {
12629
- self.RecvIndexMinuteHistroyData(data);
12630
- self.Execute.RunNextJob();
12631
- },
12632
- error: function(request)
12633
- {
12634
- self.RecvError(request);
12618
+ var periodData=result.GetPeriodData(period);
12619
+ result.Data=periodData;
12635
12620
  }
12636
- });
12621
+ }
12637
12622
  }
12638
12623
 
12624
+ return result;
12639
12625
  }
12640
12626
 
12641
- this.RecvIndexHistroyData=function(data)
12627
+ //获取行业数据
12628
+ this.GetIndustryData=function()
12642
12629
  {
12643
- JSConsole.Complier.Log('[JSSymbolData::RecvIndexHistroyData] recv data' , data);
12644
-
12645
- let hisData=this.JsonDataToHistoryData(data);
12646
- this.IndexData=new ChartData();
12647
- this.IndexData.DataType=0; /*日线数据 */
12648
- this.IndexData.Data=hisData;
12630
+ if (this.IndustryData) return this.Execute.RunNextJob();
12631
+ if (!this.NetworkFilter) return this.Execute.RunNextJob();
12649
12632
 
12650
- if (this.IsApiPeriod==true)
12651
- {
12652
- this.IndexData.Period=this.Period;
12653
- this.IndexData.Data=this.Data.FixKData(hisData,this.Period);
12654
- }
12655
- else
12633
+ var dateRange=this.Data.GetDateRange();
12634
+ var period=this.Period;
12635
+ var obj=
12656
12636
  {
12657
- var aryOverlayData=this.SourceData.GetOverlayData(this.IndexData.Data); //和主图数据拟合以后的数据
12658
- this.IndexData.Data=aryOverlayData;
12659
-
12660
- if (ChartData.IsDayPeriod(this.Period,false)) //周期数据
12661
- {
12662
- let periodData=this.IndexData.GetPeriodData(this.Period);
12663
- this.IndexData.Data=periodData;
12664
- }
12665
- }
12666
- }
12667
-
12668
- this.RecvIndexMinuteHistroyData=function(data)
12669
- {
12670
- JSConsole.Complier.Log('[JSSymbolData::RecvIndexMinuteHistroyData] recv data' , data);
12637
+ Name:'JSSymbolData::GetIndustryData', //类名::
12638
+ Explain:'行业数据',
12639
+ Period:period,
12640
+ Request:
12641
+ {
12642
+ Url:self.KLineApiUrl, Type:'POST' ,
12643
+ Data:
12644
+ {
12645
+ field:[ "name", "symbol","yclose","open","price","high","low","vol",'up','down','stop','unchanged'],
12646
+ symbol: this.Symbol, period:period,
12647
+ dateRange:dateRange
12648
+ }
12649
+ },
12650
+ Self:this,
12651
+ PreventDefault:false
12652
+ };
12671
12653
 
12672
- let hisData=this.JsonDataToMinuteHistoryData(data);
12673
- this.IndexData=new ChartData();
12674
- this.IndexData.DataType=1; /*分钟线数据 */
12675
- this.IndexData.Data=hisData;
12654
+
12655
+ this.NetworkFilter(obj, (data)=>
12656
+ {
12657
+ JSConsole.Complier.Log('[JSSymbolData::GetIndustryData] recv data' , data);
12676
12658
 
12677
- if (this.IsApiPeriod==true)
12678
- {
12679
- this.IndexData.Period=this.Period;
12680
- this.IndexData.Data=this.Data.FixKData(hisData,this.Period);
12681
- }
12682
- else
12683
- {
12684
- if (ChartData.IsMinutePeriod(this.Period,false)) //周期数据
12685
- {
12686
- let periodData=this.IndexData.GetPeriodData(this.Period);
12687
- this.IndexData.Data=periodData;
12688
- }
12689
- }
12659
+ this.IndustryData=this.APIKDataToChartData(data, period);
12660
+ this.Execute.RunNextJob();
12661
+ });
12690
12662
  }
12691
12663
 
12692
12664
  this.GetOtherSymbolParam=function(name)
@@ -13030,6 +13002,32 @@ function JSSymbolData(ast,option,jsExecute)
13030
13002
  }
13031
13003
  }
13032
13004
 
13005
+ //获取大盘指数缓存数据
13006
+ this.GetIndustryCacheData=function(dataName)
13007
+ {
13008
+ if (!this.IndustryData) return [];
13009
+
13010
+ switch(dataName)
13011
+ {
13012
+ case 'HY_INDEXA':
13013
+ return this.IndustryData.GetAmount();
13014
+ case 'HY_INDEXC':
13015
+ return this.IndustryData.GetClose();
13016
+ case 'HY_INDEXH':
13017
+ return this.IndustryData.GetHigh();
13018
+ case 'HY_INDEXL':
13019
+ return this.IndustryData.GetLow();
13020
+ case 'HY_INDEXO':
13021
+ return this.IndustryData.GetOpen();
13022
+ case 'HY_INDEXV':
13023
+ return this.IndustryData.GetVol();
13024
+ case 'HY_INDEXADV':
13025
+ return this.IndustryData.GetUp();
13026
+ case 'HY_INDEXDEC':
13027
+ return this.IndustryData.GetDown();
13028
+ }
13029
+ }
13030
+
13033
13031
  //指数转成对应的板块
13034
13032
  this.GetBlockSymbol=function(symbol)
13035
13033
  {
@@ -16972,6 +16970,7 @@ var JS_EXECUTE_JOB_ID=
16972
16970
  JOB_DOWNLOAD_LATEST_INDEX_DATA:8, //下载最新大盘数据
16973
16971
  JOB_DOWNLOAD_OTHER_SYMBOL_DATA:9, //下载其他股票的K线数据
16974
16972
  JOB_DOWNLOAD_SYMBOL_PERIOD_DATA:10, //下载周期数据
16973
+ JOB_DOWNLOAD_INDUSTRY_DATA:11, //行业数据
16975
16974
 
16976
16975
  JOB_DOWNLOAD_FINVALUE:301, //引用专业财务数据 FINVALUE(ID),ID为数据编号
16977
16976
  JOB_DOWNLOAD_FINONE:302, //引用指定年和月日的某类型的财务数据 FINONE(ID,Y,MMDD),ID为数据编号,Y和MMDD表示年和月日.
@@ -17258,6 +17257,10 @@ function JSExecute(ast,option)
17258
17257
  ['INDEXA',null],['INDEXC',null],['INDEXH',null],['INDEXL',null],['INDEXO',null],['INDEXV',null],
17259
17258
  ['INDEXADV',null],['INDEXDEC',null],
17260
17259
 
17260
+ //行业数据
17261
+ ["HY_INDEXA",null],["HY_INDEXC",null],["HY_INDEXH",null],["HY_INDEXL",null],["HY_INDEXO",null],["HY_INDEXV",null],
17262
+ ["HY_INDEXADV",null],["HY_INDEXDEC",null],
17263
+
17261
17264
  ["ADVANCE",null],['DECLINE', null],
17262
17265
 
17263
17266
  ['FROMOPEN',null], //已开盘有多长分钟
@@ -17382,6 +17385,8 @@ function JSExecute(ast,option)
17382
17385
  return this.SymbolData.GetSymbolPeriodData(jobItem);
17383
17386
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_DATA:
17384
17387
  return this.SymbolData.GetIndexData();
17388
+ case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDUSTRY_DATA:
17389
+ return this.SymbolData.GetIndustryData();
17385
17390
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_LATEST_INDEX_DATA:
17386
17391
  return this.SymbolData.GetLatestIndexData();
17387
17392
  case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_INCREASE_DATA:
@@ -17506,6 +17511,16 @@ function JSExecute(ast,option)
17506
17511
  case 'INDEXADV':
17507
17512
  case 'INDEXDEC':
17508
17513
  return this.SymbolData.GetIndexCacheData(name);
17514
+ //行业数据
17515
+ case 'HY_INDEXA':
17516
+ case 'HY_INDEXC':
17517
+ case 'HY_INDEXH':
17518
+ case 'HY_INDEXL':
17519
+ case 'HY_INDEXO':
17520
+ case 'HY_INDEXV':
17521
+ case 'HY_INDEXADV':
17522
+ case 'HY_INDEXDEC':
17523
+ return this.SymbolData.GetIndustryCacheData(name);
17509
17524
  case 'CURRBARSCOUNT':
17510
17525
  return this.SymbolData.GetCurrBarsCount();
17511
17526
  case "BARPOS":