hqchart 1.1.13409 → 1.1.13441
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/umychart.NetworkFilterTest.vue.js +3 -2
- package/lib/umychart.vue.js +31 -17
- package/package.json +1 -1
- package/src/jscommon/umychart.NetworkFilterTest.js +34 -0
- package/src/jscommon/umychart.complier.js +54 -0
- package/src/jscommon/umychart.index.data.js +16 -0
- package/src/jscommon/umychart.js +104 -5
- package/src/jscommon/umychart.testdata/000001.sh.day.kline.js +79866 -0
- package/src/jscommon/umychart.testdata/399001.sz.day.kline.js +78515 -0
- package/src/jscommon/umychart.testdata.js +34 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +185 -9
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.NetworkFilterTest.vue.js +34 -0
- package/src/jscommon/umychart.vue/umychart.vue.js +175 -6
|
@@ -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"
|
|
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};
|
package/lib/umychart.vue.js
CHANGED
|
@@ -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.
|
|
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,//往左移动
|
|
@@ -2224,8 +2227,10 @@ if(item.Message[1]!=null&&isDrawRight){if(item.Font!=null)this.Canvas.font=item.
|
|
|
2224
2227
|
if(rightExtendLine&&rightExtendLine.Width>1){var lineLength=rightExtendLine.Width;if(rightExtendLine.Color)this.Canvas.strokeStyle=rightExtendLine.Color;else this.Canvas.strokeStyle=item.LineColor;this.Canvas.beginPath();this.Canvas.moveTo(xText,yFixed);this.Canvas.lineTo(xText+lineLength,yFixed);this.Canvas.stroke();xText+=lineLength+2;}this.Canvas.textAlign="left";if(Array.isArray(item.Message[1])){if(this.MultiTextFormat==1)//显示1行 格式:价格/百分比
|
|
2225
2228
|
{if(item.ExtendData){if(item.ExtendData.Font)this.Canvas.font=item.ExtendData.Font;}var textData={Text:[{Text:item.Message[1][0],Width:this.Canvas.measureText(item.Message[1][0]).width},{Text:item.Message[1][1],Width:this.Canvas.measureText(item.Message[1][1]).width}],X:xText+2,Y:yText,TextBaseline:this.Canvas.textBaseline,Item:item};aryMultiText.push(textData);}else if(this.MultiTextFormat==2)//显示2行
|
|
2226
2229
|
{this.Canvas.fillText(item.Message[1][0],xText+this.YTextPadding[1],yText);var lineHeight=this.Canvas.measureText('M').width;if(itemHeight>lineHeight*2)this.Canvas.fillText(item.Message[1][1],xText+this.YTextPadding[1],yText+lineHeight);}else if(this.MultiTextFormat==3){var obj={Data:item.Message[1],X:xText,Y:yText,TextBaseLine:textBaseline,IsLeft:false,Item:item,TextPadding:this.YTextPadding[1]};this.DrawMultiLineText(obj);}else//显示第1行
|
|
2227
|
-
{
|
|
2228
|
-
|
|
2230
|
+
{var text=item.Message[1][0];if(item.TextColor2)this.Canvas.fillStyle=item.TextColor2;if(rightExtendText&&rightExtendText.Align===2&&this.YRightTextInfo)//右对齐
|
|
2231
|
+
{this.Canvas.textAlign="right";var xRight=this.YRightTextInfo.MainTextWidth+right-this.YTextPadding[1];this.Canvas.fillText(text,xRight,yText);}else{this.Canvas.fillText(text,xText+this.YTextPadding[1],yText);}}}else{//计算显示的区域
|
|
2232
|
+
rtRight=this.GetTextTopBottom(textBaseline,yText);if(!rtPreRight||rtRight&&!this.IsTextTopBottomOverlap(rtRight,rtPreRight)){if(item.TextColor2)this.Canvas.fillStyle=item.TextColor2;if(rightExtendText&&rightExtendText.Align===2&&this.YRightTextInfo)//右对齐
|
|
2233
|
+
{this.Canvas.textAlign="right";var xRight=this.YRightTextInfo.MainTextWidth+right-this.YTextPadding[1];this.Canvas.fillText(item.Message[1],xRight,yText);}else{this.Canvas.fillText(item.Message[1],xText+this.YTextPadding[1],yText);}rtPreRight=rtRight;}}}yPrev=y;}if(IFrameSplitOperator.IsNonEmptyArray(aryMultiText)&&this.MultiTextFormat==1)this.DrawHorizontalMuText(aryMultiText);if(isDrawRight&&this.IsDrawRightBorder&&this.YRightTextInfo){var xRight=this.YRightTextInfo.MainTextWidth+right;xLine=ToFixedPoint(xRight);this.Canvas.strokeStyle=this.PenBorder;this.Canvas.beginPath();this.Canvas.moveTo(xLine,top);this.Canvas.lineTo(xLine,bottom);this.Canvas.stroke();if(IFrameSplitOperator.IsNonEmptyArray(this.YRightTextInfo.AryOverlayWidth)){this.Canvas.beginPath();for(var i=0;i<this.YRightTextInfo.AryOverlayWidth.length;++i){var width=this.YRightTextInfo.AryOverlayWidth[i];xRight+=width;xLine=ToFixedPoint(xRight);this.Canvas.moveTo(xLine,top);this.Canvas.lineTo(xLine,bottom);}this.Canvas.stroke();}}};//多行文字刻度输出 obj={ Data:, X:, Y:, TextBaseLine:, IsLeft:, Item:刻度数据 }
|
|
2229
2234
|
this.DrawMultiLineText=function(obj){var lineSpacing=2;var lineHeight=this.Canvas.measureText('擎').width;var lineCount=obj.Data.length;var textHeight=lineHeight*lineCount+lineSpacing*(lineCount-1);var yText=obj.Y;if(obj.Item.Font!=null)this.Canvas.font=obj.Item.Font;if(obj.IsLeft){this.Canvas.textAlign="right";var xText=obj.X-obj.TextPadding;}else{this.Canvas.textAlign="left";var xText=obj.X+obj.TextPadding;}var textBaseline=this.Canvas.textBaseline;//备份下原来的对齐方式
|
|
2230
2235
|
this.Canvas.textBaseline='top';if(obj.TextBaseLine==1)//middle
|
|
2231
2236
|
{yText-=textHeight/2;}else if(obj.TextBaseLine==0)//top
|
|
@@ -2982,7 +2987,7 @@ if(ChartData.IsDayPeriod(period,false))return this.GetDayPeriodData(period);//if
|
|
|
2982
2987
|
if(ChartData.IsMinutePeriod(period,false))return this.GetMinutePeriodData(period);};//复权 0 不复权 1 前复权 2 后复权
|
|
2983
2988
|
this.GetRightData=function(right,option){var result=[];if(this.Data.length<=0)return result;if(option&&option.AlgorithmType==1)//使用复权因子计算
|
|
2984
2989
|
{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;//叠加数据和主数据拟合,去掉主数据没有日期的数据
|
|
2990
|
+
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
2991
|
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
2992
|
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
2993
|
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 +3716,12 @@ this.DrawStraightLine=function(){var firstData=this.GetFirstVaildIndex();if(!fir
|
|
|
3711
3716
|
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
3717
|
var y=this.GetYFromData(fixedValue);if(x>chartright)break;if(bFirstPoint){this.Canvas.beginPath();if(bHScreen)this.Canvas.moveTo(y,x);//横屏坐标轴对调
|
|
3713
3718
|
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;};}
|
|
3719
|
+
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;};}//独立线段
|
|
3720
|
+
function ChartSingleLine(){this.newMethod=ChartLine;//派生
|
|
3721
|
+
this.newMethod();delete this.newMethod;this.ClassName='ChartSingleLine';//类名
|
|
3722
|
+
this.MaxMin=null;//当前的显示范围
|
|
3723
|
+
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();}};//获取当前页的最大最小值
|
|
3724
|
+
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
3725
|
function ChartPartLine(){this.newMethod=IChartPainting;//派生
|
|
3716
3726
|
this.newMethod();delete this.newMethod;this.ClassName='ChartPartLine';//类名
|
|
3717
3727
|
this.LineWidth;//线段宽度
|
|
@@ -3758,12 +3768,12 @@ function ChartVolStick(){this.newMethod=IChartPainting;//派生
|
|
|
3758
3768
|
this.newMethod();delete this.newMethod;this.UpColor=g_JSChartResource.UpBarColor;this.DownColor=g_JSChartResource.DownBarColor;this.HistoryData;//历史数据
|
|
3759
3769
|
this.KLineDrawType=0;this.ClassName='ChartVolStick';this.BarWidth;//固定宽度 目前只支持宽度为1
|
|
3760
3770
|
this.BarType;//柱子状态 1=实心 0=空心 2=涨实跌空 如果设置了这个属性, 属性KLineDrawType无效
|
|
3761
|
-
this.PtInChart=this.PtInBar;this.DrawSelectedStatus=this.DrawLinePoint;this.ExportData=this.ExportArrayData;this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(this.ChartFrame.IsHScreen===true){this.HScreenDraw();return;}var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var xPointCount=this.ChartFrame.XPointCount;var lockRect=this.GetLockRect();if(lockRect)chartright=lockRect.Left;var isMinute=this.IsMinuteFrame();var yBottom=this.ChartFrame.GetYFromData(0);if(dataWidth>=4&&!(this.BarWidth===1)){yBottom=ToFixedRect(yBottom);for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];var kItem=this.HistoryData.Data[i];if(value==null||kItem==null)continue;if(value==0)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var y=this.ChartFrame.GetYFromData(value);var barColor=this.GetBarColor(kItem);var bUp=barColor.IsUp;var height=ToFixedRect(Math.abs(yBottom-y)>=1?yBottom-y:1);//高度调整为整数, 如果小于1, 统一使用1
|
|
3771
|
+
this.PtInChart=this.PtInBar;this.DrawSelectedStatus=this.DrawLinePoint;this.ExportData=this.ExportArrayData;this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(this.ChartFrame.IsHScreen===true){this.HScreenDraw();return;}var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var xPointCount=this.ChartFrame.XPointCount;var lockRect=this.GetLockRect();if(lockRect)chartright=lockRect.Left;var isMinute=this.IsMinuteFrame();var yBottom=this.ChartFrame.GetYFromData(0);this.Canvas.save();if(dataWidth>=4&&!(this.BarWidth===1)){yBottom=ToFixedRect(yBottom);for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];var kItem=this.HistoryData.Data[i];if(value==null||kItem==null)continue;if(value==0)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var y=this.ChartFrame.GetYFromData(value);var barColor=this.GetBarColor(kItem);var bUp=barColor.IsUp;var height=ToFixedRect(Math.abs(yBottom-y)>=1?yBottom-y:1);//高度调整为整数, 如果小于1, 统一使用1
|
|
3762
3772
|
y=yBottom-height;var bSolidBar=this.IsSolidBar(bUp);//实心柱子
|
|
3763
3773
|
if(bSolidBar){this.Canvas.fillStyle=barColor.Color;this.Canvas.fillRect(ToFixedRect(left),y,ToFixedRect(dataWidth),height);}else{this.Canvas.strokeStyle=barColor.Color;this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(left),ToFixedPoint(y),ToFixedRect(dataWidth),height);this.Canvas.stroke();}}}else//太细了直接话线
|
|
3764
|
-
{var preKItem=null;var barColor=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];var kItem=this.HistoryData.Data[i];if(value==null||kItem==null)continue;var y=this.ChartFrame.GetYFromData(value);if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;var x=left+(right-left)/2;}if(x>chartright)break;if(isMinute)barColor=this.GetMinuteBarColor(kItem,preKItem);//分时图颜色单独计算
|
|
3774
|
+
{var preKItem=null;var barColor=null;this.Canvas.linewidth=1*GetDevicePixelRatio();for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];var kItem=this.HistoryData.Data[i];if(value==null||kItem==null)continue;var y=this.ChartFrame.GetYFromData(value);if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;var x=left+(right-left)/2;}if(x>chartright)break;if(isMinute)barColor=this.GetMinuteBarColor(kItem,preKItem);//分时图颜色单独计算
|
|
3765
3775
|
else barColor=this.GetBarColor(kItem);this.Canvas.strokeStyle=barColor.Color;//var x=this.ChartFrame.GetXFromIndex(j);
|
|
3766
|
-
this.Canvas.beginPath();this.Canvas.moveTo(ToFixedPoint(x),y);this.Canvas.lineTo(ToFixedPoint(x),yBottom);this.Canvas.stroke();preKItem=kItem;}}};this.HScreenDraw=function()//横屏画法
|
|
3776
|
+
this.Canvas.beginPath();this.Canvas.moveTo(ToFixedPoint(x),y);this.Canvas.lineTo(ToFixedPoint(x),yBottom);this.Canvas.stroke();preKItem=kItem;}}this.Canvas.restore();};this.HScreenDraw=function()//横屏画法
|
|
3767
3777
|
{var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartBottom=border.BottomEx;var xPointCount=this.ChartFrame.XPointCount;var lockRect=this.GetLockRect();if(lockRect)chartBottom=lockRect.Top;var isMinute=this.IsMinuteFrame();var yBottom=this.ChartFrame.GetYFromData(0);if(dataWidth>=4){yBottom=ToFixedRect(yBottom);for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];var kItem=this.HistoryData.Data[i];if(value==null||kItem==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartBottom)break;var y=this.ChartFrame.GetYFromData(value);var barColor=this.GetBarColor(kItem);var bUp=barColor.IsUp;var height=ToFixedRect(y-yBottom);//高度调整为整数
|
|
3768
3778
|
var bSolidBar=this.IsSolidBar(bUp);//实心柱子
|
|
3769
3779
|
if(bSolidBar){this.Canvas.fillStyle=barColor.Color;this.Canvas.fillRect(yBottom,ToFixedRect(left),height,ToFixedRect(dataWidth));}else{this.Canvas.strokeStyle=barColor.Color;this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(yBottom),ToFixedPoint(left),height,ToFixedRect(dataWidth));this.Canvas.stroke();}}}else//太细了直接话线
|
|
@@ -3896,7 +3906,7 @@ this.Source;//原始分钟数据
|
|
|
3896
3906
|
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
3907
|
this.FFMChart;//定制图形
|
|
3898
3908
|
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.
|
|
3909
|
+
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
3910
|
this.DrawMultiDayBeforeOpen();if(this.IsShowLead)this.DrawLead();//领先指标
|
|
3901
3911
|
if(!data)return;var bFirstPoint=true;var ptFirst={};//第1个点
|
|
3902
3912
|
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 +11196,7 @@ if(item.Type==Syntax.ExpressionStatement&&item.Expression){if(item.Expression.Ty
|
|
|
11186
11196
|
{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
11197
|
{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
11198
|
{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;//叠加线
|
|
11199
|
+
var isSingleLine=false;//独立线段
|
|
11189
11200
|
var isNoneName=false;var isShowTitle=true;//显示在位置之上,对于DRAWTEXT和DRAWNUMBER等函数有用,放在语句的最后面(不能与LINETHICK等函数共用),比如:
|
|
11190
11201
|
//DRAWNUMBER(CLOSE>OPEN,HIGH,CLOSE),DRAWABOVE;
|
|
11191
11202
|
var isDrawAbove=false;var isDrawCenter=false;var isDrawBelow=false;//VALIGN0,VALIGN1,VALIGN2 设置文字垂直对齐方式(上中下)
|
|
@@ -11193,7 +11204,7 @@ var isDrawAbove=false;var isDrawCenter=false;var isDrawBelow=false;//VALIGN0,VAL
|
|
|
11193
11204
|
var drawAlign=-1,drawVAlign=-1;var fontSize=-1;var bgConfig=null;//背景设置
|
|
11194
11205
|
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
11206
|
{_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”
|
|
11207
|
+
}}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
11208
|
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
11209
|
else if(_value3.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(_value3.indexOf("NOTEXT")==0||_value3.indexOf("NOTITLE")==0)isShowTitle=false;//标题不显示
|
|
11199
11210
|
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 +11220,8 @@ else if(_value3.indexOf("FONTSIZE")==0){var strFontSize=_value3.replace("FONTSIZ
|
|
|
11209
11220
|
{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
11221
|
{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
11222
|
{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();//执行脚本
|
|
11223
|
+
{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)//画图函数
|
|
11224
|
+
{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
11225
|
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
11226
|
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
11227
|
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 +11415,10 @@ if(varItem.IsShow==false)line.IsShow=false;var titleIndex=windowIndex+1;line.Dat
|
|
|
11404
11415
|
if(varItem.IsShow==false)line.IsShow=false;var titleIndex=windowIndex+1;line.Data.Data=varItem.Data;if(varItem.IsShowTitle===false)//NOTEXT 不绘制标题
|
|
11405
11416
|
{}else if(IFrameSplitOperator.IsString(varItem.Name)&&varItem.Name.indexOf("NOTEXT")==0)//标题中包含NOTEXT不绘制标题
|
|
11406
11417
|
{}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);}
|
|
11418
|
+
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;//虚线
|
|
11419
|
+
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 不绘制标题
|
|
11420
|
+
{}else if(IFrameSplitOperator.IsString(varItem.Name)&&varItem.Name.indexOf("NOTEXT")==0)//标题中包含NOTEXT不绘制标题
|
|
11421
|
+
{}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
11422
|
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
11423
|
this.SetChartIndexName(bar);hqChart.ChartPaint.push(bar);};//创建文本
|
|
11410
11424
|
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 +11487,7 @@ if(this.YSplitScale)hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.Y
|
|
|
11473
11487
|
}
|
|
11474
11488
|
*/for(var _i135=0;_i135<this.OutVar.length;++_i135){var _item24=this.OutVar[_i135];if(_item24.IsExData===true)continue;//扩展数据不显示图形
|
|
11475
11489
|
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);//外部挂接
|
|
11490
|
+
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
11491
|
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
11492
|
{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
11493
|
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 +13191,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
13177
13191
|
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
13192
|
* 版本信息输出
|
|
13179
13193
|
*
|
|
13180
|
-
*/var HQCHART_VERSION="1.1.
|
|
13194
|
+
*/var HQCHART_VERSION="1.1.13440";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
13195
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
13182
13196
|
// BaseIndex:BaseIndex,
|
|
13183
13197
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -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 =
|