hqchart 1.1.12622 → 1.1.12627
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.vue.js +10 -10
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +49 -5
- package/src/jscommon/umychart.js +42 -21
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +92 -27
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +92 -27
package/lib/umychart.vue.js
CHANGED
|
@@ -5770,7 +5770,7 @@ this.PointToValue=function(){if(!this.Frame)return false;if(this.Frame.ClassName
|
|
|
5770
5770
|
this.ValueToPoint=function(){if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;//this.UpdateXValue();
|
|
5771
5771
|
var isHScreen=this.Frame.IsHScreen;this.Point=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];var pt=new Point();if(isHScreen){pt.Y=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.X=this.Frame.GetYFromData(item.YValue,false);}else{pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.Y=this.Frame.GetYFromData(item.YValue,false);}this.Point[i]=pt;}};this.UpdateXValue=function()//通过datetime更新x的索引
|
|
5772
5772
|
{if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;var aryDateTime=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];if(!item.DateTime)break;var dateTime={Date:item.DateTime.Date};if(IFrameSplitOperator.IsNumber(item.DateTime.Time))dateTime.Time=item.DateTime.Time;aryDateTime[i]=dateTime;}data.FindDataIndexByDateTime(aryDateTime);for(var i in aryDateTime){var findItem=aryDateTime[i];var valueItem=this.Value[i];if(findItem.Index>=0)valueItem.XValue=findItem.Index;}};//xStep,yStep 移动的偏移量
|
|
5773
|
-
this.Move=function(xStep,yStep){if(this.Status!=20)return
|
|
5773
|
+
this.Move=function(xStep,yStep){if(this.Status!=20)return false;if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;if(this.MovePointIndex==null)return false;var index=parseInt(this.MovePointIndex);if(index===100)//整体移动
|
|
5774
5774
|
{if(this.IsMoveOutOfBounds(this.Point,xStep,yStep))return false;for(var i in this.Point){this.Point[i].X+=xStep;this.Point[i].Y+=yStep;}}else if(index===0||index===1||index===2||index===3||index===4||index===5){if(index<this.Point.length){this.Point[index].X+=xStep;this.Point[index].Y+=yStep;}}else{return false;}};//是否超出边界了
|
|
5775
5775
|
this.IsMoveOutOfBounds=function(aryPoint,xStep,yStep){if(!this.EnableMoveCheck)return false;if(!this.Frame)return false;if(this.Frame.ClassName=="MinuteFrame"||this.Frame.Class=="MinuteHScreenFrame")return false;var data=this.Frame.Data;if(!data)return false;if(!IFrameSplitOperator.IsNonEmptyArray(data.Data))return false;if(!IFrameSplitOperator.IsNonEmptyArray(aryPoint))return false;var isHScreen=this.Frame.IsHScreen;if(isHScreen){//TODO:横屏以后再做
|
|
5776
5776
|
return false;}else{var offset=data.DataOffset;var startIndex=0-offset;var endIndex=data.Data.length-offset;if(xStep>0){var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];if(item.X+xStep>xEnd)return true;}}else if(xStep<0){var xStart=this.Frame.GetXFromIndex(startIndex,false);for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];if(item.X+xStep<xStart)return true;}}return false;}};this.ClipFrame=function(){if(this.Frame.IsHScreen){var left=this.Frame.ChartBorder.GetLeftEx();var top=this.Frame.ChartBorder.GetTop();var width=this.Frame.ChartBorder.GetWidthEx();var height=this.Frame.ChartBorder.GetHeight();}else{var left=this.Frame.ChartBorder.GetLeft();var top=this.Frame.ChartBorder.GetTopEx();var width=this.Frame.ChartBorder.GetWidth();var height=this.Frame.ChartBorder.GetHeightEx();}this.Canvas.save();this.Canvas.beginPath();this.Canvas.rect(left,top,width,height);this.Canvas.clip();};//计算需要画的点的坐标option:{IsCheckX:是否检测X值, IsCheckY:是否检测Y值}
|
|
@@ -5987,7 +5987,7 @@ this.CalculateDrawPoint=function(){if(this.Status<2)return null;if(!this.Point.l
|
|
|
5987
5987
|
linePoint={Start:new Point(),End:new Point()};linePoint.Start.X=drawPoint[0].X;linePoint.Start.Y=drawPoint[0].Y-yMove;linePoint.End.X=drawPoint[1].X;linePoint.End.Y=drawPoint[1].Y-yMove;this.LinePoint.push(linePoint);var ptCenter=new Point();ptCenter.X=linePoint.Start.X+(linePoint.End.X-linePoint.Start.X)/2;ptCenter.Y=linePoint.Start.Y+(linePoint.End.Y-linePoint.Start.Y)/2;drawPoint[2]=ptCenter;this.Point[2]=ptCenter;var xValue=parseInt(this.Frame.GetXData(ptCenter.X))+data.DataOffset;var yValue=this.Frame.GetYData(ptCenter.Y);this.Value[2]={XValue:xValue,YValue:yValue};this.PointCount=this.Point.length;//完成以后是3个点
|
|
5988
5988
|
linePoint={Start:new Point(),End:new Point()};linePoint.Start.X=drawPoint[0].X;linePoint.Start.Y=drawPoint[0].Y-yMove/2;linePoint.End.X=drawPoint[1].X;linePoint.End.Y=drawPoint[1].Y-yMove/2;this.CenterLine.Line=linePoint;}}return drawPoint;};this.DrawArea=function(pt,pt2,pt3,pt4){this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.moveTo(pt.X,pt.Y);this.Canvas.lineTo(pt2.X,pt2.Y);this.Canvas.lineTo(pt3.X,pt3.Y);this.Canvas.lineTo(pt4.X,pt4.Y);this.Canvas.closePath();this.Canvas.fill();};this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint();if(!drawPoint)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();if(this.LinePoint.length==2){this.DrawArea(this.LinePoint[0].Start,this.LinePoint[0].End,this.LinePoint[1].End,this.LinePoint[1].Start);}for(var i=0;i<this.LinePoint.length;++i){var item=this.LinePoint[i];this.DrawLine(item.Start,item.End);}if(this.CenterLine.IsShow&&this.CenterLine.Line){var item=this.CenterLine.Line;this.Canvas.setLineDash(this.CenterLine.LineDash);this.DrawLine(item.Start,item.End);this.Canvas.setLineDash([]);}this.Canvas.restore();this.DrawPoint(drawPoint);//画点
|
|
5989
5989
|
};//xStep,yStep 移动的偏移量
|
|
5990
|
-
this.Move=function(xStep,yStep){if(this.Status!=20)return
|
|
5990
|
+
this.Move=function(xStep,yStep){if(this.Status!=20)return false;if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;if(this.MovePointIndex==100)//整体移动
|
|
5991
5991
|
{for(var i=0;i<this.Point.length;++i){this.Point[i].X+=xStep;this.Point[i].Y+=yStep;}}else if(this.MovePointIndex==0||this.MovePointIndex==1){if(this.MovePointIndex<this.Point.length){this.Point[this.MovePointIndex].X+=xStep;this.Point[this.MovePointIndex].Y+=yStep;}}else if(this.MovePointIndex==2)//宽度的点要计算
|
|
5992
5992
|
{this.Point[this.MovePointIndex].X+=xStep;this.Point[this.MovePointIndex].Y+=yStep;var x=this.Point[1].X-this.Point[0].X;var y=this.Point[1].Y-this.Point[0].Y;var angle=Math.atan(Math.abs(x/y));var yMove=this.ChannelWidth/Math.sin(angle)-yStep;this.ChannelWidth=Math.sin(angle)*yMove;}};//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
|
|
5993
5993
|
this.IsPointIn=function(x,y){if(!this.Frame||this.Status!=10)return-1;var data=this.Frame.Data;if(!data)return-1;//是否在点上
|
|
@@ -7780,10 +7780,10 @@ var item=option.Windows[i];if(!item)continue;if(item.Script){this.WindowIndex[in
|
|
|
7780
7780
|
}else if(item.API){var apiItem=item.API;this.WindowIndex[index]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexID=item.Index;var indexInfo=systemScript.Get(indexID);if(indexInfo){var args=indexInfo.Args;if(item.Args)indexInfo.Args=item.Args;indexInfo.ID=indexID;this.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
|
|
7781
7781
|
}}}}}if(!symbol||this.DayCount<=0){this.DrawEmpty();}else{this.ChartSplashPaint.SetTitle(this.LoadDataSplashTitle);this.ChartSplashPaint.EnableSplash(true);//增加下载动画
|
|
7782
7782
|
this.Draw();this.RequestData();}};this.SetPageInfo=function(pageInfo){if(!pageInfo)return;if(IFrameSplitOperator.IsBool(pageInfo.Enable))this.PageInfo.Enable=pageInfo.Enable;if(IFrameSplitOperator.IsNumber(pageInfo.Offset))this.PageInfo.Offset=pageInfo.Offset;if(IFrameSplitOperator.IsNumber(pageInfo.ShowDayCount))this.PageInfo.ShowDayCount=pageInfo.ShowDayCount;};this.ClearMinuteData=function(){this.SourceData=null;this.DayData=null;this.BeforeOpenData=null;this.AfterCloseData=null;this.MultiDayBeforeOpenData=null;this.MultiDayAfterCloseData=null;};this.ChangeDayCount=function(count,option){if(count<0)return;this.StopDisplayLatest();this.CancelAutoUpdate();this.AutoUpdateEvent(false,"MinuteChartContainer::ChangeDayCount");this.DayCount=count;this.ClearMinuteData();if(option&&option.PageInfo){this.SetPageInfo(option.PageInfo);this.ResetDayOffset();}if(this.DayCount>1){this.ChartDrawPicture=[];}else{this.ReloadChartDrawPicture();}this.ResetDataStatus();this.ClearIndexPaint();//清空指标
|
|
7783
|
-
this.ResetOverlaySymbolStatus();this.RequestData();};//叠加股票
|
|
7784
|
-
this.OverlaySymbol=function(symbol,option){for(var i=0;i<this.OverlayChartPaint.length;++
|
|
7783
|
+
this.ResetOverlaySymbolStatus();this.RequestData();};//叠加股票 symbol支持数据 ["600000.sh", "0000001.sz"]
|
|
7784
|
+
this.OverlaySymbol=function(symbol,option){var arySymbol=null;if(IFrameSplitOperator.IsString(symbol))arySymbol=[symbol];else if(Array.isArray(symbol))arySymbol=symbol;if(!IFrameSplitOperator.IsNonEmptyArray(arySymbol))return false;var aryNewSymbol=[];for(var i=0,j=0;i<arySymbol.length;++i){var strSymbol=arySymbol[i];var bFind=false;for(j=0;j<this.OverlayChartPaint.length;++j){var item=this.OverlayChartPaint[j];if(item.Symbol==strSymbol){bFind=true;console.warn('[MinuteChartContainer::OverlaySymbol] overlay symbol='+strSymbol+' exist.');break;}}if(!bFind)aryNewSymbol.push(strSymbol);}if(!IFrameSplitOperator.IsNonEmptyArray(arySymbol))return true;for(var i=0;i<aryNewSymbol.length;++i){var strSymbol=aryNewSymbol[i];var paint=new ChartOverlayMinutePriceLine();paint.Canvas=this.Canvas;paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;paint.ChartFrame=this.Frame.SubFrame[0].Frame;paint.Name="Overlay-Minute";paint.Symbol=strSymbol;paint.Identify='Overlay-Minute-'+strSymbol;if(option&&option.Color)paint.Color=option.Color;//外部设置颜色
|
|
7785
7785
|
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];++g_JSChartResource.OverlaySymbol.Random;paint.MainData=this.SourceData;//绑定主图数据
|
|
7786
|
-
if(paint.SetOption)paint.SetOption(option);this.OverlayChartPaint.push(paint);if(this.DayCount<=1)this.RequestOverlayMinuteData();//请求数据
|
|
7786
|
+
if(paint.SetOption)paint.SetOption(option);this.OverlayChartPaint.push(paint);}if(this.DayCount<=1)this.RequestOverlayMinuteData();//请求数据
|
|
7787
7787
|
else this.RequestOverlayHistoryMinuteData();return true;};this.ResetOverlaySymbolStatus=function(){for(var i in this.OverlayChartPaint){var item=this.OverlayChartPaint[i];item.Status=OVERLAY_STATUS_ID.STATUS_NONE_ID;}};//删除一个叠加股票
|
|
7788
7788
|
this.DeleteOverlaySymbol=function(symbol){for(var i in this.OverlayChartPaint){var item=this.OverlayChartPaint[i];if(item.Symbol===symbol){item.IsDelete=true;this.OverlayChartPaint.splice(i,1);this.UpdateFrameMaxMin();this.Draw();return true;}}console.warn('[MinuteChartContainer::DeleteOverlaySymbol] overlay symbol='+symbol+' not exist.');return false;};//取消叠加股票
|
|
7789
7789
|
this.ClearOverlaySymbol=function(){for(var i in this.OverlayChartPaint){var item=this.OverlayChartPaint[i];item.IsDelete=true;}this.OverlayChartPaint=[];this.Frame.SubFrame[0].Frame.YSplitOperator.OverlayChartPaint=this.OverlayChartPaint;this.TitlePaint[0].OverlayChartPaint=this.OverlayChartPaint;//绑定叠加
|
|
@@ -10351,10 +10351,10 @@ this.ALL=function(data,n){if(n<=0)n=1;var result=[];if(Array.isArray(data)){if(n
|
|
|
10351
10351
|
SUMBARS(X,A):将X向前累加直到大于等于A,返回这个区间的周期数,若所有的数据都累加后还不能达到A,则返回此时前面的总周期数.
|
|
10352
10352
|
例如:SUMBARS(VOL,CAPITAL)求完全换手到现在的周期数
|
|
10353
10353
|
*/this.SUMBARS=function(data,data2){var isArray=Array.isArray(data);var isArray2=Array.isArray(data2);var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);var result=[];if(isArray&&isNumber2){for(var i=0,n=0;i<data.length;++i){var sum=0;var n=0;for(var j=i-1;j>=0;--j,++n){var item=data[i];if(!IFrameSplitOperator.IsNumber(item))continue;sum+=data[j];if(sum>data2){break;}}result[i]=n;}}else if(isArray&&isArray2){var count=Math.max(data.length,data2.length);for(var i=0;i<count;++i){result[i]=null;var sum=0;var n=0;var value=data2[i];if(!IFrameSplitOperator.IsNumber(value))continue;for(var j=i-1;j>=0;--j,++n){var item=data[i];if(!IFrameSplitOperator.IsNumber(item))continue;sum+=data[j];if(sum>value){break;}}result[i]=n;}}else if(isNumber&&isArray2){for(var i=0;i<data2.length;++i){result[i]=null;var sum=0;var n=0;var value=data2[i];if(!IFrameSplitOperator.IsNumber(value))continue;for(var j=i-1;j>=0;--j,++n){sum+=data;if(sum>value){break;}}result[i]=n;}}else if(isNumber&&isNumber2){//TODO: 后面再写吧
|
|
10354
|
-
}return result;};//格式化字符串 "{0}-{1}", C, O;
|
|
10355
|
-
this.STRFORMAT=function(strFormat,args,node){var aryParam=strFormat.match(/{
|
|
10356
|
-
var maxIndex=-1;for(var i=0;i<aryParam.length;++i){var item=aryParam[i];if(item.length<3)continue;var value=item.slice(1,item.length-1);var index=parseInt(value);var paramItem={Src:item,Index:index,Text:null};if(maxIndex<index)maxIndex=index;mapParam.set(index,paramItem);}var isArray=false;//是否输出数组字符串
|
|
10357
|
-
var maxCount=0;for(var i=1;i<args.length;++i){var item=args[i];if(Array.isArray(item)){isArray=true;if(maxCount<item.length)maxCount=item.length;}}if(isArray){var result=[];for(var i=0;i<maxCount;++i){var strItem=strFormat;var _iteratorNormalCompletion19=true;var _didIteratorError19=false;var _iteratorError19=undefined;try{for(var _iterator19=(0,_getIterator3.default)(mapParam),_step19;!(_iteratorNormalCompletion19=(_step19=_iterator19.next()).done);_iteratorNormalCompletion19=true){var item=_step19.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){if(Array.isArray(paramItem)){var value=paramItem[i];if(value)text=''+value;}else{text=''+paramItem;}}strItem=strItem.replace(paramInfo.Src,text);}}catch(err){_didIteratorError19=true;_iteratorError19=err;}finally{try{if(!_iteratorNormalCompletion19&&_iterator19.return){_iterator19.return();}}finally{if(_didIteratorError19){throw _iteratorError19;}}}result[i]=strItem;}return result;}else{var result=strFormat;var _iteratorNormalCompletion20=true;var _didIteratorError20=false;var _iteratorError20=undefined;try{for(var _iterator20=(0,_getIterator3.default)(mapParam),_step20;!(_iteratorNormalCompletion20=(_step20=_iterator20.next()).done);_iteratorNormalCompletion20=true){var item=_step20.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){text=''+paramItem;}result=result.replace(paramInfo.Src,text);}}catch(err){_didIteratorError20=true;_iteratorError20=err;}finally{try{if(!_iteratorNormalCompletion20&&_iterator20.return){_iterator20.return();}}finally{if(_didIteratorError20){throw _iteratorError20;}}}return result;}};//函数调用
|
|
10354
|
+
}return result;};//格式化字符串 "{0}-{1}", C, O; 小数位数 {0:0.00}
|
|
10355
|
+
this.STRFORMAT=function(strFormat,args,node){var aryParam=strFormat.match(/{[0-9.:]+}/g);if(!IFrameSplitOperator.IsNonEmptyArray(aryParam))return null;var mapParam=new _map2.default();//key=index, value={Text}
|
|
10356
|
+
var maxIndex=-1;for(var i=0;i<aryParam.length;++i){var item=aryParam[i];if(item.length<3)continue;var value=item.slice(1,item.length-1);var index=-1,decimal=-1;if(value.indexOf(":")>0){var aryTemp=value.split(":");if(aryTemp){if(aryTemp[0])index=parseInt(aryTemp[0]);if(aryTemp[1]){if(aryTemp[1].indexOf(".")>=0){var zeroCount=0;var strTemp=aryTemp[1];for(var j=strTemp.length-1;j>=0;--j){if(strTemp[j]=="0")++zeroCount;else break;}if(zeroCount>0)decimal=zeroCount;}else if(aryTemp[1]=="0"){decimal=0;}}}}else{index=parseInt(value);}if(index<0)continue;var paramItem={Src:item,Index:index,Text:null,Decimal:null};if(decimal>=0)paramItem.Decimal=decimal;if(maxIndex<index)maxIndex=index;mapParam.set(index,paramItem);}var isArray=false;//是否输出数组字符串
|
|
10357
|
+
var maxCount=0;for(var i=1;i<args.length;++i){var item=args[i];if(Array.isArray(item)){isArray=true;if(maxCount<item.length)maxCount=item.length;}}if(isArray){var result=[];for(var i=0;i<maxCount;++i){var strItem=strFormat;var _iteratorNormalCompletion19=true;var _didIteratorError19=false;var _iteratorError19=undefined;try{for(var _iterator19=(0,_getIterator3.default)(mapParam),_step19;!(_iteratorNormalCompletion19=(_step19=_iterator19.next()).done);_iteratorNormalCompletion19=true){var item=_step19.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){if(Array.isArray(paramItem)){var value=paramItem[i];if(value){if(IFrameSplitOperator.IsNumber(paramInfo.Decimal))text=''+value.toFixed(paramInfo.Decimal);else text=''+value;}}else{text=''+paramItem;}}strItem=strItem.replace(paramInfo.Src,text);}}catch(err){_didIteratorError19=true;_iteratorError19=err;}finally{try{if(!_iteratorNormalCompletion19&&_iterator19.return){_iterator19.return();}}finally{if(_didIteratorError19){throw _iteratorError19;}}}result[i]=strItem;}return result;}else{var result=strFormat;var _iteratorNormalCompletion20=true;var _didIteratorError20=false;var _iteratorError20=undefined;try{for(var _iterator20=(0,_getIterator3.default)(mapParam),_step20;!(_iteratorNormalCompletion20=(_step20=_iterator20.next()).done);_iteratorNormalCompletion20=true){var item=_step20.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){text=''+paramItem;}result=result.replace(paramInfo.Src,text);}}catch(err){_didIteratorError20=true;_iteratorError20=err;}finally{try{if(!_iteratorNormalCompletion20&&_iterator20.return){_iterator20.return();}}finally{if(_didIteratorError20){throw _iteratorError20;}}}return result;}};//函数调用
|
|
10358
10358
|
this.CallFunction=function(name,args,node,symbolData){switch(name){case'MAX':case"MAX6":return this.MAX(args,node);case'MIN':case"MIN6":return this.MIN(args,node);case'REF':return this.REF(args[0],args[1]);case"REFV":return this.REFV(args[0],args[1]);case'REFX':return this.REFX(args[0],args[1]);case"REFXV":return this.REFXV(args[0],args[1]);case"REFX1"://文华函数
|
|
10359
10359
|
return this.REFX(args[0],args[1]);case'ABS':return this.ABS(args[0]);case'MA':return this.MA(args[0],args[1]);case"EMA":return this.EMA(args[0],args[1]);case"SMA":return this.SMA(args[0],args[1],args[2]);case"DMA":return this.DMA(args[0],args[1]);case"XMA":return this.XMA(args[0],args[1]);case'EXPMA':return this.EXPMA(args[0],args[1]);case'EXPMEMA':return this.EXPMEMA(args[0],args[1]);case'COUNT':return this.COUNT(args[0],args[1]);case'LLV':return this.LLV(args[0],args[1]);case"LV":return this.LV(args[0],args[1]);case'LLVBARS':return this.LLVBARS(args[0],args[1]);case'HHV':return this.HHV(args[0],args[1]);case'HV':return this.HV(args[0],args[1]);case'HHVBARS':return this.HHVBARS(args[0],args[1]);case'MULAR':return this.MULAR(args[0],args[1]);case'CROSS':return this.CROSS(args[0],args[1]);case'LONGCROSS':return this.LONGCROSS(args[0],args[1],args[2]);case"ISVALID":return this.ISVALID(args[0]);case"CROSSDOWN":return this.CROSSDOWN(args[0],args[1]);case"CROSSUP":return this.CROSSUP(args[0],args[1]);case'AVEDEV':return this.AVEDEV(args[0],args[1]);case'STD':return this.STD(args[0],args[1]);case'IF':case'IFF':case"IFELSE":return this.IF(args[0],args[1],args[2]);case'IFN':return this.IFN(args[0],args[1],args[2]);case'NOT':return this.NOT(args[0]);case'SUM':return this.SUM(args[0],args[1]);case'RANGE':return this.RANGE(args[0],args[1],args[2]);case'EXIST':return this.EXIST(args[0],args[1]);case'EXISTR':return this.EXISTR(args[0],args[1],args[2]);case'FILTER':return this.FILTER(args[0],args[1]);case'TFILTER':return this.TFILTER(args[0],args[1],args[2]);case'SLOPE':return this.SLOPE(args[0],args[1]);case'BARSLAST':return this.BARSLAST(args[0]);case'BARSCOUNT':return this.BARSCOUNT(args[0]);case'BARSSINCEN':return this.BARSSINCEN(args[0],args[1]);case'BARSSINCE':return this.BARSSINCE(args[0]);case'LAST':return this.LAST(args[0],args[1],args[2]);case'EVERY':return this.EVERY(args[0],args[1]);case'DEVSQ':return this.DEVSQ(args[0],args[1]);case'ZIG':return this.ZIG(args[0],args[1]);case'TROUGHBARS':return this.TROUGHBARS(args[0],args[1],args[2]);case"TROUGH":return this.TROUGH(args[0],args[1],args[2]);case'PEAKBARS':return this.PEAKBARS(args[0],args[1],args[2]);case'PEAK':return this.PEAK(args[0],args[1],args[2]);case'COST':return this.COST(args[0]);case'WINNER':return this.WINNER(args[0],node);case'PPART':return this.PPART(args[0],node);case"COSTEX":return this.COSTEX(args[0],args[1],node);case"LWINNER":return this.LWINNER(args[0],args[1],node);case"PWINNER":return this.PWINNER(args[0],args[1],node);case'FORCAST':return this.FORCAST(args[0],args[1]);case"TSMA":return this.TSMA(args[0],args[1]);case'STDP':return this.STDP(args[0],args[1]);case'VAR':return this.VAR(args[0],args[1]);case'VARP':return this.VARP(args[0],args[1]);case'UPNDAY':return this.UPNDAY(args[0],args[1]);case'DOWNNDAY':return this.DOWNNDAY(args[0],args[1]);case'NDAY':return this.NDAY(args[0],args[1],args[2]);case'RELATE':return this.RELATE(args[0],args[1],args[2]);case'COVAR':return this.COVAR(args[0],args[1],args[2]);case'BETA':return this.BETA(args[0]);case'BETA2':return this.BETA2(args[0],args[1],args[2]);case'WMA':return this.WMA(args[0],args[1]);case'MEMA':return this.MEMA(args[0],args[1]);case'SUMBARS':return this.SUMBARS(args[0],args[1]);case'REVERSE':return this.REVERSE(args[0]);case'SAR':return this.SAR(args[0],args[1],args[2]);case'SARTURN':return this.SARTURN(args[0],args[1],args[2]);case'BACKSET':return this.BACKSET(args[0],args[1]);case'BETWEEN':return this.BETWEEN(args[0],args[1],args[2]);case'STRCAT':return this.STRCAT(args[0],args[1]);case'CON2STR':return this.CON2STR(args[0],args[1]);case"VAR2STR":return this.VAR2STR(args[0],args[1]);case"VARCAT":return this.VARCAT(args[0],args[1]);case"STRSPACE":return this.STRSPACE(args[0]);case"FINDSTR":return this.FINDSTR(args[0],args[1]);case"STRCMP":return this.STRCMP(args[0],args[1]);case"STRLEN":return this.STRLEN(args[0]);case"STRFORMAT":return this.STRFORMAT(args[0],args,node);case'DTPRICE':return this.DTPRICE(args[0],args[1]);case'ZTPRICE':return this.ZTPRICE(args[0],args[1]);case'MOD':return this.MOD(args[0],args[1]);case'POW':return this.POW(args[0],args[1]);case'CEILING':return this.CEILING(args[0]);case'FLOOR':return this.FLOOR(args[0]);case'FRACPART':return this.FRACPART(args[0]);case"SIGN":return this.SIGN(args[0]);case'BARSLASTCOUNT':return this.BARSLASTCOUNT(args[0]);case'INTPART':return this.INTPART(args[0]);case"CONST":return this.CONST(args[0]);case"TOPRANGE":return this.TOPRANGE(args[0]);case"LOWRANGE":return this.LOWRANGE(args[0]);case"FINDLOW":return this.FINDLOW(args[0],args[1],args[2],args[3]);case"FINDLOWBARS":return this.FINDLOWBARS(args[0],args[1],args[2],args[3]);case"FINDHIGH":return this.FINDHIGH(args[0],args[1],args[2],args[3]);case"FINDHIGHBARS":return this.FINDHIGHBARS(args[0],args[1],args[2],args[3]);case"BARSNEXT":return this.BARSNEXT(args[0]);case"HOD":return this.HOD(args[0],args[1]);case"LOD":return this.LOD(args[0],args[1]);case"AMA":return this.AMA(args[0],args[1]);case"TMA":return this.TMA(args[0],args[1],args[2]);case"ROUND":return this.ROUND(args[0]);case"ROUND2":return this.ROUND2(args[0],args[1]);case"TRMA":return this.TRMA(args[0],args[1]);case"VALUEWHEN":return this.VALUEWHEN(args[0],args[1]);case"HARMEAN":return this.HARMEAN(args[0],args[1]);case"DATETODAY":return this.DATETODAY(args[0]);case"DAYTODATE":return this.DAYTODATE(args[0]);case"TIMETOSEC":return this.TIMETOSEC(args[0]);case"SECTOTIME":return this.SECTOTIME(args[0]);case"ANY":return this.ANY(args[0],args[1]);case"ALL":return this.ALL(args[0],args[1]);case"TESTSKIP":return this.TESTSKIP(args[0],node);case"SUMBARS":return this.SUMBARS(args[0],args[1]);case"ALIGNRIGHT":return this.ALIGNRIGHT(args[0]);//三角函数
|
|
10360
10360
|
case'ATAN':return this.Trigonometric(args[0],Math.atan);case'ACOS':return this.ACOS(args[0]);case'ASIN':return this.ASIN(args[0]);case'COS':return this.Trigonometric(args[0],Math.cos);case'SIN':return this.Trigonometric(args[0],Math.sin);case'TAN':return this.Trigonometric(args[0],Math.tan);case'LN':return this.Trigonometric(args[0],Math.log);case'LOG':return this.Trigonometric(args[0],_log2.default);case'EXP':return this.Trigonometric(args[0],Math.exp);case'SQRT':return this.Trigonometric(args[0],Math.sqrt);case"RAND":return this.RAND(args[0]);default:this.ThrowUnexpectedNode(node,'函数'+name+'不存在',name);}};//调用自定义函数 返回数据格式{Out:输出数据, Draw:绘图数据(可选)}
|
|
@@ -12734,7 +12734,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
12734
12734
|
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);};}/********************************************************************************
|
|
12735
12735
|
* 版本信息输出
|
|
12736
12736
|
*
|
|
12737
|
-
*/var HQCHART_VERSION="1.1.
|
|
12737
|
+
*/var HQCHART_VERSION="1.1.12627";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
|
|
12738
12738
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12739
12739
|
// BaseIndex:BaseIndex,
|
|
12740
12740
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -8611,10 +8611,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
8611
8611
|
}
|
|
8612
8612
|
|
|
8613
8613
|
|
|
8614
|
-
//格式化字符串 "{0}-{1}", C, O;
|
|
8614
|
+
//格式化字符串 "{0}-{1}", C, O; 小数位数 {0:0.00}
|
|
8615
8615
|
this.STRFORMAT=function(strFormat,args,node)
|
|
8616
8616
|
{
|
|
8617
|
-
var aryParam=strFormat.match(/{
|
|
8617
|
+
var aryParam=strFormat.match(/{[0-9.:]+}/g);
|
|
8618
8618
|
|
|
8619
8619
|
if (!IFrameSplitOperator.IsNonEmptyArray(aryParam)) return null;
|
|
8620
8620
|
|
|
@@ -8626,9 +8626,47 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
8626
8626
|
if (item.length<3) continue;
|
|
8627
8627
|
|
|
8628
8628
|
var value=item.slice(1, item.length-1);
|
|
8629
|
-
var index
|
|
8629
|
+
var index=-1,decimal=-1;
|
|
8630
|
+
if (value.indexOf(":")>0)
|
|
8631
|
+
{
|
|
8632
|
+
var aryTemp=value.split(":");
|
|
8633
|
+
if (aryTemp)
|
|
8634
|
+
{
|
|
8635
|
+
if (aryTemp[0])
|
|
8636
|
+
index=parseInt(aryTemp[0]);
|
|
8630
8637
|
|
|
8631
|
-
|
|
8638
|
+
if (aryTemp[1])
|
|
8639
|
+
{
|
|
8640
|
+
if (aryTemp[1].indexOf(".")>=0)
|
|
8641
|
+
{
|
|
8642
|
+
var zeroCount=0;
|
|
8643
|
+
var strTemp=aryTemp[1];
|
|
8644
|
+
for(var j=strTemp.length-1; j>=0; --j)
|
|
8645
|
+
{
|
|
8646
|
+
if (strTemp[j]=="0") ++zeroCount;
|
|
8647
|
+
else break;
|
|
8648
|
+
}
|
|
8649
|
+
|
|
8650
|
+
if (zeroCount>0) decimal=zeroCount;
|
|
8651
|
+
}
|
|
8652
|
+
else if (aryTemp[1]=="0")
|
|
8653
|
+
{
|
|
8654
|
+
decimal=0;
|
|
8655
|
+
}
|
|
8656
|
+
}
|
|
8657
|
+
|
|
8658
|
+
}
|
|
8659
|
+
|
|
8660
|
+
}
|
|
8661
|
+
else
|
|
8662
|
+
{
|
|
8663
|
+
index=parseInt(value);
|
|
8664
|
+
}
|
|
8665
|
+
|
|
8666
|
+
if (index<0) continue;
|
|
8667
|
+
|
|
8668
|
+
var paramItem={ Src:item, Index:index, Text:null, Decimal:null };
|
|
8669
|
+
if (decimal>=0) paramItem.Decimal=decimal;
|
|
8632
8670
|
|
|
8633
8671
|
if (maxIndex<index) maxIndex=index;
|
|
8634
8672
|
|
|
@@ -8665,7 +8703,13 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
8665
8703
|
if (Array.isArray(paramItem))
|
|
8666
8704
|
{
|
|
8667
8705
|
var value=paramItem[i];
|
|
8668
|
-
if (value)
|
|
8706
|
+
if (value)
|
|
8707
|
+
{
|
|
8708
|
+
if (IFrameSplitOperator.IsNumber(paramInfo.Decimal))
|
|
8709
|
+
text=`${value.toFixed(paramInfo.Decimal)}`;
|
|
8710
|
+
else
|
|
8711
|
+
text=`${value}`;
|
|
8712
|
+
}
|
|
8669
8713
|
}
|
|
8670
8714
|
else
|
|
8671
8715
|
{
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -51289,7 +51289,7 @@ function IChartDrawPicture()
|
|
|
51289
51289
|
//xStep,yStep 移动的偏移量
|
|
51290
51290
|
this.Move=function(xStep,yStep)
|
|
51291
51291
|
{
|
|
51292
|
-
if (this.Status!=20) return
|
|
51292
|
+
if (this.Status!=20) return false;
|
|
51293
51293
|
if (!this.Frame) return false;
|
|
51294
51294
|
var data=this.Frame.Data;
|
|
51295
51295
|
if (!data) return false;
|
|
@@ -54714,7 +54714,7 @@ function ChartDrawPictureParallelChannel()
|
|
|
54714
54714
|
//xStep,yStep 移动的偏移量
|
|
54715
54715
|
this.Move=function(xStep,yStep)
|
|
54716
54716
|
{
|
|
54717
|
-
if (this.Status!=20) return
|
|
54717
|
+
if (this.Status!=20) return false;
|
|
54718
54718
|
if (!this.Frame) return false;
|
|
54719
54719
|
var data=this.Frame.Data;
|
|
54720
54720
|
if (!data) return false;
|
|
@@ -74153,34 +74153,55 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
74153
74153
|
this.RequestData();
|
|
74154
74154
|
}
|
|
74155
74155
|
|
|
74156
|
-
//叠加股票
|
|
74156
|
+
//叠加股票 symbol支持数据 ["600000.sh", "0000001.sz"]
|
|
74157
74157
|
this.OverlaySymbol=function(symbol,option)
|
|
74158
74158
|
{
|
|
74159
|
-
|
|
74159
|
+
var arySymbol=null;
|
|
74160
|
+
if (IFrameSplitOperator.IsString(symbol)) arySymbol=[symbol];
|
|
74161
|
+
else if (Array.isArray(symbol)) arySymbol=symbol;
|
|
74162
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(arySymbol)) return false;
|
|
74163
|
+
|
|
74164
|
+
var aryNewSymbol=[];
|
|
74165
|
+
for(var i=0, j=0;i<arySymbol.length;++i)
|
|
74160
74166
|
{
|
|
74161
|
-
var
|
|
74162
|
-
|
|
74167
|
+
var strSymbol=arySymbol[i];
|
|
74168
|
+
var bFind=false;
|
|
74169
|
+
for(j=0;j<this.OverlayChartPaint.length; ++j)
|
|
74163
74170
|
{
|
|
74164
|
-
|
|
74165
|
-
|
|
74171
|
+
var item=this.OverlayChartPaint[j];
|
|
74172
|
+
if (item.Symbol==strSymbol)
|
|
74173
|
+
{
|
|
74174
|
+
bFind=true;
|
|
74175
|
+
console.warn(`[MinuteChartContainer::OverlaySymbol] overlay symbol=${strSymbol} exist.`);
|
|
74176
|
+
break;
|
|
74177
|
+
}
|
|
74166
74178
|
}
|
|
74179
|
+
|
|
74180
|
+
if (!bFind) aryNewSymbol.push(strSymbol);
|
|
74167
74181
|
}
|
|
74168
74182
|
|
|
74169
|
-
|
|
74170
|
-
paint.Canvas=this.Canvas;
|
|
74171
|
-
paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;
|
|
74172
|
-
paint.ChartFrame=this.Frame.SubFrame[0].Frame;
|
|
74173
|
-
paint.Name="Overlay-Minute";
|
|
74174
|
-
paint.Symbol=symbol;
|
|
74175
|
-
paint.Identify=`Overlay-Minute-${symbol}`;
|
|
74176
|
-
if (option && option.Color) paint.Color=option.Color; //外部设置颜色
|
|
74177
|
-
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];
|
|
74178
|
-
++g_JSChartResource.OverlaySymbol.Random;
|
|
74179
|
-
paint.MainData=this.SourceData; //绑定主图数据
|
|
74183
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(arySymbol)) return true;
|
|
74180
74184
|
|
|
74181
|
-
|
|
74185
|
+
for(var i=0;i<aryNewSymbol.length;++i)
|
|
74186
|
+
{
|
|
74187
|
+
var strSymbol=aryNewSymbol[i];
|
|
74182
74188
|
|
|
74183
|
-
|
|
74189
|
+
var paint=new ChartOverlayMinutePriceLine();
|
|
74190
|
+
paint.Canvas=this.Canvas;
|
|
74191
|
+
paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;
|
|
74192
|
+
paint.ChartFrame=this.Frame.SubFrame[0].Frame;
|
|
74193
|
+
paint.Name="Overlay-Minute";
|
|
74194
|
+
paint.Symbol=strSymbol;
|
|
74195
|
+
paint.Identify=`Overlay-Minute-${strSymbol}`;
|
|
74196
|
+
if (option && option.Color) paint.Color=option.Color; //外部设置颜色
|
|
74197
|
+
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];
|
|
74198
|
+
++g_JSChartResource.OverlaySymbol.Random;
|
|
74199
|
+
paint.MainData=this.SourceData; //绑定主图数据
|
|
74200
|
+
|
|
74201
|
+
if (paint.SetOption) paint.SetOption(option);
|
|
74202
|
+
|
|
74203
|
+
this.OverlayChartPaint.push(paint);
|
|
74204
|
+
}
|
|
74184
74205
|
|
|
74185
74206
|
if (this.DayCount<=1) this.RequestOverlayMinuteData(); //请求数据
|
|
74186
74207
|
else this.RequestOverlayHistoryMinuteData();
|
|
@@ -55369,7 +55369,7 @@ function IChartDrawPicture()
|
|
|
55369
55369
|
//xStep,yStep 移动的偏移量
|
|
55370
55370
|
this.Move=function(xStep,yStep)
|
|
55371
55371
|
{
|
|
55372
|
-
if (this.Status!=20) return
|
|
55372
|
+
if (this.Status!=20) return false;
|
|
55373
55373
|
if (!this.Frame) return false;
|
|
55374
55374
|
var data=this.Frame.Data;
|
|
55375
55375
|
if (!data) return false;
|
|
@@ -58794,7 +58794,7 @@ function ChartDrawPictureParallelChannel()
|
|
|
58794
58794
|
//xStep,yStep 移动的偏移量
|
|
58795
58795
|
this.Move=function(xStep,yStep)
|
|
58796
58796
|
{
|
|
58797
|
-
if (this.Status!=20) return
|
|
58797
|
+
if (this.Status!=20) return false;
|
|
58798
58798
|
if (!this.Frame) return false;
|
|
58799
58799
|
var data=this.Frame.Data;
|
|
58800
58800
|
if (!data) return false;
|
|
@@ -78233,34 +78233,55 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
78233
78233
|
this.RequestData();
|
|
78234
78234
|
}
|
|
78235
78235
|
|
|
78236
|
-
//叠加股票
|
|
78236
|
+
//叠加股票 symbol支持数据 ["600000.sh", "0000001.sz"]
|
|
78237
78237
|
this.OverlaySymbol=function(symbol,option)
|
|
78238
78238
|
{
|
|
78239
|
-
|
|
78239
|
+
var arySymbol=null;
|
|
78240
|
+
if (IFrameSplitOperator.IsString(symbol)) arySymbol=[symbol];
|
|
78241
|
+
else if (Array.isArray(symbol)) arySymbol=symbol;
|
|
78242
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(arySymbol)) return false;
|
|
78243
|
+
|
|
78244
|
+
var aryNewSymbol=[];
|
|
78245
|
+
for(var i=0, j=0;i<arySymbol.length;++i)
|
|
78240
78246
|
{
|
|
78241
|
-
var
|
|
78242
|
-
|
|
78247
|
+
var strSymbol=arySymbol[i];
|
|
78248
|
+
var bFind=false;
|
|
78249
|
+
for(j=0;j<this.OverlayChartPaint.length; ++j)
|
|
78243
78250
|
{
|
|
78244
|
-
|
|
78245
|
-
|
|
78251
|
+
var item=this.OverlayChartPaint[j];
|
|
78252
|
+
if (item.Symbol==strSymbol)
|
|
78253
|
+
{
|
|
78254
|
+
bFind=true;
|
|
78255
|
+
console.warn(`[MinuteChartContainer::OverlaySymbol] overlay symbol=${strSymbol} exist.`);
|
|
78256
|
+
break;
|
|
78257
|
+
}
|
|
78246
78258
|
}
|
|
78259
|
+
|
|
78260
|
+
if (!bFind) aryNewSymbol.push(strSymbol);
|
|
78247
78261
|
}
|
|
78248
78262
|
|
|
78249
|
-
|
|
78250
|
-
paint.Canvas=this.Canvas;
|
|
78251
|
-
paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;
|
|
78252
|
-
paint.ChartFrame=this.Frame.SubFrame[0].Frame;
|
|
78253
|
-
paint.Name="Overlay-Minute";
|
|
78254
|
-
paint.Symbol=symbol;
|
|
78255
|
-
paint.Identify=`Overlay-Minute-${symbol}`;
|
|
78256
|
-
if (option && option.Color) paint.Color=option.Color; //外部设置颜色
|
|
78257
|
-
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];
|
|
78258
|
-
++g_JSChartResource.OverlaySymbol.Random;
|
|
78259
|
-
paint.MainData=this.SourceData; //绑定主图数据
|
|
78263
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(arySymbol)) return true;
|
|
78260
78264
|
|
|
78261
|
-
|
|
78265
|
+
for(var i=0;i<aryNewSymbol.length;++i)
|
|
78266
|
+
{
|
|
78267
|
+
var strSymbol=aryNewSymbol[i];
|
|
78262
78268
|
|
|
78263
|
-
|
|
78269
|
+
var paint=new ChartOverlayMinutePriceLine();
|
|
78270
|
+
paint.Canvas=this.Canvas;
|
|
78271
|
+
paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;
|
|
78272
|
+
paint.ChartFrame=this.Frame.SubFrame[0].Frame;
|
|
78273
|
+
paint.Name="Overlay-Minute";
|
|
78274
|
+
paint.Symbol=strSymbol;
|
|
78275
|
+
paint.Identify=`Overlay-Minute-${strSymbol}`;
|
|
78276
|
+
if (option && option.Color) paint.Color=option.Color; //外部设置颜色
|
|
78277
|
+
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];
|
|
78278
|
+
++g_JSChartResource.OverlaySymbol.Random;
|
|
78279
|
+
paint.MainData=this.SourceData; //绑定主图数据
|
|
78280
|
+
|
|
78281
|
+
if (paint.SetOption) paint.SetOption(option);
|
|
78282
|
+
|
|
78283
|
+
this.OverlayChartPaint.push(paint);
|
|
78284
|
+
}
|
|
78264
78285
|
|
|
78265
78286
|
if (this.DayCount<=1) this.RequestOverlayMinuteData(); //请求数据
|
|
78266
78287
|
else this.RequestOverlayHistoryMinuteData();
|
|
@@ -102543,10 +102564,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
102543
102564
|
}
|
|
102544
102565
|
|
|
102545
102566
|
|
|
102546
|
-
//格式化字符串 "{0}-{1}", C, O;
|
|
102567
|
+
//格式化字符串 "{0}-{1}", C, O; 小数位数 {0:0.00}
|
|
102547
102568
|
this.STRFORMAT=function(strFormat,args,node)
|
|
102548
102569
|
{
|
|
102549
|
-
var aryParam=strFormat.match(/{
|
|
102570
|
+
var aryParam=strFormat.match(/{[0-9.:]+}/g);
|
|
102550
102571
|
|
|
102551
102572
|
if (!IFrameSplitOperator.IsNonEmptyArray(aryParam)) return null;
|
|
102552
102573
|
|
|
@@ -102558,9 +102579,47 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
102558
102579
|
if (item.length<3) continue;
|
|
102559
102580
|
|
|
102560
102581
|
var value=item.slice(1, item.length-1);
|
|
102561
|
-
var index
|
|
102582
|
+
var index=-1,decimal=-1;
|
|
102583
|
+
if (value.indexOf(":")>0)
|
|
102584
|
+
{
|
|
102585
|
+
var aryTemp=value.split(":");
|
|
102586
|
+
if (aryTemp)
|
|
102587
|
+
{
|
|
102588
|
+
if (aryTemp[0])
|
|
102589
|
+
index=parseInt(aryTemp[0]);
|
|
102562
102590
|
|
|
102563
|
-
|
|
102591
|
+
if (aryTemp[1])
|
|
102592
|
+
{
|
|
102593
|
+
if (aryTemp[1].indexOf(".")>=0)
|
|
102594
|
+
{
|
|
102595
|
+
var zeroCount=0;
|
|
102596
|
+
var strTemp=aryTemp[1];
|
|
102597
|
+
for(var j=strTemp.length-1; j>=0; --j)
|
|
102598
|
+
{
|
|
102599
|
+
if (strTemp[j]=="0") ++zeroCount;
|
|
102600
|
+
else break;
|
|
102601
|
+
}
|
|
102602
|
+
|
|
102603
|
+
if (zeroCount>0) decimal=zeroCount;
|
|
102604
|
+
}
|
|
102605
|
+
else if (aryTemp[1]=="0")
|
|
102606
|
+
{
|
|
102607
|
+
decimal=0;
|
|
102608
|
+
}
|
|
102609
|
+
}
|
|
102610
|
+
|
|
102611
|
+
}
|
|
102612
|
+
|
|
102613
|
+
}
|
|
102614
|
+
else
|
|
102615
|
+
{
|
|
102616
|
+
index=parseInt(value);
|
|
102617
|
+
}
|
|
102618
|
+
|
|
102619
|
+
if (index<0) continue;
|
|
102620
|
+
|
|
102621
|
+
var paramItem={ Src:item, Index:index, Text:null, Decimal:null };
|
|
102622
|
+
if (decimal>=0) paramItem.Decimal=decimal;
|
|
102564
102623
|
|
|
102565
102624
|
if (maxIndex<index) maxIndex=index;
|
|
102566
102625
|
|
|
@@ -102597,7 +102656,13 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
102597
102656
|
if (Array.isArray(paramItem))
|
|
102598
102657
|
{
|
|
102599
102658
|
var value=paramItem[i];
|
|
102600
|
-
if (value)
|
|
102659
|
+
if (value)
|
|
102660
|
+
{
|
|
102661
|
+
if (IFrameSplitOperator.IsNumber(paramInfo.Decimal))
|
|
102662
|
+
text=`${value.toFixed(paramInfo.Decimal)}`;
|
|
102663
|
+
else
|
|
102664
|
+
text=`${value}`;
|
|
102665
|
+
}
|
|
102601
102666
|
}
|
|
102602
102667
|
else
|
|
102603
102668
|
{
|
|
@@ -129881,7 +129946,7 @@ function ScrollBarBGChart()
|
|
|
129881
129946
|
|
|
129882
129947
|
|
|
129883
129948
|
|
|
129884
|
-
var HQCHART_VERSION="1.1.
|
|
129949
|
+
var HQCHART_VERSION="1.1.12627";
|
|
129885
129950
|
|
|
129886
129951
|
function PrintHQChartVersion()
|
|
129887
129952
|
{
|
|
@@ -55413,7 +55413,7 @@ function IChartDrawPicture()
|
|
|
55413
55413
|
//xStep,yStep 移动的偏移量
|
|
55414
55414
|
this.Move=function(xStep,yStep)
|
|
55415
55415
|
{
|
|
55416
|
-
if (this.Status!=20) return
|
|
55416
|
+
if (this.Status!=20) return false;
|
|
55417
55417
|
if (!this.Frame) return false;
|
|
55418
55418
|
var data=this.Frame.Data;
|
|
55419
55419
|
if (!data) return false;
|
|
@@ -58838,7 +58838,7 @@ function ChartDrawPictureParallelChannel()
|
|
|
58838
58838
|
//xStep,yStep 移动的偏移量
|
|
58839
58839
|
this.Move=function(xStep,yStep)
|
|
58840
58840
|
{
|
|
58841
|
-
if (this.Status!=20) return
|
|
58841
|
+
if (this.Status!=20) return false;
|
|
58842
58842
|
if (!this.Frame) return false;
|
|
58843
58843
|
var data=this.Frame.Data;
|
|
58844
58844
|
if (!data) return false;
|
|
@@ -78277,34 +78277,55 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
78277
78277
|
this.RequestData();
|
|
78278
78278
|
}
|
|
78279
78279
|
|
|
78280
|
-
//叠加股票
|
|
78280
|
+
//叠加股票 symbol支持数据 ["600000.sh", "0000001.sz"]
|
|
78281
78281
|
this.OverlaySymbol=function(symbol,option)
|
|
78282
78282
|
{
|
|
78283
|
-
|
|
78283
|
+
var arySymbol=null;
|
|
78284
|
+
if (IFrameSplitOperator.IsString(symbol)) arySymbol=[symbol];
|
|
78285
|
+
else if (Array.isArray(symbol)) arySymbol=symbol;
|
|
78286
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(arySymbol)) return false;
|
|
78287
|
+
|
|
78288
|
+
var aryNewSymbol=[];
|
|
78289
|
+
for(var i=0, j=0;i<arySymbol.length;++i)
|
|
78284
78290
|
{
|
|
78285
|
-
var
|
|
78286
|
-
|
|
78291
|
+
var strSymbol=arySymbol[i];
|
|
78292
|
+
var bFind=false;
|
|
78293
|
+
for(j=0;j<this.OverlayChartPaint.length; ++j)
|
|
78287
78294
|
{
|
|
78288
|
-
|
|
78289
|
-
|
|
78295
|
+
var item=this.OverlayChartPaint[j];
|
|
78296
|
+
if (item.Symbol==strSymbol)
|
|
78297
|
+
{
|
|
78298
|
+
bFind=true;
|
|
78299
|
+
console.warn(`[MinuteChartContainer::OverlaySymbol] overlay symbol=${strSymbol} exist.`);
|
|
78300
|
+
break;
|
|
78301
|
+
}
|
|
78290
78302
|
}
|
|
78303
|
+
|
|
78304
|
+
if (!bFind) aryNewSymbol.push(strSymbol);
|
|
78291
78305
|
}
|
|
78292
78306
|
|
|
78293
|
-
|
|
78294
|
-
paint.Canvas=this.Canvas;
|
|
78295
|
-
paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;
|
|
78296
|
-
paint.ChartFrame=this.Frame.SubFrame[0].Frame;
|
|
78297
|
-
paint.Name="Overlay-Minute";
|
|
78298
|
-
paint.Symbol=symbol;
|
|
78299
|
-
paint.Identify=`Overlay-Minute-${symbol}`;
|
|
78300
|
-
if (option && option.Color) paint.Color=option.Color; //外部设置颜色
|
|
78301
|
-
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];
|
|
78302
|
-
++g_JSChartResource.OverlaySymbol.Random;
|
|
78303
|
-
paint.MainData=this.SourceData; //绑定主图数据
|
|
78307
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(arySymbol)) return true;
|
|
78304
78308
|
|
|
78305
|
-
|
|
78309
|
+
for(var i=0;i<aryNewSymbol.length;++i)
|
|
78310
|
+
{
|
|
78311
|
+
var strSymbol=aryNewSymbol[i];
|
|
78306
78312
|
|
|
78307
|
-
|
|
78313
|
+
var paint=new ChartOverlayMinutePriceLine();
|
|
78314
|
+
paint.Canvas=this.Canvas;
|
|
78315
|
+
paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;
|
|
78316
|
+
paint.ChartFrame=this.Frame.SubFrame[0].Frame;
|
|
78317
|
+
paint.Name="Overlay-Minute";
|
|
78318
|
+
paint.Symbol=strSymbol;
|
|
78319
|
+
paint.Identify=`Overlay-Minute-${strSymbol}`;
|
|
78320
|
+
if (option && option.Color) paint.Color=option.Color; //外部设置颜色
|
|
78321
|
+
else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];
|
|
78322
|
+
++g_JSChartResource.OverlaySymbol.Random;
|
|
78323
|
+
paint.MainData=this.SourceData; //绑定主图数据
|
|
78324
|
+
|
|
78325
|
+
if (paint.SetOption) paint.SetOption(option);
|
|
78326
|
+
|
|
78327
|
+
this.OverlayChartPaint.push(paint);
|
|
78328
|
+
}
|
|
78308
78329
|
|
|
78309
78330
|
if (this.DayCount<=1) this.RequestOverlayMinuteData(); //请求数据
|
|
78310
78331
|
else this.RequestOverlayHistoryMinuteData();
|
|
@@ -102587,10 +102608,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
102587
102608
|
}
|
|
102588
102609
|
|
|
102589
102610
|
|
|
102590
|
-
//格式化字符串 "{0}-{1}", C, O;
|
|
102611
|
+
//格式化字符串 "{0}-{1}", C, O; 小数位数 {0:0.00}
|
|
102591
102612
|
this.STRFORMAT=function(strFormat,args,node)
|
|
102592
102613
|
{
|
|
102593
|
-
var aryParam=strFormat.match(/{
|
|
102614
|
+
var aryParam=strFormat.match(/{[0-9.:]+}/g);
|
|
102594
102615
|
|
|
102595
102616
|
if (!IFrameSplitOperator.IsNonEmptyArray(aryParam)) return null;
|
|
102596
102617
|
|
|
@@ -102602,9 +102623,47 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
102602
102623
|
if (item.length<3) continue;
|
|
102603
102624
|
|
|
102604
102625
|
var value=item.slice(1, item.length-1);
|
|
102605
|
-
var index
|
|
102626
|
+
var index=-1,decimal=-1;
|
|
102627
|
+
if (value.indexOf(":")>0)
|
|
102628
|
+
{
|
|
102629
|
+
var aryTemp=value.split(":");
|
|
102630
|
+
if (aryTemp)
|
|
102631
|
+
{
|
|
102632
|
+
if (aryTemp[0])
|
|
102633
|
+
index=parseInt(aryTemp[0]);
|
|
102606
102634
|
|
|
102607
|
-
|
|
102635
|
+
if (aryTemp[1])
|
|
102636
|
+
{
|
|
102637
|
+
if (aryTemp[1].indexOf(".")>=0)
|
|
102638
|
+
{
|
|
102639
|
+
var zeroCount=0;
|
|
102640
|
+
var strTemp=aryTemp[1];
|
|
102641
|
+
for(var j=strTemp.length-1; j>=0; --j)
|
|
102642
|
+
{
|
|
102643
|
+
if (strTemp[j]=="0") ++zeroCount;
|
|
102644
|
+
else break;
|
|
102645
|
+
}
|
|
102646
|
+
|
|
102647
|
+
if (zeroCount>0) decimal=zeroCount;
|
|
102648
|
+
}
|
|
102649
|
+
else if (aryTemp[1]=="0")
|
|
102650
|
+
{
|
|
102651
|
+
decimal=0;
|
|
102652
|
+
}
|
|
102653
|
+
}
|
|
102654
|
+
|
|
102655
|
+
}
|
|
102656
|
+
|
|
102657
|
+
}
|
|
102658
|
+
else
|
|
102659
|
+
{
|
|
102660
|
+
index=parseInt(value);
|
|
102661
|
+
}
|
|
102662
|
+
|
|
102663
|
+
if (index<0) continue;
|
|
102664
|
+
|
|
102665
|
+
var paramItem={ Src:item, Index:index, Text:null, Decimal:null };
|
|
102666
|
+
if (decimal>=0) paramItem.Decimal=decimal;
|
|
102608
102667
|
|
|
102609
102668
|
if (maxIndex<index) maxIndex=index;
|
|
102610
102669
|
|
|
@@ -102641,7 +102700,13 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
102641
102700
|
if (Array.isArray(paramItem))
|
|
102642
102701
|
{
|
|
102643
102702
|
var value=paramItem[i];
|
|
102644
|
-
if (value)
|
|
102703
|
+
if (value)
|
|
102704
|
+
{
|
|
102705
|
+
if (IFrameSplitOperator.IsNumber(paramInfo.Decimal))
|
|
102706
|
+
text=`${value.toFixed(paramInfo.Decimal)}`;
|
|
102707
|
+
else
|
|
102708
|
+
text=`${value}`;
|
|
102709
|
+
}
|
|
102645
102710
|
}
|
|
102646
102711
|
else
|
|
102647
102712
|
{
|
|
@@ -130039,7 +130104,7 @@ function HQChartScriptWorker()
|
|
|
130039
130104
|
|
|
130040
130105
|
|
|
130041
130106
|
|
|
130042
|
-
var HQCHART_VERSION="1.1.
|
|
130107
|
+
var HQCHART_VERSION="1.1.12627";
|
|
130043
130108
|
|
|
130044
130109
|
function PrintHQChartVersion()
|
|
130045
130110
|
{
|