hqchart 1.1.12614 → 1.1.12622
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 +17 -7
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +120 -1
- package/src/jscommon/umychart.js +102 -0
- package/src/jscommon/umychart.resource/js/codemirror/javascript.js +24 -3
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +223 -2
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +223 -2
package/lib/umychart.vue.js
CHANGED
|
@@ -3941,7 +3941,9 @@ FontName:g_JSChartResource.DRAWNUMBER.FontName,YOffset:g_JSChartResource.DRAWNUM
|
|
|
3941
3941
|
{if(!this.Text)return;var isHScreen=this.ChartFrame.IsHScreen===true;if(isHScreen){var y=this.ChartBorder.GetRightEx()-this.ChartBorder.GetWidthEx()*this.Position.Y;var x=this.ChartBorder.GetTop()+this.ChartBorder.GetHeight()*this.Position.X;}else{var x=this.ChartBorder.GetLeft()+this.ChartBorder.GetWidth()*this.Position.X;var y=this.ChartBorder.GetTopEx()+this.ChartBorder.GetHeightEx()*this.Position.Y;}this.Canvas.fillStyle=this.Color;if(this.Name=="DRAWTEXT_FIX")this.Canvas.font=this.Font.DRAWTEXT_FIX;else if(this.Name=="DRAWNUMBER_FIX")this.Canvas.font=this.Font.DRAWNUMBER_FIX;//TYPE:0为左对齐,1为右对齐.
|
|
3942
3942
|
if(this.Position.Type==0)this.Canvas.textAlign='left';else if(this.Position.Type==1)this.Canvas.textAlign='right';else this.Canvas.textAlign='center';if(this.Direction==1)this.Canvas.textBaseline='bottom';else if(this.Direction==2)this.Canvas.textBaseline='top';else this.Canvas.textBaseline='middle';if(Array.isArray(this.Text)){if(!this.Data||!this.Data.Data)return;var xPointCount=this.ChartFrame.XPointCount;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var text=this.Text[i];if(text){this.DrawText(text,x,y,isHScreen);break;}}}else{this.DrawText(this.Text,x,y,isHScreen);}};this.DrawText=function(text,x,y,isHScreen){if(isHScreen){this.Canvas.save();this.Canvas.translate(y,x);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(text,0,0);this.Canvas.restore();}else{this.Canvas.fillText(text,x,y);}};this.DrawTextV2=function(text,drawInfo,isHScreen){var textWidth=this.Canvas.measureText(text).width;if(isHScreen){var x=drawInfo.Y;var y=drawInfo.X;if(drawInfo.Text.Align=="right")y=y-textWidth;else if(drawInfo.Text.Align=="center")y=y-textWidth/2;if(drawInfo.Text.Baseline=="top")x-=drawInfo.Font.Height;else if(drawInfo.Text.Baseline=="middle")x-=drawInfo.Font.Height/2;if(this.TextBG&&(this.TextBG.Color||this.TextBG.Border)){var margin=this.TextBG.Margin;//0=上 1=下 2=左 3=右
|
|
3943
3943
|
var xRect=x-margin[0];var yRect=y-margin[2];var bgWidth=textWidth+margin[2]+margin[3];var bgHeight=drawInfo.Font.Height+margin[0]+margin[1];if(this.TextBG.Color){this.Canvas.fillStyle=this.TextBG.Color;this.Canvas.fillRect(xRect,yRect,bgHeight,bgWidth);}if(this.TextBG.Border){this.Canvas.strokeStyle=this.TextBG.Border;this.Canvas.strokeRect(ToFixedPoint(xRect),ToFixedPoint(yRect),ToFixedRect(bgHeight),ToFixedRect(bgWidth));}}this.Canvas.textBaseline="bottom";this.Canvas.textAlign="left";this.Canvas.fillStyle=drawInfo.Text.Color;this.Canvas.save();this.Canvas.translate(x,y);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(text,0,0);this.Canvas.restore();}else{var x=drawInfo.X;var y=drawInfo.Y;if(drawInfo.Text.Align=="right")x=x-textWidth;else if(drawInfo.Text.Align=="center")x=x-textWidth/2;if(drawInfo.Text.Baseline=="top")y+=drawInfo.Font.Height;else if(drawInfo.Text.Baseline=="middle")y+=drawInfo.Font.Height/2;if(this.TextBG&&(this.TextBG.Color||this.TextBG.Border)){var margin=this.TextBG.Margin;//0=上 1=下 2=左 3=右
|
|
3944
|
-
var xRect=x-margin[2];var yRect=y-drawInfo.Font.Height-margin[1];var bgWidth=textWidth+margin[2]+margin[3];var bgHeight=drawInfo.Font.Height+margin[0]+margin[1];if(this.TextBG.Color){this.Canvas.fillStyle=this.TextBG.Color;this.Canvas.fillRect(xRect,yRect,bgWidth,bgHeight);}if(this.TextBG.Border){this.Canvas.strokeStyle=this.TextBG.Border;this.Canvas.strokeRect(ToFixedPoint(xRect),ToFixedPoint(yRect),ToFixedRect(bgWidth),ToFixedRect(bgHeight));}}this.Canvas.textBaseline="bottom";this.Canvas.textAlign="left";this.Canvas.fillStyle=drawInfo.Text.Color;this.Canvas.fillText(text,x,y);}};}function
|
|
3944
|
+
var xRect=x-margin[2];var yRect=y-drawInfo.Font.Height-margin[1];var bgWidth=textWidth+margin[2]+margin[3];var bgHeight=drawInfo.Font.Height+margin[0]+margin[1];if(this.TextBG.Color){this.Canvas.fillStyle=this.TextBG.Color;this.Canvas.fillRect(xRect,yRect,bgWidth,bgHeight);}if(this.TextBG.Border){this.Canvas.strokeStyle=this.TextBG.Border;this.Canvas.strokeRect(ToFixedPoint(xRect),ToFixedPoint(yRect),ToFixedRect(bgWidth),ToFixedRect(bgHeight));}}this.Canvas.textBaseline="bottom";this.Canvas.textAlign="left";this.Canvas.fillStyle=drawInfo.Text.Color;this.Canvas.fillText(text,x,y);}};}function ChartTradeIcon(){this.newMethod=IChartPainting;//派生
|
|
3945
|
+
this.newMethod();delete this.newMethod;this.ClassName='ChartTradeIcon';//类名
|
|
3946
|
+
this.TextAlign='center';this.TextBaseline='middle';this.SVG={Family:"iconfont",Size:12};this.AryIcon;this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!this.Data||!this.Data.Data)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon))return;this.Canvas.font=this.SVG.Size+'px '+this.SVG.Family;this.Canvas.textAlign=this.TextAlign;this.Canvas.textBaseline='middle';var yOffset=0;if(this.TradeType=="BUY"||this.TradeType=="BUYSHORT"){this.Canvas.textBaseline="bottom";yOffset=-2;}else if(this.TradeType=="SELL"||this.TradeType=="SELLSHORT"){this.Canvas.textBaseline="top";yOffset+2;}var bHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();if(bHScreen)chartright=this.ChartBorder.GetBottom();var xPointCount=this.ChartFrame.XPointCount;var border=this.ChartFrame.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;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];if(!IFrameSplitOperator.IsNumber(value))continue;if(value<=0)continue;var iconItem=this.AryIcon[i];if(!IFrameSplitOperator.IsNumber(iconItem.Value)||!iconItem.Icon)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var y=this.GetYFromData(iconItem.Value,false);this.Canvas.fillStyle=iconItem.Color;this.Canvas.fillText(iconItem.Icon,x,y+yOffset);}};this.GetMaxMin=function(){var range={Max:null,Min:null};if(!this.Data||!this.Data.Data)return range;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon))return range;var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;if(this.ChartFrame.GlobalOption&&this.ChartFrame.GlobalOption.IsValueFullRange){start=0;xPointCount=this.Data.Data.length;}for(var i=start,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(value))continue;if(value<=0)continue;var iconItem=this.AryIcon[i];if(!IFrameSplitOperator.IsNumber(iconItem.Value)||!iconItem.Icon)continue;if(range.Max==null)range.Max=iconItem.Value;else if(range.Max<iconItem.Value)range.Max=iconItem.Value;if(range.Min==null)range.Min=iconItem.Value;else if(range.Min>iconItem.Value)range.Min=iconItem.Value;}return range;};}function ChartDrawText(){this.newMethod=IChartPainting;//派生
|
|
3945
3947
|
this.newMethod();delete this.newMethod;this.ClassName='ChartDrawText';//类名
|
|
3946
3948
|
this.Color="rgb(255,193,37)";//线段颜色
|
|
3947
3949
|
this.TextFont="14px 微软雅黑";//线段宽度
|
|
@@ -10595,10 +10597,16 @@ this.HORLINE=function(condition,data,type,extend){var drawData={Data:[],LineType
|
|
|
10595
10597
|
//{ Color:背景色, Border:边框颜色, Margin=[上,下,左, 右] }
|
|
10596
10598
|
this.BACKGROUND=function(color,borderColor,left,right,top,bottom){var bg={Margin:[0,1,1,1]};if(color)bg.Color=color;if(borderColor)bg.Border=borderColor;if(IFrameSplitOperator.IsNumber(left))bg.Margin[2]=left;if(IFrameSplitOperator.IsNumber(right))bg.Margin[3]=right;if(IFrameSplitOperator.IsNumber(top))bg.Margin[0]=top;if(IFrameSplitOperator.IsNumber(bottom))bg.Margin[1]=bottom;return bg;};//该函数和DRAWTEXT, DRAWICON连用
|
|
10597
10599
|
//{ color:线段颜色, lineWidth:宽度 lineType:线段样式0=直线 1=虚线}
|
|
10598
|
-
this.CKLINE=function(color,lineWidth,lineType,lineDotted){var drawData={Color:color,LineWidth:1,LineType:0,LineDot:[3,3]};if(IFrameSplitOperator.IsPlusNumber(lineWidth))drawData.LineWidth=lineWidth;if(IFrameSplitOperator.IsPlusNumber(lineType))drawData.LineType=lineType;if(lineDotted){var ary=lineDotted.split(',');var dotted=[];for(var i in ary){var item=ary[i];if(!item)continue;var value=parseInt(ary[i]);if(value<=0)continue;dotted.push(value);}if(dotted.length>0)drawData.LineDotted=dotted;}drawData.Data=[];for(var i=0;i<this.SymbolData.Data.Data.length;++i){var item=this.SymbolData.Data.Data[i];drawData.Data[i]={High:item.High,Low:item.Low};}return drawData;}
|
|
10600
|
+
this.CKLINE=function(color,lineWidth,lineType,lineDotted){var drawData={Color:color,LineWidth:1,LineType:0,LineDot:[3,3]};if(IFrameSplitOperator.IsPlusNumber(lineWidth))drawData.LineWidth=lineWidth;if(IFrameSplitOperator.IsPlusNumber(lineType))drawData.LineType=lineType;if(lineDotted){var ary=lineDotted.split(',');var dotted=[];for(var i in ary){var item=ary[i];if(!item)continue;var value=parseInt(ary[i]);if(value<=0)continue;dotted.push(value);}if(dotted.length>0)drawData.LineDotted=dotted;}drawData.Data=[];for(var i=0;i<this.SymbolData.Data.Data.length;++i){var item=this.SymbolData.Data.Data[i];drawData.Data[i]={High:item.High,Low:item.Low};}return drawData;};//多头建仓(买入开仓).
|
|
10601
|
+
//参数1为触发条件,参数2为标记放置位置.此函数只适用于特定版本交易模式下.
|
|
10602
|
+
//例如: BUY(CROSS(A,B),LOW),当A上穿B时,在LOW处画标记,同时突出提示或直接下单,如果LOW改为DRAWNULL,就不画标记.(分时图上不支持)
|
|
10603
|
+
this.BUY=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(0,255,0)",Type:"SVG",Icon:'\uE660'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='BUY';return result;};this.BUYSHORT=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(0,255,0)",Type:"SVG",Icon:'\uE660'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='BUYSHORT';return result;};//多头平仓(卖出平仓).
|
|
10604
|
+
//参数1为触发条件,参数2为标记放置位置.此函数只适用于特定版本交易模式下.
|
|
10605
|
+
//例如: SELL(CROSS(A,B),HIGH),当A上穿B时,在HIGH处画标记,同时突出提示或直接下单,如果HIGH改为DRAWNULL,就不画标记.(分时图上不支持)
|
|
10606
|
+
this.SELL=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(255,0,0)",Type:"SVG",Icon:'\uE661'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='SELL';return result;};this.SELLSHORT=function(condition,data,iconSymbol,color){var iconInfo={Color:"rgb(255,0,0)",Type:"SVG",Icon:'\uE661'};if(IFrameSplitOperator.IsString(iconSymbol))iconInfo.Icon=iconSymbol;if(color)iconInfo.Color=color;var result=this.CalculateTradeData(condition,data,iconInfo);result.DrawType='SELLSHORT';return result;};this.CalculateTradeData=function(condition,data,IconInfo){var aryData=[];var aryIcon=[];var result={DrawData:{Data:aryData,Icons:aryIcon}};if(Array.isArray(condition)){var isAryPosition=Array.isArray(data);for(var i=0;i<condition.length;++i){aryData[i]=0;aryIcon[i]=null;if(!condition[i])continue;aryData[i]=1;if(isAryPosition)aryIcon[i]={Value:data[i],Type:IconInfo.Type,Color:IconInfo.Color,Icon:IconInfo.Icon};else aryIcon[i]={Value:data,Type:IconInfo.Type,Color:IconInfo.Color,Icon:IconInfo.Icon};}}else if(IFrameSplitOperator.IsNumber(condition)&&condition>0){}return result;};}JSDraw.prototype.CalculateDrawLine=function(lineCache){lineCache.List=[];for(var _i119=lineCache.Start.ID;_i119<=lineCache.End.ID;++_i119){lineCache.List.push(_i119);}var height=Math.abs(lineCache.Start.Value-lineCache.End.Value);var width=lineCache.List.length-1;var result=[];result.push({ID:lineCache.Start.ID,Value:lineCache.Start.Value});//第1个点
|
|
10599
10607
|
if(lineCache.Start.Value>lineCache.End.Value){for(var _i120=1;_i120<lineCache.List.length-1;++_i120){var value=height*(lineCache.List.length-1-_i120)/width+lineCache.End.Value;result.push({ID:lineCache.List[_i120],Value:value});}}else{for(var _i121=1;_i121<lineCache.List.length-1;++_i121){var value=height*_i121/width+lineCache.Start.Value;result.push({ID:lineCache.List[_i121],Value:value});}}result.push({ID:lineCache.End.ID,Value:lineCache.End.Value});//最后一个点
|
|
10600
10608
|
return result;};//是否有是有效的数字
|
|
10601
|
-
JSDraw.prototype.IsNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return true;};JSDraw.prototype.IsDrawFunction=function(name){var setFunctionName=new _set2.default(["STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF',"DRAWCOLORKLINE",'PLOYLINE',"DRAWOVERLAYKLINE",'POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS","DRAWTEXTREL",'DRAWOVERLAYLINE',"FILLRGN","FILLRGN2","FILLTOPRGN","FILLBOTTOMRGN","FILLVERTICALRGN","FLOATRGN","DRAWSL","DRAWGBK2","DRAWGBK_DIV","VERTLINE","HORLINE","TIPICON"]);if(setFunctionName.has(name))return true;return false;};JSDraw.prototype.RemoveZero=function(strValue){while(strValue.length>0){var index=strValue.length-1;var ch=strValue[index];if(ch=="0"){strValue=strValue.substr(0,index);}else if(ch=="."){strValue=strValue.substr(0,index);break;}else{break;}}return strValue;};//http://www.newone.com.cn/helpcontroller/index?code=zszy_pc
|
|
10609
|
+
JSDraw.prototype.IsNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return true;};JSDraw.prototype.IsDrawFunction=function(name){var setFunctionName=new _set2.default(["STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF',"DRAWCOLORKLINE",'PLOYLINE',"DRAWOVERLAYKLINE",'POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS","DRAWTEXTREL",'DRAWOVERLAYLINE',"FILLRGN","FILLRGN2","FILLTOPRGN","FILLBOTTOMRGN","FILLVERTICALRGN","FLOATRGN","DRAWSL","DRAWGBK2","DRAWGBK_DIV","VERTLINE","HORLINE","TIPICON","BUY","SELL","SELLSHORT","BUYSHORT"]);if(setFunctionName.has(name))return true;return false;};JSDraw.prototype.RemoveZero=function(strValue){while(strValue.length>0){var index=strValue.length-1;var ch=strValue[index];if(ch=="0"){strValue=strValue.substr(0,index);}else if(ch=="."){strValue=strValue.substr(0,index);break;}else{break;}}return strValue;};//http://www.newone.com.cn/helpcontroller/index?code=zszy_pc
|
|
10602
10610
|
var DYNAINFO_ARGUMENT_ID={YCLOSE:3,OPEN:4,HIGH:5,LOW:6,CLOSE:7,VOL:8,AMOUNT:10,AMPLITUDE:13,//振幅
|
|
10603
10611
|
INCREASE:14,//涨幅
|
|
10604
10612
|
EXCHANGERATE:37//换手率
|
|
@@ -11197,7 +11205,8 @@ this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[
|
|
|
11197
11205
|
if(item.Type==Syntax.BinaryExpression||item.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(item);else if(item.Type==Syntax.CallExpression)value=this.VisitCallExpression(item);else value=this.GetNodeValue(item);args.push(value);}if(funcName==="IFC"){//IFC(X,A,B)若X不为0则执行A,否则执行B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
|
|
11198
11206
|
var bResult=this.Algorithm.IFC(args[0]);var item=bResult?node.Arguments[1]:node.Arguments[2];var value;if(item.Type==Syntax.BinaryExpression||item.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(item);else if(item.Type==Syntax.CallExpression)value=this.VisitCallExpression(item);else value=this.GetNodeValue(item);node.Out=value;if(item.Draw)node.Draw=item.Draw;return node.Out;}//JSConsole.Complier.Log('[JSExecute::VisitCallExpression]' , funcName, '(', args.toString() ,')');
|
|
11199
11207
|
if(g_JSComplierResource.IsCustomFunction(funcName)){var data=this.Algorithm.CallCustomFunction(funcName,args,this.SymbolData,node);node.Out=[];node.Draw=null;if(data){if(data.Out)node.Out=data.Out;if(data.Draw)node.Draw=data.Draw;}return node.Out;}switch(funcName){case'DYNAINFO'://行情最新数据
|
|
11200
|
-
node.Out=this.SymbolData.GetLatestCacheData(args[0]);break;case'STICKLINE':node.Draw=this.Draw.STICKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT':node.Draw=this.Draw.DRAWTEXT(args[0],args[1],args[2]);node.Out=[];break;case'DRAWTEXT_FIX':node.Draw=this.Draw.DRAWTEXT_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'SUPERDRAWTEXT':node.Draw=this.Draw.SUPERDRAWTEXT(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWICON':node.Draw=this.Draw.DRAWICON(args[0],args[1],args[2]);node.Out=[];break;case"ICON":node.Draw=this.Draw.ICON(args[0],args[1]);node.Out=[];break;case"TIPICON":node.Draw=this.Draw.TIPICON(args[0],args[1],args[2],args[3]);node.Out=[];break;case"BACKGROUND":node.Draw=this.Draw.BACKGROUND(args[0],args[1],args[2],args[3],args[4],args[5]);node.Out=[];break;case"CKLINE":node.Draw=this.Draw.CKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWLINE':node.Draw=this.Draw.DRAWLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData;break;case'DRAWBAND':node.Draw=this.Draw.DRAWBAND(args[0],args[1],args[2],args[3]);node.Out=[];break;case"FILLRGN":if(args.length>=4)node.Draw=this.Draw.FILLRGN2(args);else node.Draw=this.Draw.FILLRGN(args[0],args[1],args[2]);node.Out=[];break;case"FLOATRGN":node.Draw=this.Draw.FLOATRGN(args);node.Out=[];break;case"FILLTOPRGN":node.Draw=this.Draw.FILLBGRGN(1,args);node.Out=[];break;case"FILLBOTTOMRGN":node.Draw=this.Draw.FILLBGRGN(0,args);node.Out=[];break;case"FILLVERTICALRGN":node.Draw=this.Draw.FILLVERTICALRGN(args);node.Out=[];break;case'DRAWKLINE':case"DRAWKLINE1":node.Draw=this.Draw.DRAWKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWKLINE_IF':node.Draw=this.Draw.DRAWKLINE_IF(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWOVERLAYKLINE":node.Draw=this.Draw.DRAWOVERLAYKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWCOLORKLINE":node.Draw=this.Draw.DRAWCOLORKLINE(args[0],args[1],args[2]);node.Out=[];break;case'PLOYLINE':case'POLYLINE':node.Draw=this.Draw.POLYLINE(args[0],args[1]);node.Out=node.Draw.DrawData;break;case'DRAWNUMBER':node.Draw=this.Draw.DRAWNUMBER(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Value;break;case"DRAWNUMBER_FIX":node.Draw=this.Draw.DRAWNUMBER_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData.Value;break;case"DRAWCHANNEL":node.Draw=this.Draw.DRAWCHANNEL(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'RGB':node.Out=this.Draw.RGB(args[0],args[1],args[2]);break;case"RGBA":node.Out=this.Draw.RGBA(args[0],args[1],args[2],args[3]);break;case"UPCOLOR":node.Out=this.Draw.UPCOLOR(args[0]);break;case"DOWNCOLOR":node.Out=this.Draw.DOWNCOLOR(args[0]);break;case"XMOVE":node.Out=this.Draw.XMOVE(args[0]);break;case"YMOVE":node.Out=this.Draw.YMOVE(args[0]);break;case'PARTLINE':node.Draw=this.Draw.PARTLINE(args);node.Out=[];break;case'DRAWGBK':node.Draw=this.Draw.DRAWGBK(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWGBK2':node.Draw=this.Draw.DRAWGBK2(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWGBK_DIV":node.Draw=this.Draw.DRAWGBK_DIV(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT_LINE':node.Draw=this.Draw.DRAWTEXT_LINE(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'DRAWRECTREL':node.Draw=this.Draw.DRAWRECTREL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWTEXTREL":node.Draw=this.Draw.DRAWTEXTREL(args[0],args[1],args[2]);node.Out=[];break;case"DRAWTEXTABS":node.Draw=this.Draw.DRAWTEXTABS(args[0],args[1],args[2]);node.Out=[];break;case"DRAWOVERLAYLINE":node.Draw=this.Draw.DRAWOVERLAYLINE(args[0],args[1],args[2]);node.Out=node.Draw.DrawData.Data;break;case"DRAWSL":node.Draw=this.Draw.DRAWSL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"VERTLINE":node.Draw=this.Draw.VERTLINE(args[0],args[1]);node.Out=node.Draw.DrawData.Data;break;case"HORLINE":node.Draw=this.Draw.HORLINE(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;case'CODELIKE':node.Out=this.SymbolData.CODELIKE(args[0]);break;case'NAMELIKE':case"NAMEINCLUDE":node.Out=this.SymbolData.NAMELIKE(args[1]);break;case'REFDATE':node.Out=this.SymbolData.REFDATE(args[0],args[1]);break;case'FINANCE':node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINONE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"GPJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"SCJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"MARGIN":node.Out=this.SymbolData.GetMarginCacheData(args[0],node);break;case"HK2SHSZ":node.Out=this.SymbolData.GetHKToSHSZCacheData(args[0],node);break;case"NEWS":node.Out=this.SymbolData.GetNewsAnalysisCacheData(args[0],node);break;case'UPCOUNT':case'DOWNCOUNT':node.Out=this.SymbolData.GetIndexIncreaseCacheData(funcName,args[0],node);break;case'SF':node.Out=this.SymbolData.GetSectionFinanceCacheData(args[0],args[1],args[2],node);break;case'LOADAPIDATA':node.Out=this.SymbolData.GetCustomApiData(args);break;case"STKINDI":case"CALCSTOCKINDEX":node.Out=this.SymbolData.GetScriptIndexOutData(args,node,funcName);break;case"SOUND":node.Draw=this.Draw.SOUND(args[0]);node.Out=[];break;case"PLAYSOUND":node.Draw=this.Draw.PLAYSOUND(args[0],args[1]);node.Out=[];break;case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':node.Out=this.SymbolData.GetOtherSymolCacheData({FunctionName:funcName,Args:args});break;case"INBLOCK":node.Out=this.SymbolData.IsInBlock(args[0],node);break;case'COVER_C':case'COVER_O':case'COVER_H':case'COVER_L':case'COVER_A':case'COVER_V':if(args.length==2)return this.SymbolData.GetSymbolPeriodCacheData2(JSComplierHelper.GetConvertValueName(funcName),args[0],args[1]);return this.SymbolData.GetSymbolPeriodCacheData(JSComplierHelper.GetConvertValueName(funcName),args[0]);case"SYSPARAM":return this.SymbolData.SysParam(args[0],this);case"TESTSKIP":var bExit=this.Algorithm.TESTSKIP(args[0],node);node.Out=null;if(bExit){this.Interrupt.Exit=true;if(node&&node.Marker){var marker=node.Marker;this.Interrupt.Line=marker.Line;this.Interrupt.Index=marker.Index;this.Interrupt.Column=marker.Column;}}break
|
|
11208
|
+
node.Out=this.SymbolData.GetLatestCacheData(args[0]);break;case'STICKLINE':node.Draw=this.Draw.STICKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT':node.Draw=this.Draw.DRAWTEXT(args[0],args[1],args[2]);node.Out=[];break;case'DRAWTEXT_FIX':node.Draw=this.Draw.DRAWTEXT_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'SUPERDRAWTEXT':node.Draw=this.Draw.SUPERDRAWTEXT(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWICON':node.Draw=this.Draw.DRAWICON(args[0],args[1],args[2]);node.Out=[];break;case"ICON":node.Draw=this.Draw.ICON(args[0],args[1]);node.Out=[];break;case"TIPICON":node.Draw=this.Draw.TIPICON(args[0],args[1],args[2],args[3]);node.Out=[];break;case"BACKGROUND":node.Draw=this.Draw.BACKGROUND(args[0],args[1],args[2],args[3],args[4],args[5]);node.Out=[];break;case"CKLINE":node.Draw=this.Draw.CKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWLINE':node.Draw=this.Draw.DRAWLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData;break;case'DRAWBAND':node.Draw=this.Draw.DRAWBAND(args[0],args[1],args[2],args[3]);node.Out=[];break;case"FILLRGN":if(args.length>=4)node.Draw=this.Draw.FILLRGN2(args);else node.Draw=this.Draw.FILLRGN(args[0],args[1],args[2]);node.Out=[];break;case"FLOATRGN":node.Draw=this.Draw.FLOATRGN(args);node.Out=[];break;case"FILLTOPRGN":node.Draw=this.Draw.FILLBGRGN(1,args);node.Out=[];break;case"FILLBOTTOMRGN":node.Draw=this.Draw.FILLBGRGN(0,args);node.Out=[];break;case"FILLVERTICALRGN":node.Draw=this.Draw.FILLVERTICALRGN(args);node.Out=[];break;case'DRAWKLINE':case"DRAWKLINE1":node.Draw=this.Draw.DRAWKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWKLINE_IF':node.Draw=this.Draw.DRAWKLINE_IF(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWOVERLAYKLINE":node.Draw=this.Draw.DRAWOVERLAYKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWCOLORKLINE":node.Draw=this.Draw.DRAWCOLORKLINE(args[0],args[1],args[2]);node.Out=[];break;case'PLOYLINE':case'POLYLINE':node.Draw=this.Draw.POLYLINE(args[0],args[1]);node.Out=node.Draw.DrawData;break;case'DRAWNUMBER':node.Draw=this.Draw.DRAWNUMBER(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Value;break;case"DRAWNUMBER_FIX":node.Draw=this.Draw.DRAWNUMBER_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData.Value;break;case"DRAWCHANNEL":node.Draw=this.Draw.DRAWCHANNEL(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'RGB':node.Out=this.Draw.RGB(args[0],args[1],args[2]);break;case"RGBA":node.Out=this.Draw.RGBA(args[0],args[1],args[2],args[3]);break;case"UPCOLOR":node.Out=this.Draw.UPCOLOR(args[0]);break;case"DOWNCOLOR":node.Out=this.Draw.DOWNCOLOR(args[0]);break;case"XMOVE":node.Out=this.Draw.XMOVE(args[0]);break;case"YMOVE":node.Out=this.Draw.YMOVE(args[0]);break;case'PARTLINE':node.Draw=this.Draw.PARTLINE(args);node.Out=[];break;case'DRAWGBK':node.Draw=this.Draw.DRAWGBK(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWGBK2':node.Draw=this.Draw.DRAWGBK2(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWGBK_DIV":node.Draw=this.Draw.DRAWGBK_DIV(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT_LINE':node.Draw=this.Draw.DRAWTEXT_LINE(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'DRAWRECTREL':node.Draw=this.Draw.DRAWRECTREL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWTEXTREL":node.Draw=this.Draw.DRAWTEXTREL(args[0],args[1],args[2]);node.Out=[];break;case"DRAWTEXTABS":node.Draw=this.Draw.DRAWTEXTABS(args[0],args[1],args[2]);node.Out=[];break;case"DRAWOVERLAYLINE":node.Draw=this.Draw.DRAWOVERLAYLINE(args[0],args[1],args[2]);node.Out=node.Draw.DrawData.Data;break;case"DRAWSL":node.Draw=this.Draw.DRAWSL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"VERTLINE":node.Draw=this.Draw.VERTLINE(args[0],args[1]);node.Out=node.Draw.DrawData.Data;break;case"HORLINE":node.Draw=this.Draw.HORLINE(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;case'CODELIKE':node.Out=this.SymbolData.CODELIKE(args[0]);break;case'NAMELIKE':case"NAMEINCLUDE":node.Out=this.SymbolData.NAMELIKE(args[1]);break;case'REFDATE':node.Out=this.SymbolData.REFDATE(args[0],args[1]);break;case'FINANCE':node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINONE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"GPJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"SCJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"MARGIN":node.Out=this.SymbolData.GetMarginCacheData(args[0],node);break;case"HK2SHSZ":node.Out=this.SymbolData.GetHKToSHSZCacheData(args[0],node);break;case"NEWS":node.Out=this.SymbolData.GetNewsAnalysisCacheData(args[0],node);break;case'UPCOUNT':case'DOWNCOUNT':node.Out=this.SymbolData.GetIndexIncreaseCacheData(funcName,args[0],node);break;case'SF':node.Out=this.SymbolData.GetSectionFinanceCacheData(args[0],args[1],args[2],node);break;case'LOADAPIDATA':node.Out=this.SymbolData.GetCustomApiData(args);break;case"STKINDI":case"CALCSTOCKINDEX":node.Out=this.SymbolData.GetScriptIndexOutData(args,node,funcName);break;case"SOUND":node.Draw=this.Draw.SOUND(args[0]);node.Out=[];break;case"PLAYSOUND":node.Draw=this.Draw.PLAYSOUND(args[0],args[1]);node.Out=[];break;case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':node.Out=this.SymbolData.GetOtherSymolCacheData({FunctionName:funcName,Args:args});break;case"INBLOCK":node.Out=this.SymbolData.IsInBlock(args[0],node);break;case'COVER_C':case'COVER_O':case'COVER_H':case'COVER_L':case'COVER_A':case'COVER_V':if(args.length==2)return this.SymbolData.GetSymbolPeriodCacheData2(JSComplierHelper.GetConvertValueName(funcName),args[0],args[1]);return this.SymbolData.GetSymbolPeriodCacheData(JSComplierHelper.GetConvertValueName(funcName),args[0]);case"SYSPARAM":return this.SymbolData.SysParam(args[0],this);case"TESTSKIP":var bExit=this.Algorithm.TESTSKIP(args[0],node);node.Out=null;if(bExit){this.Interrupt.Exit=true;if(node&&node.Marker){var marker=node.Marker;this.Interrupt.Line=marker.Line;this.Interrupt.Index=marker.Index;this.Interrupt.Column=marker.Column;}}break;//交易函数
|
|
11209
|
+
case"BUY":node.Draw=this.Draw.BUY(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;case"SELL":node.Draw=this.Draw.SELL(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;case"SELLSHORT":node.Draw=this.Draw.SELLSHORT(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;case"BUYSHORT":node.Draw=this.Draw.BUYSHORT(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;default:node.Out=this.Algorithm.CallFunction(funcName,args,node,this.SymbolData);break;}return node.Out;};//赋值
|
|
11201
11210
|
this.VisitAssignmentExpression=function(node){var left=node.Left;if(left.Type!=Syntax.Identifier)this.ThrowUnexpectedNode(node);var varName=left.Name;var right=node.Right;var value=null,drawValue=null;if(right.Type==Syntax.BinaryExpression||right.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(right);else if(right.Type==Syntax.CallExpression){value=this.VisitCallExpression(right);if(right.Draw)drawValue=right.Draw;}else if(right.Type==Syntax.Literal){value=right.Value;if(IFrameSplitOperator.IsString(value)&&right.Value.indexOf("$")>0)value=this.SymbolData.GetOtherSymolCacheData({Literal:value});}else if(right.Type==Syntax.Identifier)//右值是变量
|
|
11202
11211
|
value=this.ReadVariable(right.Name,right);else if(right.Type==Syntax.MemberExpression)value=this.ReadMemberVariable(right);else if(right.Type==Syntax.UnaryExpression){if(right.Operator=='-'){var tempValue=this.GetNodeValue(right.Argument);value=this.Algorithm.Subtract(0,tempValue);}else{value=right.Argument.Value;}}if(JS_EXECUTE_DEBUG_LOG)JSConsole.Complier.Log('[JSExecute::VisitAssignmentExpression]',varName,' = ',value);if(drawValue)this.VarDrawTable.set(varName,drawValue);this.VarTable.set(varName,value);};//逻辑运算
|
|
11203
11212
|
this.VisitBinaryExpression=function(node){var stack=[];stack.push(node);var temp=null;while(stack.length!=0){temp=stack[stack.length-1];if(temp.Left&&node!=temp.Left&&node!=temp.Right){stack.push(temp.Left);}else if(temp.Right&&node!=temp.Right){stack.push(temp.Right);}else{var value=stack.pop();if(value.Type==Syntax.BinaryExpression)//只遍历操作符就可以
|
|
@@ -11394,7 +11403,8 @@ if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK","
|
|
|
11394
11403
|
hqChart.ChartPaint.push(line);};this.CreateChartSlopeLine=function(hqChart,windowIndex,varItem,id){var line=new ChartSlopeLine();line.Canvas=hqChart.Canvas;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.IsDotLine)line.IsDotLine=true;//虚线
|
|
11395
11404
|
if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)line.LineWidth=width;}var titleIndex=windowIndex+1;line.Data.Data=varItem.Draw.DrawData.Data;line.Option=varItem.Draw.DrawData.Option;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,null,line.Color);//给一个空的标题
|
|
11396
11405
|
hqChart.ChartPaint.push(line);};this.CreateChartVericaltLine=function(hqChart,windowIndex,varItem,id){var chart=new ChartVericaltLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}this.SetChartLineDash(chart,varItem.Draw.DrawData);chart.Data.Data=varItem.Draw.DrawData.Data;hqChart.ChartPaint.push(chart);};this.SetChartLineDash=function(chart,option){if(IFrameSplitOperator.IsNumber(option.LineType)){var lineType=option.LineType;var pixelRatio=GetDevicePixelRatio();switch(lineType){case 1:chart.LineType=[10*pixelRatio,10*pixelRatio];break;case 2:chart.LineType=[0,10*pixelRatio];chart.LineCap="square";break;case 3:chart.LineType=[10*pixelRatio,3*pixelRatio,3*pixelRatio,3*pixelRatio];break;case 4:chart.LineType=[10*pixelRatio,3*pixelRatio,3*pixelRatio,3*pixelRatio,3*pixelRatio,3*pixelRatio];break;}}else if(IFrameSplitOperator.IsString(option.LineType)){var aryString=option.LineType.split(',');var aryLinType=[];for(var i=0;i<aryString.length;++i){aryLinType.push(parseInt(aryString[i]));}chart.LineType=aryLinType;}};this.CreateChartHorizontalLine=function(hqChart,windowIndex,varItem,id){var chart=new ChartHorizontalLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}this.SetChartLineDash(chart,varItem.Draw.DrawData);chart.ExtendType=varItem.Draw.DrawData.Extend;chart.Data.Data=varItem.Draw.DrawData.Data;hqChart.ChartPaint.push(chart);};this.CreateBackgroud=function(hqChart,windowIndex,varItem,id){var chart=new ChartBackground();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Draw&&varItem.Draw.DrawData){var drawData=varItem.Draw.DrawData;chart.Color=drawData.Color;chart.ColorAngle=drawData.Angle;if(drawData.Data)chart.Data.Data=drawData.Data;}hqChart.ChartPaint.push(chart);};this.CreateBackgroundDiv=function(hqChart,windowIndex,varItem,id){var chart=new ChartBackgroundDiv();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Draw&&varItem.Draw.DrawData){var drawData=varItem.Draw.DrawData;chart.AryColor=drawData.AryColor;chart.ColorType=drawData.ColorType;if(drawData.Data)chart.Data.Data=drawData.Data;}hqChart.ChartPaint.push(chart);};this.CreateLineMultiData=function(hqChart,windowIndex,varItem,id){var chart=new ChartLineMultiData();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Draw&&varItem.Draw.DrawData){var drawData=varItem.Draw.DrawData;chart.Color=drawData.Color;if(drawData.PointColor)chart.PointColor=drawData.PointColor;if(IFrameSplitOperator.IsPlusNumber(drawData.PointRadius))chart.PointRadius=drawData.PointRadius;if(IFrameSplitOperator.IsPlusNumber(drawData.LineWidth))chart.LineWidth=drawData.LineWidth;if(drawData.Data)chart.Data.Data=drawData.Data;}var titleIndex=windowIndex+1;var titleData=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);//标题
|
|
11397
|
-
titleData.DataType="MULTI_POINT_LINE";hqChart.TitlePaint[titleIndex].Data[id]=titleData;hqChart.ChartPaint.push(chart);};this.
|
|
11406
|
+
titleData.DataType="MULTI_POINT_LINE";hqChart.TitlePaint[titleIndex].Data[id]=titleData;hqChart.ChartPaint.push(chart);};this.CreateTradeIcon=function(hqChart,windowIndex,varItem,id){var chart=new ChartTradeIcon();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data.Data=varItem.Draw.DrawData.Data;chart.AryIcon=varItem.Draw.DrawData.Icons;chart.TradeType=varItem.Draw.DrawType;if(varItem.DrawFontSize>0)chart.SVG.Size=varItem.DrawFontSize;//图标大小
|
|
11407
|
+
hqChart.ChartPaint.push(chart);};this.CreateTextLine=function(hqChart,windowIndex,varItem,id){var chart=new ChartTextLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Draw&&varItem.Draw.DrawData){var drawData=varItem.Draw.DrawData;chart.Text=drawData.Text;chart.Line=drawData.Line;chart.Price=drawData.Price;}hqChart.ChartPaint.push(chart);};this.CreateNumberText=function(hqChart,windowIndex,varItem,id){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();chartText.TextAlign="center";if(varItem.Color)chartText.Color=this.GetColor(varItem.Color);else chartText.Color=this.GetDefaultColor(id);if(varItem.IsDrawAbove)chartText.Direction=1;else chartText.Direction=2;if(varItem.Draw.Position)chartText.Position=varItem.Draw.Position;//赋值坐标
|
|
11398
11408
|
var titleIndex=windowIndex+1;chartText.Data.Data=varItem.Draw.DrawData.Value;chartText.Text=varItem.Draw.DrawData.Text;//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
|
|
11399
11409
|
hqChart.ChartPaint.push(chartText);};this.CreateDrawText=function(hqChart,windowIndex,varItem,id){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.IsDrawAbove)chartText.Direction=1;else chartText.Direction=0;if(varItem.DrawFontSize>0)chartText.TextFont=varItem.DrawFontSize*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1';//临时用下吧
|
|
11400
11410
|
var titleIndex=windowIndex+1;chartText.DrawData=varItem.Draw.DrawData;//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
|
|
@@ -11436,7 +11446,7 @@ if(this.YSplitScale)hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.Y
|
|
|
11436
11446
|
}
|
|
11437
11447
|
*/for(var _i150 in this.OutVar){var _item32=this.OutVar[_i150];if(_item32.IsExData===true)continue;//扩展数据不显示图形
|
|
11438
11448
|
if(_item32.Type==1000||_item32.Type==1001)continue;//数据集合, 字符串
|
|
11439
|
-
if(_item32.Type==0){if(_item32.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item32,_i150,_item32.Type);else this.CreateLine(hqChart,windowIndex,_item32,_i150,_item32.Type);}else if(_item32.Type==1){switch(_item32.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item32,_i150);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item32,_i150);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item32,_i150);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item32,_i150);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item32,_i150);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item32,_i150);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item32,_i150);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item32,_i150);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item32,_i150);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item32,_i150);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item32,_i150);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item32,_i150);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item32,_i150);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item32,_i150);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item32,_i150);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item32,_i150);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item32,_i150);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item32,_i150);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item32,_i150);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item32,_i150);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item32,_i150);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item32,_i150);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item32,_i150);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item32,_i150);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item32,_i150);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item32,_i150);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item32,_i150);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item32,_i150);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item32,_i150);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item32,_i150);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item32,_i150);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item32,_i150);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item32,_i150);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item32,_i150);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item32,_i150);break;default:{var find=g_ScriptIndexChartFactory.Get(_item32.Draw.DrawType);//外部挂接
|
|
11449
|
+
if(_item32.Type==0){if(_item32.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item32,_i150,_item32.Type);else this.CreateLine(hqChart,windowIndex,_item32,_i150,_item32.Type);}else if(_item32.Type==1){switch(_item32.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item32,_i150);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item32,_i150);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item32,_i150);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item32,_i150);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item32,_i150);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item32,_i150);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item32,_i150);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item32,_i150);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item32,_i150);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item32,_i150);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item32,_i150);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item32,_i150);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item32,_i150);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item32,_i150);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item32,_i150);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item32,_i150);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item32,_i150);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item32,_i150);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item32,_i150);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item32,_i150);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item32,_i150);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item32,_i150);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item32,_i150);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item32,_i150);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item32,_i150);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item32,_i150);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item32,_i150);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item32,_i150);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item32,_i150);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item32,_i150);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item32,_i150);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item32,_i150);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item32,_i150);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item32,_i150);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item32,_i150);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item32,_i150);break;case"BUY":case"SELL":case"SELLSHORT":case"BUYSHORT":this.CreateTradeIcon(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item32,_i150);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item32,_i150);break;default:{var find=g_ScriptIndexChartFactory.Get(_item32.Draw.DrawType);//外部挂接
|
|
11440
11450
|
if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item32,_i150,this);}break;}}else if(_item32.Type==2){this.CreateMACD(hqChart,windowIndex,_item32,_i150);}else if(_item32.Type==3){this.CreatePointDot(hqChart,windowIndex,_item32,_i150,hisData);}else if(_item32.Type==4){this.CreateLineStick(hqChart,windowIndex,_item32,_i150);}else if(_item32.Type==5){this.CreateStick(hqChart,windowIndex,_item32,_i150);}else if(_item32.Type==6){this.CreateVolStick(hqChart,windowIndex,_item32,_i150,hisData);}else if(_item32.Type==7){this.CreateLine(hqChart,windowIndex,_item32,_i150,_item32.Type);}else if(_item32.Type==8){this.CreateLine(hqChart,windowIndex,_item32,_i150,_item32.Type);}else if(_item32.Type==9){this.CreateArea(hqChart,windowIndex,_item32,_i150);}var titlePaint=hqChart.TitlePaint[windowIndex+1];if(titlePaint&&titlePaint.Data&&_i150<titlePaint.Data.length)//设置标题数值 小数位数和格式
|
|
11441
11451
|
{if(this.StringFormat>0)titlePaint.Data[_i150].StringFormat=this.StringFormat;if(this.FloatPrecision>=0)titlePaint.Data[_i150].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;hqChart.TitlePaint[titleIndex].Title=this.Name;hqChart.TitlePaint[titleIndex].Identify=this.Guid;//指标ID
|
|
11442
11452
|
hqChart.TitlePaint[titleIndex].ArgumentsText=null;hqChart.TitlePaint[titleIndex].Script=this;if(!this.IsShortTitle){var indexParam='';for(var _i151=0;_i151<this.Arguments.length;++_i151){var _item33=this.Arguments[_i151];if(indexParam.length>0)indexParam+=',';indexParam+=_item33.Value.toString();}if(indexParam.length>0)hqChart.TitlePaint[titleIndex].ArgumentsText='('+indexParam+')';}if(this.TitleFont)hqChart.TitlePaint[titleIndex].Font=this.TitleFont;return true;};//给一个默认的颜色
|
|
@@ -12724,7 +12734,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
12724
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);};}/********************************************************************************
|
|
12725
12735
|
* 版本信息输出
|
|
12726
12736
|
*
|
|
12727
|
-
*/var HQCHART_VERSION="1.1.
|
|
12737
|
+
*/var HQCHART_VERSION="1.1.12621";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();//把给外界调用的方法暴露出来
|
|
12728
12738
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12729
12739
|
// BaseIndex:BaseIndex,
|
|
12730
12740
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -11056,6 +11056,82 @@ function JSDraw(errorHandler,symbolData)
|
|
|
11056
11056
|
|
|
11057
11057
|
return drawData;
|
|
11058
11058
|
}
|
|
11059
|
+
|
|
11060
|
+
|
|
11061
|
+
//多头建仓(买入开仓).
|
|
11062
|
+
//参数1为触发条件,参数2为标记放置位置.此函数只适用于特定版本交易模式下.
|
|
11063
|
+
//例如: BUY(CROSS(A,B),LOW),当A上穿B时,在LOW处画标记,同时突出提示或直接下单,如果LOW改为DRAWNULL,就不画标记.(分时图上不支持)
|
|
11064
|
+
this.BUY=function(condition, data, iconSymbol, color)
|
|
11065
|
+
{
|
|
11066
|
+
var iconInfo={ Color:"rgb(0,255,0)", Type:"SVG", Icon:'\ue660' };
|
|
11067
|
+
if (IFrameSplitOperator.IsString(iconSymbol)) iconInfo.Icon=iconSymbol;
|
|
11068
|
+
if (color) iconInfo.Color=color;
|
|
11069
|
+
var result=this.CalculateTradeData(condition, data, iconInfo);
|
|
11070
|
+
result.DrawType='BUY';
|
|
11071
|
+
return result;
|
|
11072
|
+
}
|
|
11073
|
+
|
|
11074
|
+
this.BUYSHORT=function(condition, data, iconSymbol, color)
|
|
11075
|
+
{
|
|
11076
|
+
var iconInfo={ Color:"rgb(0,255,0)", Type:"SVG", Icon:'\ue660' };
|
|
11077
|
+
if (IFrameSplitOperator.IsString(iconSymbol)) iconInfo.Icon=iconSymbol;
|
|
11078
|
+
if (color) iconInfo.Color=color;
|
|
11079
|
+
var result=this.CalculateTradeData(condition, data, iconInfo);
|
|
11080
|
+
result.DrawType='BUYSHORT';
|
|
11081
|
+
return result;
|
|
11082
|
+
}
|
|
11083
|
+
|
|
11084
|
+
//多头平仓(卖出平仓).
|
|
11085
|
+
//参数1为触发条件,参数2为标记放置位置.此函数只适用于特定版本交易模式下.
|
|
11086
|
+
//例如: SELL(CROSS(A,B),HIGH),当A上穿B时,在HIGH处画标记,同时突出提示或直接下单,如果HIGH改为DRAWNULL,就不画标记.(分时图上不支持)
|
|
11087
|
+
this.SELL=function(condition, data, iconSymbol,color)
|
|
11088
|
+
{
|
|
11089
|
+
var iconInfo={ Color:"rgb(255,0,0)", Type:"SVG", Icon:'\ue661' };
|
|
11090
|
+
if (IFrameSplitOperator.IsString(iconSymbol)) iconInfo.Icon=iconSymbol;
|
|
11091
|
+
if (color) iconInfo.Color=color;
|
|
11092
|
+
var result=this.CalculateTradeData(condition, data, iconInfo);
|
|
11093
|
+
result.DrawType='SELL';
|
|
11094
|
+
return result;
|
|
11095
|
+
}
|
|
11096
|
+
|
|
11097
|
+
this.SELLSHORT=function(condition, data, iconSymbol,color)
|
|
11098
|
+
{
|
|
11099
|
+
var iconInfo={ Color:"rgb(255,0,0)", Type:"SVG", Icon:'\ue661' };
|
|
11100
|
+
if (IFrameSplitOperator.IsString(iconSymbol)) iconInfo.Icon=iconSymbol;
|
|
11101
|
+
if (color) iconInfo.Color=color;
|
|
11102
|
+
var result=this.CalculateTradeData(condition, data, iconInfo);
|
|
11103
|
+
result.DrawType='SELLSHORT';
|
|
11104
|
+
return result;
|
|
11105
|
+
}
|
|
11106
|
+
|
|
11107
|
+
this.CalculateTradeData=function(condition, data, IconInfo)
|
|
11108
|
+
{
|
|
11109
|
+
var aryData=[];
|
|
11110
|
+
var aryIcon=[];
|
|
11111
|
+
var result={ DrawData:{ Data:aryData, Icons:aryIcon } };
|
|
11112
|
+
|
|
11113
|
+
if (Array.isArray(condition))
|
|
11114
|
+
{
|
|
11115
|
+
var isAryPosition=Array.isArray(data);
|
|
11116
|
+
for(var i=0;i<condition.length;++i)
|
|
11117
|
+
{
|
|
11118
|
+
aryData[i]=0;
|
|
11119
|
+
aryIcon[i]=null
|
|
11120
|
+
if (!condition[i]) continue;
|
|
11121
|
+
|
|
11122
|
+
aryData[i]=1;
|
|
11123
|
+
|
|
11124
|
+
if (isAryPosition) aryIcon[i]={ Value:data[i], Type:IconInfo.Type, Color:IconInfo.Color, Icon:IconInfo.Icon };
|
|
11125
|
+
else aryIcon[i]={ Value:data, Type:IconInfo.Type, Color:IconInfo.Color, Icon:IconInfo.Icon };
|
|
11126
|
+
}
|
|
11127
|
+
}
|
|
11128
|
+
else if (IFrameSplitOperator.IsNumber(condition) && condition>0)
|
|
11129
|
+
{
|
|
11130
|
+
|
|
11131
|
+
}
|
|
11132
|
+
|
|
11133
|
+
return result;
|
|
11134
|
+
}
|
|
11059
11135
|
}
|
|
11060
11136
|
|
|
11061
11137
|
|
|
@@ -11108,7 +11184,8 @@ JSDraw.prototype.IsDrawFunction=function(name)
|
|
|
11108
11184
|
"STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF',"DRAWCOLORKLINE",'PLOYLINE',"DRAWOVERLAYKLINE",
|
|
11109
11185
|
'POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS","DRAWTEXTREL",
|
|
11110
11186
|
'DRAWOVERLAYLINE',"FILLRGN", "FILLRGN2","FILLTOPRGN", "FILLBOTTOMRGN", "FILLVERTICALRGN","FLOATRGN","DRAWSL", "DRAWGBK2","DRAWGBK_DIV",
|
|
11111
|
-
"VERTLINE","HORLINE","TIPICON"
|
|
11187
|
+
"VERTLINE","HORLINE","TIPICON",
|
|
11188
|
+
"BUY","SELL","SELLSHORT","BUYSHORT",
|
|
11112
11189
|
]);
|
|
11113
11190
|
if (setFunctionName.has(name)) return true;
|
|
11114
11191
|
|
|
@@ -17582,6 +17659,24 @@ function JSExecute(ast,option)
|
|
|
17582
17659
|
}
|
|
17583
17660
|
break;
|
|
17584
17661
|
|
|
17662
|
+
//交易函数
|
|
17663
|
+
case "BUY":
|
|
17664
|
+
node.Draw=this.Draw.BUY(args[0],args[1],args[2],args[3]);
|
|
17665
|
+
node.Out=node.Draw.DrawData.Data;
|
|
17666
|
+
break;
|
|
17667
|
+
case "SELL":
|
|
17668
|
+
node.Draw=this.Draw.SELL(args[0],args[1],args[2],args[3]);
|
|
17669
|
+
node.Out=node.Draw.DrawData.Data;
|
|
17670
|
+
break;
|
|
17671
|
+
case "SELLSHORT":
|
|
17672
|
+
node.Draw=this.Draw.SELLSHORT(args[0],args[1],args[2],args[3]);
|
|
17673
|
+
node.Out=node.Draw.DrawData.Data;
|
|
17674
|
+
break;
|
|
17675
|
+
case "BUYSHORT":
|
|
17676
|
+
node.Draw=this.Draw.BUYSHORT(args[0],args[1],args[2],args[3]);
|
|
17677
|
+
node.Out=node.Draw.DrawData.Data;
|
|
17678
|
+
break;
|
|
17679
|
+
|
|
17585
17680
|
default:
|
|
17586
17681
|
node.Out=this.Algorithm.CallFunction(funcName, args, node, this.SymbolData);
|
|
17587
17682
|
break;
|
|
@@ -20244,6 +20339,23 @@ function ScriptIndex(name,script,args,option)
|
|
|
20244
20339
|
hqChart.ChartPaint.push(chart);
|
|
20245
20340
|
}
|
|
20246
20341
|
|
|
20342
|
+
this.CreateTradeIcon=function(hqChart,windowIndex,varItem,id)
|
|
20343
|
+
{
|
|
20344
|
+
var chart=new ChartTradeIcon();
|
|
20345
|
+
chart.Canvas=hqChart.Canvas;
|
|
20346
|
+
chart.Name=varItem.Name;
|
|
20347
|
+
chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
|
|
20348
|
+
chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
|
|
20349
|
+
|
|
20350
|
+
chart.Data.Data=varItem.Draw.DrawData.Data;
|
|
20351
|
+
chart.AryIcon=varItem.Draw.DrawData.Icons;
|
|
20352
|
+
chart.TradeType=varItem.Draw.DrawType;
|
|
20353
|
+
|
|
20354
|
+
if (varItem.DrawFontSize>0) chart.SVG.Size=varItem.DrawFontSize; //图标大小
|
|
20355
|
+
|
|
20356
|
+
hqChart.ChartPaint.push(chart);
|
|
20357
|
+
}
|
|
20358
|
+
|
|
20247
20359
|
this.CreateTextLine=function(hqChart,windowIndex,varItem,id)
|
|
20248
20360
|
{
|
|
20249
20361
|
let chart=new ChartTextLine();
|
|
@@ -20969,6 +21081,13 @@ function ScriptIndex(name,script,args,option)
|
|
|
20969
21081
|
case "MULTI_POINT_LINE":
|
|
20970
21082
|
this.CreateLineMultiData(hqChart,windowIndex,item,i);
|
|
20971
21083
|
break;
|
|
21084
|
+
case "BUY":
|
|
21085
|
+
case "SELL":
|
|
21086
|
+
case "SELLSHORT":
|
|
21087
|
+
case "BUYSHORT":
|
|
21088
|
+
this.CreateTradeIcon(hqChart,windowIndex,item,i);
|
|
21089
|
+
break;
|
|
21090
|
+
|
|
20972
21091
|
case SCRIPT_CHART_NAME.OVERLAY_BARS:
|
|
20973
21092
|
this.CreateStackedBar(hqChart,windowIndex,item,i);
|
|
20974
21093
|
break;
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -30520,6 +30520,108 @@ function ChartSingleText()
|
|
|
30520
30520
|
}
|
|
30521
30521
|
|
|
30522
30522
|
|
|
30523
|
+
function ChartTradeIcon()
|
|
30524
|
+
{
|
|
30525
|
+
this.newMethod=IChartPainting; //派生
|
|
30526
|
+
this.newMethod();
|
|
30527
|
+
delete this.newMethod;
|
|
30528
|
+
|
|
30529
|
+
this.ClassName='ChartTradeIcon'; //类名
|
|
30530
|
+
this.TextAlign='center';
|
|
30531
|
+
this.TextBaseline='middle';
|
|
30532
|
+
this.SVG={ Family:"iconfont", Size:12 };
|
|
30533
|
+
this.AryIcon;
|
|
30534
|
+
|
|
30535
|
+
this.Draw=function()
|
|
30536
|
+
{
|
|
30537
|
+
if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
|
|
30538
|
+
if (this.IsShowIndexTitleOnly()) return;
|
|
30539
|
+
if (this.IsHideScriptIndex()) return;
|
|
30540
|
+
|
|
30541
|
+
if(!this.Data || !this.Data.Data) return;
|
|
30542
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon)) return;
|
|
30543
|
+
|
|
30544
|
+
this.Canvas.font=`${this.SVG.Size}px ${this.SVG.Family}`;
|
|
30545
|
+
this.Canvas.textAlign=this.TextAlign;
|
|
30546
|
+
this.Canvas.textBaseline='middle';
|
|
30547
|
+
var yOffset=0;
|
|
30548
|
+
if (this.TradeType=="BUY" || this.TradeType=="BUYSHORT")
|
|
30549
|
+
{
|
|
30550
|
+
this.Canvas.textBaseline="bottom";
|
|
30551
|
+
yOffset=-2;
|
|
30552
|
+
}
|
|
30553
|
+
else if (this.TradeType=="SELL" || this.TradeType=="SELLSHORT")
|
|
30554
|
+
{
|
|
30555
|
+
this.Canvas.textBaseline="top";
|
|
30556
|
+
yOffset+2;
|
|
30557
|
+
}
|
|
30558
|
+
|
|
30559
|
+
var bHScreen=(this.ChartFrame.IsHScreen===true);
|
|
30560
|
+
var dataWidth=this.ChartFrame.DataWidth;
|
|
30561
|
+
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
30562
|
+
var chartright=this.ChartBorder.GetRight();
|
|
30563
|
+
if (bHScreen) chartright=this.ChartBorder.GetBottom();
|
|
30564
|
+
var xPointCount=this.ChartFrame.XPointCount;
|
|
30565
|
+
var border=this.ChartFrame.GetBorder();
|
|
30566
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
30567
|
+
|
|
30568
|
+
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
30569
|
+
{
|
|
30570
|
+
var value=this.Data.Data[i];
|
|
30571
|
+
if (!IFrameSplitOperator.IsNumber(value)) continue;
|
|
30572
|
+
if (value<=0) continue;
|
|
30573
|
+
|
|
30574
|
+
var iconItem=this.AryIcon[i];
|
|
30575
|
+
if (!IFrameSplitOperator.IsNumber(iconItem.Value) || !iconItem.Icon) continue;
|
|
30576
|
+
|
|
30577
|
+
var left=xOffset;
|
|
30578
|
+
var right=xOffset+dataWidth;
|
|
30579
|
+
if (right>chartright) break;
|
|
30580
|
+
|
|
30581
|
+
|
|
30582
|
+
var x=left+(right-left)/2;
|
|
30583
|
+
var y=this.GetYFromData(iconItem.Value, false);
|
|
30584
|
+
|
|
30585
|
+
this.Canvas.fillStyle=iconItem.Color;
|
|
30586
|
+
this.Canvas.fillText(iconItem.Icon,x,y+yOffset);
|
|
30587
|
+
}
|
|
30588
|
+
}
|
|
30589
|
+
|
|
30590
|
+
this.GetMaxMin=function()
|
|
30591
|
+
{
|
|
30592
|
+
var range={Max:null, Min:null };
|
|
30593
|
+
if(!this.Data || !this.Data.Data) return range;
|
|
30594
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon)) return range;
|
|
30595
|
+
|
|
30596
|
+
var xPointCount=this.ChartFrame.XPointCount;
|
|
30597
|
+
var start=this.Data.DataOffset;
|
|
30598
|
+
if (this.ChartFrame.GlobalOption && this.ChartFrame.GlobalOption.IsValueFullRange)
|
|
30599
|
+
{
|
|
30600
|
+
start=0;
|
|
30601
|
+
xPointCount=this.Data.Data.length;
|
|
30602
|
+
}
|
|
30603
|
+
|
|
30604
|
+
for(var i=start,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j)
|
|
30605
|
+
{
|
|
30606
|
+
var value=this.Data.Data[i];
|
|
30607
|
+
if (!IFrameSplitOperator.IsNumber(value)) continue;
|
|
30608
|
+
if (value<=0) continue;
|
|
30609
|
+
|
|
30610
|
+
var iconItem=this.AryIcon[i];
|
|
30611
|
+
if (!IFrameSplitOperator.IsNumber(iconItem.Value) || !iconItem.Icon) continue;
|
|
30612
|
+
|
|
30613
|
+
if (range.Max==null) range.Max=iconItem.Value;
|
|
30614
|
+
else if (range.Max<iconItem.Value) range.Max=iconItem.Value;
|
|
30615
|
+
|
|
30616
|
+
if (range.Min==null) range.Min=iconItem.Value;
|
|
30617
|
+
else if (range.Min>iconItem.Value) range.Min=iconItem.Value;
|
|
30618
|
+
}
|
|
30619
|
+
|
|
30620
|
+
return range;
|
|
30621
|
+
}
|
|
30622
|
+
}
|
|
30623
|
+
|
|
30624
|
+
|
|
30523
30625
|
function ChartDrawText()
|
|
30524
30626
|
{
|
|
30525
30627
|
this.newMethod=IChartPainting; //派生
|
|
@@ -78,7 +78,14 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
|
|
78
78
|
'VARP':FUNCTION_NAME,'NDAY':FUNCTION_NAME,'UPNDAY':FUNCTION_NAME,'DOWNNDAY':FUNCTION_NAME,'LONGCROSS':FUNCTION_NAME,'EXISTR':FUNCTION_NAME,
|
|
79
79
|
'RELATE':FUNCTION_NAME,'COVAR':FUNCTION_NAME,'HHVBARS':FUNCTION_NAME,'LLVBARS':FUNCTION_NAME,'BETA':FUNCTION_NAME,
|
|
80
80
|
'DRAWKLINE_IF':FUNCTION_NAME,'BACKSET':FUNCTION_NAME,'SARTURN':FUNCTION_NAME,'SAR':FUNCTION_NAME,'REVERSE':FUNCTION_NAME,'SUMBARS':FUNCTION_NAME,
|
|
81
|
-
'MEMA':FUNCTION_NAME,'WMA':FUNCTION_NAME,"STRLEN":FUNCTION_NAME,
|
|
81
|
+
'MEMA':FUNCTION_NAME,'WMA':FUNCTION_NAME,"STRLEN":FUNCTION_NAME,"TMA":FUNCTION_NAME,"HV":FUNCTION_NAME,"HOD":FUNCTION_NAME,"LV":FUNCTION_NAME,
|
|
82
|
+
"VALUEWHEN":FUNCTION_NAME,"TESTSKIP":FUNCTION_NAME,"IFC":FUNCTION_NAME,"IFN":FUNCTION_NAME,"RGB":FUNCTION_NAME,"RGBX":FUNCTION_NAME,
|
|
83
|
+
"SYSPARAM":FUNCTION_NAME,"CALCSTOCKINDEX":FUNCTION_NAME,"STKINDI":FUNCTION_NAME,"RGBA":FUNCTION_NAME,
|
|
84
|
+
|
|
85
|
+
"ISUP":DATA_NAME,"ISEQUAL":DATA_NAME,"ISDOWN":DATA_NAME,
|
|
86
|
+
|
|
87
|
+
"XMOVE":FUNCTION_NAME,"YMOVE":FUNCTION_NAME,"UPCOLOR":FUNCTION_NAME,"DOWNCOLOR":FUNCTION_NAME,
|
|
88
|
+
"STRFORMAT":FUNCTION_NAME,
|
|
82
89
|
|
|
83
90
|
//动态行情函数
|
|
84
91
|
"DYNAINFO":FUNCTION_NAME,
|
|
@@ -93,16 +100,20 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
|
|
93
100
|
'NEWS':FUNCTION_NAME,
|
|
94
101
|
|
|
95
102
|
//日期类
|
|
96
|
-
'DATE':DATA_NAME,'MONTH':DATA_NAME,'YEAR':DATA_NAME,
|
|
103
|
+
'DATE':DATA_NAME,'MONTH':DATA_NAME,'YEAR':DATA_NAME,"PERIOD":DATA_NAME,'TIME':DATA_NAME,'TIME2':DATA_NAME, "WEEKDAY":DATA_NAME,
|
|
104
|
+
"WEEKOFYEAR":DATA_NAME,"MACHINEDATE":DATA_NAME,"MACHINETIME":DATA_NAME,"MACHINEWEEK":DATA_NAME,"DAYSTOTODAY":DATA_NAME,
|
|
105
|
+
"FROMOPEN":DATA_NAME,"TOTALFZNUM":DATA_NAME,
|
|
106
|
+
"DATETODAY":FUNCTION_NAME,"DAYTODATE":FUNCTION_NAME,"TIMETOSEC":FUNCTION_NAME,"SECTOTIME":FUNCTION_NAME,
|
|
97
107
|
|
|
98
108
|
//绘图函数
|
|
99
109
|
'DRAWTEXT':FUNCTION_NAME,'STICKLINE':FUNCTION_NAME,'DRAWBAND':FUNCTION_NAME,'DRAWKLINE':FUNCTION_NAME,
|
|
100
110
|
'PLOYLINE':FUNCTION_NAME,'POLYLINE':FUNCTION_NAME,'DRAWNUMBER':FUNCTION_NAME,'DRAWICON':FUNCTION_NAME,'SUPERDRAWTEXT':FUNCTION_NAME,
|
|
111
|
+
|
|
101
112
|
|
|
102
113
|
//个股行情数据
|
|
103
114
|
"CLOSE":DATA_NAME, "C":DATA_NAME,"VOL":DATA_NAME, "V":DATA_NAME,
|
|
104
115
|
"OPEN":DATA_NAME, "O":DATA_NAME, "HIGH":DATA_NAME, "H":DATA_NAME, "LOW":DATA_NAME,"L":DATA_NAME,"AMOUNT":DATA_NAME,
|
|
105
|
-
"CURRBARSCOUNT":DATA_NAME,
|
|
116
|
+
"CURRBARSCOUNT":DATA_NAME, "VOLINSTK":DATA_NAME, "ZSTJJ":DATA_NAME, "OPI":DATA_NAME,
|
|
106
117
|
|
|
107
118
|
//大盘数据
|
|
108
119
|
"INDEXA":DATA_NAME,"INDEXC":DATA_NAME,"INDEXH":DATA_NAME,"INDEXL":DATA_NAME,"INDEXO":DATA_NAME,"INDEXV":DATA_NAME,'INDEXADV':DATA_NAME,'INDEXDEC':DATA_NAME,
|
|
@@ -112,7 +123,17 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
|
|
112
123
|
'LINETHICK1':LINE_WIDTH_NAME,'LINETHICK2':LINE_WIDTH_NAME,'LINETHICK3':LINE_WIDTH_NAME,'LINETHICK4':LINE_WIDTH_NAME,'LINETHICK5':LINE_WIDTH_NAME,
|
|
113
124
|
'LINETHICK6':LINE_WIDTH_NAME,'LINETHICK7':LINE_WIDTH_NAME,'LINETHICK8':LINE_WIDTH_NAME,'LINETHICK9':LINE_WIDTH_NAME,'LINETHICK10':LINE_WIDTH_NAME,
|
|
114
125
|
|
|
126
|
+
//字体大小
|
|
127
|
+
"FONTSIZE10":LINE_WIDTH_NAME,"FONTSIZE11":LINE_WIDTH_NAME,"FONTSIZE12":LINE_WIDTH_NAME,"FONTSIZE4":LINE_WIDTH_NAME,"FONTSIZE15":LINE_WIDTH_NAME,
|
|
128
|
+
"FONTSIZE16":LINE_WIDTH_NAME,"FONTSIZE17":LINE_WIDTH_NAME,"FONTSIZE18":LINE_WIDTH_NAME,"FONTSIZE9":LINE_WIDTH_NAME,"FONTSIZE20":LINE_WIDTH_NAME,
|
|
129
|
+
"FONTSIZE21":LINE_WIDTH_NAME,"FONTSIZE22":LINE_WIDTH_NAME,"FONTSIZE23":LINE_WIDTH_NAME,"FONTSIZE24":LINE_WIDTH_NAME,"FONTSIZE25":LINE_WIDTH_NAME,
|
|
130
|
+
|
|
131
|
+
"VALIGN0":LINE_WIDTH_NAME,"VALIGN1":LINE_WIDTH_NAME,"VALIGN2":LINE_WIDTH_NAME,
|
|
132
|
+
|
|
115
133
|
'COLORSTICK':DRAW_NAME,'CIRCLEDOT':DRAW_NAME,'POINTDOT':DRAW_NAME,'LINESTICK':DRAW_NAME,'STICK':DRAW_NAME,'NODRAW':DRAW_NAME,
|
|
134
|
+
"LINEAREA":DRAW_NAME,
|
|
135
|
+
|
|
136
|
+
"BUY":DRAW_NAME,"SELL":DRAW_NAME,"SELLSHORT":DRAW_NAME,"BUYSHORT":DRAW_NAME,"TIPICON":DRAW_NAME,
|
|
116
137
|
|
|
117
138
|
//颜色
|
|
118
139
|
'COLORYELLOW':COLORYELLOW,'COLORBLACK':COLORBLACK,'COLORBLUE':COLORBLUE,'COLORGREEN':COLORGREEN,'COLORCYAN':COLORCYAN,'COLORRED':COLORRED,
|
|
@@ -34600,6 +34600,108 @@ function ChartSingleText()
|
|
|
34600
34600
|
}
|
|
34601
34601
|
|
|
34602
34602
|
|
|
34603
|
+
function ChartTradeIcon()
|
|
34604
|
+
{
|
|
34605
|
+
this.newMethod=IChartPainting; //派生
|
|
34606
|
+
this.newMethod();
|
|
34607
|
+
delete this.newMethod;
|
|
34608
|
+
|
|
34609
|
+
this.ClassName='ChartTradeIcon'; //类名
|
|
34610
|
+
this.TextAlign='center';
|
|
34611
|
+
this.TextBaseline='middle';
|
|
34612
|
+
this.SVG={ Family:"iconfont", Size:12 };
|
|
34613
|
+
this.AryIcon;
|
|
34614
|
+
|
|
34615
|
+
this.Draw=function()
|
|
34616
|
+
{
|
|
34617
|
+
if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
|
|
34618
|
+
if (this.IsShowIndexTitleOnly()) return;
|
|
34619
|
+
if (this.IsHideScriptIndex()) return;
|
|
34620
|
+
|
|
34621
|
+
if(!this.Data || !this.Data.Data) return;
|
|
34622
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon)) return;
|
|
34623
|
+
|
|
34624
|
+
this.Canvas.font=`${this.SVG.Size}px ${this.SVG.Family}`;
|
|
34625
|
+
this.Canvas.textAlign=this.TextAlign;
|
|
34626
|
+
this.Canvas.textBaseline='middle';
|
|
34627
|
+
var yOffset=0;
|
|
34628
|
+
if (this.TradeType=="BUY" || this.TradeType=="BUYSHORT")
|
|
34629
|
+
{
|
|
34630
|
+
this.Canvas.textBaseline="bottom";
|
|
34631
|
+
yOffset=-2;
|
|
34632
|
+
}
|
|
34633
|
+
else if (this.TradeType=="SELL" || this.TradeType=="SELLSHORT")
|
|
34634
|
+
{
|
|
34635
|
+
this.Canvas.textBaseline="top";
|
|
34636
|
+
yOffset+2;
|
|
34637
|
+
}
|
|
34638
|
+
|
|
34639
|
+
var bHScreen=(this.ChartFrame.IsHScreen===true);
|
|
34640
|
+
var dataWidth=this.ChartFrame.DataWidth;
|
|
34641
|
+
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
34642
|
+
var chartright=this.ChartBorder.GetRight();
|
|
34643
|
+
if (bHScreen) chartright=this.ChartBorder.GetBottom();
|
|
34644
|
+
var xPointCount=this.ChartFrame.XPointCount;
|
|
34645
|
+
var border=this.ChartFrame.GetBorder();
|
|
34646
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
34647
|
+
|
|
34648
|
+
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
34649
|
+
{
|
|
34650
|
+
var value=this.Data.Data[i];
|
|
34651
|
+
if (!IFrameSplitOperator.IsNumber(value)) continue;
|
|
34652
|
+
if (value<=0) continue;
|
|
34653
|
+
|
|
34654
|
+
var iconItem=this.AryIcon[i];
|
|
34655
|
+
if (!IFrameSplitOperator.IsNumber(iconItem.Value) || !iconItem.Icon) continue;
|
|
34656
|
+
|
|
34657
|
+
var left=xOffset;
|
|
34658
|
+
var right=xOffset+dataWidth;
|
|
34659
|
+
if (right>chartright) break;
|
|
34660
|
+
|
|
34661
|
+
|
|
34662
|
+
var x=left+(right-left)/2;
|
|
34663
|
+
var y=this.GetYFromData(iconItem.Value, false);
|
|
34664
|
+
|
|
34665
|
+
this.Canvas.fillStyle=iconItem.Color;
|
|
34666
|
+
this.Canvas.fillText(iconItem.Icon,x,y+yOffset);
|
|
34667
|
+
}
|
|
34668
|
+
}
|
|
34669
|
+
|
|
34670
|
+
this.GetMaxMin=function()
|
|
34671
|
+
{
|
|
34672
|
+
var range={Max:null, Min:null };
|
|
34673
|
+
if(!this.Data || !this.Data.Data) return range;
|
|
34674
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon)) return range;
|
|
34675
|
+
|
|
34676
|
+
var xPointCount=this.ChartFrame.XPointCount;
|
|
34677
|
+
var start=this.Data.DataOffset;
|
|
34678
|
+
if (this.ChartFrame.GlobalOption && this.ChartFrame.GlobalOption.IsValueFullRange)
|
|
34679
|
+
{
|
|
34680
|
+
start=0;
|
|
34681
|
+
xPointCount=this.Data.Data.length;
|
|
34682
|
+
}
|
|
34683
|
+
|
|
34684
|
+
for(var i=start,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j)
|
|
34685
|
+
{
|
|
34686
|
+
var value=this.Data.Data[i];
|
|
34687
|
+
if (!IFrameSplitOperator.IsNumber(value)) continue;
|
|
34688
|
+
if (value<=0) continue;
|
|
34689
|
+
|
|
34690
|
+
var iconItem=this.AryIcon[i];
|
|
34691
|
+
if (!IFrameSplitOperator.IsNumber(iconItem.Value) || !iconItem.Icon) continue;
|
|
34692
|
+
|
|
34693
|
+
if (range.Max==null) range.Max=iconItem.Value;
|
|
34694
|
+
else if (range.Max<iconItem.Value) range.Max=iconItem.Value;
|
|
34695
|
+
|
|
34696
|
+
if (range.Min==null) range.Min=iconItem.Value;
|
|
34697
|
+
else if (range.Min>iconItem.Value) range.Min=iconItem.Value;
|
|
34698
|
+
}
|
|
34699
|
+
|
|
34700
|
+
return range;
|
|
34701
|
+
}
|
|
34702
|
+
}
|
|
34703
|
+
|
|
34704
|
+
|
|
34603
34705
|
function ChartDrawText()
|
|
34604
34706
|
{
|
|
34605
34707
|
this.newMethod=IChartPainting; //派生
|
|
@@ -104886,6 +104988,82 @@ function JSDraw(errorHandler,symbolData)
|
|
|
104886
104988
|
|
|
104887
104989
|
return drawData;
|
|
104888
104990
|
}
|
|
104991
|
+
|
|
104992
|
+
|
|
104993
|
+
//多头建仓(买入开仓).
|
|
104994
|
+
//参数1为触发条件,参数2为标记放置位置.此函数只适用于特定版本交易模式下.
|
|
104995
|
+
//例如: BUY(CROSS(A,B),LOW),当A上穿B时,在LOW处画标记,同时突出提示或直接下单,如果LOW改为DRAWNULL,就不画标记.(分时图上不支持)
|
|
104996
|
+
this.BUY=function(condition, data, iconSymbol, color)
|
|
104997
|
+
{
|
|
104998
|
+
var iconInfo={ Color:"rgb(0,255,0)", Type:"SVG", Icon:'\ue660' };
|
|
104999
|
+
if (IFrameSplitOperator.IsString(iconSymbol)) iconInfo.Icon=iconSymbol;
|
|
105000
|
+
if (color) iconInfo.Color=color;
|
|
105001
|
+
var result=this.CalculateTradeData(condition, data, iconInfo);
|
|
105002
|
+
result.DrawType='BUY';
|
|
105003
|
+
return result;
|
|
105004
|
+
}
|
|
105005
|
+
|
|
105006
|
+
this.BUYSHORT=function(condition, data, iconSymbol, color)
|
|
105007
|
+
{
|
|
105008
|
+
var iconInfo={ Color:"rgb(0,255,0)", Type:"SVG", Icon:'\ue660' };
|
|
105009
|
+
if (IFrameSplitOperator.IsString(iconSymbol)) iconInfo.Icon=iconSymbol;
|
|
105010
|
+
if (color) iconInfo.Color=color;
|
|
105011
|
+
var result=this.CalculateTradeData(condition, data, iconInfo);
|
|
105012
|
+
result.DrawType='BUYSHORT';
|
|
105013
|
+
return result;
|
|
105014
|
+
}
|
|
105015
|
+
|
|
105016
|
+
//多头平仓(卖出平仓).
|
|
105017
|
+
//参数1为触发条件,参数2为标记放置位置.此函数只适用于特定版本交易模式下.
|
|
105018
|
+
//例如: SELL(CROSS(A,B),HIGH),当A上穿B时,在HIGH处画标记,同时突出提示或直接下单,如果HIGH改为DRAWNULL,就不画标记.(分时图上不支持)
|
|
105019
|
+
this.SELL=function(condition, data, iconSymbol,color)
|
|
105020
|
+
{
|
|
105021
|
+
var iconInfo={ Color:"rgb(255,0,0)", Type:"SVG", Icon:'\ue661' };
|
|
105022
|
+
if (IFrameSplitOperator.IsString(iconSymbol)) iconInfo.Icon=iconSymbol;
|
|
105023
|
+
if (color) iconInfo.Color=color;
|
|
105024
|
+
var result=this.CalculateTradeData(condition, data, iconInfo);
|
|
105025
|
+
result.DrawType='SELL';
|
|
105026
|
+
return result;
|
|
105027
|
+
}
|
|
105028
|
+
|
|
105029
|
+
this.SELLSHORT=function(condition, data, iconSymbol,color)
|
|
105030
|
+
{
|
|
105031
|
+
var iconInfo={ Color:"rgb(255,0,0)", Type:"SVG", Icon:'\ue661' };
|
|
105032
|
+
if (IFrameSplitOperator.IsString(iconSymbol)) iconInfo.Icon=iconSymbol;
|
|
105033
|
+
if (color) iconInfo.Color=color;
|
|
105034
|
+
var result=this.CalculateTradeData(condition, data, iconInfo);
|
|
105035
|
+
result.DrawType='SELLSHORT';
|
|
105036
|
+
return result;
|
|
105037
|
+
}
|
|
105038
|
+
|
|
105039
|
+
this.CalculateTradeData=function(condition, data, IconInfo)
|
|
105040
|
+
{
|
|
105041
|
+
var aryData=[];
|
|
105042
|
+
var aryIcon=[];
|
|
105043
|
+
var result={ DrawData:{ Data:aryData, Icons:aryIcon } };
|
|
105044
|
+
|
|
105045
|
+
if (Array.isArray(condition))
|
|
105046
|
+
{
|
|
105047
|
+
var isAryPosition=Array.isArray(data);
|
|
105048
|
+
for(var i=0;i<condition.length;++i)
|
|
105049
|
+
{
|
|
105050
|
+
aryData[i]=0;
|
|
105051
|
+
aryIcon[i]=null
|
|
105052
|
+
if (!condition[i]) continue;
|
|
105053
|
+
|
|
105054
|
+
aryData[i]=1;
|
|
105055
|
+
|
|
105056
|
+
if (isAryPosition) aryIcon[i]={ Value:data[i], Type:IconInfo.Type, Color:IconInfo.Color, Icon:IconInfo.Icon };
|
|
105057
|
+
else aryIcon[i]={ Value:data, Type:IconInfo.Type, Color:IconInfo.Color, Icon:IconInfo.Icon };
|
|
105058
|
+
}
|
|
105059
|
+
}
|
|
105060
|
+
else if (IFrameSplitOperator.IsNumber(condition) && condition>0)
|
|
105061
|
+
{
|
|
105062
|
+
|
|
105063
|
+
}
|
|
105064
|
+
|
|
105065
|
+
return result;
|
|
105066
|
+
}
|
|
104889
105067
|
}
|
|
104890
105068
|
|
|
104891
105069
|
|
|
@@ -104938,7 +105116,8 @@ JSDraw.prototype.IsDrawFunction=function(name)
|
|
|
104938
105116
|
"STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF',"DRAWCOLORKLINE",'PLOYLINE',"DRAWOVERLAYKLINE",
|
|
104939
105117
|
'POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS","DRAWTEXTREL",
|
|
104940
105118
|
'DRAWOVERLAYLINE',"FILLRGN", "FILLRGN2","FILLTOPRGN", "FILLBOTTOMRGN", "FILLVERTICALRGN","FLOATRGN","DRAWSL", "DRAWGBK2","DRAWGBK_DIV",
|
|
104941
|
-
"VERTLINE","HORLINE","TIPICON"
|
|
105119
|
+
"VERTLINE","HORLINE","TIPICON",
|
|
105120
|
+
"BUY","SELL","SELLSHORT","BUYSHORT",
|
|
104942
105121
|
]);
|
|
104943
105122
|
if (setFunctionName.has(name)) return true;
|
|
104944
105123
|
|
|
@@ -111412,6 +111591,24 @@ function JSExecute(ast,option)
|
|
|
111412
111591
|
}
|
|
111413
111592
|
break;
|
|
111414
111593
|
|
|
111594
|
+
//交易函数
|
|
111595
|
+
case "BUY":
|
|
111596
|
+
node.Draw=this.Draw.BUY(args[0],args[1],args[2],args[3]);
|
|
111597
|
+
node.Out=node.Draw.DrawData.Data;
|
|
111598
|
+
break;
|
|
111599
|
+
case "SELL":
|
|
111600
|
+
node.Draw=this.Draw.SELL(args[0],args[1],args[2],args[3]);
|
|
111601
|
+
node.Out=node.Draw.DrawData.Data;
|
|
111602
|
+
break;
|
|
111603
|
+
case "SELLSHORT":
|
|
111604
|
+
node.Draw=this.Draw.SELLSHORT(args[0],args[1],args[2],args[3]);
|
|
111605
|
+
node.Out=node.Draw.DrawData.Data;
|
|
111606
|
+
break;
|
|
111607
|
+
case "BUYSHORT":
|
|
111608
|
+
node.Draw=this.Draw.BUYSHORT(args[0],args[1],args[2],args[3]);
|
|
111609
|
+
node.Out=node.Draw.DrawData.Data;
|
|
111610
|
+
break;
|
|
111611
|
+
|
|
111415
111612
|
default:
|
|
111416
111613
|
node.Out=this.Algorithm.CallFunction(funcName, args, node, this.SymbolData);
|
|
111417
111614
|
break;
|
|
@@ -114074,6 +114271,23 @@ function ScriptIndex(name,script,args,option)
|
|
|
114074
114271
|
hqChart.ChartPaint.push(chart);
|
|
114075
114272
|
}
|
|
114076
114273
|
|
|
114274
|
+
this.CreateTradeIcon=function(hqChart,windowIndex,varItem,id)
|
|
114275
|
+
{
|
|
114276
|
+
var chart=new ChartTradeIcon();
|
|
114277
|
+
chart.Canvas=hqChart.Canvas;
|
|
114278
|
+
chart.Name=varItem.Name;
|
|
114279
|
+
chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
|
|
114280
|
+
chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
|
|
114281
|
+
|
|
114282
|
+
chart.Data.Data=varItem.Draw.DrawData.Data;
|
|
114283
|
+
chart.AryIcon=varItem.Draw.DrawData.Icons;
|
|
114284
|
+
chart.TradeType=varItem.Draw.DrawType;
|
|
114285
|
+
|
|
114286
|
+
if (varItem.DrawFontSize>0) chart.SVG.Size=varItem.DrawFontSize; //图标大小
|
|
114287
|
+
|
|
114288
|
+
hqChart.ChartPaint.push(chart);
|
|
114289
|
+
}
|
|
114290
|
+
|
|
114077
114291
|
this.CreateTextLine=function(hqChart,windowIndex,varItem,id)
|
|
114078
114292
|
{
|
|
114079
114293
|
let chart=new ChartTextLine();
|
|
@@ -114799,6 +115013,13 @@ function ScriptIndex(name,script,args,option)
|
|
|
114799
115013
|
case "MULTI_POINT_LINE":
|
|
114800
115014
|
this.CreateLineMultiData(hqChart,windowIndex,item,i);
|
|
114801
115015
|
break;
|
|
115016
|
+
case "BUY":
|
|
115017
|
+
case "SELL":
|
|
115018
|
+
case "SELLSHORT":
|
|
115019
|
+
case "BUYSHORT":
|
|
115020
|
+
this.CreateTradeIcon(hqChart,windowIndex,item,i);
|
|
115021
|
+
break;
|
|
115022
|
+
|
|
114802
115023
|
case SCRIPT_CHART_NAME.OVERLAY_BARS:
|
|
114803
115024
|
this.CreateStackedBar(hqChart,windowIndex,item,i);
|
|
114804
115025
|
break;
|
|
@@ -129660,7 +129881,7 @@ function ScrollBarBGChart()
|
|
|
129660
129881
|
|
|
129661
129882
|
|
|
129662
129883
|
|
|
129663
|
-
var HQCHART_VERSION="1.1.
|
|
129884
|
+
var HQCHART_VERSION="1.1.12621";
|
|
129664
129885
|
|
|
129665
129886
|
function PrintHQChartVersion()
|
|
129666
129887
|
{
|
|
@@ -34644,6 +34644,108 @@ function ChartSingleText()
|
|
|
34644
34644
|
}
|
|
34645
34645
|
|
|
34646
34646
|
|
|
34647
|
+
function ChartTradeIcon()
|
|
34648
|
+
{
|
|
34649
|
+
this.newMethod=IChartPainting; //派生
|
|
34650
|
+
this.newMethod();
|
|
34651
|
+
delete this.newMethod;
|
|
34652
|
+
|
|
34653
|
+
this.ClassName='ChartTradeIcon'; //类名
|
|
34654
|
+
this.TextAlign='center';
|
|
34655
|
+
this.TextBaseline='middle';
|
|
34656
|
+
this.SVG={ Family:"iconfont", Size:12 };
|
|
34657
|
+
this.AryIcon;
|
|
34658
|
+
|
|
34659
|
+
this.Draw=function()
|
|
34660
|
+
{
|
|
34661
|
+
if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
|
|
34662
|
+
if (this.IsShowIndexTitleOnly()) return;
|
|
34663
|
+
if (this.IsHideScriptIndex()) return;
|
|
34664
|
+
|
|
34665
|
+
if(!this.Data || !this.Data.Data) return;
|
|
34666
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon)) return;
|
|
34667
|
+
|
|
34668
|
+
this.Canvas.font=`${this.SVG.Size}px ${this.SVG.Family}`;
|
|
34669
|
+
this.Canvas.textAlign=this.TextAlign;
|
|
34670
|
+
this.Canvas.textBaseline='middle';
|
|
34671
|
+
var yOffset=0;
|
|
34672
|
+
if (this.TradeType=="BUY" || this.TradeType=="BUYSHORT")
|
|
34673
|
+
{
|
|
34674
|
+
this.Canvas.textBaseline="bottom";
|
|
34675
|
+
yOffset=-2;
|
|
34676
|
+
}
|
|
34677
|
+
else if (this.TradeType=="SELL" || this.TradeType=="SELLSHORT")
|
|
34678
|
+
{
|
|
34679
|
+
this.Canvas.textBaseline="top";
|
|
34680
|
+
yOffset+2;
|
|
34681
|
+
}
|
|
34682
|
+
|
|
34683
|
+
var bHScreen=(this.ChartFrame.IsHScreen===true);
|
|
34684
|
+
var dataWidth=this.ChartFrame.DataWidth;
|
|
34685
|
+
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
34686
|
+
var chartright=this.ChartBorder.GetRight();
|
|
34687
|
+
if (bHScreen) chartright=this.ChartBorder.GetBottom();
|
|
34688
|
+
var xPointCount=this.ChartFrame.XPointCount;
|
|
34689
|
+
var border=this.ChartFrame.GetBorder();
|
|
34690
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
34691
|
+
|
|
34692
|
+
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
|
|
34693
|
+
{
|
|
34694
|
+
var value=this.Data.Data[i];
|
|
34695
|
+
if (!IFrameSplitOperator.IsNumber(value)) continue;
|
|
34696
|
+
if (value<=0) continue;
|
|
34697
|
+
|
|
34698
|
+
var iconItem=this.AryIcon[i];
|
|
34699
|
+
if (!IFrameSplitOperator.IsNumber(iconItem.Value) || !iconItem.Icon) continue;
|
|
34700
|
+
|
|
34701
|
+
var left=xOffset;
|
|
34702
|
+
var right=xOffset+dataWidth;
|
|
34703
|
+
if (right>chartright) break;
|
|
34704
|
+
|
|
34705
|
+
|
|
34706
|
+
var x=left+(right-left)/2;
|
|
34707
|
+
var y=this.GetYFromData(iconItem.Value, false);
|
|
34708
|
+
|
|
34709
|
+
this.Canvas.fillStyle=iconItem.Color;
|
|
34710
|
+
this.Canvas.fillText(iconItem.Icon,x,y+yOffset);
|
|
34711
|
+
}
|
|
34712
|
+
}
|
|
34713
|
+
|
|
34714
|
+
this.GetMaxMin=function()
|
|
34715
|
+
{
|
|
34716
|
+
var range={Max:null, Min:null };
|
|
34717
|
+
if(!this.Data || !this.Data.Data) return range;
|
|
34718
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon)) return range;
|
|
34719
|
+
|
|
34720
|
+
var xPointCount=this.ChartFrame.XPointCount;
|
|
34721
|
+
var start=this.Data.DataOffset;
|
|
34722
|
+
if (this.ChartFrame.GlobalOption && this.ChartFrame.GlobalOption.IsValueFullRange)
|
|
34723
|
+
{
|
|
34724
|
+
start=0;
|
|
34725
|
+
xPointCount=this.Data.Data.length;
|
|
34726
|
+
}
|
|
34727
|
+
|
|
34728
|
+
for(var i=start,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j)
|
|
34729
|
+
{
|
|
34730
|
+
var value=this.Data.Data[i];
|
|
34731
|
+
if (!IFrameSplitOperator.IsNumber(value)) continue;
|
|
34732
|
+
if (value<=0) continue;
|
|
34733
|
+
|
|
34734
|
+
var iconItem=this.AryIcon[i];
|
|
34735
|
+
if (!IFrameSplitOperator.IsNumber(iconItem.Value) || !iconItem.Icon) continue;
|
|
34736
|
+
|
|
34737
|
+
if (range.Max==null) range.Max=iconItem.Value;
|
|
34738
|
+
else if (range.Max<iconItem.Value) range.Max=iconItem.Value;
|
|
34739
|
+
|
|
34740
|
+
if (range.Min==null) range.Min=iconItem.Value;
|
|
34741
|
+
else if (range.Min>iconItem.Value) range.Min=iconItem.Value;
|
|
34742
|
+
}
|
|
34743
|
+
|
|
34744
|
+
return range;
|
|
34745
|
+
}
|
|
34746
|
+
}
|
|
34747
|
+
|
|
34748
|
+
|
|
34647
34749
|
function ChartDrawText()
|
|
34648
34750
|
{
|
|
34649
34751
|
this.newMethod=IChartPainting; //派生
|
|
@@ -104930,6 +105032,82 @@ function JSDraw(errorHandler,symbolData)
|
|
|
104930
105032
|
|
|
104931
105033
|
return drawData;
|
|
104932
105034
|
}
|
|
105035
|
+
|
|
105036
|
+
|
|
105037
|
+
//多头建仓(买入开仓).
|
|
105038
|
+
//参数1为触发条件,参数2为标记放置位置.此函数只适用于特定版本交易模式下.
|
|
105039
|
+
//例如: BUY(CROSS(A,B),LOW),当A上穿B时,在LOW处画标记,同时突出提示或直接下单,如果LOW改为DRAWNULL,就不画标记.(分时图上不支持)
|
|
105040
|
+
this.BUY=function(condition, data, iconSymbol, color)
|
|
105041
|
+
{
|
|
105042
|
+
var iconInfo={ Color:"rgb(0,255,0)", Type:"SVG", Icon:'\ue660' };
|
|
105043
|
+
if (IFrameSplitOperator.IsString(iconSymbol)) iconInfo.Icon=iconSymbol;
|
|
105044
|
+
if (color) iconInfo.Color=color;
|
|
105045
|
+
var result=this.CalculateTradeData(condition, data, iconInfo);
|
|
105046
|
+
result.DrawType='BUY';
|
|
105047
|
+
return result;
|
|
105048
|
+
}
|
|
105049
|
+
|
|
105050
|
+
this.BUYSHORT=function(condition, data, iconSymbol, color)
|
|
105051
|
+
{
|
|
105052
|
+
var iconInfo={ Color:"rgb(0,255,0)", Type:"SVG", Icon:'\ue660' };
|
|
105053
|
+
if (IFrameSplitOperator.IsString(iconSymbol)) iconInfo.Icon=iconSymbol;
|
|
105054
|
+
if (color) iconInfo.Color=color;
|
|
105055
|
+
var result=this.CalculateTradeData(condition, data, iconInfo);
|
|
105056
|
+
result.DrawType='BUYSHORT';
|
|
105057
|
+
return result;
|
|
105058
|
+
}
|
|
105059
|
+
|
|
105060
|
+
//多头平仓(卖出平仓).
|
|
105061
|
+
//参数1为触发条件,参数2为标记放置位置.此函数只适用于特定版本交易模式下.
|
|
105062
|
+
//例如: SELL(CROSS(A,B),HIGH),当A上穿B时,在HIGH处画标记,同时突出提示或直接下单,如果HIGH改为DRAWNULL,就不画标记.(分时图上不支持)
|
|
105063
|
+
this.SELL=function(condition, data, iconSymbol,color)
|
|
105064
|
+
{
|
|
105065
|
+
var iconInfo={ Color:"rgb(255,0,0)", Type:"SVG", Icon:'\ue661' };
|
|
105066
|
+
if (IFrameSplitOperator.IsString(iconSymbol)) iconInfo.Icon=iconSymbol;
|
|
105067
|
+
if (color) iconInfo.Color=color;
|
|
105068
|
+
var result=this.CalculateTradeData(condition, data, iconInfo);
|
|
105069
|
+
result.DrawType='SELL';
|
|
105070
|
+
return result;
|
|
105071
|
+
}
|
|
105072
|
+
|
|
105073
|
+
this.SELLSHORT=function(condition, data, iconSymbol,color)
|
|
105074
|
+
{
|
|
105075
|
+
var iconInfo={ Color:"rgb(255,0,0)", Type:"SVG", Icon:'\ue661' };
|
|
105076
|
+
if (IFrameSplitOperator.IsString(iconSymbol)) iconInfo.Icon=iconSymbol;
|
|
105077
|
+
if (color) iconInfo.Color=color;
|
|
105078
|
+
var result=this.CalculateTradeData(condition, data, iconInfo);
|
|
105079
|
+
result.DrawType='SELLSHORT';
|
|
105080
|
+
return result;
|
|
105081
|
+
}
|
|
105082
|
+
|
|
105083
|
+
this.CalculateTradeData=function(condition, data, IconInfo)
|
|
105084
|
+
{
|
|
105085
|
+
var aryData=[];
|
|
105086
|
+
var aryIcon=[];
|
|
105087
|
+
var result={ DrawData:{ Data:aryData, Icons:aryIcon } };
|
|
105088
|
+
|
|
105089
|
+
if (Array.isArray(condition))
|
|
105090
|
+
{
|
|
105091
|
+
var isAryPosition=Array.isArray(data);
|
|
105092
|
+
for(var i=0;i<condition.length;++i)
|
|
105093
|
+
{
|
|
105094
|
+
aryData[i]=0;
|
|
105095
|
+
aryIcon[i]=null
|
|
105096
|
+
if (!condition[i]) continue;
|
|
105097
|
+
|
|
105098
|
+
aryData[i]=1;
|
|
105099
|
+
|
|
105100
|
+
if (isAryPosition) aryIcon[i]={ Value:data[i], Type:IconInfo.Type, Color:IconInfo.Color, Icon:IconInfo.Icon };
|
|
105101
|
+
else aryIcon[i]={ Value:data, Type:IconInfo.Type, Color:IconInfo.Color, Icon:IconInfo.Icon };
|
|
105102
|
+
}
|
|
105103
|
+
}
|
|
105104
|
+
else if (IFrameSplitOperator.IsNumber(condition) && condition>0)
|
|
105105
|
+
{
|
|
105106
|
+
|
|
105107
|
+
}
|
|
105108
|
+
|
|
105109
|
+
return result;
|
|
105110
|
+
}
|
|
104933
105111
|
}
|
|
104934
105112
|
|
|
104935
105113
|
|
|
@@ -104982,7 +105160,8 @@ JSDraw.prototype.IsDrawFunction=function(name)
|
|
|
104982
105160
|
"STICKLINE","DRAWTEXT",'SUPERDRAWTEXT','DRAWLINE','DRAWBAND','DRAWKLINE',"DRAWKLINE1",'DRAWKLINE_IF',"DRAWCOLORKLINE",'PLOYLINE',"DRAWOVERLAYKLINE",
|
|
104983
105161
|
'POLYLINE','DRAWNUMBER',"DRAWNUMBER_FIX",'DRAWICON','DRAWCHANNEL','PARTLINE','DRAWTEXT_FIX','DRAWGBK','DRAWTEXT_LINE','DRAWRECTREL',"DRAWTEXTABS","DRAWTEXTREL",
|
|
104984
105162
|
'DRAWOVERLAYLINE',"FILLRGN", "FILLRGN2","FILLTOPRGN", "FILLBOTTOMRGN", "FILLVERTICALRGN","FLOATRGN","DRAWSL", "DRAWGBK2","DRAWGBK_DIV",
|
|
104985
|
-
"VERTLINE","HORLINE","TIPICON"
|
|
105163
|
+
"VERTLINE","HORLINE","TIPICON",
|
|
105164
|
+
"BUY","SELL","SELLSHORT","BUYSHORT",
|
|
104986
105165
|
]);
|
|
104987
105166
|
if (setFunctionName.has(name)) return true;
|
|
104988
105167
|
|
|
@@ -111456,6 +111635,24 @@ function JSExecute(ast,option)
|
|
|
111456
111635
|
}
|
|
111457
111636
|
break;
|
|
111458
111637
|
|
|
111638
|
+
//交易函数
|
|
111639
|
+
case "BUY":
|
|
111640
|
+
node.Draw=this.Draw.BUY(args[0],args[1],args[2],args[3]);
|
|
111641
|
+
node.Out=node.Draw.DrawData.Data;
|
|
111642
|
+
break;
|
|
111643
|
+
case "SELL":
|
|
111644
|
+
node.Draw=this.Draw.SELL(args[0],args[1],args[2],args[3]);
|
|
111645
|
+
node.Out=node.Draw.DrawData.Data;
|
|
111646
|
+
break;
|
|
111647
|
+
case "SELLSHORT":
|
|
111648
|
+
node.Draw=this.Draw.SELLSHORT(args[0],args[1],args[2],args[3]);
|
|
111649
|
+
node.Out=node.Draw.DrawData.Data;
|
|
111650
|
+
break;
|
|
111651
|
+
case "BUYSHORT":
|
|
111652
|
+
node.Draw=this.Draw.BUYSHORT(args[0],args[1],args[2],args[3]);
|
|
111653
|
+
node.Out=node.Draw.DrawData.Data;
|
|
111654
|
+
break;
|
|
111655
|
+
|
|
111459
111656
|
default:
|
|
111460
111657
|
node.Out=this.Algorithm.CallFunction(funcName, args, node, this.SymbolData);
|
|
111461
111658
|
break;
|
|
@@ -114118,6 +114315,23 @@ function ScriptIndex(name,script,args,option)
|
|
|
114118
114315
|
hqChart.ChartPaint.push(chart);
|
|
114119
114316
|
}
|
|
114120
114317
|
|
|
114318
|
+
this.CreateTradeIcon=function(hqChart,windowIndex,varItem,id)
|
|
114319
|
+
{
|
|
114320
|
+
var chart=new ChartTradeIcon();
|
|
114321
|
+
chart.Canvas=hqChart.Canvas;
|
|
114322
|
+
chart.Name=varItem.Name;
|
|
114323
|
+
chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;
|
|
114324
|
+
chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;
|
|
114325
|
+
|
|
114326
|
+
chart.Data.Data=varItem.Draw.DrawData.Data;
|
|
114327
|
+
chart.AryIcon=varItem.Draw.DrawData.Icons;
|
|
114328
|
+
chart.TradeType=varItem.Draw.DrawType;
|
|
114329
|
+
|
|
114330
|
+
if (varItem.DrawFontSize>0) chart.SVG.Size=varItem.DrawFontSize; //图标大小
|
|
114331
|
+
|
|
114332
|
+
hqChart.ChartPaint.push(chart);
|
|
114333
|
+
}
|
|
114334
|
+
|
|
114121
114335
|
this.CreateTextLine=function(hqChart,windowIndex,varItem,id)
|
|
114122
114336
|
{
|
|
114123
114337
|
let chart=new ChartTextLine();
|
|
@@ -114843,6 +115057,13 @@ function ScriptIndex(name,script,args,option)
|
|
|
114843
115057
|
case "MULTI_POINT_LINE":
|
|
114844
115058
|
this.CreateLineMultiData(hqChart,windowIndex,item,i);
|
|
114845
115059
|
break;
|
|
115060
|
+
case "BUY":
|
|
115061
|
+
case "SELL":
|
|
115062
|
+
case "SELLSHORT":
|
|
115063
|
+
case "BUYSHORT":
|
|
115064
|
+
this.CreateTradeIcon(hqChart,windowIndex,item,i);
|
|
115065
|
+
break;
|
|
115066
|
+
|
|
114846
115067
|
case SCRIPT_CHART_NAME.OVERLAY_BARS:
|
|
114847
115068
|
this.CreateStackedBar(hqChart,windowIndex,item,i);
|
|
114848
115069
|
break;
|
|
@@ -129818,7 +130039,7 @@ function HQChartScriptWorker()
|
|
|
129818
130039
|
|
|
129819
130040
|
|
|
129820
130041
|
|
|
129821
|
-
var HQCHART_VERSION="1.1.
|
|
130042
|
+
var HQCHART_VERSION="1.1.12621";
|
|
129822
130043
|
|
|
129823
130044
|
function PrintHQChartVersion()
|
|
129824
130045
|
{
|