hqchart 1.1.13409 → 1.1.13436

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.
@@ -11,7 +11,8 @@ HQData.RequestRealtimeData(data,callback);break;case'KLineChartContainer::Reques
11
11
  HQData.RequestFlowCapitalData(data,callback);break;case'KLineChartContainer::ReqeustHistoryMinuteData'://分钟全量数据下载
12
12
  HQData.RequestHistoryMinuteData(data,callback);break;case'KLineChartContainer::RequestMinuteRealtimeData'://分钟增量数据更新
13
13
  HQData.RequestMinuteRealtimeData(data,callback);break;case"JSSymbolData::GetVariantData"://额外的变量数据
14
- HQData.RequestIndexVariantData(data,callback);break;case"JSSymbolData::GetOtherSymbolData":HQData.RequestOtherSymbolData(data,callback);break;case"AnnouncementInfo::RequestData":HQData.AnnouncementInfo_RequestData(data,callback);break;case"JSSymbolData::GetLatestData":HQData.RequestLatestData(data,callback);break;case"PforecastInfo::RequestData":HQData.PforecastInfo_RequestData(data,callback);break;case"InvestorInfo::RequestData":HQData.InvestorInfo_RequestData(data,callback);break;case"ResearchInfo::RequestData":break;case"BlockTrading::RequestData":HQData.BlockTrading_RequestData(data,callback);break;case"TradeDetail::RequestData":HQData.TradeDetail_RequestData(data,callback);break;}};HQData.RequestMinuteData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol[0];//请求的股票代码
14
+ HQData.RequestIndexVariantData(data,callback);break;case"JSSymbolData::GetOtherSymbolData":HQData.RequestOtherSymbolData(data,callback);break;case"AnnouncementInfo::RequestData":HQData.AnnouncementInfo_RequestData(data,callback);break;case"JSSymbolData::GetLatestData":HQData.RequestLatestData(data,callback);break;case"KLineChartContainer::RequestOverlayHistoryData"://叠加股票
15
+ HQData.RequestOverlayHistoryData(data,callback);break;case"KLineChartContainer::RequestOverlayHistoryMinuteData":HQData.RequestOverlayHistoryMinuteData(data,callback);break;case"PforecastInfo::RequestData":HQData.PforecastInfo_RequestData(data,callback);break;case"InvestorInfo::RequestData":HQData.InvestorInfo_RequestData(data,callback);break;case"ResearchInfo::RequestData":break;case"BlockTrading::RequestData":HQData.BlockTrading_RequestData(data,callback);break;case"TradeDetail::RequestData":HQData.TradeDetail_RequestData(data,callback);break;}};HQData.RequestMinuteData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol[0];//请求的股票代码
15
16
  var callcation=data.Request.Data.callcation;//集合竞价
16
17
  console.log("[HQData::RequestMinuteData] Symbol="+symbol);var srcStock=MINUTE_1DAY_DATA.stock[0];var stockItem={date:srcStock.date,minute:srcStock.minute,yclose:srcStock.yclose,symbol:srcStock.symbol,name:srcStock.name};if(callcation.Before){var before=[//[交易时间, 价格,成交量, 成交金额, 日期(可选,YYYYMMDD)],
17
18
  [915,srcStock.yclose,0,0],[916,srcStock.yclose+0.01,0,0],[917,srcStock.yclose+0.03,0,0],[918,srcStock.yclose+0.02,0,0],[919,srcStock.yclose+0.02,0,0],[920,srcStock.yclose+0.01,0,0],[921,srcStock.yclose,0,0],[922,srcStock.yclose-0.02,0,0],[923,srcStock.yclose-0.03,0,0],[924,srcStock.yclose,0,0],[925,srcStock.yclose,0,0]];var beforeinfo={totalcount:11,ver:1.0};stockItem.before=before;stockItem.beforeinfo=beforeinfo;}var hqchartData={code:0,stock:[stockItem]};callback(hqchartData);};HQData.RequestMinuteDaysData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol;//请求的股票代码
@@ -24,4 +25,4 @@ console.log("[HQData::RequestRealtimeData] Symbol="+symbol);var hqchartData=KLIN
24
25
  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];//请求的股票代码
25
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;//变量名称
26
27
  if(varName=="FROMOPEN"){var hqchartData={};//单数据
27
- 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);};/*暴露外部用的方法*/exports.default={HQData:HQData};
28
+ 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};
@@ -59,7 +59,8 @@ HISTORY_MINUTE_ID:103,//历史分钟 走势图
59
59
  KLINE_DAY_ID:0,KLINE_WEEK_ID:1,KLINE_TWOWEEK_ID:21,KLINE_MONTH_ID:2,KLINE_QUARTER_ID:9,KLINE_YEAR_ID:3,KLINE_MINUTE_ID:4,KLINE_5_MINUTE_ID:5,KLINE_15_MINUTE_ID:6,KLINE_30_MINUTE_ID:7,KLINE_60_MINUTE_ID:8};//自定义的指标脚本
60
60
  function CustomIndexScript(){this.DataMap=new _map2.default();//key=指标id, value=data {ID:, Name:指标名字, Description:指标描述信息 Args:参数 ......}
61
61
  this.Get=function(id){if(!this.DataMap.has(id))return null;return this.DataMap.get(id);};this.Add=function(data){this.DataMap.set(data.ID,data);};}var g_CustomIndex=new CustomIndexScript();function JSIndexScript(){this.DataMap=new _map2.default([['MA',this.MA],['均线',this.MA],["MA4",this.MA4],["MA5",this.MA5],["MA6",this.MA6],["MA7",this.MA7],["MA8",this.MA8],['BOLL',this.BOLL],['BOLL副图',this.BOLL2],['BBI',this.BBI],['DKX',this.DKX],['MIKE',this.MIKE],['PBX',this.PBX],['ENE',this.ENE],['MACD',this.MACD],['KDJ',this.KDJ],["MACD2",this.MACD2],['VOL',this.VOL],['VOL2',this.VOL2],["VOL_OVERLAY",this.VOL_OVERLAY],['RSI',this.RSI],['BRAR',this.BRAR],['WR',this.WR],['BIAS',this.BIAS],['OBV',this.OBV],['DMI',this.DMI],['CR',this.CR],['PSY',this.PSY],['CCI',this.CCI],['DMA',this.DMA],['TRIX',this.TRIX],['VR',this.VR],['EMV',this.EMV],['ROC',this.ROC],['MTM',this.MTM],['FSL',this.FSL],['CYR',this.CYR],['MASS',this.MASS],['WAD',this.WAD],['CHO',this.CHO],['ADTM',this.ADTM],['HSL',this.HSL],['BIAS36',this.BIAS36],['BIAS_QL',this.BIAS_QL],['DPO',this.DPO],['OSC',this.OSC],['ATR',this.ATR],['NVI',this.NVI],['PVI',this.PVI],['UOS',this.UOS],['CYW',this.CYW],['LON',this.LON],['NDB',this.NDB],['SKDJ',this.SKDJ],['KD',this.KD],['FKX',this.FKX],['DKCOL',this.DKCOL],['UDL',this.UDL],['MFI',this.MFI],['LWR',this.LWR],['MARSI',this.MARSI],['CYD',this.CYD],['CYF',this.CYF],['TAPI',this.TAPI],['VMACD',this.VMACD],['QACD',this.QACD],['VPT',this.VPT],['WVAD',this.WVAD],['DBQR',this.DBQR],['JS',this.JS],['CYE',this.CYE],['QR',this.QR],['GDX',this.GDX],['JLHB',this.JLHB],['PCNT',this.PCNT],['BTX',this.BTX],['AMO',this.AMO],['VRSI',this.VRSI],['HSCOL',this.HSCOL],['DBQRV',this.DBQRV],['DBLB',this.DBLB],['ACD',this.ACD],['EXPMA',this.EXPMA],['EXPMA_S',this.EXPMA_S],['HMA',this.HMA],['LMA',this.LMA],['VMA',this.VMA],['AMV',this.AMV],['BBIBOLL',this.BBIBOLL],['ALLIGAT',this.ALLIGAT],['ZX',this.ZX],['XS',this.XS],['XS2',this.XS2],['SG-XDT',this.SG_XDT],['SG-SMX',this.SG_SMX],['SG-LB',this.SG_LB],['SG-PF',this.SG_PF],['RAD',this.RAD],['SHT',this.SHT],['ZLJC',this.ZLJC],['ZLMM',this.ZLMM],['SLZT',this.SLZT],['ADVOL',this.ADVOL],['CYC',this.CYC],['CYS',this.CYS],['CYQKL',this.CYQKL],['SCR',this.SCR],['ASR',this.ASR],['SAR',this.SAR],['TJCJL',this.TJCJL],['量比',this.VOLRate],['平均K线',this.HeikinAshi],["ADL",this.ADL],["SQJZ",this.SQJZ],["XT",this.XT],["CFJT",this.CFJT],["CYX",this.CYX],["WAVE",this.WAVE],['VOL-TDX',this.VOL_TDX],['EMPTY',this.EMPTY],//什么都不显示的指标
62
- ['神奇九转',this.NineTurns],['EMA',this.EMA3],['EMA4',this.EMA4],['EMA5',this.EMA5],['EMA6',this.EMA6],["ICHIMOKU",this.ICHIMOKU],["CDP-STD",this.CDP_STD],["TBP-STD",this.TBP_STD],["ADX",this.ADX],//通达信特色指标
62
+ ['神奇九转',this.NineTurns],['EMA',this.EMA3],['EMA4',this.EMA4],['EMA5',this.EMA5],['EMA6',this.EMA6],["ICHIMOKU",this.ICHIMOKU],["CDP-STD",this.CDP_STD],["TBP-STD",this.TBP_STD],["ADX",this.ADX],["持仓量",this.VOL_POSITION],//成交量+持仓量
63
+ //通达信特色指标
63
64
  ["散户线",this.ShareholderCount],["NXTS",this.NXTS],["FKX",this.FKX],["两融资金",this.Margin4],["ZSDB",this.ZSDB],['CJL2',this.CJL],//期货持仓量
64
65
  ['ASI',this.ASI],['DC',this.DC],['DEMA',this.DEMA],["VWAP",this.VWAP],//指南针
65
66
  ["ZNZ_CBAND",this.ZNZ_CBAND],["ZNZ_RPY2",this.ZNZ_RPY2],["ZNZ_RPY1",this.ZNZ_RPY1],['飞龙四式',this.Dragon4_Main],['飞龙四式-附图',this.Dragon4_Fig],['资金分析',this.FundsAnalysis],['融资占比',this.MarginProportion],['负面新闻',this.NewsNegative],['涨跌趋势',this.UpDownAnalyze],['北上资金',this.HK2SHSZ],['股东人数',this.ShareHolder],["两融余额",this.Margin2],["两融余额2",this.Margin3],//外包指标
@@ -868,7 +869,9 @@ DRAWKLINE(HHIGH,HOPEN,HLOW,HCLOSE);"};return data;};JSIndexScript.prototype.ADL=
868
869
  MAADL:MA(ADL,M);"};return data;};JSIndexScript.prototype.EMPTY=function(){var data={Name:'',Description:'空指标',IsMainIndex:true,Args:[],Script://脚本
869
870
  'VAR2:=C;'};return data;};JSIndexScript.prototype.CJL=function(){var data={Name:'CJL',Description:'期货持仓量',IsMainIndex:false,Args:[],Script://脚本
870
871
  "成交量:VOL,VOLSTICK;\n\
871
- 持仓量:VOLINSTK,LINEOVERLAY;"};return data;};JSIndexScript.prototype.ASI=function(){var data={Name:'ASI',Description:'振动升降指标',IsMainIndex:false,Args:[{Name:'N1',Value:6}],Script://脚本
872
+ 持仓量:VOLINSTK,LINEOVERLAY;"};return data;};JSIndexScript.prototype.VOL_POSITION=function(){var data={Name:'持仓量',Description:'持仓量',IsMainIndex:false,Args:[],Script://脚本
873
+ "成交量:VOL,VOLSTICK;\n\
874
+ 持仓量:VOLINSTK,SINGLELINE;"};return data;};JSIndexScript.prototype.ASI=function(){var data={Name:'ASI',Description:'振动升降指标',IsMainIndex:false,Args:[{Name:'N1',Value:6}],Script://脚本
872
875
  "X_1:=REF(CLOSE,1);\n\
873
876
  X_2:=ABS(HIGH-X_1);\n\
874
877
  X_3:=ABS(LOW-X_1);\n\
@@ -1435,7 +1438,7 @@ ON_RCLICK_TREPORT_HEADER:125,//右键点击T型报价表头
1435
1438
  ON_TREPORT_LOCAL_SORT:126,//T型报价列表本地排序
1436
1439
  ON_CLICK_TREPORT_ROW:127,//左键点击点击T型报价列表
1437
1440
  ON_CHANGE_INDEX:150,//切换指标
1438
- ON_MENU_COMMAND:151,//菜单时间回调
1441
+ ON_MENU_COMMAND:151,//菜单事件回调
1439
1442
  ON_CREATE_RIGHT_MENU:152,//创建右键菜单
1440
1443
  ON_FORMAT_CALL_AUCTION_INDEX_TITLE:153//集合竞价指标窗口标题内容
1441
1444
  };var JSCHART_OPERATOR_ID={OP_SCROLL_LEFT:1,//往左移动
@@ -2982,7 +2985,7 @@ if(ChartData.IsDayPeriod(period,false))return this.GetDayPeriodData(period);//if
2982
2985
  if(ChartData.IsMinutePeriod(period,false))return this.GetMinutePeriodData(period);};//复权 0 不复权 1 前复权 2 后复权
2983
2986
  this.GetRightData=function(right,option){var result=[];if(this.Data.length<=0)return result;if(option&&option.AlgorithmType==1)//使用复权因子计算
2984
2987
  {for(var i=0;i<this.Data.length;++i){var item=this.Data[i];var seed=right==1?item.BFactor:item.AFactor;result[i]=HistoryData.CopyRight(item,seed);}return result;}if(right==1){var index=this.Data.length-1;var seed=1;//复权系数
2985
- var yClose=this.Data[index].YClose;result[index]=HistoryData.Copy(this.Data[index]);for(--index;index>=0;--index){if(yClose!=this.Data[index].Close)break;var newItem=HistoryData.Copy(this.Data[index]);newItem.RightSeed=seed;result[index]=newItem;yClose=this.Data[index].YClose;}for(;index>=0;--index){var value=this.Data[index].Close;if(yClose!=value&&value!=0)seed*=yClose/value;var newItem=HistoryData.CopyRight(this.Data[index],seed);newItem.RightSeed=seed;result[index]=newItem;yClose=this.Data[index].YClose;}}else if(right==2){var index=0;var seed=1;var close=this.Data[index].Close;result[index]=HistoryData.Copy(this.Data[index]);for(++index;index<this.Data.length;++index){if(close!=this.Data[index].YClose)break;var newItem=HistoryData.Copy(this.Data[index]);newItem.RightSeed=seed;result[index]=newItem;close=this.Data[index].Close;}for(;index<this.Data.length;++index){if(close!=this.Data[index].YClose)seed*=close/this.Data[index].YClose;var newItem=HistoryData.CopyRight(this.Data[index],seed);newItem.RightSeed=seed;result[index]=newItem;close=this.Data[index].Close;}}return result;};this.GetRightDate=this.GetRightData;//叠加数据和主数据拟合,去掉主数据没有日期的数据
2988
+ var yClose=this.Data[index].YClose;result[index]=HistoryData.Copy(this.Data[index]);result[index].RightSeed=seed;for(--index;index>=0;--index){if(yClose!=this.Data[index].Close)break;var newItem=HistoryData.Copy(this.Data[index]);newItem.RightSeed=seed;result[index]=newItem;yClose=this.Data[index].YClose;}for(;index>=0;--index){var value=this.Data[index].Close;if(yClose!=value&&value!=0)seed*=yClose/value;var newItem=HistoryData.CopyRight(this.Data[index],seed);newItem.RightSeed=seed;result[index]=newItem;yClose=this.Data[index].YClose;}}else if(right==2){var index=0;var seed=1;var close=this.Data[index].Close;result[index]=HistoryData.Copy(this.Data[index]);result[index].RightSeed=seed;for(++index;index<this.Data.length;++index){if(close!=this.Data[index].YClose)break;var newItem=HistoryData.Copy(this.Data[index]);newItem.RightSeed=seed;result[index]=newItem;close=this.Data[index].Close;}for(;index<this.Data.length;++index){if(close!=this.Data[index].YClose)seed*=close/this.Data[index].YClose;var newItem=HistoryData.CopyRight(this.Data[index],seed);newItem.RightSeed=seed;result[index]=newItem;close=this.Data[index].Close;}}return result;};this.GetRightDate=this.GetRightData;//叠加数据和主数据拟合,去掉主数据没有日期的数据
2986
2989
  this.GetOverlayData=function(overlayData,bApiPeriod){var result=[];for(var i=0,j=0;i<this.Data.length;){var date=this.Data[i].Date;if(j>=overlayData.length){result[i]=new HistoryData();result[i].Date=date;++i;continue;;}var overlayDate=overlayData[j].Date;if(overlayDate==date){result[i]=new HistoryData();result[i].Date=overlayData[j].Date;result[i].YClose=overlayData[j].YClose;result[i].Open=overlayData[j].Open;result[i].High=overlayData[j].High;result[i].Low=overlayData[j].Low;result[i].Close=overlayData[j].Close;result[i].Vol=overlayData[j].Vol;result[i].Amount=overlayData[j].Amount;//涨跌家数数据
2987
2990
  result[i].Stop=overlayData[j].Stop;result[i].Up=overlayData[j].Up;result[i].Down=overlayData[j].Down;result[i].Unchanged=overlayData[j].Unchanged;++j;++i;}else if(overlayDate<date){++j;}else{result[i]=new HistoryData();result[i].Date=date;++i;}}return result;};this.GetOverlayMinuteData=function(overlayData,bApiPeriod){var result=[];for(var i=0,j=0;i<this.Data.length;){var date=this.Data[i].Date;var time=this.Data[i].Time;if(j>=overlayData.length){result[i]=new HistoryData();result[i].Date=date;result[i].Time=time;++i;continue;;}var overlayDate=overlayData[j].Date;var overlayTime=overlayData[j].Time;if(overlayDate==date&&overlayTime==time){result[i]=new HistoryData();result[i].Date=overlayData[j].Date;result[i].Time=overlayData[j].Time;result[i].YClose=overlayData[j].YClose;result[i].Open=overlayData[j].Open;result[i].High=overlayData[j].High;result[i].Low=overlayData[j].Low;result[i].Close=overlayData[j].Close;result[i].Vol=overlayData[j].Vol;result[i].Amount=overlayData[j].Amount;//涨跌家数数据
2988
2991
  result[i].Stop=overlayData[j].Stop;result[i].Up=overlayData[j].Up;result[i].Down=overlayData[j].Down;result[i].Unchanged=overlayData[j].Unchanged;++j;++i;}else if(overlayDate<date||overlayDate==date&&overlayTime<time){++j;}else{result[i]=new HistoryData();result[i].Date=date;result[i].Time=time;++i;}}return result;};/*
@@ -3711,7 +3714,12 @@ this.DrawStraightLine=function(){var firstData=this.GetFirstVaildIndex();if(!fir
3711
3714
  var bFirstPoint=true;var drawCount=0,rate=0;for(var i=firstData.DataOffset,j=firstData.Index;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(value==null){if(drawCount>0)this.Canvas.stroke();bFirstPoint=true;drawCount=0;continue;}var x=this.ChartFrame.GetXFromIndex(j);var diff=value-firstData.OverlayValue;if(firstData.OverlayValue!=0)rate=1+diff/Math.abs(firstData.OverlayValue);else rate=1+diff;var fixedValue=firstData.MainValue*rate;//var fixedValue=value/firstData.OverlayValue*firstData.MainValue;
3712
3715
  var y=this.GetYFromData(fixedValue);if(x>chartright)break;if(bFirstPoint){this.Canvas.beginPath();if(bHScreen)this.Canvas.moveTo(y,x);//横屏坐标轴对调
3713
3716
  else this.Canvas.moveTo(x,y);bFirstPoint=false;}else{if(bHScreen)this.Canvas.lineTo(y,x);else this.Canvas.lineTo(x,y);}++drawCount;}if(drawCount>0)this.Canvas.stroke();this.Canvas.restore();};this.GetMaxMin=function(){var xPointCount=this.ChartFrame.XPointCount;var range={};range.Min=null;range.Max=null;var firstData=this.GetFirstVaildIndex();if(!firstData)return range;for(var i=firstData.DataOffset,j=firstData.Index;i<this.Data.Data.length&&j<xPointCount;++i,++j){var overlayValue=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(overlayValue))continue;var diff=overlayValue-firstData.OverlayValue;if(firstData.OverlayValue!=0)rate=1+diff/Math.abs(firstData.OverlayValue);else rate=1+diff;var value=firstData.MainValue*rate;//var value=overlayValue/firstData.OverlayValue*firstData.MainValue;
3714
- if(range.Max==null)range.Max=value;if(range.Min==null)range.Min=value;if(range.Max<value)range.Max=value;if(range.Min>value)range.Min=value;}return range;};}//彩色线段
3717
+ if(range.Max==null)range.Max=value;if(range.Min==null)range.Min=value;if(range.Max<value)range.Max=value;if(range.Min>value)range.Min=value;}return range;};}//独立线段
3718
+ function ChartSingleLine(){this.newMethod=ChartLine;//派生
3719
+ this.newMethod();delete this.newMethod;this.ClassName='ChartSingleLine';//类名
3720
+ this.MaxMin=null;//当前的显示范围
3721
+ this.Draw=function(){this.MaxMin=null;if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!this.Data||!this.Data.Data)return;this.MaxMin=this.GetCurrentMaxMin();if(!this.MaxMin)return;if(!IFrameSplitOperator.IsNumber(this.MaxMin.Max)||!IFrameSplitOperator.IsNumber(this.MaxMin.Min))return;switch(this.DrawType){default:return this.DrawStraightLine();}};//获取当前页的最大最小值
3722
+ this.GetCurrentMaxMin=function(){var xPointCount=this.ChartFrame.XPointCount;var range={Max:null,Min:null};for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(value))continue;if(range.Max==null)range.Max=value;if(range.Min==null)range.Min=value;if(range.Max<value)range.Max=value;if(range.Min>value)range.Min=value;}return range;};this.GetMaxMin=function(){return{Max:null,Min:null};};this.GetYFromData=function(value){var bHScreen=this.ChartFrame.IsHScreen===true;if(bHScreen){if(value<=this.MaxMin.Min)return this.ChartBorder.GetLeftEx();if(value>=this.MaxMin.Max)return this.ChartBorder.GetRightEx();var width=this.ChartBorder.GetWidthEx()*(value-this.MaxMin.Min)/(this.MaxMin.Max-this.MaxMin.Min);return this.ChartBorder.GetLeftEx()+width;}else{if(value<=this.MaxMin.Min)return this.ChartBorder.GetBottomEx();if(value>=this.MaxMin.Max)return this.ChartBorder.GetTopEx();var height=this.ChartBorder.GetHeightEx()*(value-this.MaxMin.Min)/(this.MaxMin.Max-this.MaxMin.Min);return this.ChartBorder.GetBottomEx()-height;}};}//彩色线段
3715
3723
  function ChartPartLine(){this.newMethod=IChartPainting;//派生
3716
3724
  this.newMethod();delete this.newMethod;this.ClassName='ChartPartLine';//类名
3717
3725
  this.LineWidth;//线段宽度
@@ -3896,7 +3904,7 @@ this.Source;//原始分钟数据
3896
3904
  this.PtInChart=this.PtInLine;this.DrawSelectedStatus=this.DrawLinePoint;this.PtInChart=this.PtInLine;this.DrawSelectedStatus=this.DrawLinePoint;this.DayOffset;this.LastPoint={};//最后一个点的信息 {X, Y, Data:, Value:, DateTime:YYYYMMDDHHMMSS }
3897
3905
  this.FFMChart;//定制图形
3898
3906
  this.DrawType=0;//0=走势图 14=定制图形
3899
- this.UpdateLastPoint=function(dateTime,x,y,item){if(IFrameSplitOperator.IsNumber(this.LastPoint.DateTime)&&this.LastPoint.DateTime>dateTime)return;this.LastPoint.DateTime=dateTime;this.LastPoint.X=x;this.LastPoint.Y=y;this.LastPoint.Data=item;this.LastPoint.Value=item.Value;};this.Draw=function(){if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}this.LastPoint={};if(!this.IsShow)return;if(this.DrawType==14){if(this.FFMChart&&this.FFMChart.Draw)this.FFMChart.Draw(this);return;}var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();if(isHScreen===true)chartright=this.ChartBorder.GetBottom();var xPointCount=this.ChartFrame.XPointCount;var minuteCount=this.ChartFrame.MinuteCount;var bottom=this.ChartBorder.GetBottomEx();var left=this.ChartBorder.GetLeftEx();var data=this.Data;this.DrawBeforeOpen();//盘前
3907
+ this.UpdateLastPoint=function(dateTime,x,y,item){if(IFrameSplitOperator.IsNumber(this.LastPoint.DateTime)&&this.LastPoint.DateTime>dateTime)return;this.LastPoint.DateTime=dateTime;this.LastPoint.X=x;this.LastPoint.Y=y;this.LastPoint.Data=item;this.LastPoint.Value=item.Value;};this.Draw=function(){if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}this.LastPoint={};if(!this.IsShow)return;if(this.DrawType==14){if(this.FFMChart&&this.FFMChart.Draw)this.FFMChart.Draw(this);return;}var isHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();if(isHScreen===true)chartright=this.ChartBorder.GetBottom();var xPointCount=this.ChartFrame.XPointCount;var minuteCount=this.ChartFrame.MinuteCount;var bottom=this.ChartBorder.GetBottom();var left=this.ChartBorder.GetLeft();var data=this.Data;this.DrawBeforeOpen();//盘前
3900
3908
  this.DrawMultiDayBeforeOpen();if(this.IsShowLead)this.DrawLead();//领先指标
3901
3909
  if(!data)return;var bFirstPoint=true;var ptFirst={};//第1个点
3902
3910
  var drawCount=0;var pointCount=0;this.Canvas.save();if(IFrameSplitOperator.IsPlusNumber(this.LineWidth>0))this.Canvas.lineWidth=this.LineWidth;for(var i=data.DataOffset,j=0;i<data.Data.length&&j<xPointCount;++i,++j){var value=null;value=data.Data[i];++pointCount;if(value==null)continue;var x=this.ChartFrame.GetXFromIndex(j);var y=this.ChartFrame.GetYFromData(value);if(bFirstPoint){this.Canvas.strokeStyle=this.Color;this.Canvas.beginPath();if(isHScreen)this.Canvas.moveTo(y,x);else this.Canvas.moveTo(x,y);bFirstPoint=false;ptFirst={X:x,Y:y};}else{if(isHScreen)this.Canvas.lineTo(y,x);else this.Canvas.lineTo(x,y);}if(this.Source){var item=this.Source.Data[i];var dateTime=item.Date*1000000+item.Time*100;this.UpdateLastPoint(dateTime,x,y,{Value:value,Index:i,Date:item.Date,Time:item.Time,Type:0,Explain:"盘中"});}++drawCount;if(pointCount>=minuteCount)//上一天的数据和这天地数据线段要断开
@@ -11186,6 +11194,7 @@ if(item.Type==Syntax.ExpressionStatement&&item.Expression){if(item.Expression.Ty
11186
11194
  {var _outVar4=item.Expression.Value;if(IFrameSplitOperator.IsString(_outVar4)&&_outVar4.indexOf("$")>0)_outVar4=this.SymbolData.GetOtherSymolCacheData({Literal:_outVar4});varName="__temp_li_"+i+"__";var type=0;if(!Array.isArray(_outVar4))_outVar4=this.SingleDataToArrayData(_outVar4);this.OutVarTable.push({Name:varName,Data:_outVar4,Type:type,NoneName:true});}else if(item.Expression.Type==Syntax.BinaryExpression){var varName="__temp_b_"+i+"__";var _outVar5=item.Expression.Out;var type=0;if(!Array.isArray(_outVar5))_outVar5=this.SingleDataToArrayData(_outVar5);this.OutVarTable.push({Name:varName,Data:_outVar5,Type:type,NoneName:true});}else if(item.Expression.Type==Syntax.LogicalExpression)//逻辑语句 如 T1 AND T2
11187
11195
  {var varName="__temp_l_"+i+"__";var _outVar6=item.Expression.Out;var type=0;if(!Array.isArray(_outVar6))_outVar6=this.SingleDataToArrayData(_outVar6);this.OutVarTable.push({Name:varName,Data:_outVar6,Type:type,NoneName:true});}else if(item.Expression.Type==Syntax.UnaryExpression){var varName="__temp_u_"+i+"__";var varInfo={};if(this.ReadUnaryExpression(item.Expression,varInfo)){var type=0;this.OutVarTable.push({Name:varName,Data:varInfo.OutVar,Type:type,NoneName:true});}}else if(item.Expression.Type==Syntax.MemberExpression)//MA.MA2
11188
11196
  {var outVar=this.ReadMemberVariable(item.Expression);if(outVar){var type=0;var varName="__temp_di_"+i+"__";if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);this.OutVarTable.push({Name:varName,Data:outVar,Type:type,NoneName:true});}}else if(item.Expression.Type==Syntax.SequenceExpression){var _varName3=void 0;var _draw3=void 0;var color=void 0,upColor=void 0,downColor=void 0,stickType=void 0;var lineWidth=void 0;var colorStick=false;var pointDot=false;var upDownDot=false;var circleDot=false;var lineStick=false;var stick=false;var volStick=false;var lineArea=false;var stepLine=false;var isShow=true;var isExData=false;var isDotLine=false;var isOverlayLine=false;//叠加线
11197
+ var isSingleLine=false;//独立线段
11189
11198
  var isNoneName=false;var isShowTitle=true;//显示在位置之上,对于DRAWTEXT和DRAWNUMBER等函数有用,放在语句的最后面(不能与LINETHICK等函数共用),比如:
11190
11199
  //DRAWNUMBER(CLOSE>OPEN,HIGH,CLOSE),DRAWABOVE;
11191
11200
  var isDrawAbove=false;var isDrawCenter=false;var isDrawBelow=false;//VALIGN0,VALIGN1,VALIGN2 设置文字垂直对齐方式(上中下)
@@ -11193,7 +11202,7 @@ var isDrawAbove=false;var isDrawCenter=false;var isDrawBelow=false;//VALIGN0,VAL
11193
11202
  var drawAlign=-1,drawVAlign=-1;var fontSize=-1;var bgConfig=null;//背景设置
11194
11203
  var vLineConfig=null;var isFirstDraw=null;var xOffset=null,yOffset=null;var klineType=null;for(var _j14=0;_j14<item.Expression.Expression.length;++_j14){var itemExpression=item.Expression.Expression[_j14];if(itemExpression.Type==Syntax.AssignmentExpression&&itemExpression.Operator==':'&&itemExpression.Left){if(_j14==0){_varName3=itemExpression.Left.Name;var _varValue=this.VarTable.get(_varName3);if(this.VarDrawTable.has(_varName3))//绘图函数赋值
11195
11204
  {_draw3=this.VarDrawTable.get(_varName3);}else if(!Array.isArray(_varValue)){_varValue=this.SingleDataToArrayData(_varValue);this.VarTable.set(_varName3,_varValue);//把常量放到变量表里
11196
- }}else{}}else if(itemExpression.Type==Syntax.Identifier){var _value3=itemExpression.Name;if(_value3==='COLORSTICK')colorStick=true;else if(_value3==='POINTDOT')pointDot=true;else if(_value3==='CIRCLEDOT')circleDot=true;else if(_value3==='DOTLINE')isDotLine=true;else if(_value3=="UPDOWNDOT")upDownDot=true;else if(_value3==='LINESTICK')lineStick=true;else if(_value3==='STICK')stick=true;else if(_value3==='VOLSTICK')volStick=true;else if(_value3=="LINEAREA")lineArea=true;else if(_value3==="DRAWABOVE")isDrawAbove=true;else if(_value3==="DRAWCENTER")isDrawCenter=true;else if(_value3=="DRAWBELOW")isDrawBelow=true;else if(_value3=="STEPLINE")stepLine=true;else if(_value3.indexOf('COLOR')==0)color=_value3;else if(_value3.indexOf("RGBX")==0&&_value3.length==10)color=_value3;//RGBX+“RRGGBB”
11205
+ }}else{}}else if(itemExpression.Type==Syntax.Identifier){var _value3=itemExpression.Name;if(_value3==='COLORSTICK')colorStick=true;else if(_value3==='POINTDOT')pointDot=true;else if(_value3==='CIRCLEDOT')circleDot=true;else if(_value3==='DOTLINE')isDotLine=true;else if(_value3=="UPDOWNDOT")upDownDot=true;else if(_value3==='LINESTICK')lineStick=true;else if(_value3==='STICK')stick=true;else if(_value3==='VOLSTICK')volStick=true;else if(_value3=="LINEAREA")lineArea=true;else if(_value3==="DRAWABOVE")isDrawAbove=true;else if(_value3==="DRAWCENTER")isDrawCenter=true;else if(_value3=="DRAWBELOW")isDrawBelow=true;else if(_value3=="STEPLINE")stepLine=true;else if(_value3=="SINGLELINE")isSingleLine=true;else if(_value3.indexOf('COLOR')==0)color=_value3;else if(_value3.indexOf("RGBX")==0&&_value3.length==10)color=_value3;//RGBX+“RRGGBB”
11197
11206
  else if(_value3.indexOf('LINETHICK')==0)lineWidth=_value3;else if(_value3=="ALIGN0")drawAlign=0;else if(_value3=="ALIGN1")drawAlign=1;else if(_value3=="ALIGN2")drawAlign=2;else if(_value3=="VALIGN0")drawVAlign=0;else if(_value3=="VALIGN1")drawVAlign=1;else if(_value3=="VALIGN2")drawVAlign=2;else if(_value3.indexOf('NODRAW')==0)isShow=false;else if(_value3.indexOf('EXDATA')==0)isExData=true;//扩展数据, 不显示再图形里面
11198
11207
  else if(_value3.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(_value3.indexOf("NOTEXT")==0||_value3.indexOf("NOTITLE")==0)isShowTitle=false;//标题不显示
11199
11208
  else if(_value3.indexOf("FONTSIZE")==0){var strFontSize=_value3.replace("FONTSIZE","");fontSize=parseInt(strFontSize);}else{if(_j14==0){_varName3=itemExpression.Name;var _varValue2=this.ReadVariable(_varName3,itemExpression);if(!Array.isArray(_varValue2))_varValue2=this.SingleDataToArrayData(_varValue2);_varName3="__temp_si_"+i+"__";isNoneName=true;this.VarTable.set(_varName3,_varValue2);//放到变量表里
@@ -11209,8 +11218,8 @@ else if(_value3.indexOf("FONTSIZE")==0){var strFontSize=_value3.replace("FONTSIZ
11209
11218
  {var _outVar11=this.VarTable.get(_varName3);var _value8={Name:_varName3,Data:_outVar11,Type:5};if(color)_value8.Color=color;if(lineWidth)_value8.LineWidth=lineWidth;this.OutVarTable.push(_value8);}else if(volStick&&_varName3)//VOLSTICK 画彩色柱状线
11210
11219
  {var _outVar12=this.VarTable.get(_varName3);var _value9={Name:_varName3,Data:_outVar12,Type:6};if(color)_value9.Color=color;if(upColor)_value9.UpColor=upColor;if(downColor)_value9.DownColor=downColor;if(lineWidth)_value9.LineWidth=lineWidth;if(IFrameSplitOperator.IsNumber(stickType))_value9.StickType=stickType;this.OutVarTable.push(_value9);}else if(lineArea&&_varName3)//LINEAREA 面积
11211
11220
  {var _outVar13=this.VarTable.get(_varName3);var _value10={Name:_varName3,Data:_outVar13,Type:9};if(color)_value10.Color=color;if(upColor)_value10.UpColor=upColor;if(downColor)_value10.DownColor=downColor;if(lineWidth)_value10.LineWidth=lineWidth;this.OutVarTable.push(_value10);}else if(colorStick&&_varName3)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
11212
- {var _outVar14=this.VarTable.get(_varName3);var _value11={Name:_varName3,Data:_outVar14,Color:color,Type:2};if(lineWidth)_value11.LineWidth=lineWidth;if(color)_value11.Color=color;if(upColor)_value11.UpColor=upColor;if(downColor)_value11.DownColor=downColor;this.OutVarTable.push(_value11);}else if(_varName3&&color&&!_draw3){var _outVar15=this.VarTable.get(_varName3);if(!Array.isArray(_outVar15))_outVar15=this.SingleDataToArrayData(_outVar15);var _value12={Name:_varName3,Data:_outVar15,Color:color,Type:0};if(lineWidth)_value12.LineWidth=lineWidth;if(isShow==false)_value12.IsShow=false;if(isExData==true)_value12.IsExData=true;if(isDotLine==true)_value12.IsDotLine=true;if(isOverlayLine==true)_value12.IsOverlayLine=true;if(isNoneName==true)_value12.NoneName=true;if(isShowTitle==false)_value12.IsShowTitle=false;if(stepLine==true)_value12.Type=7;this.OutVarTable.push(_value12);}else if(_draw3)//画图函数
11213
- {var outVar={Name:_draw3.Name,Draw:_draw3,Type:1};if(color)outVar.Color=color;if(isDotLine==true)outVar.IsDotLine=true;if(lineWidth)outVar.LineWidth=lineWidth;if(isDrawAbove)outVar.IsDrawAbove=true;if(isDrawCenter)outVar.IsDrawCenter=true;if(isDrawBelow)outVar.IsDrawBelow=true;if(drawAlign>=0)outVar.DrawAlign=drawAlign;if(drawVAlign>=0)outVar.DrawVAlign=drawVAlign;if(fontSize>0)outVar.DrawFontSize=fontSize;if(bgConfig)outVar.Background=bgConfig;if(vLineConfig)outVar.VerticalLine=vLineConfig;if(IFrameSplitOperator.IsNumber(xOffset))outVar.XOffset=xOffset;if(IFrameSplitOperator.IsNumber(yOffset))outVar.YOffset=yOffset;if(IFrameSplitOperator.IsBool(isFirstDraw))outVar.IsFirstDraw=isFirstDraw;if(IFrameSplitOperator.IsNumber(klineType))outVar.KLineType=klineType;this.OutVarTable.push(outVar);}else if(_varName3){var _outVar16=this.VarTable.get(_varName3);var _value13={Name:_varName3,Data:_outVar16,Type:0};if(color)_value13.Color=color;if(lineWidth)_value13.LineWidth=lineWidth;if(isShow==false)_value13.IsShow=false;if(isExData==true)_value13.IsExData=true;if(isDotLine==true)_value13.IsDotLine=true;if(isOverlayLine==true)_value13.IsOverlayLine=true;if(isShowTitle==false)_value13.IsShowTitle=false;if(stepLine==true)_value13.Type=7;this.OutVarTable.push(_value13);}}}};this.ReadUnaryExpression=function(item,varInfo){var argument=item.Argument;var outVar=null;if(argument.Type==Syntax.Literal){outVar=argument.Value;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.Identifier){var varName=argument.Name;outVar=this.ReadVariable(varName,item.Expression);if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.BinaryExpression){outVar=argument.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.CallExpression){var callItem=argument;if(this.Draw.IsDrawFunction(callItem.Callee.Name)){return false;}else if(callItem.Callee.Name==="IFC"&&callItem.Draw){return false;}else{outVar=callItem.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}}else{return false;}if(item.Operator=='-'){if(outVar)outVar=this.Algorithm.Subtract(0,outVar);}varInfo.OutVar=outVar;return true;};this.GetOutIconData=function(cond,iconDraw){if(Array.isArray(cond)){for(var i=0;i<cond.length&&i<iconDraw.DrawData.length;++i){var item=cond[i];if(item<=0)iconDraw.DrawData[i]=null;}return iconDraw;}if(cond)return iconDraw;return null;};this.GetSoundEvent=function(){if(!this.GetEventCallback)return null;return this.GetEventCallback(JSCHART_EVENT_ID.ON_PLAY_SOUND);};this.Run=function(){try{var data=this.RunAST();//执行脚本
11221
+ {var _outVar14=this.VarTable.get(_varName3);var _value11={Name:_varName3,Data:_outVar14,Color:color,Type:2};if(lineWidth)_value11.LineWidth=lineWidth;if(color)_value11.Color=color;if(upColor)_value11.UpColor=upColor;if(downColor)_value11.DownColor=downColor;this.OutVarTable.push(_value11);}else if(_varName3&&color&&!_draw3){var _outVar15=this.VarTable.get(_varName3);if(!Array.isArray(_outVar15))_outVar15=this.SingleDataToArrayData(_outVar15);var _value12={Name:_varName3,Data:_outVar15,Color:color,Type:0};if(lineWidth)_value12.LineWidth=lineWidth;if(isShow==false)_value12.IsShow=false;if(isExData==true)_value12.IsExData=true;if(isDotLine==true)_value12.IsDotLine=true;if(isOverlayLine==true)_value12.IsOverlayLine=true;if(isSingleLine==true)_value12.IsSingleLine=true;if(isNoneName==true)_value12.NoneName=true;if(isShowTitle==false)_value12.IsShowTitle=false;if(stepLine==true)_value12.Type=7;this.OutVarTable.push(_value12);}else if(_draw3)//画图函数
11222
+ {var outVar={Name:_draw3.Name,Draw:_draw3,Type:1};if(color)outVar.Color=color;if(isDotLine==true)outVar.IsDotLine=true;if(lineWidth)outVar.LineWidth=lineWidth;if(isDrawAbove)outVar.IsDrawAbove=true;if(isDrawCenter)outVar.IsDrawCenter=true;if(isDrawBelow)outVar.IsDrawBelow=true;if(drawAlign>=0)outVar.DrawAlign=drawAlign;if(drawVAlign>=0)outVar.DrawVAlign=drawVAlign;if(fontSize>0)outVar.DrawFontSize=fontSize;if(bgConfig)outVar.Background=bgConfig;if(vLineConfig)outVar.VerticalLine=vLineConfig;if(IFrameSplitOperator.IsNumber(xOffset))outVar.XOffset=xOffset;if(IFrameSplitOperator.IsNumber(yOffset))outVar.YOffset=yOffset;if(IFrameSplitOperator.IsBool(isFirstDraw))outVar.IsFirstDraw=isFirstDraw;if(IFrameSplitOperator.IsNumber(klineType))outVar.KLineType=klineType;this.OutVarTable.push(outVar);}else if(_varName3){var _outVar16=this.VarTable.get(_varName3);var _value13={Name:_varName3,Data:_outVar16,Type:0};if(color)_value13.Color=color;if(lineWidth)_value13.LineWidth=lineWidth;if(isShow==false)_value13.IsShow=false;if(isExData==true)_value13.IsExData=true;if(isDotLine==true)_value13.IsDotLine=true;if(isOverlayLine==true)_value13.IsOverlayLine=true;if(isSingleLine==true)_value13.IsSingleLine=true;if(isShowTitle==false)_value13.IsShowTitle=false;if(stepLine==true)_value13.Type=7;this.OutVarTable.push(_value13);}}}};this.ReadUnaryExpression=function(item,varInfo){var argument=item.Argument;var outVar=null;if(argument.Type==Syntax.Literal){outVar=argument.Value;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.Identifier){var varName=argument.Name;outVar=this.ReadVariable(varName,item.Expression);if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.BinaryExpression){outVar=argument.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.CallExpression){var callItem=argument;if(this.Draw.IsDrawFunction(callItem.Callee.Name)){return false;}else if(callItem.Callee.Name==="IFC"&&callItem.Draw){return false;}else{outVar=callItem.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}}else{return false;}if(item.Operator=='-'){if(outVar)outVar=this.Algorithm.Subtract(0,outVar);}varInfo.OutVar=outVar;return true;};this.GetOutIconData=function(cond,iconDraw){if(Array.isArray(cond)){for(var i=0;i<cond.length&&i<iconDraw.DrawData.length;++i){var item=cond[i];if(item<=0)iconDraw.DrawData[i]=null;}return iconDraw;}if(cond)return iconDraw;return null;};this.GetSoundEvent=function(){if(!this.GetEventCallback)return null;return this.GetEventCallback(JSCHART_EVENT_ID.ON_PLAY_SOUND);};this.Run=function(){try{var data=this.RunAST();//执行脚本
11214
11223
  JSConsole.Complier.Log('[JSComplier.Run] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.Run] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}}catch(error){JSConsole.Complier.Log(error);if(error.Job){JSConsole.Complier.Log('[JSComplier.Run] download job and reexectue',error.Job);this.JobList.push(error.Job);this.JobList.push({ID:JS_EXECUTE_JOB_ID.JOB_RUN_SCRIPT});this.Execute();}else if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.DebugRun_End=function(){var data=this.OutVarTable;JSConsole.Complier.Log('[JSComplier.DebugRun_End] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.DebugRun_End] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}};this.DebugRun_Next=function(debugCtrl){var _this47=this;if(debugCtrl.ExeLine<debugCtrl.LineCount){var item=this.AST.Body[debugCtrl.ExeLine];this.RunASTNode(item);++debugCtrl.ExeLine;this.DebugFilter(debugCtrl,function(){_this47.DebugRun_Next(debugCtrl);});}else{this.DebugRun_End();debugCtrl.Status=2;this.DebugFilter(debugCtrl,null);}};//debug模式
11215
11224
  this.DebugRun=function(){var _this48=this;try{if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();var debugCtrl={LineCount:this.AST.Body.length,ExeLine:0,Self:this,Status:1};this.DebugFilter(debugCtrl,function(){_this48.DebugRun_Next(debugCtrl);});}catch(error){if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var tempValue=this.GetNodeValueEx(node.Argument);var value=this.Algorithm.Subtract(0,tempValue);}else{var value=node.Argument.Value;}return value;};this.VisitSequenceExpression=function(node){for(var _i130 in node.Expression){var _item18=node.Expression[_i130];this.VisitNode(_item18);}};this.GetDynamicScriptIndex=function(node,args){var dynamicName=node.Callee.Value;var aryValue=dynamicName.split(".");if(aryValue.length!=2){this.ThrowUnexpectedNode(node,'\u8C03\u7528\u6307\u6807\u683C\u5F0F\''+dynamicName+'\'\u9519\u8BEF');}var name=aryValue[0];var outName=aryValue[1];var period=null;var pos=outName.indexOf('#');if(pos!=-1){period=outName.slice(pos+1);//周期
11216
11225
  outName=outName.slice(0,pos);}var strValue="";for(var i=0;i<args.length;++i){var value=args[i];if(strValue.length>0)strValue+=",";strValue+=''+value;}var strArgs='('+strValue+')';var key=outName+'#'+strArgs;if(period)key+='#'+period;if(!this.VarTable.has(name))return null;var indexData=this.VarTable.get(name);var value=indexData[key];return value;};//函数调用
@@ -11404,7 +11413,10 @@ if(varItem.IsShow==false)line.IsShow=false;var titleIndex=windowIndex+1;line.Dat
11404
11413
  if(varItem.IsShow==false)line.IsShow=false;var titleIndex=windowIndex+1;line.Data.Data=varItem.Data;if(varItem.IsShowTitle===false)//NOTEXT 不绘制标题
11405
11414
  {}else if(IFrameSplitOperator.IsString(varItem.Name)&&varItem.Name.indexOf("NOTEXT")==0)//标题中包含NOTEXT不绘制标题
11406
11415
  {}else{if(varItem.NoneName)hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,null,line.Color);else hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,varItem.Name,line.Color);hqChart.TitlePaint[titleIndex].Data[id].ChartClassName=line.ClassName;}this.SetChartIndexName(line);hqChart.ChartPaint.push(line);};this.CreateOverlayLine=function(hqChart,windowIndex,varItem,id,lineType){if(lineType==7)var line=new ChartStepLine();var line=new ChartSubLine();line.Canvas=hqChart.Canvas;line.DrawType=1;line.Name=varItem.Name;line.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;line.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)line.Color=this.GetColor(varItem.Color);else line.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)line.LineWidth=width;}if(varItem.IsDotLine)line.IsDotLine=true;//虚线
11407
- if(varItem.IsShow==false)line.IsShow=false;var titleIndex=windowIndex+1;line.Data.Data=varItem.Data;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,varItem.Name,line.Color);hqChart.TitlePaint[titleIndex].Data[id].ChartClassName=line.ClassName;hqChart.ChartPaint.push(line);};//创建柱子
11416
+ if(varItem.IsShow==false)line.IsShow=false;var titleIndex=windowIndex+1;line.Data.Data=varItem.Data;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,varItem.Name,line.Color);hqChart.TitlePaint[titleIndex].Data[id].ChartClassName=line.ClassName;hqChart.ChartPaint.push(line);};this.CreateSingleLine=function(hqChart,windowIndex,varItem,id,lineType){var line=new ChartSingleLine();line.Canvas=hqChart.Canvas;line.DrawType=1;line.Name=varItem.Name;line.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;line.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;line.Identify=this.Guid;if(varItem.Color)line.Color=this.GetColor(varItem.Color);else line.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)line.LineWidth=width;}if(varItem.IsDotLine)line.IsDotLine=true;//虚线
11417
+ if(varItem.IsShow==false)line.IsShow=false;var titleIndex=windowIndex+1;line.Data.Data=varItem.Data;this.ReloadChartResource(hqChart,windowIndex,line);if(varItem.IsShowTitle===false)//NOTEXT 不绘制标题
11418
+ {}else if(IFrameSplitOperator.IsString(varItem.Name)&&varItem.Name.indexOf("NOTEXT")==0)//标题中包含NOTEXT不绘制标题
11419
+ {}else{if(varItem.NoneName)hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,null,line.Color);else hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,varItem.Name,line.Color);this.SetTitleData(hqChart.TitlePaint[titleIndex].Data[id],line);}this.SetChartIndexName(line);hqChart.ChartPaint.push(line);};//创建柱子
11408
11420
  this.CreateBar=function(hqChart,windowIndex,varItem,id){var bar=new ChartStickLine();bar.Canvas=hqChart.Canvas;if(varItem.Draw.Width>0)bar.Width=varItem.Draw.Width;else bar.Width=0;bar.Name=varItem.Name;bar.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;bar.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)bar.Color=this.GetColor(varItem.Color);else bar.Color=this.GetDefaultColor(id);var titleIndex=windowIndex+1;bar.Data.Data=varItem.Draw.DrawData;bar.BarType=varItem.Draw.Type;//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
11409
11421
  this.SetChartIndexName(bar);hqChart.ChartPaint.push(bar);};//创建文本
11410
11422
  this.CreateText=function(hqChart,windowIndex,varItem,id,resource){var chartText=new ChartSingleText();chartText.Canvas=hqChart.Canvas;chartText.Name=varItem.Name;chartText.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chartText.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chartText.ReloadResource();if(varItem.Color)chartText.Color=this.GetColor(varItem.Color);else chartText.Color=this.GetDefaultColor(id);if(varItem.IsDrawCenter===true)chartText.TextAlign='center';if(varItem.IsDrawAbove===true)chartText.Direction=1;if(varItem.IsDrawBelow===true)chartText.Direction=2;var titleIndex=windowIndex+1;if(varItem.Draw.Position)chartText.Position=varItem.Draw.Position;//赋值坐标
@@ -11473,7 +11485,7 @@ if(this.YSplitScale)hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.Y
11473
11485
  }
11474
11486
  */for(var _i135=0;_i135<this.OutVar.length;++_i135){var _item24=this.OutVar[_i135];if(_item24.IsExData===true)continue;//扩展数据不显示图形
11475
11487
  if(_item24.Type==1000||_item24.Type==1001)continue;//数据集合, 字符串
11476
- if(_item24.Type==0){if(_item24.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item24,_i135,_item24.Type);else this.CreateLine(hqChart,windowIndex,_item24,_i135,_item24.Type);}else if(_item24.Type==1){switch(_item24.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item24,_i135);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item24,_i135);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item24,_i135);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item24,_i135);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item24,_i135);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item24,_i135);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item24,_i135);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item24,_i135);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item24,_i135);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item24,_i135);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item24,_i135);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item24,_i135);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item24,_i135);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item24,_i135);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item24,_i135);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item24,_i135);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item24,_i135);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item24,_i135);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item24,_i135);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item24,_i135);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item24,_i135);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item24,_i135);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item24,_i135);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item24,_i135);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item24,_i135);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item24,_i135);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item24,_i135);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item24,_i135);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item24,_i135);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item24,_i135);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item24,_i135);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item24,_i135);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item24,_i135);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item24,_i135);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item24,_i135);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item24,_i135);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item24,_i135);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item24,_i135);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item24,_i135);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item24,_i135);break;case"BUY":case"SELL":case"SELLSHORT":case"BUYSHORT":this.CreateTradeIcon(hqChart,windowIndex,_item24,_i135);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item24,_i135);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item24,_i135);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item24,_i135);break;default:{var find=g_ScriptIndexChartFactory.Get(_item24.Draw.DrawType);//外部挂接
11488
+ if(_item24.Type==0){if(_item24.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item24,_i135,_item24.Type);else if(_item24.IsSingleLine)this.CreateSingleLine(hqChart,windowIndex,_item24,_i135,_item24.Type);else this.CreateLine(hqChart,windowIndex,_item24,_i135,_item24.Type);}else if(_item24.Type==1){switch(_item24.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item24,_i135);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item24,_i135);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item24,_i135);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item24,_i135);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item24,_i135);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item24,_i135);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item24,_i135);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item24,_i135);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item24,_i135);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item24,_i135);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item24,_i135);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item24,_i135);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item24,_i135);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item24,_i135);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item24,_i135);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item24,_i135);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item24,_i135);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item24,_i135);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item24,_i135);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item24,_i135);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item24,_i135);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item24,_i135);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item24,_i135);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item24,_i135);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item24,_i135);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item24,_i135);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item24,_i135);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item24,_i135);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item24,_i135);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item24,_i135);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item24,_i135);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item24,_i135);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item24,_i135);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item24,_i135);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item24,_i135);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item24,_i135);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item24,_i135);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item24,_i135);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item24,_i135);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item24,_i135);break;case"BUY":case"SELL":case"SELLSHORT":case"BUYSHORT":this.CreateTradeIcon(hqChart,windowIndex,_item24,_i135);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item24,_i135);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item24,_i135);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item24,_i135);break;default:{var find=g_ScriptIndexChartFactory.Get(_item24.Draw.DrawType);//外部挂接
11477
11489
  if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item24,_i135,this);}break;}}else if(_item24.Type==2){this.CreateMACD(hqChart,windowIndex,_item24,_i135);}else if(_item24.Type==3){this.CreatePointDot(hqChart,windowIndex,_item24,_i135,hisData);}else if(_item24.Type==4){this.CreateLineStick(hqChart,windowIndex,_item24,_i135);}else if(_item24.Type==5){this.CreateStick(hqChart,windowIndex,_item24,_i135);}else if(_item24.Type==6){this.CreateVolStick(hqChart,windowIndex,_item24,_i135,hisData);}else if(_item24.Type==7){this.CreateLine(hqChart,windowIndex,_item24,_i135,_item24.Type);}else if(_item24.Type==8){this.CreateLine(hqChart,windowIndex,_item24,_i135,_item24.Type);}else if(_item24.Type==9){this.CreateArea(hqChart,windowIndex,_item24,_i135);}var titlePaint=hqChart.TitlePaint[windowIndex+1];if(titlePaint&&titlePaint.Data&&_i135<titlePaint.Data.length)//设置标题数值 小数位数和格式
11478
11490
  {if(this.StringFormat>0)titlePaint.Data[_i135].StringFormat=this.StringFormat;if(this.FloatPrecision>=0)titlePaint.Data[_i135].FloatPrecision=this.FloatPrecision;if(this.OutName&&this.OutName.length>0&&this.Arguments&&this.Arguments.length>0){titlePaint.SetDynamicTitle(this.OutName,this.Arguments);}}}var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.Title=this.Name;titlePaint.Identify=this.Guid;//指标ID
11479
11491
  titlePaint.ArgumentsText=null;titlePaint.Script=this;titlePaint.IsShowMainIndexTitle=this.IsShowIndexTitle;if(!this.IsShortTitle){var indexParam='';for(var _i136=0;_i136<this.Arguments.length;++_i136){var _item25=this.Arguments[_i136];if(indexParam.length>0)indexParam+=',';indexParam+=_item25.Value.toString();}if(indexParam.length>0)titlePaint.ArgumentsText='('+indexParam+')';}if(this.TitleFont)titlePaint.Font=this.TitleFont;return true;};//给一个默认的颜色
@@ -13177,7 +13189,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
13177
13189
  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);};}/********************************************************************************
13178
13190
  * 版本信息输出
13179
13191
  *
13180
- */var HQCHART_VERSION="1.1.13408";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();//把给外界调用的方法暴露出来
13192
+ */var HQCHART_VERSION="1.1.13435";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();//把给外界调用的方法暴露出来
13181
13193
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
13182
13194
  // BaseIndex:BaseIndex,
13183
13195
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.13409",
3
+ "version": "1.1.13436",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -48730,6 +48730,15 @@ HQData.NetworkFilter=function(data, callback)
48730
48730
  HQData.RequestLatestData(data,callback);
48731
48731
  break;
48732
48732
 
48733
+
48734
+ case "KLineChartContainer::RequestOverlayHistoryData": //叠加股票
48735
+ HQData.RequestOverlayHistoryData(data, callback);
48736
+ break;
48737
+
48738
+ case "KLineChartContainer::RequestOverlayHistoryMinuteData":
48739
+ HQData.RequestOverlayHistoryMinuteData(data, callback);
48740
+ break;
48741
+
48733
48742
 
48734
48743
 
48735
48744
 
@@ -49051,3 +49060,28 @@ HQData.RequestLatestData=function(data,callback)
49051
49060
 
49052
49061
  callback(hqchartData);
49053
49062
  }
49063
+
49064
+ HQData.RequestOverlayHistoryData=function(data, callback)
49065
+ {
49066
+ data.PreventDefault=true;
49067
+ var symbol=data.Request.Data.symbol;
49068
+ var hqchartData={ symbol: symbol,name: symbol };
49069
+ if (symbol=="399001.sz")
49070
+ hqchartData.data=KLINE_DAY_OVERLAY_DATA2.data
49071
+ else
49072
+ hqchartData.data=KLINE_DAY_OVERLAY_DATA.data
49073
+
49074
+ callback(hqchartData);
49075
+ }
49076
+
49077
+ HQData.RequestOverlayHistoryMinuteData=function(data, callback)
49078
+ {
49079
+ data.PreventDefault=true;
49080
+ var symbol=data.Request.Data.symbol;
49081
+ var hqchartData={ symbol: symbol,name: symbol };
49082
+ hqchartData.data=KLINE_MINUTE_DATA2.data;
49083
+
49084
+ callback(hqchartData);
49085
+ }
49086
+
49087
+
@@ -17231,6 +17231,7 @@ function JSExecute(ast,option)
17231
17231
  let isExData=false;
17232
17232
  let isDotLine=false;
17233
17233
  let isOverlayLine=false; //叠加线
17234
+ let isSingleLine=false; //独立线段
17234
17235
  var isNoneName=false;
17235
17236
  var isShowTitle=true;
17236
17237
  //显示在位置之上,对于DRAWTEXT和DRAWNUMBER等函数有用,放在语句的最后面(不能与LINETHICK等函数共用),比如:
@@ -17287,9 +17288,11 @@ function JSExecute(ast,option)
17287
17288
  else if (value==="DRAWCENTER") isDrawCenter=true;
17288
17289
  else if (value=="DRAWBELOW") isDrawBelow=true;
17289
17290
  else if (value=="STEPLINE") stepLine=true;
17291
+ else if (value=="SINGLELINE") isSingleLine=true;
17290
17292
  else if (value.indexOf('COLOR')==0) color=value;
17291
17293
  else if (value.indexOf("RGBX")==0 && value.length==10) color=value; //RGBX+“RRGGBB”
17292
17294
  else if (value.indexOf('LINETHICK')==0) lineWidth=value;
17295
+
17293
17296
 
17294
17297
  else if (value=="ALIGN0") drawAlign=0;
17295
17298
  else if (value=="ALIGN1") drawAlign=1;
@@ -17538,6 +17541,7 @@ function JSExecute(ast,option)
17538
17541
  if (isExData==true) value.IsExData = true;
17539
17542
  if (isDotLine==true) value.IsDotLine=true;
17540
17543
  if (isOverlayLine==true) value.IsOverlayLine=true;
17544
+ if (isSingleLine==true) value.IsSingleLine=true;
17541
17545
  if (isNoneName==true) value.NoneName=true;
17542
17546
  if (isShowTitle==false) value.IsShowTitle=false;
17543
17547
  if (stepLine==true) value.Type=7;
@@ -17573,6 +17577,7 @@ function JSExecute(ast,option)
17573
17577
  if (isExData==true) value.IsExData = true;
17574
17578
  if (isDotLine==true) value.IsDotLine=true;
17575
17579
  if (isOverlayLine==true) value.IsOverlayLine=true;
17580
+ if (isSingleLine==true) value.IsSingleLine=true;
17576
17581
  if (isShowTitle==false) value.IsShowTitle=false;
17577
17582
  if (stepLine==true) value.Type=7;
17578
17583
  this.OutVarTable.push(value);
@@ -20400,6 +20405,54 @@ function ScriptIndex(name,script,args,option)
20400
20405
  hqChart.ChartPaint.push(line);
20401
20406
  }
20402
20407
 
20408
+ this.CreateSingleLine=function(hqChart,windowIndex,varItem,id,lineType)
20409
+ {
20410
+ var line=new ChartSingleLine();
20411
+ line.Canvas=hqChart.Canvas;
20412
+ line.DrawType=1;
20413
+ line.Name=varItem.Name;
20414
+ line.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
20415
+ line.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
20416
+ line.Identify=this.Guid;
20417
+ if (varItem.Color) line.Color=this.GetColor(varItem.Color);
20418
+ else line.Color=this.GetDefaultColor(id);
20419
+
20420
+ if (varItem.LineWidth)
20421
+ {
20422
+ let width=parseInt(varItem.LineWidth.replace("LINETHICK",""));
20423
+ if (!isNaN(width) && width>0) line.LineWidth=width;
20424
+ }
20425
+
20426
+ if (varItem.IsDotLine) line.IsDotLine=true; //虚线
20427
+ if (varItem.IsShow==false) line.IsShow=false;
20428
+
20429
+ let titleIndex=windowIndex+1;
20430
+ line.Data.Data=varItem.Data;
20431
+
20432
+ this.ReloadChartResource(hqChart,windowIndex,line);
20433
+
20434
+ if (varItem.IsShowTitle===false) //NOTEXT 不绘制标题
20435
+ {
20436
+
20437
+ }
20438
+ else if (IFrameSplitOperator.IsString(varItem.Name) && varItem.Name.indexOf("NOTEXT")==0) //标题中包含NOTEXT不绘制标题
20439
+ {
20440
+
20441
+ }
20442
+ else
20443
+ {
20444
+ if (varItem.NoneName)
20445
+ hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,null,line.Color);
20446
+ else
20447
+ hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,varItem.Name,line.Color);
20448
+
20449
+ this.SetTitleData(hqChart.TitlePaint[titleIndex].Data[id],line);
20450
+ }
20451
+
20452
+ this.SetChartIndexName(line);
20453
+ hqChart.ChartPaint.push(line);
20454
+ }
20455
+
20403
20456
  //创建柱子
20404
20457
  this.CreateBar=function(hqChart,windowIndex,varItem,id)
20405
20458
  {
@@ -21704,6 +21757,7 @@ function ScriptIndex(name,script,args,option)
21704
21757
  if (item.Type==0)
21705
21758
  {
21706
21759
  if (item.IsOverlayLine) this.CreateOverlayLine(hqChart,windowIndex,item,i,item.Type);
21760
+ else if (item.IsSingleLine) this.CreateSingleLine(hqChart,windowIndex,item,i,item.Type);
21707
21761
  else this.CreateLine(hqChart,windowIndex,item,i,item.Type);
21708
21762
  }
21709
21763
  else if (item.Type==1)
@@ -113,6 +113,8 @@ function JSIndexScript()
113
113
  ["ICHIMOKU",this.ICHIMOKU],["CDP-STD", this.CDP_STD],["TBP-STD",this.TBP_STD],
114
114
  ["ADX", this.ADX],
115
115
 
116
+ ["持仓量", this.VOL_POSITION], //成交量+持仓量
117
+
116
118
  //通达信特色指标
117
119
  ["散户线", this.ShareholderCount],["NXTS", this.NXTS],["FKX", this.FKX],["两融资金", this.Margin4],
118
120
  ["ZSDB",this.ZSDB],
@@ -3351,6 +3353,20 @@ JSIndexScript.prototype.CJL = function ()
3351
3353
  return data;
3352
3354
  }
3353
3355
 
3356
+ JSIndexScript.prototype.VOL_POSITION=function()
3357
+ {
3358
+ let data =
3359
+ {
3360
+ Name: '持仓量', Description: '持仓量', IsMainIndex: false,
3361
+ Args: [],
3362
+ Script: //脚本
3363
+ "成交量:VOL,VOLSTICK;\n\
3364
+ 持仓量:VOLINSTK,SINGLELINE;"
3365
+ };
3366
+
3367
+ return data;
3368
+ }
3369
+
3354
3370
  JSIndexScript.prototype.ASI = function ()
3355
3371
  {
3356
3372
  let data =
@@ -2579,7 +2579,7 @@ var JSCHART_EVENT_ID=
2579
2579
 
2580
2580
 
2581
2581
  ON_CHANGE_INDEX:150, //切换指标
2582
- ON_MENU_COMMAND:151, //菜单时间回调
2582
+ ON_MENU_COMMAND:151, //菜单事件回调
2583
2583
  ON_CREATE_RIGHT_MENU:152, //创建右键菜单
2584
2584
 
2585
2585
  ON_FORMAT_CALL_AUCTION_INDEX_TITLE:153, //集合竞价指标窗口标题内容
@@ -20755,6 +20755,7 @@ function ChartData()
20755
20755
  var yClose=this.Data[index].YClose;
20756
20756
 
20757
20757
  result[index]=HistoryData.Copy(this.Data[index]);
20758
+ result[index].RightSeed=seed;
20758
20759
 
20759
20760
  for(--index; index>=0; --index)
20760
20761
  {
@@ -20785,6 +20786,7 @@ function ChartData()
20785
20786
  var seed=1;
20786
20787
  var close=this.Data[index].Close;
20787
20788
  result[index]=HistoryData.Copy(this.Data[index]);
20789
+ result[index].RightSeed=seed;
20788
20790
 
20789
20791
  for(++index;index<this.Data.length;++index)
20790
20792
  {
@@ -31114,6 +31116,86 @@ function ChartOverlayLine()
31114
31116
  }
31115
31117
  }
31116
31118
 
31119
+ //独立线段
31120
+ function ChartSingleLine()
31121
+ {
31122
+ this.newMethod=ChartLine; //派生
31123
+ this.newMethod();
31124
+ delete this.newMethod;
31125
+
31126
+ this.ClassName='ChartSingleLine'; //类名
31127
+ this.MaxMin=null; //当前的显示范围
31128
+
31129
+ this.Draw=function()
31130
+ {
31131
+ this.MaxMin=null;
31132
+ if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
31133
+ if (this.IsShowIndexTitleOnly()) return;
31134
+ if (this.IsHideScriptIndex()) return;
31135
+
31136
+ if (!this.Data || !this.Data.Data) return;
31137
+
31138
+ this.MaxMin=this.GetCurrentMaxMin();
31139
+ if (!this.MaxMin) return;
31140
+ if (!IFrameSplitOperator.IsNumber(this.MaxMin.Max) || !IFrameSplitOperator.IsNumber(this.MaxMin.Min)) return;
31141
+
31142
+ switch(this.DrawType)
31143
+ {
31144
+
31145
+ default:
31146
+ return this.DrawStraightLine();
31147
+ }
31148
+ }
31149
+
31150
+ //获取当前页的最大最小值
31151
+ this.GetCurrentMaxMin=function()
31152
+ {
31153
+ var xPointCount=this.ChartFrame.XPointCount;
31154
+ var range={ Max:null, Min:null };
31155
+
31156
+ for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j)
31157
+ {
31158
+ var value=this.Data.Data[i];
31159
+ if (!IFrameSplitOperator.IsNumber(value)) continue;
31160
+
31161
+ if (range.Max==null) range.Max=value;
31162
+ if (range.Min==null) range.Min=value;
31163
+
31164
+ if (range.Max<value) range.Max=value;
31165
+ if (range.Min>value) range.Min=value;
31166
+ }
31167
+
31168
+ return range;
31169
+ }
31170
+
31171
+ this.GetMaxMin=function()
31172
+ {
31173
+ return { Max:null, Min:null };
31174
+ }
31175
+
31176
+ this.GetYFromData=function(value)
31177
+ {
31178
+ var bHScreen = (this.ChartFrame.IsHScreen === true);
31179
+
31180
+ if (bHScreen)
31181
+ {
31182
+ if (value <= this.MaxMin.Min) return this.ChartBorder.GetLeftEx();
31183
+ if (value >= this.MaxMin.Max) return this.ChartBorder.GetRightEx();
31184
+
31185
+ var width = this.ChartBorder.GetWidthEx() * (value - this.MaxMin.Min) / (this.MaxMin.Max - this.MaxMin.Min);
31186
+ return this.ChartBorder.GetLeftEx() + width;
31187
+ }
31188
+ else
31189
+ {
31190
+ if(value<=this.MaxMin.Min) return this.ChartBorder.GetBottomEx();
31191
+ if(value>=this.MaxMin.Max) return this.ChartBorder.GetTopEx();
31192
+
31193
+ var height=this.ChartBorder.GetHeightEx()*(value-this.MaxMin.Min)/(this.MaxMin.Max-this.MaxMin.Min);
31194
+ return this.ChartBorder.GetBottomEx()-height;
31195
+ }
31196
+ }
31197
+ }
31198
+
31117
31199
  //彩色线段
31118
31200
  function ChartPartLine()
31119
31201
  {
@@ -34034,8 +34116,8 @@ function ChartMinutePriceLine()
34034
34116
  if (isHScreen===true) chartright=this.ChartBorder.GetBottom();
34035
34117
  var xPointCount=this.ChartFrame.XPointCount;
34036
34118
  var minuteCount=this.ChartFrame.MinuteCount;
34037
- var bottom=this.ChartBorder.GetBottomEx();
34038
- var left=this.ChartBorder.GetLeftEx();
34119
+ var bottom=this.ChartBorder.GetBottom();
34120
+ var left=this.ChartBorder.GetLeft();
34039
34121
  var data=this.Data;
34040
34122
 
34041
34123
  this.DrawBeforeOpen(); //盘前