hqchart 1.1.13478 → 1.1.13487

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.
@@ -21,8 +21,11 @@ console.log("[HQData::RequestMinuteDaysData] Symbol="+symbol);var hqchartData={c
21
21
  [915,item.yclose,0,0],[916,item.yclose+0.01,0,0],[917,item.yclose+0.03,0,0],[918,item.yclose+0.02,0,0],[919,item.yclose+0.02,0,0],[920,item.yclose+0.01,0,0],[921,item.yclose,0,0],[922,item.yclose-0.02,0,0],[923,item.yclose-0.03,0,0],[924,item.yclose,0,0],[925,item.yclose,0,0]];var beforeinfo={totalcount:11,ver:1.0};dayItem.before=before;dayItem.beforeinfo=beforeinfo;}hqchartData.data.push(dayItem);}callback(hqchartData);};HQData.RequestHistoryData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol;//请求的股票代码
22
22
  console.log("[HQData::RequestMinuteDaysData] Symbol="+symbol);var hqchartData=KLINE_DAY_DATA;hqchartData.symbol=symbol;hqchartData.name=symbol;callback(hqchartData);};HQData.RequestFlowCapitalData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol;//请求的股票代码
23
23
  console.log("[HQData::RequestFlowCapitalData] Symbol="+symbol);var hqchartData=KLINE_CAPITAL_DATA;callback(hqchartData);};HQData.RequestRealtimeData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol[0];//请求的股票代码
24
- console.log("[HQData::RequestRealtimeData] Symbol="+symbol);var hqchartData=KLINE_1DAY_DATA;hqchartData.stock[0].name=symbol;hqchartData.stock[0].symbol=symbol;callback(hqchartData);};HQData.RequestHistoryMinuteData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol;//请求的股票代码
24
+ if(data.Request.Data.symbol.length>1)//叠加股票
25
+ {var hqchartData={stock:[],code:0};var arySymbol=data.Request.Data.symbol;for(var i=0;i<arySymbol.length;++i){var symbol=arySymbol[i];if(i==0){var stock=KLINE_1DAY_DATA.stock[0];stock.name=symbol;stock.symbol=symbol;hqchartData.stock.push(stock);}else{if(symbol=="399001.sz"){var stock=KLINE_1DAY_OVERLAY_DATA2.stock[0];stock.name=symbol;stock.symbol=symbol;hqchartData.stock.push(stock);}else{var stock=KLINE_1DAY_OVERLAY_DATA.stock[0];stock.name=symbol;stock.symbol=symbol;hqchartData.stock.push(stock);}}}callback(hqchartData);}else{console.log("[HQData::RequestRealtimeData] Symbol="+symbol);var hqchartData=KLINE_1DAY_DATA;hqchartData.stock[0].name=symbol;hqchartData.stock[0].symbol=symbol;callback(hqchartData);}};HQData.RequestHistoryMinuteData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol;//请求的股票代码
25
26
  console.log("[HQData::RequestHistoryMinuteData] Symbol="+symbol);var hqchartData=KLINE_MINUTE_DATA;hqchartData.name=symbol;hqchartData.symbol=symbol;callback(hqchartData);};HQData.RequestMinuteRealtimeData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol[0];//请求的股票代码
26
- console.log("[HQData::RequestMinuteRealtimeData] Symbol="+symbol);var hqchartData=JSON.parse((0,_stringify2.default)(KLINE_1MINUTE_DATA));var kItem=hqchartData.data[0];var price=kItem[5];var value=Math.ceil(Math.random()*10)/1000*price;var bUp=Math.ceil(Math.random()*10)>=5;if(bUp)price+=value;else price-=value;kItem[5]=price;kItem[3]=Math.max(price,kItem[3]);kItem[4]=Math.min(price,kItem[4]);hqchartData.name=symbol;hqchartData.symbol=symbol;callback(hqchartData);};HQData.RequestIndexVariantData=function(data,callback){var varName=data.Request.Data.VariantName;//变量名称
27
+ if(data.Request.Data.symbol.length>1)//叠加股票
28
+ {var hqchartData=JSON.parse((0,_stringify2.default)(KLINE_1MINUTE_DATA));hqchartData.overlay=[];//叠加数据
29
+ var arySymbol=data.Request.Data.symbol;for(var i=0;i<arySymbol.length;++i){var symbol=arySymbol[i];if(i==0){var kItem=hqchartData.data[0];var price=kItem[5];var value=Math.ceil(Math.random()*10)/1000*price;var bUp=Math.ceil(Math.random()*10)>=5;if(bUp)price+=value;else price-=value;kItem[5]=price;kItem[3]=Math.max(price,kItem[3]);kItem[4]=Math.min(price,kItem[4]);hqchartData.name=symbol;hqchartData.symbol=symbol;}else{var testData=JSON.parse((0,_stringify2.default)(KLINE_1MINUTE_DATA2));var kItem=testData.data[0];var price=kItem[5];var value=Math.ceil(Math.random()*10)/1000*price;var bUp=Math.ceil(Math.random()*10)>=5;if(bUp)price+=value;else price-=value;kItem[5]=price;kItem[3]=Math.max(price,kItem[3]);kItem[4]=Math.min(price,kItem[4]);var stock={data:testData.data,symbol:symbol,name:symbol};hqchartData.overlay.push(stock);}}callback(hqchartData);}else{console.log("[HQData::RequestMinuteRealtimeData] Symbol="+symbol);var hqchartData=JSON.parse((0,_stringify2.default)(KLINE_1MINUTE_DATA));var kItem=hqchartData.data[0];var price=kItem[5];var value=Math.ceil(Math.random()*10)/1000*price;var bUp=Math.ceil(Math.random()*10)>=5;if(bUp)price+=value;else price-=value;kItem[5]=price;kItem[3]=Math.max(price,kItem[3]);kItem[4]=Math.min(price,kItem[4]);hqchartData.name=symbol;hqchartData.symbol=symbol;callback(hqchartData);}};HQData.RequestIndexVariantData=function(data,callback){var varName=data.Request.Data.VariantName;//变量名称
27
30
  if(varName=="FROMOPEN"){var hqchartData={};//单数据
28
31
  hqchartData.Data={Date:20230707,Value:240};hqchartData.DataType=1;callback(hqchartData);}};HQData.RequestOtherSymbolData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol;var period=data.Request.Data.period;var right=data.Request.Data.right;var hqchartData=null;if(ChartData.IsDayPeriod(period,true))hqchartData=KLINE_DAY_DATA2;else if(ChartData.IsMinutePeriod(period,true))hqchartData=KLINE_MINUTE_DATA2;hqchartData.name=symbol;hqchartData.symbol=symbol;callback(hqchartData);};HQData.AnnouncementInfo_RequestData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Symbol;var hqchartData={symbol:symbol,report:[]};var kData=data.HQChart.ChartPaint[0].Data;for(var i=0,j=1;i<kData.Data.length;++i){var kItem=kData.Data[i];if(i%10!=4)continue;var itemReport={releasedate:kItem.Date,time:kItem.Time,title:"\u516C\u544A("+j+") xxxx"};hqchartData.report.push(itemReport);++j;}callback(hqchartData);};HQData.PforecastInfo_RequestData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Symbol;var hqchartData={symbol:symbol,report:[]};var kData=data.HQChart.ChartPaint[0].Data;for(var i=0,j=1;i<kData.Data.length;++i){var kItem=kData.Data[i];if(i%10!=4)continue;var itemReport={date:kItem.Date,time:kItem.Time,title:"\u516C\u544A("+j+") xxxx"};hqchartData.report.push(itemReport);++j;}callback(hqchartData);};HQData.InvestorInfo_RequestData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Symbol;callback(TEST_NEWSINTERACT_DATA);};HQData.BlockTrading_RequestData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Symbol;callback(TEST_BLOCK_TRADING_DATA);};HQData.TradeDetail_RequestData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Symbol;callback(TEST_TRADE_DETAL_DATA);};HQData.RequestLatestData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol[0];var id=data.Args[0];var value=1;switch(id){case 3:value=KLINE_1DAY_DATA.stock[0].yclose;break;case 4:value=KLINE_1DAY_DATA.stock[0].open;break;case 5:value=KLINE_1DAY_DATA.stock[0].high;break;case 6:value=KLINE_1DAY_DATA.stock[0].low;break;case 7:value=KLINE_1DAY_DATA.stock[0].price;break;case 8:value=KLINE_1DAY_DATA.stock[0].vol;break;}var hqchartData={symbol:symbol,ver:2.0,data:[{id:id,value:value}]};callback(hqchartData);};HQData.RequestOverlayHistoryData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol;var hqchartData={symbol:symbol,name:symbol};if(symbol=="399001.sz")hqchartData.data=KLINE_DAY_OVERLAY_DATA2.data;else hqchartData.data=KLINE_DAY_OVERLAY_DATA.data;callback(hqchartData);};HQData.RequestOverlayHistoryMinuteData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol;var hqchartData={symbol:symbol,name:symbol};hqchartData.data=KLINE_MINUTE_DATA2.data;callback(hqchartData);};/*暴露外部用的方法*/exports.default={HQData:HQData};
@@ -2249,7 +2249,7 @@ if(this.IsMinSize)return;if(this.ChartBorder.IsShowTitleOnly)return;if(this.IsSh
2249
2249
  var yInsideText=null;for(var i=this.HorizontalInfo.length-1;i>=0;--i)//从上往下画分割线
2250
2250
  {var item=this.HorizontalInfo[i];var y=this.GetYFromData(item.Value);if(y!=null&&yPrev!=null&&Math.abs(y-yPrev)<this.MinYDistance)continue;//两个坐标在近了 就不画了
2251
2251
  //坐标信息 左边 间距小于10 画在内部
2252
- if(item.Message[0]!=null&&isDrawLeft){if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.fillStyle=item.TextColor;this.Canvas.textAlign="left";var yText=y;if(y>=bottom-2){this.Canvas.textBaseline='bottom';}else if(y<=top+2){this.Canvas.textBaseline='top';yText+=this.YTextTopOffset;}else{if(this.YTextBaseline==1)this.Canvas.textBaseline="bottom";else this.Canvas.textBaseline="middle";}var textObj={X:left,Y:yText,Text:{BaseLine:this.Canvas.textBaseline,TextAlign:this.Canvas.textAlign,Font:this.Canvas.font,Value:item.Message[0]}};if(!this.IsOverlayMaxMin||!this.IsOverlayMaxMin(textObj)){this.Canvas.fillText(item.Message[0],left+1*pixelTatio,yText);if(yInsideText==null||yInsideText>yText){this.YInsideOffset=this.Canvas.measureText(item.Message[0]).width+4*GetDevicePixelRatio();yInsideText=yText;}}}if(item.Message[1]!=null&&isDrawRight){if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.fillStyle=item.TextColor;this.Canvas.textAlign="right";var yText=y;if(y>=bottom-2){this.Canvas.textBaseline='bottom';}else if(y<=top+2){this.Canvas.textBaseline='top';yText+=this.YTextTopOffset;}else{if(this.YTextBaseline==1)this.Canvas.textBaseline="bottom";else this.Canvas.textBaseline="middle";}if(Array.isArray(item.Message[1]))var text=item.Message[1][0];else var text=item.Message[1];var textWidth=this.Canvas.measureText(text).width;var textObj={X:right-textWidth,Y:yText,Text:{BaseLine:this.Canvas.textBaseline,TextAlign:this.Canvas.textAlign,Font:this.Canvas.font,Value:item.Message[1]}};if(!this.IsOverlayMaxMin||!this.IsOverlayMaxMin(textObj))this.Canvas.fillText(text,right-1*pixelTatio,yText);}yPrev=y;}}};this.GetXFromIndex=function(index){var count=this.XPointCount;if(count==1){if(index==0)return this.ChartBorder.GetLeft();else return this.ChartBorder.GetRight();}else if(count<=0){return this.ChartBorder.GetLeft();}else if(index>=count){return this.ChartBorder.GetRight();}else{var offset=this.ChartBorder.GetLeft()+this.ChartBorder.GetWidth()*index/count;return offset;}};//画X轴
2252
+ if(item.Message[0]!=null&&isDrawLeft){if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.fillStyle=item.TextColor;this.Canvas.textAlign="left";var textHeight=this.Canvas.measureText("擎").width;var yText=y;if(y>=bottom-2){this.Canvas.textBaseline='bottom';}else if(y-textHeight/2<=top){this.Canvas.textBaseline='top';yText+=this.YTextTopOffset;}else{if(this.YTextBaseline==1)this.Canvas.textBaseline="bottom";else this.Canvas.textBaseline="middle";}var textObj={X:left,Y:yText,Text:{BaseLine:this.Canvas.textBaseline,TextAlign:this.Canvas.textAlign,Font:this.Canvas.font,Value:item.Message[0]}};if(!this.IsOverlayMaxMin||!this.IsOverlayMaxMin(textObj)){this.Canvas.fillText(item.Message[0],left+1*pixelTatio,yText);if(yInsideText==null||yInsideText>yText){this.YInsideOffset=this.Canvas.measureText(item.Message[0]).width+4*GetDevicePixelRatio();yInsideText=yText;}}}if(item.Message[1]!=null&&isDrawRight){if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.fillStyle=item.TextColor;this.Canvas.textAlign="right";var textHeight=this.Canvas.measureText("擎").width;var yText=y;if(y>=bottom-2){this.Canvas.textBaseline='bottom';}else if(y-textHeight/2<=top){this.Canvas.textBaseline='top';yText+=this.YTextTopOffset;}else{if(this.YTextBaseline==1)this.Canvas.textBaseline="bottom";else this.Canvas.textBaseline="middle";}if(Array.isArray(item.Message[1]))var text=item.Message[1][0];else var text=item.Message[1];var textWidth=this.Canvas.measureText(text).width;var textObj={X:right-textWidth,Y:yText,Text:{BaseLine:this.Canvas.textBaseline,TextAlign:this.Canvas.textAlign,Font:this.Canvas.font,Value:item.Message[1]}};if(!this.IsOverlayMaxMin||!this.IsOverlayMaxMin(textObj))this.Canvas.fillText(text,right-1*pixelTatio,yText);}yPrev=y;}}};this.GetXFromIndex=function(index){var count=this.XPointCount;if(count==1){if(index==0)return this.ChartBorder.GetLeft();else return this.ChartBorder.GetRight();}else if(count<=0){return this.ChartBorder.GetLeft();}else if(index>=count){return this.ChartBorder.GetRight();}else{var offset=this.ChartBorder.GetLeft()+this.ChartBorder.GetWidth()*index/count;return offset;}};//画X轴
2253
2253
  this.DrawVertical=function(){var border=this.GetBorder();var top=border.TopTitle;var bottom=border.Bottom;var right=border.RightEx;var pixelRatio=GetDevicePixelRatio();//获取设备的分辨率
2254
2254
  //JSConsole.Chart.Log('[AverageWidthFrame.DrawVertical] bottom',bottom);
2255
2255
  //if (this.ChartBorder.Bottom<=5*GetDevicePixelRatio()) return; //高度不够 不显示
@@ -7108,7 +7108,8 @@ var bindData=new ChartData();bindData.Data=this.SourceData.Data;bindData.Period=
7108
7108
  {var rightData=bindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});bindData.Data=rightData;}if((ChartData.IsDayPeriod(bindData.Period,false)||ChartData.IsMinutePeriod(bindData.Period,false))&&!this.IsApiPeriod)//周期数据 (0= 日线,4=1分钟线 不需要处理)
7109
7109
  {var periodData=bindData.GetPeriodData(bindData.Period);bindData.Data=periodData;}var kLineCalculate=this.GetKLineCalulate();if(kLineCalculate)//额外的K线图形计算
7110
7110
  {var newBindData=kLineCalculate.RecvHistoryData(bindData,{Symbol:this.Symbol,Function:"RecvMinuteRealtimeDataV2"});bindData=newBindData;this.FlowCapitalReady=true;}//绑定数据
7111
- this.UpdateMainData(bindData,lastDataCount);this.BindInstructionIndexData(bindData);//执行指示脚本
7111
+ this.UpdateMainData(bindData,lastDataCount);this.UpdateOverlayMinuteRealtimeData(data);//更新叠加股票数据
7112
+ this.BindInstructionIndexData(bindData);//执行指示脚本
7112
7113
  for(var i=0;i<this.Frame.SubFrame.length;++i){this.BindIndexData(i,bindData);}this.BindAllOverlayIndexData(bindData,{CheckRunCount:true,SyncExecute:true});//同步模式叠加指标
7113
7114
  //刷新画图
7114
7115
  this.UpdataDataoffset();//更新数据偏移
@@ -7638,7 +7639,7 @@ if(!IFrameSplitOperator.IsNumber(item.Open))item.Open=null;if(!IFrameSplitOperat
7638
7639
  if(IFrameSplitOperator.IsNumber(jsData.price))preClose=jsData.price;aryMinuteData[i]=item;}return aryMinuteData;};//分钟K线叠加数据增量更新v2版本
7639
7640
  KLineChartContainer.JsonDataToMinuteRealtimeDataV2=function(data,symbol){if(!data||!data.overlay||!symbol)return null;var overlayData=null;for(var i=0;i<data.overlay.length;++i)//overlay={ symbol:, name:, data:[] }
7640
7641
  {var item=data.overlay[i];if(item.symbol==symbol){overlayData=item;break;}}if(!overlayData)return null;var upperSymbol=symbol.toUpperCase();var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);//是否是期货
7641
- var date=0,yclose=1,open=2,high=3,low=4,close=5,vol=6,amount=7,time=8,position=9;var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;var yClose=null;for(var i=0;i<overlayData.data.length;++i){var item=new HistoryData();var jsData=overlayData.data[i];item.Date=jsData[date];item.Open=jsData[open];item.YClose=jsData[yclose];item.Close=jsData[close];item.High=jsData[high];item.Low=jsData[low];item.Vol=jsData[vol];//股
7642
+ var date=0,yclose=1,open=2,high=3,low=4,close=5,vol=6,amount=7,time=8,position=9;var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;var yClose=null;var aryMinuteData=[];for(var i=0;i<overlayData.data.length;++i){var item=new HistoryData();var jsData=overlayData.data[i];item.Date=jsData[date];item.Open=jsData[open];item.YClose=jsData[yclose];item.Close=jsData[close];item.High=jsData[high];item.Low=jsData[low];item.Vol=jsData[vol];//股
7642
7643
  item.Amount=jsData[amount];item.Time=jsData[time];if(IFrameSplitOperator.IsNumber(jsData[position]))item.Position=jsData[position];//期货持仓
7643
7644
  if(!IFrameSplitOperator.IsNumber(item.YClose)){if(IFrameSplitOperator.IsNumber(yClose))item.YClose=yClose;}if(IFrameSplitOperator.IsNumber(item.Close))yClose=item.Close;if(jsData[orderFlow])item.OrderFlow=jsData[orderFlow];aryMinuteData.push(item);}return aryMinuteData;};//API 返回数据 转化为array[]
7644
7645
  KLineChartContainer.JsonDataToMinuteHistoryData=function(data){var upperSymbol=null;if(data.symbol)upperSymbol=data.symbol.toUpperCase();var isSHSZ=false;if(upperSymbol)isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);var isFutures=false;//是否是期货
@@ -8859,6 +8860,7 @@ FHK:'.FHK',//港股期货
8859
8860
  SHFE:'.SHF',//上期所 (Shanghai Futures Exchange) | 上期所-能源
8860
8861
  SHFE2:'.SHFE',//上期所 (Shanghai Futures Exchange) | 上期所-能源
8861
8862
  CFFEX:'.CFE',//中期所 (China Financial Futures Exchange)
8863
+ CFFEX2:'.CFFEX',//中期所 (China Financial Futures Exchange)
8862
8864
  DCE:'.DCE',//大连商品交易所(Dalian Commodity Exchange)
8863
8865
  CZCE:'.CZC',//郑州期货交易所
8864
8866
  GZFE:".GZFE",//广州期货交易所
@@ -8885,7 +8887,7 @@ IsET:function IsET(upperSymbol){if(!upperSymbol)return false;return upperSymbol.
8885
8887
  {return false;},IsHSX:function IsHSX(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.HSX)>0;},IsHNX:function IsHNX(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.HNX)>0;},IsUPCOM:function IsUPCOM(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.UPCOM)>0;},IsNYMEX:function IsNYMEX(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.NYMEX)>0;},IsCOMEX:function IsCOMEX(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.COMEX)>0;},IsNYBOT:function IsNYBOT(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.NYBOT)>0;},IsCBOT:function IsCBOT(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.CBOT)>0;},IsLME:function IsLME(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.LME)>0;},IsTOCOM:function IsTOCOM(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.TOCOM)>0;},IsIPE:function IsIPE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.IPE)>0;},IsForeignExchange:function IsForeignExchange(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.FOREX)>0;},IsFTSE:function IsFTSE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.FTSE)>0;},IsFHK:function IsFHK(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.FHK)>0;},IsBIT:function IsBIT(upperSymbol){if(!upperSymbol)return false;if(upperSymbol.indexOf(this.BIT)>0)return true;if(upperSymbol.indexOf(this.BIZ)>0)return true;return false;},IsUSA:function IsUSA(upperSymbol)//是否是美股
8886
8888
  {if(!upperSymbol)return false;return upperSymbol.indexOf(this.USA)>0;},IsSH:function IsSH(upperSymbol){//需要精确匹配最后3位
8887
8889
  var pos=upperSymbol.length-this.SH.length;var find=upperSymbol.indexOf(this.SH);return find==pos;},IsSZ:function IsSZ(upperSymbol){var pos=upperSymbol.length-this.SZ.length;var find=upperSymbol.indexOf(this.SZ);return find==pos;},IsBJ:function IsBJ(upperSymbol){var pos=upperSymbol.length-this.BJ.length;var find=upperSymbol.indexOf(this.BJ);return find==pos;},//自定义指数
8888
- IsSHSZCustomIndex:function IsSHSZCustomIndex(upperSymbol){var pos=upperSymbol.length-this.SHSZ_C_Index.length;var find=upperSymbol.indexOf(this.SHSZ_C_Index);return find==pos;},IsSHO:function IsSHO(upperSymbol){var pos=upperSymbol.length-this.SHO.length;var find=upperSymbol.indexOf(this.SHO);return find==pos;},IsSZO:function IsSZO(upperSymbol){var pos=upperSymbol.length-this.SZO.length;var find=upperSymbol.indexOf(this.SZO);return find==pos;},IsHK:function IsHK(upperSymbol){var pos=upperSymbol.length-this.HK.length;var find=upperSymbol.indexOf(this.HK);return find==pos;},IsTW:function IsTW(upperSymbol){var pos=upperSymbol.length-this.TW.length;var find=upperSymbol.indexOf(this.TW);return find==pos;},IsJP:function IsJP(upperSymbol){var pos=upperSymbol.length-this.JP.length;var find=upperSymbol.indexOf(this.JP);return find==pos;},IsSHFE:function IsSHFE(upperSymbol){if(!upperSymbol)return false;if(upperSymbol.indexOf(this.SHFE)>0)return true;if(upperSymbol.indexOf(this.SHFE2)>0)return true;return false;},IsCFFEX:function IsCFFEX(upperSymbol){if(!upperSymbol)return false;if(upperSymbol.indexOf(this.CFFEX)>0)return true;return false;},IsDCE:function IsDCE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.DCE)>0;},IsCZCE:function IsCZCE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.CZCE)>0;},IsGZFE:function IsGZFE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.GZFE)>0;},IsChinaFutures:function IsChinaFutures(upperSymbol)//是否是国内期货 /期权
8890
+ IsSHSZCustomIndex:function IsSHSZCustomIndex(upperSymbol){var pos=upperSymbol.length-this.SHSZ_C_Index.length;var find=upperSymbol.indexOf(this.SHSZ_C_Index);return find==pos;},IsSHO:function IsSHO(upperSymbol){var pos=upperSymbol.length-this.SHO.length;var find=upperSymbol.indexOf(this.SHO);return find==pos;},IsSZO:function IsSZO(upperSymbol){var pos=upperSymbol.length-this.SZO.length;var find=upperSymbol.indexOf(this.SZO);return find==pos;},IsHK:function IsHK(upperSymbol){var pos=upperSymbol.length-this.HK.length;var find=upperSymbol.indexOf(this.HK);return find==pos;},IsTW:function IsTW(upperSymbol){var pos=upperSymbol.length-this.TW.length;var find=upperSymbol.indexOf(this.TW);return find==pos;},IsJP:function IsJP(upperSymbol){var pos=upperSymbol.length-this.JP.length;var find=upperSymbol.indexOf(this.JP);return find==pos;},IsSHFE:function IsSHFE(upperSymbol){if(!upperSymbol)return false;if(upperSymbol.indexOf(this.SHFE)>0)return true;if(upperSymbol.indexOf(this.SHFE2)>0)return true;return false;},IsCFFEX:function IsCFFEX(upperSymbol){if(!upperSymbol)return false;if(upperSymbol.indexOf(this.CFFEX)>0)return true;if(upperSymbol.indexOf(this.CFFEX2)>0)return true;return false;},IsDCE:function IsDCE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.DCE)>0;},IsCZCE:function IsCZCE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.CZCE)>0;},IsGZFE:function IsGZFE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.GZFE)>0;},IsChinaFutures:function IsChinaFutures(upperSymbol)//是否是国内期货 /期权
8889
8891
  {return this.IsSHO(upperSymbol)||this.IsSZO(upperSymbol)||this.IsGZFE(upperSymbol)||this.IsCFFEX(upperSymbol)||this.IsCZCE(upperSymbol)||this.IsDCE(upperSymbol)||this.IsSHFE(upperSymbol);},IsFutures:function IsFutures(upperSymbol)//是否是期货 包含国外的
8890
8892
  {if(!upperSymbol)return false;return this.IsChinaFutures(upperSymbol)||this.IsNYMEX(upperSymbol)||this.IsCOMEX(upperSymbol)||this.IsNYBOT(upperSymbol)||this.IsCBOT(upperSymbol)||this.IsLME(upperSymbol)||this.IsTOCOM(upperSymbol);},IsSHSZ:function IsSHSZ(upperSymbol)//是否是沪深的股票
8891
8893
  {return this.IsSZ(upperSymbol)||this.IsSH(upperSymbol)||this.IsSHSZCustomIndex(upperSymbol);},IsSHSZFund:function IsSHSZFund(upperSymbol)//是否是交易所基金
@@ -12236,8 +12238,12 @@ this.UIElement.ondblclick=function(e){_this51.UIOnDblClick(e);};this.UIElement.o
12236
12238
  this.UIElement.ontouchstart=function(e){_this51.OnTouchStart(e);};this.UIElement.ontouchmove=function(e){_this51.OnTouchMove(e);};this.UIElement.ontouchend=function(e){_this51.OnTouchEnd(e);};};this.Draw=function(){if(this.UIElement.width<=0||this.UIElement.height<=0)return;this.Canvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
12237
12239
  this.Canvas.lineWidth=pixelTatio;//手机端需要根据分辨率比调整线段宽度
12238
12240
  if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){this.Frame.Draw({IsEnableSplash:this.ChartSplashPaint.IsEnableSplash});this.ChartSplashPaint.Draw();return;}this.Frame.Draw();this.Frame.DrawLogo();//框架内图形
12239
- for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsDrawFirst)item.Draw();}for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.IsDrawFirst)item.Draw();}if(this.GlobalOption.FlashBGCount>0){this.DelayDraw(500);}};this.DelayDraw=function(frequency){var _this52=this;if(typeof this.FlashBGTimer=='number'){clearTimeout(this.FlashBGTimer);this.FlashBGTimer=null;}this.FlashBGTimer=setTimeout(function(){_this52.Draw();},frequency);};this.ResetReportStatus=function(){this.Data.XOffset=0;this.Data.YOffset=0;};this.ResetReportSelectStatus=function(){var chart=this.GetReportChart();if(chart){chart.SelectedRow=-1;chart.SelectedFixedRow=-1;}};this.ClearData=function(){this.SourceData.Data=[];this.Data.Data=[];this.BlockData=new _map2.default();};this.ResetSortStatus=function(){this.SortInfo.Field=-1;this.SortInfo.Sort=0;};//设置股票列表
12240
- this.SetSymbolList=function(arySymbol,option){this.ClearData();this.ResetReportStatus();this.ResetSortStatus();if(IFrameSplitOperator.IsNonEmptyArray(arySymbol)){for(var i=0;i<arySymbol.length;++i){this.Data.Data.push(arySymbol[i]);}}var chart=this.ChartPaint[0];if(chart)chart.Data=this.Data;this.Draw();};this.ChangeSymbol=function(symbol,option){var _this53=this;this.Symbol=symbol;this.ClearData();this.ResetReportStatus();this.ResetSortStatus();this.ResetReportSelectStatus();if(option){if(IFrameSplitOperator.IsNumber(option.TabSelected)){var chartTab=this.GetTabChart();if(chartTab)chartTab.SelectedTabIndex=option.TabSelected;}if(Array.isArray(option.FixedSymbol)){var chart=this.GetReportChart();if(chart){chart.FixedRowCount=0;this.FixedRowData.Type=1;this.FixedRowData.Symbol=[];var aryData=option.FixedSymbol;for(var i=0;i<aryData.length;++i){var item=aryData[i];this.FixedRowData.Symbol.push(item.Symbol);++chart.FixedRowCount;}this.SetSizeChange(true);}}if(option.SortInfo){var item=option.SortInfo;if(IFrameSplitOperator.IsNumber(item.Field))this.SortInfo.Field=item.Field;if(IFrameSplitOperator.IsNumber(item.Sort))this.SortInfo.Sort=item.Sort;}if(IFrameSplitOperator.IsBool(option.IsReloadStockList)){var requestOption={Callback:null};if(this.Symbol)requestOption.Callback=function(){_this53.RequestMemberListData();};this.MapStockData=new _map2.default();this.RequestStockListData(requestOption);return;}}this.RequestMemberListData();};this.RequestMemberListData=function(){//this.ChartSplashPaint.SetTitle(this.SplashTitle.MemberList);
12241
+ for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(item.IsDrawFirst)item.Draw();}for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];if(!item.IsDrawFirst)item.Draw();}if(this.GlobalOption.FlashBGCount>0){this.DelayDraw(500);}};this.DelayDraw=function(frequency){var _this52=this;if(typeof this.FlashBGTimer=='number'){clearTimeout(this.FlashBGTimer);this.FlashBGTimer=null;}this.FlashBGTimer=setTimeout(function(){_this52.Draw();},frequency);};this.ResetReportStatus=function(){this.Data.XOffset=0;this.Data.YOffset=0;};this.ResetReportSelectStatus=function(){var chart=this.GetReportChart();if(chart){chart.SelectedRow=-1;chart.SelectedFixedRow=-1;}};this.ClearData=function(){this.SourceData.Data=[];this.Data.Data=[];this.BlockData=new _map2.default();};this.ClearMapStockData=function(){this.MapStockData=new _map2.default();};this.ResetSortStatus=function(){this.SortInfo.Field=-1;this.SortInfo.Sort=0;};//设置股票列表
12242
+ this.SetSymbolList=function(arySymbol,option){this.ClearData();this.ResetReportStatus();this.ResetSortStatus();if(IFrameSplitOperator.IsNonEmptyArray(arySymbol)){for(var i=0;i<arySymbol.length;++i){this.Data.Data.push(arySymbol[i]);}}var chart=this.ChartPaint[0];if(chart)chart.Data=this.Data;this.Draw();};this.ChangeSymbol=function(symbol,option){var _this53=this;this.Symbol=symbol;this.ClearData();this.ResetReportStatus();this.ResetSortStatus();this.ResetReportSelectStatus();if(option){if(IFrameSplitOperator.IsNumber(option.TabSelected)){var chartTab=this.GetTabChart();if(chartTab)chartTab.SelectedTabIndex=option.TabSelected;}if(Array.isArray(option.FixedSymbol)){var chart=this.GetReportChart();if(chart){chart.FixedRowCount=0;this.FixedRowData.Type=1;this.FixedRowData.Symbol=[];var aryData=option.FixedSymbol;for(var i=0;i<aryData.length;++i){var item=aryData[i];this.FixedRowData.Symbol.push(item.Symbol);++chart.FixedRowCount;}this.SetSizeChange(true);}}if(option.SortInfo){var item=option.SortInfo;if(IFrameSplitOperator.IsNumber(item.Field))this.SortInfo.Field=item.Field;if(IFrameSplitOperator.IsNumber(item.Sort))this.SortInfo.Sort=item.Sort;}if(IFrameSplitOperator.IsBool(option.IsReloadStockList)){var requestOption={Callback:null};if(this.Symbol)requestOption.Callback=function(){_this53.RequestMemberListData();};this.MapStockData=new _map2.default();this.RequestStockListData(requestOption);return;}}this.RequestMemberListData();};//设置全部的数据
12243
+ this.SetFullData=function(data){this.ClearMapStockData();this.ClearData();this.ResetReportStatus();this.ResetSortStatus();this.ResetReportSelectStatus();//缓存所有数据
12244
+ var arySymbol=[];if(IFrameSplitOperator.IsNonEmptyArray(data.data)){//0=证券代码 1=股票名称
12245
+ for(var i=0;i<data.data.length;++i){var item=data.data[i];var symbol=item[0];var stock=null;if(this.MapStockData.has(symbol)){stock=this.MapStockData.get(symbol);}else{stock=new HQReportItem();stock.OriginalSymbol=symbol;this.MapStockData.set(symbol,stock);}stock.Symbol=this.GetSymbolNoSuffix(symbol);stock.Name=item[1];this.ReadStockJsonData(stock,item);arySymbol.push(symbol);}}//设置显示数据
12246
+ if(IFrameSplitOperator.IsNonEmptyArray(arySymbol)){for(var i=0;i<arySymbol.length;++i){this.Data.Data.push(arySymbol[i]);this.SourceData.Data.push(arySymbol[i]);}}this.Draw();};this.RequestMemberListData=function(){//this.ChartSplashPaint.SetTitle(this.SplashTitle.MemberList);
12241
12247
  //this.ChartSplashPaint.EnableSplash(true);
12242
12248
  //this.Draw();
12243
12249
  var self=this;if(this.NetworkFilter){var obj={Name:'JSReportChartContainer::RequestMemberListData',//类名::
@@ -13207,7 +13213,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
13207
13213
  this.ExecuteScript(item,data);}this.Status=0;}};this.OnExecuteFinish=function(data,indexInfo,jsExectute,jobInfo){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT,JobInfo:jobInfo};postMessage(message);};this.OnExecuteError=function(error,indexInfo,jobData){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
13208
13214
  * 版本信息输出
13209
13215
  *
13210
- */var HQCHART_VERSION="1.1.13477";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
13216
+ */var HQCHART_VERSION="1.1.13486";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
13211
13217
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
13212
13218
  // BaseIndex:BaseIndex,
13213
13219
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.13478",
3
+ "version": "1.1.13487",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -48874,17 +48874,55 @@ HQData.RequestFlowCapitalData=function(data,callback)
48874
48874
  callback(hqchartData);
48875
48875
  }
48876
48876
 
48877
- HQData.RequestRealtimeData=function(data,callback)
48877
+ HQData.RequestRealtimeData=function(data, callback)
48878
48878
  {
48879
48879
  data.PreventDefault=true;
48880
48880
  var symbol=data.Request.Data.symbol[0]; //请求的股票代码
48881
48881
 
48882
- console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`);
48882
+ if (data.Request.Data.symbol.length>1) //叠加股票
48883
+ {
48884
+ var hqchartData={ stock:[], code:0 };
48885
+ var arySymbol=data.Request.Data.symbol;
48886
+ for(var i=0;i<arySymbol.length;++i)
48887
+ {
48888
+ var symbol=arySymbol[i];
48889
+ if (i==0)
48890
+ {
48891
+ var stock=KLINE_1DAY_DATA.stock[0];
48892
+ stock.name=symbol;
48893
+ stock.symbol=symbol;
48894
+ hqchartData.stock.push(stock);
48895
+ }
48896
+ else
48897
+ {
48898
+ if (symbol=="399001.sz")
48899
+ {
48900
+ var stock=KLINE_1DAY_OVERLAY_DATA2.stock[0];
48901
+ stock.name=symbol;
48902
+ stock.symbol=symbol;
48903
+ hqchartData.stock.push(stock);
48904
+ }
48905
+ else
48906
+ {
48907
+ var stock=KLINE_1DAY_OVERLAY_DATA.stock[0];
48908
+ stock.name=symbol;
48909
+ stock.symbol=symbol;
48910
+ hqchartData.stock.push(stock);
48911
+ }
48912
+
48913
+ }
48914
+ }
48883
48915
 
48884
- var hqchartData=KLINE_1DAY_DATA;
48885
- hqchartData.stock[0].name=symbol;
48886
- hqchartData.stock[0].symbol=symbol;
48887
- callback(hqchartData);
48916
+ callback(hqchartData);
48917
+ }
48918
+ else
48919
+ {
48920
+ console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`);
48921
+ var hqchartData=KLINE_1DAY_DATA;
48922
+ hqchartData.stock[0].name=symbol;
48923
+ hqchartData.stock[0].symbol=symbol;
48924
+ callback(hqchartData);
48925
+ }
48888
48926
  }
48889
48927
 
48890
48928
 
@@ -48908,24 +48946,71 @@ HQData.RequestMinuteRealtimeData=function(data,callback)
48908
48946
  data.PreventDefault=true;
48909
48947
  var symbol=data.Request.Data.symbol[0]; //请求的股票代码
48910
48948
 
48911
- console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`);
48949
+ if (data.Request.Data.symbol.length>1) //叠加股票
48950
+ {
48951
+ var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
48952
+ hqchartData.overlay=[]; //叠加数据
48953
+ var arySymbol=data.Request.Data.symbol;
48954
+ for(var i=0;i<arySymbol.length;++i)
48955
+ {
48956
+ var symbol=arySymbol[i];
48957
+ if (i==0)
48958
+ {
48959
+ var kItem=hqchartData.data[0];
48960
+ var price=kItem[5];
48961
+ var value=Math.ceil(Math.random()*10)/1000*price;
48962
+ var bUp=Math.ceil(Math.random()*10)>=5;
48963
+
48964
+ if (bUp) price+=value;
48965
+ else price-=value;
48966
+ kItem[5]=price;
48967
+ kItem[3]=Math.max(price, kItem[3]);
48968
+ kItem[4]=Math.min(price, kItem[4]);
48912
48969
 
48913
- var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
48970
+ hqchartData.name=symbol;
48971
+ hqchartData.symbol=symbol;
48972
+ }
48973
+ else
48974
+ {
48975
+ var testData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA2));
48976
+ var kItem=testData.data[0];
48977
+ var price=kItem[5];
48978
+ var value=Math.ceil(Math.random()*10)/1000*price;
48979
+ var bUp=Math.ceil(Math.random()*10)>=5;
48980
+
48981
+ if (bUp) price+=value;
48982
+ else price-=value;
48983
+ kItem[5]=price;
48984
+ kItem[3]=Math.max(price, kItem[3]);
48985
+ kItem[4]=Math.min(price, kItem[4]);
48986
+ var stock={ data:testData.data, symbol:symbol, name:symbol };
48987
+ hqchartData.overlay.push(stock);
48988
+ }
48989
+ }
48914
48990
 
48915
- var kItem=hqchartData.data[0];
48916
- var price=kItem[5];
48917
- var value=Math.ceil(Math.random()*10)/1000*price;
48918
- var bUp=Math.ceil(Math.random()*10)>=5;
48919
-
48920
- if (bUp) price+=value;
48921
- else price-=value;
48922
- kItem[5]=price;
48923
- kItem[3]=Math.max(price, kItem[3]);
48924
- kItem[4]=Math.min(price, kItem[4]);
48991
+ callback(hqchartData);
48992
+ }
48993
+ else
48994
+ {
48995
+ console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`);
48996
+
48997
+ var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
48925
48998
 
48926
- hqchartData.name=symbol;
48927
- hqchartData.symbol=symbol;
48928
- callback(hqchartData);
48999
+ var kItem=hqchartData.data[0];
49000
+ var price=kItem[5];
49001
+ var value=Math.ceil(Math.random()*10)/1000*price;
49002
+ var bUp=Math.ceil(Math.random()*10)>=5;
49003
+
49004
+ if (bUp) price+=value;
49005
+ else price-=value;
49006
+ kItem[5]=price;
49007
+ kItem[3]=Math.max(price, kItem[3]);
49008
+ kItem[4]=Math.min(price, kItem[4]);
49009
+
49010
+ hqchartData.name=symbol;
49011
+ hqchartData.symbol=symbol;
49012
+ callback(hqchartData);
49013
+ }
48929
49014
  }
48930
49015
 
48931
49016
 
@@ -11572,12 +11572,13 @@ function AverageWidthFrame()
11572
11572
  if (item.Font != null) this.Canvas.font = item.Font;
11573
11573
  this.Canvas.fillStyle = item.TextColor;
11574
11574
  this.Canvas.textAlign = "left";
11575
+ var textHeight=this.Canvas.measureText("擎").width;
11575
11576
  var yText=y;
11576
11577
  if (y >= bottom - 2)
11577
11578
  {
11578
11579
  this.Canvas.textBaseline = 'bottom';
11579
11580
  }
11580
- else if (y <= top + 2)
11581
+ else if ((y-textHeight/2)<=top)
11581
11582
  {
11582
11583
  this.Canvas.textBaseline = 'top';
11583
11584
  yText+=this.YTextTopOffset;
@@ -11606,12 +11607,13 @@ function AverageWidthFrame()
11606
11607
  if (item.Font != null) this.Canvas.font = item.Font;
11607
11608
  this.Canvas.fillStyle = item.TextColor;
11608
11609
  this.Canvas.textAlign = "right";
11610
+ var textHeight=this.Canvas.measureText("擎").width;
11609
11611
  var yText=y;
11610
11612
  if (y >= bottom - 2)
11611
11613
  {
11612
11614
  this.Canvas.textBaseline = 'bottom';
11613
11615
  }
11614
- else if (y <= top + 2)
11616
+ else if (y-textHeight/2 <= top)
11615
11617
  {
11616
11618
  this.Canvas.textBaseline = 'top';
11617
11619
  yText+=this.YTextTopOffset;
@@ -71934,7 +71936,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
71934
71936
 
71935
71937
  //绑定数据
71936
71938
  this.UpdateMainData(bindData,lastDataCount);
71937
- this.BindInstructionIndexData(bindData); //执行指示脚本
71939
+ this.UpdateOverlayMinuteRealtimeData(data); //更新叠加股票数据
71940
+ this.BindInstructionIndexData(bindData); //执行指示脚本
71938
71941
 
71939
71942
  for(var i=0; i<this.Frame.SubFrame.length; ++i)
71940
71943
  {
@@ -76705,7 +76708,7 @@ KLineChartContainer.JsonDataToMinuteRealtimeDataV2=function(data,symbol)
76705
76708
  var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7, time = 8, position=9;
76706
76709
  var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;
76707
76710
  var yClose=null;
76708
-
76711
+ var aryMinuteData=[];
76709
76712
  for (var i = 0; i < overlayData.data.length; ++i)
76710
76713
  {
76711
76714
  var item = new HistoryData();
@@ -88953,6 +88956,7 @@ var MARKET_SUFFIX_NAME=
88953
88956
  SHFE: '.SHF', //上期所 (Shanghai Futures Exchange) | 上期所-能源
88954
88957
  SHFE2:'.SHFE', //上期所 (Shanghai Futures Exchange) | 上期所-能源
88955
88958
  CFFEX: '.CFE', //中期所 (China Financial Futures Exchange)
88959
+ CFFEX2:'.CFFEX', //中期所 (China Financial Futures Exchange)
88956
88960
  DCE: '.DCE', //大连商品交易所(Dalian Commodity Exchange)
88957
88961
  CZCE: '.CZC', //郑州期货交易所
88958
88962
  GZFE:".GZFE", //广州期货交易所
@@ -89164,6 +89168,7 @@ var MARKET_SUFFIX_NAME=
89164
89168
  {
89165
89169
  if (!upperSymbol) return false;
89166
89170
  if (upperSymbol.indexOf(this.CFFEX) > 0) return true;
89171
+ if (upperSymbol.indexOf(this.CFFEX2) > 0) return true;
89167
89172
 
89168
89173
  return false;
89169
89174
  },
@@ -618,6 +618,11 @@ function JSReportChartContainer(uielement)
618
618
  this.BlockData=new Map();
619
619
  }
620
620
 
621
+ this.ClearMapStockData=function()
622
+ {
623
+ this.MapStockData=new Map();
624
+ }
625
+
621
626
  this.ResetSortStatus=function()
622
627
  {
623
628
  this.SortInfo.Field=-1;
@@ -702,6 +707,57 @@ function JSReportChartContainer(uielement)
702
707
  this.RequestMemberListData();
703
708
  }
704
709
 
710
+ //设置全部的数据
711
+ this.SetFullData=function(data)
712
+ {
713
+ this.ClearMapStockData();
714
+ this.ClearData();
715
+ this.ResetReportStatus();
716
+ this.ResetSortStatus();
717
+ this.ResetReportSelectStatus();
718
+
719
+ //缓存所有数据
720
+ var arySymbol=[];
721
+ if (IFrameSplitOperator.IsNonEmptyArray(data.data))
722
+ {
723
+ //0=证券代码 1=股票名称
724
+ for(var i=0;i<data.data.length;++i)
725
+ {
726
+ var item=data.data[i];
727
+ var symbol=item[0];
728
+ var stock=null;
729
+ if (this.MapStockData.has(symbol))
730
+ {
731
+ stock=this.MapStockData.get(symbol);
732
+ }
733
+ else
734
+ {
735
+ stock=new HQReportItem();
736
+ stock.OriginalSymbol=symbol;
737
+ this.MapStockData.set(symbol, stock);
738
+ }
739
+
740
+ stock.Symbol=this.GetSymbolNoSuffix(symbol);
741
+ stock.Name=item[1];
742
+ this.ReadStockJsonData(stock, item);
743
+
744
+ arySymbol.push(symbol);
745
+ }
746
+ }
747
+
748
+ //设置显示数据
749
+ if (IFrameSplitOperator.IsNonEmptyArray(arySymbol))
750
+ {
751
+ for(var i=0;i<arySymbol.length;++i)
752
+ {
753
+ this.Data.Data.push(arySymbol[i]);
754
+ this.SourceData.Data.push(arySymbol[i]);
755
+ }
756
+ }
757
+
758
+ this.Draw();
759
+ }
760
+
705
761
  this.RequestMemberListData=function()
706
762
  {
707
763
  //this.ChartSplashPaint.SetTitle(this.SplashTitle.MemberList);
@@ -79863,4 +79863,25 @@ var KLINE_DAY_OVERLAY_DATA={
79863
79863
  317757173399.7
79864
79864
  ]
79865
79865
  ]
79866
+ }
79867
+
79868
+
79869
+ var KLINE_1DAY_OVERLAY_DATA=
79870
+ {
79871
+ "stock":
79872
+ [
79873
+ {
79874
+ "time": 150002,
79875
+ "date": 20230825,
79876
+ "price": 3074.0747,
79877
+ "open": 3068.615,
79878
+ "yclose": 3082.2439,
79879
+ "high": 3095.047,
79880
+ "low": 3053.0373,
79881
+ "vol": 293357686,
79882
+ "amount": 317757373399.7,
79883
+ "symbol": "000001.sh",
79884
+ "name": "000001.sh"
79885
+ }
79886
+ ],
79866
79887
  }
@@ -2678,4 +2678,26 @@ var KLINE_MINUTE_DATA2 = {
2678
2678
  "name": "平安银行",
2679
2679
  "count": 7646,
2680
2680
  "code": 0
2681
- }
2681
+ }
2682
+
2683
+
2684
+ var KLINE_1MINUTE_DATA2=
2685
+ {
2686
+ code:0,
2687
+ data:
2688
+ [
2689
+ [
2690
+ 20230829,
2691
+ 12.65,
2692
+ 12.65,
2693
+ 12.65,
2694
+ 12.65,
2695
+ 12.65,
2696
+ 1246339,
2697
+ 15766208,
2698
+ 1500
2699
+ ]
2700
+ ],
2701
+ symbol:"xxx",
2702
+ name:"xxxx",
2703
+ }
@@ -78512,4 +78512,25 @@ var KLINE_DAY_OVERLAY_DATA2 =
78512
78512
  171136489266.51
78513
78513
  ]
78514
78514
  ]
78515
+ }
78516
+
78517
+
78518
+ var KLINE_1DAY_OVERLAY_DATA2=
78519
+ {
78520
+ "stock":
78521
+ [
78522
+ {
78523
+ "time": 150002,
78524
+ "date": 20230825,
78525
+ "price": 10180.4711,
78526
+ "open": 10197.9573,
78527
+ "yclose": 10256.1896,
78528
+ "high": 10212.6467,
78529
+ "low": 10091.8625,
78530
+ "vol": 10428916190,
78531
+ "amount": 171138489266.7,
78532
+ "symbol": "",
78533
+ "name": ""
78534
+ }
78535
+ ],
78515
78536
  }
@@ -199,17 +199,55 @@ HQData.RequestFlowCapitalData=function(data,callback)
199
199
  callback(hqchartData);
200
200
  }
201
201
 
202
- HQData.RequestRealtimeData=function(data,callback)
202
+ HQData.RequestRealtimeData=function(data, callback)
203
203
  {
204
204
  data.PreventDefault=true;
205
205
  var symbol=data.Request.Data.symbol[0]; //请求的股票代码
206
206
 
207
- console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`);
207
+ if (data.Request.Data.symbol.length>1) //叠加股票
208
+ {
209
+ var hqchartData={ stock:[], code:0 };
210
+ var arySymbol=data.Request.Data.symbol;
211
+ for(var i=0;i<arySymbol.length;++i)
212
+ {
213
+ var symbol=arySymbol[i];
214
+ if (i==0)
215
+ {
216
+ var stock=KLINE_1DAY_DATA.stock[0];
217
+ stock.name=symbol;
218
+ stock.symbol=symbol;
219
+ hqchartData.stock.push(stock);
220
+ }
221
+ else
222
+ {
223
+ if (symbol=="399001.sz")
224
+ {
225
+ var stock=KLINE_1DAY_OVERLAY_DATA2.stock[0];
226
+ stock.name=symbol;
227
+ stock.symbol=symbol;
228
+ hqchartData.stock.push(stock);
229
+ }
230
+ else
231
+ {
232
+ var stock=KLINE_1DAY_OVERLAY_DATA.stock[0];
233
+ stock.name=symbol;
234
+ stock.symbol=symbol;
235
+ hqchartData.stock.push(stock);
236
+ }
237
+
238
+ }
239
+ }
208
240
 
209
- var hqchartData=KLINE_1DAY_DATA;
210
- hqchartData.stock[0].name=symbol;
211
- hqchartData.stock[0].symbol=symbol;
212
- callback(hqchartData);
241
+ callback(hqchartData);
242
+ }
243
+ else
244
+ {
245
+ console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`);
246
+ var hqchartData=KLINE_1DAY_DATA;
247
+ hqchartData.stock[0].name=symbol;
248
+ hqchartData.stock[0].symbol=symbol;
249
+ callback(hqchartData);
250
+ }
213
251
  }
214
252
 
215
253
 
@@ -233,24 +271,71 @@ HQData.RequestMinuteRealtimeData=function(data,callback)
233
271
  data.PreventDefault=true;
234
272
  var symbol=data.Request.Data.symbol[0]; //请求的股票代码
235
273
 
236
- console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`);
274
+ if (data.Request.Data.symbol.length>1) //叠加股票
275
+ {
276
+ var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
277
+ hqchartData.overlay=[]; //叠加数据
278
+ var arySymbol=data.Request.Data.symbol;
279
+ for(var i=0;i<arySymbol.length;++i)
280
+ {
281
+ var symbol=arySymbol[i];
282
+ if (i==0)
283
+ {
284
+ var kItem=hqchartData.data[0];
285
+ var price=kItem[5];
286
+ var value=Math.ceil(Math.random()*10)/1000*price;
287
+ var bUp=Math.ceil(Math.random()*10)>=5;
288
+
289
+ if (bUp) price+=value;
290
+ else price-=value;
291
+ kItem[5]=price;
292
+ kItem[3]=Math.max(price, kItem[3]);
293
+ kItem[4]=Math.min(price, kItem[4]);
294
+
295
+ hqchartData.name=symbol;
296
+ hqchartData.symbol=symbol;
297
+ }
298
+ else
299
+ {
300
+ var testData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA2));
301
+ var kItem=testData.data[0];
302
+ var price=kItem[5];
303
+ var value=Math.ceil(Math.random()*10)/1000*price;
304
+ var bUp=Math.ceil(Math.random()*10)>=5;
305
+
306
+ if (bUp) price+=value;
307
+ else price-=value;
308
+ kItem[5]=price;
309
+ kItem[3]=Math.max(price, kItem[3]);
310
+ kItem[4]=Math.min(price, kItem[4]);
311
+ var stock={ data:testData.data, symbol:symbol, name:symbol };
312
+ hqchartData.overlay.push(stock);
313
+ }
314
+ }
237
315
 
238
- var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
316
+ callback(hqchartData);
317
+ }
318
+ else
319
+ {
320
+ console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`);
239
321
 
240
- var kItem=hqchartData.data[0];
241
- var price=kItem[5];
242
- var value=Math.ceil(Math.random()*10)/1000*price;
243
- var bUp=Math.ceil(Math.random()*10)>=5;
322
+ var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
244
323
 
245
- if (bUp) price+=value;
246
- else price-=value;
247
- kItem[5]=price;
248
- kItem[3]=Math.max(price, kItem[3]);
249
- kItem[4]=Math.min(price, kItem[4]);
250
-
251
- hqchartData.name=symbol;
252
- hqchartData.symbol=symbol;
253
- callback(hqchartData);
324
+ var kItem=hqchartData.data[0];
325
+ var price=kItem[5];
326
+ var value=Math.ceil(Math.random()*10)/1000*price;
327
+ var bUp=Math.ceil(Math.random()*10)>=5;
328
+
329
+ if (bUp) price+=value;
330
+ else price-=value;
331
+ kItem[5]=price;
332
+ kItem[3]=Math.max(price, kItem[3]);
333
+ kItem[4]=Math.min(price, kItem[4]);
334
+
335
+ hqchartData.name=symbol;
336
+ hqchartData.symbol=symbol;
337
+ callback(hqchartData);
338
+ }
254
339
  }
255
340
 
256
341
 
@@ -15497,12 +15497,13 @@ function AverageWidthFrame()
15497
15497
  if (item.Font != null) this.Canvas.font = item.Font;
15498
15498
  this.Canvas.fillStyle = item.TextColor;
15499
15499
  this.Canvas.textAlign = "left";
15500
+ var textHeight=this.Canvas.measureText("擎").width;
15500
15501
  var yText=y;
15501
15502
  if (y >= bottom - 2)
15502
15503
  {
15503
15504
  this.Canvas.textBaseline = 'bottom';
15504
15505
  }
15505
- else if (y <= top + 2)
15506
+ else if ((y-textHeight/2)<=top)
15506
15507
  {
15507
15508
  this.Canvas.textBaseline = 'top';
15508
15509
  yText+=this.YTextTopOffset;
@@ -15531,12 +15532,13 @@ function AverageWidthFrame()
15531
15532
  if (item.Font != null) this.Canvas.font = item.Font;
15532
15533
  this.Canvas.fillStyle = item.TextColor;
15533
15534
  this.Canvas.textAlign = "right";
15535
+ var textHeight=this.Canvas.measureText("擎").width;
15534
15536
  var yText=y;
15535
15537
  if (y >= bottom - 2)
15536
15538
  {
15537
15539
  this.Canvas.textBaseline = 'bottom';
15538
15540
  }
15539
- else if (y <= top + 2)
15541
+ else if (y-textHeight/2 <= top)
15540
15542
  {
15541
15543
  this.Canvas.textBaseline = 'top';
15542
15544
  yText+=this.YTextTopOffset;
@@ -75859,7 +75861,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
75859
75861
 
75860
75862
  //绑定数据
75861
75863
  this.UpdateMainData(bindData,lastDataCount);
75862
- this.BindInstructionIndexData(bindData); //执行指示脚本
75864
+ this.UpdateOverlayMinuteRealtimeData(data); //更新叠加股票数据
75865
+ this.BindInstructionIndexData(bindData); //执行指示脚本
75863
75866
 
75864
75867
  for(var i=0; i<this.Frame.SubFrame.length; ++i)
75865
75868
  {
@@ -80630,7 +80633,7 @@ KLineChartContainer.JsonDataToMinuteRealtimeDataV2=function(data,symbol)
80630
80633
  var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7, time = 8, position=9;
80631
80634
  var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;
80632
80635
  var yClose=null;
80633
-
80636
+ var aryMinuteData=[];
80634
80637
  for (var i = 0; i < overlayData.data.length; ++i)
80635
80638
  {
80636
80639
  var item = new HistoryData();
@@ -92878,6 +92881,7 @@ var MARKET_SUFFIX_NAME=
92878
92881
  SHFE: '.SHF', //上期所 (Shanghai Futures Exchange) | 上期所-能源
92879
92882
  SHFE2:'.SHFE', //上期所 (Shanghai Futures Exchange) | 上期所-能源
92880
92883
  CFFEX: '.CFE', //中期所 (China Financial Futures Exchange)
92884
+ CFFEX2:'.CFFEX', //中期所 (China Financial Futures Exchange)
92881
92885
  DCE: '.DCE', //大连商品交易所(Dalian Commodity Exchange)
92882
92886
  CZCE: '.CZC', //郑州期货交易所
92883
92887
  GZFE:".GZFE", //广州期货交易所
@@ -93089,6 +93093,7 @@ var MARKET_SUFFIX_NAME=
93089
93093
  {
93090
93094
  if (!upperSymbol) return false;
93091
93095
  if (upperSymbol.indexOf(this.CFFEX) > 0) return true;
93096
+ if (upperSymbol.indexOf(this.CFFEX2) > 0) return true;
93092
93097
 
93093
93098
  return false;
93094
93099
  },
@@ -125639,6 +125644,11 @@ function JSReportChartContainer(uielement)
125639
125644
  this.BlockData=new Map();
125640
125645
  }
125641
125646
 
125647
+ this.ClearMapStockData=function()
125648
+ {
125649
+ this.MapStockData=new Map();
125650
+ }
125651
+
125642
125652
  this.ResetSortStatus=function()
125643
125653
  {
125644
125654
  this.SortInfo.Field=-1;
@@ -125723,6 +125733,57 @@ function JSReportChartContainer(uielement)
125723
125733
  this.RequestMemberListData();
125724
125734
  }
125725
125735
 
125736
+ //设置全部的数据
125737
+ this.SetFullData=function(data)
125738
+ {
125739
+ this.ClearMapStockData();
125740
+ this.ClearData();
125741
+ this.ResetReportStatus();
125742
+ this.ResetSortStatus();
125743
+ this.ResetReportSelectStatus();
125744
+
125745
+ //缓存所有数据
125746
+ var arySymbol=[];
125747
+ if (IFrameSplitOperator.IsNonEmptyArray(data.data))
125748
+ {
125749
+ //0=证券代码 1=股票名称
125750
+ for(var i=0;i<data.data.length;++i)
125751
+ {
125752
+ var item=data.data[i];
125753
+ var symbol=item[0];
125754
+ var stock=null;
125755
+ if (this.MapStockData.has(symbol))
125756
+ {
125757
+ stock=this.MapStockData.get(symbol);
125758
+ }
125759
+ else
125760
+ {
125761
+ stock=new HQReportItem();
125762
+ stock.OriginalSymbol=symbol;
125763
+ this.MapStockData.set(symbol, stock);
125764
+ }
125765
+
125766
+ stock.Symbol=this.GetSymbolNoSuffix(symbol);
125767
+ stock.Name=item[1];
125768
+ this.ReadStockJsonData(stock, item);
125769
+
125770
+ arySymbol.push(symbol);
125771
+ }
125772
+ }
125773
+
125774
+ //设置显示数据
125775
+ if (IFrameSplitOperator.IsNonEmptyArray(arySymbol))
125776
+ {
125777
+ for(var i=0;i<arySymbol.length;++i)
125778
+ {
125779
+ this.Data.Data.push(arySymbol[i]);
125780
+ this.SourceData.Data.push(arySymbol[i]);
125781
+ }
125782
+ }
125783
+
125784
+ this.Draw();
125785
+ }
125786
+
125726
125787
  this.RequestMemberListData=function()
125727
125788
  {
125728
125789
  //this.ChartSplashPaint.SetTitle(this.SplashTitle.MemberList);
@@ -134347,7 +134408,7 @@ function ScrollBarBGChart()
134347
134408
 
134348
134409
 
134349
134410
 
134350
- var HQCHART_VERSION="1.1.13477";
134411
+ var HQCHART_VERSION="1.1.13486";
134351
134412
 
134352
134413
  function PrintHQChartVersion()
134353
134414
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.13477";
8
+ var HQCHART_VERSION="1.1.13486";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -48874,17 +48874,55 @@ HQData.RequestFlowCapitalData=function(data,callback)
48874
48874
  callback(hqchartData);
48875
48875
  }
48876
48876
 
48877
- HQData.RequestRealtimeData=function(data,callback)
48877
+ HQData.RequestRealtimeData=function(data, callback)
48878
48878
  {
48879
48879
  data.PreventDefault=true;
48880
48880
  var symbol=data.Request.Data.symbol[0]; //请求的股票代码
48881
48881
 
48882
- console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`);
48882
+ if (data.Request.Data.symbol.length>1) //叠加股票
48883
+ {
48884
+ var hqchartData={ stock:[], code:0 };
48885
+ var arySymbol=data.Request.Data.symbol;
48886
+ for(var i=0;i<arySymbol.length;++i)
48887
+ {
48888
+ var symbol=arySymbol[i];
48889
+ if (i==0)
48890
+ {
48891
+ var stock=KLINE_1DAY_DATA.stock[0];
48892
+ stock.name=symbol;
48893
+ stock.symbol=symbol;
48894
+ hqchartData.stock.push(stock);
48895
+ }
48896
+ else
48897
+ {
48898
+ if (symbol=="399001.sz")
48899
+ {
48900
+ var stock=KLINE_1DAY_OVERLAY_DATA2.stock[0];
48901
+ stock.name=symbol;
48902
+ stock.symbol=symbol;
48903
+ hqchartData.stock.push(stock);
48904
+ }
48905
+ else
48906
+ {
48907
+ var stock=KLINE_1DAY_OVERLAY_DATA.stock[0];
48908
+ stock.name=symbol;
48909
+ stock.symbol=symbol;
48910
+ hqchartData.stock.push(stock);
48911
+ }
48912
+
48913
+ }
48914
+ }
48883
48915
 
48884
- var hqchartData=KLINE_1DAY_DATA;
48885
- hqchartData.stock[0].name=symbol;
48886
- hqchartData.stock[0].symbol=symbol;
48887
- callback(hqchartData);
48916
+ callback(hqchartData);
48917
+ }
48918
+ else
48919
+ {
48920
+ console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`);
48921
+ var hqchartData=KLINE_1DAY_DATA;
48922
+ hqchartData.stock[0].name=symbol;
48923
+ hqchartData.stock[0].symbol=symbol;
48924
+ callback(hqchartData);
48925
+ }
48888
48926
  }
48889
48927
 
48890
48928
 
@@ -48908,24 +48946,71 @@ HQData.RequestMinuteRealtimeData=function(data,callback)
48908
48946
  data.PreventDefault=true;
48909
48947
  var symbol=data.Request.Data.symbol[0]; //请求的股票代码
48910
48948
 
48911
- console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`);
48949
+ if (data.Request.Data.symbol.length>1) //叠加股票
48950
+ {
48951
+ var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
48952
+ hqchartData.overlay=[]; //叠加数据
48953
+ var arySymbol=data.Request.Data.symbol;
48954
+ for(var i=0;i<arySymbol.length;++i)
48955
+ {
48956
+ var symbol=arySymbol[i];
48957
+ if (i==0)
48958
+ {
48959
+ var kItem=hqchartData.data[0];
48960
+ var price=kItem[5];
48961
+ var value=Math.ceil(Math.random()*10)/1000*price;
48962
+ var bUp=Math.ceil(Math.random()*10)>=5;
48963
+
48964
+ if (bUp) price+=value;
48965
+ else price-=value;
48966
+ kItem[5]=price;
48967
+ kItem[3]=Math.max(price, kItem[3]);
48968
+ kItem[4]=Math.min(price, kItem[4]);
48912
48969
 
48913
- var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
48970
+ hqchartData.name=symbol;
48971
+ hqchartData.symbol=symbol;
48972
+ }
48973
+ else
48974
+ {
48975
+ var testData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA2));
48976
+ var kItem=testData.data[0];
48977
+ var price=kItem[5];
48978
+ var value=Math.ceil(Math.random()*10)/1000*price;
48979
+ var bUp=Math.ceil(Math.random()*10)>=5;
48980
+
48981
+ if (bUp) price+=value;
48982
+ else price-=value;
48983
+ kItem[5]=price;
48984
+ kItem[3]=Math.max(price, kItem[3]);
48985
+ kItem[4]=Math.min(price, kItem[4]);
48986
+ var stock={ data:testData.data, symbol:symbol, name:symbol };
48987
+ hqchartData.overlay.push(stock);
48988
+ }
48989
+ }
48914
48990
 
48915
- var kItem=hqchartData.data[0];
48916
- var price=kItem[5];
48917
- var value=Math.ceil(Math.random()*10)/1000*price;
48918
- var bUp=Math.ceil(Math.random()*10)>=5;
48919
-
48920
- if (bUp) price+=value;
48921
- else price-=value;
48922
- kItem[5]=price;
48923
- kItem[3]=Math.max(price, kItem[3]);
48924
- kItem[4]=Math.min(price, kItem[4]);
48991
+ callback(hqchartData);
48992
+ }
48993
+ else
48994
+ {
48995
+ console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`);
48996
+
48997
+ var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
48925
48998
 
48926
- hqchartData.name=symbol;
48927
- hqchartData.symbol=symbol;
48928
- callback(hqchartData);
48999
+ var kItem=hqchartData.data[0];
49000
+ var price=kItem[5];
49001
+ var value=Math.ceil(Math.random()*10)/1000*price;
49002
+ var bUp=Math.ceil(Math.random()*10)>=5;
49003
+
49004
+ if (bUp) price+=value;
49005
+ else price-=value;
49006
+ kItem[5]=price;
49007
+ kItem[3]=Math.max(price, kItem[3]);
49008
+ kItem[4]=Math.min(price, kItem[4]);
49009
+
49010
+ hqchartData.name=symbol;
49011
+ hqchartData.symbol=symbol;
49012
+ callback(hqchartData);
49013
+ }
48929
49014
  }
48930
49015
 
48931
49016
 
@@ -15541,12 +15541,13 @@ function AverageWidthFrame()
15541
15541
  if (item.Font != null) this.Canvas.font = item.Font;
15542
15542
  this.Canvas.fillStyle = item.TextColor;
15543
15543
  this.Canvas.textAlign = "left";
15544
+ var textHeight=this.Canvas.measureText("擎").width;
15544
15545
  var yText=y;
15545
15546
  if (y >= bottom - 2)
15546
15547
  {
15547
15548
  this.Canvas.textBaseline = 'bottom';
15548
15549
  }
15549
- else if (y <= top + 2)
15550
+ else if ((y-textHeight/2)<=top)
15550
15551
  {
15551
15552
  this.Canvas.textBaseline = 'top';
15552
15553
  yText+=this.YTextTopOffset;
@@ -15575,12 +15576,13 @@ function AverageWidthFrame()
15575
15576
  if (item.Font != null) this.Canvas.font = item.Font;
15576
15577
  this.Canvas.fillStyle = item.TextColor;
15577
15578
  this.Canvas.textAlign = "right";
15579
+ var textHeight=this.Canvas.measureText("擎").width;
15578
15580
  var yText=y;
15579
15581
  if (y >= bottom - 2)
15580
15582
  {
15581
15583
  this.Canvas.textBaseline = 'bottom';
15582
15584
  }
15583
- else if (y <= top + 2)
15585
+ else if (y-textHeight/2 <= top)
15584
15586
  {
15585
15587
  this.Canvas.textBaseline = 'top';
15586
15588
  yText+=this.YTextTopOffset;
@@ -75903,7 +75905,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
75903
75905
 
75904
75906
  //绑定数据
75905
75907
  this.UpdateMainData(bindData,lastDataCount);
75906
- this.BindInstructionIndexData(bindData); //执行指示脚本
75908
+ this.UpdateOverlayMinuteRealtimeData(data); //更新叠加股票数据
75909
+ this.BindInstructionIndexData(bindData); //执行指示脚本
75907
75910
 
75908
75911
  for(var i=0; i<this.Frame.SubFrame.length; ++i)
75909
75912
  {
@@ -80674,7 +80677,7 @@ KLineChartContainer.JsonDataToMinuteRealtimeDataV2=function(data,symbol)
80674
80677
  var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7, time = 8, position=9;
80675
80678
  var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;
80676
80679
  var yClose=null;
80677
-
80680
+ var aryMinuteData=[];
80678
80681
  for (var i = 0; i < overlayData.data.length; ++i)
80679
80682
  {
80680
80683
  var item = new HistoryData();
@@ -92922,6 +92925,7 @@ var MARKET_SUFFIX_NAME=
92922
92925
  SHFE: '.SHF', //上期所 (Shanghai Futures Exchange) | 上期所-能源
92923
92926
  SHFE2:'.SHFE', //上期所 (Shanghai Futures Exchange) | 上期所-能源
92924
92927
  CFFEX: '.CFE', //中期所 (China Financial Futures Exchange)
92928
+ CFFEX2:'.CFFEX', //中期所 (China Financial Futures Exchange)
92925
92929
  DCE: '.DCE', //大连商品交易所(Dalian Commodity Exchange)
92926
92930
  CZCE: '.CZC', //郑州期货交易所
92927
92931
  GZFE:".GZFE", //广州期货交易所
@@ -93133,6 +93137,7 @@ var MARKET_SUFFIX_NAME=
93133
93137
  {
93134
93138
  if (!upperSymbol) return false;
93135
93139
  if (upperSymbol.indexOf(this.CFFEX) > 0) return true;
93140
+ if (upperSymbol.indexOf(this.CFFEX2) > 0) return true;
93136
93141
 
93137
93142
  return false;
93138
93143
  },
@@ -125683,6 +125688,11 @@ function JSReportChartContainer(uielement)
125683
125688
  this.BlockData=new Map();
125684
125689
  }
125685
125690
 
125691
+ this.ClearMapStockData=function()
125692
+ {
125693
+ this.MapStockData=new Map();
125694
+ }
125695
+
125686
125696
  this.ResetSortStatus=function()
125687
125697
  {
125688
125698
  this.SortInfo.Field=-1;
@@ -125767,6 +125777,57 @@ function JSReportChartContainer(uielement)
125767
125777
  this.RequestMemberListData();
125768
125778
  }
125769
125779
 
125780
+ //设置全部的数据
125781
+ this.SetFullData=function(data)
125782
+ {
125783
+ this.ClearMapStockData();
125784
+ this.ClearData();
125785
+ this.ResetReportStatus();
125786
+ this.ResetSortStatus();
125787
+ this.ResetReportSelectStatus();
125788
+
125789
+ //缓存所有数据
125790
+ var arySymbol=[];
125791
+ if (IFrameSplitOperator.IsNonEmptyArray(data.data))
125792
+ {
125793
+ //0=证券代码 1=股票名称
125794
+ for(var i=0;i<data.data.length;++i)
125795
+ {
125796
+ var item=data.data[i];
125797
+ var symbol=item[0];
125798
+ var stock=null;
125799
+ if (this.MapStockData.has(symbol))
125800
+ {
125801
+ stock=this.MapStockData.get(symbol);
125802
+ }
125803
+ else
125804
+ {
125805
+ stock=new HQReportItem();
125806
+ stock.OriginalSymbol=symbol;
125807
+ this.MapStockData.set(symbol, stock);
125808
+ }
125809
+
125810
+ stock.Symbol=this.GetSymbolNoSuffix(symbol);
125811
+ stock.Name=item[1];
125812
+ this.ReadStockJsonData(stock, item);
125813
+
125814
+ arySymbol.push(symbol);
125815
+ }
125816
+ }
125817
+
125818
+ //设置显示数据
125819
+ if (IFrameSplitOperator.IsNonEmptyArray(arySymbol))
125820
+ {
125821
+ for(var i=0;i<arySymbol.length;++i)
125822
+ {
125823
+ this.Data.Data.push(arySymbol[i]);
125824
+ this.SourceData.Data.push(arySymbol[i]);
125825
+ }
125826
+ }
125827
+
125828
+ this.Draw();
125829
+ }
125830
+
125770
125831
  this.RequestMemberListData=function()
125771
125832
  {
125772
125833
  //this.ChartSplashPaint.SetTitle(this.SplashTitle.MemberList);
@@ -138288,7 +138349,7 @@ function HQChartScriptWorker()
138288
138349
 
138289
138350
 
138290
138351
 
138291
- var HQCHART_VERSION="1.1.13477";
138352
+ var HQCHART_VERSION="1.1.13486";
138292
138353
 
138293
138354
  function PrintHQChartVersion()
138294
138355
  {