hqchart 1.1.15158 → 1.1.15168
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 +218 -152
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +236 -4
- package/src/jscommon/umychart.js +63 -6
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +300 -11
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +300 -11
package/lib/umychart.vue.js
CHANGED
|
@@ -2287,7 +2287,7 @@ this.Canvas.beginPath();this.Canvas.rect(client.RightEx,border.TopEx,client.Righ
|
|
|
2287
2287
|
this.Frame.SetFrameBorderSizeChange();this.Frame.ReDrawToolbar();this.Draw();return true;};this.OnZoomUpDownFrameY=function(obj,yMove){if(!this.Frame)return;if(!this.Frame.OnZoomUpDownFrameY(obj,yMove))return;this.Frame.SetSizeChage(true);this.Draw();};this.OnUpDonwFrameY=function(obj,yMove){if(!this.Frame)return false;if(!this.Frame.OnUpDonwFrameY(obj,yMove))return false;this.Frame.SetSizeChage(true);return true;};this.CancelZoomUpDownFrameY=function(obj){if(!this.Frame)return;if(!this.Frame.CancelZoomUpDownFrameY(obj))return;this.UpdateFrameMaxMin();this.Frame.SetSizeChage(true);this.Draw();};this.IsKLineContainer=function(){if(this.ClassName=='KLineChartContainer'||this.ClassName=='KLineChartHScreenContainer'||this.ClassName=="KLineTrainChartContainer"||this.ClassName=="CustomKLineChartContainer")return true;return false;};this.IsMinuteContainer=function(){if(this.ClassName=="MinuteChartContainer"||this.ClassName=="MinuteChartHScreenContainer")return true;return false;};this.UpdatePointByCursorIndex=function(type)//type 1=根据十字光标更新 2=强制取消十字光标
|
|
2288
2288
|
{if(type==1)//根据十字光标更新
|
|
2289
2289
|
{if(this.LastPoint.FrameID<0)return;var pt={X:null,Y:this.LastPoint.Y};pt.X=this.Frame.GetXFromIndex(this.CursorIndex);//X轴动态变的
|
|
2290
|
-
if(this.ChartCorssCursor){if(this.ChartCorssCursor.Status
|
|
2290
|
+
if(this.ChartCorssCursor){if((this.ChartCorssCursor.Status&JSCHART_CORSSCURSOR_STATUS_ID.LINE_ID)>0){}else{pt.Y=null;pt.X=null;}}this.LastPoint.X=pt.X;this.LastPoint.Y=pt.Y;}else if(type==2){this.LastPoint.Y=null;this.LastPoint.X=null;this.LastPoint.FrameID=-1;}else{var pt={X:null,Y:null};pt.X=this.Frame.GetXFromIndex(this.CursorIndex);var index=this.CursorIndex;var data=this.GetKData();if(IFrameSplitOperator.IsGTEZero(index)&&data.DataOffset+index<data.Data.length){var close=data.Data[data.DataOffset+index].Close;pt.Y=this.Frame.GetYFromData(close);this.LastPoint.FrameID=0;}this.LastPoint.X=pt.X;this.LastPoint.Y=pt.Y;}};this.ShowTooltipByKeyDown=function(){var corssTooltipData=this.GetCorssCursorTooltipData(null);if(corssTooltipData)this.DrawSmallFloatTooltip(corssTooltipData);else this.HideSmallFloatTooltip();if(!this.KLineTooltipConfig.Enable||!this.KLineTooltipConfig.EnableKeyDown){this.HideFloatTooltip();return;}var kData=this.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return;var index=Math.abs(this.CursorIndex-0.5);index=parseInt(index.toFixed(0));if(this.ClassName=='KLineChartContainer'||this.ClassName=='KLineTrainChartContainer')index=this.CursorIndex;var dataIndex=kData.DataOffset+index;if(dataIndex<0||dataIndex>=kData.Data.length)return;var kItem=kData.Data[dataIndex];if(!kItem)return;var toolTip=new TooltipData();toolTip.Data=kItem;toolTip.ChartPaint=this.ChartPaint[0];var pixelTatio=GetDevicePixelRatio();if(pixelTatio===0)pixelTatio=1;//div 缩放还是使用原始坐标
|
|
2291
2291
|
this.ShowTooltip(this.LastPoint.X/pixelTatio,this.LastPoint.Y/pixelTatio,toolTip);};this.DrawTooltipDialog=function(){};this.DrawFloatTooltip=function(point,toolTip){if(!this.FloatTooltip)return;this.UpdateFloatTooltip(point,toolTip);};this.UpdateFloatTooltip=function(point,toolTip){if(!this.FloatTooltip)return;var sendData={Tooltip:toolTip,Point:point,Symbol:this.Symbol,Name:this.Name,DataType:1};this.FloatTooltip.Update(sendData);};//更新实时行情到浮动tooltip
|
|
2292
2292
|
this.UpdateHQFloatTooltip=function(item){};this.ShowTooltip=function(x,y,toolTip){var _this18=this;if(!this.IsShowTooltip)return;var pixelTatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
2293
2293
|
var xMove=15/pixelTatio;//顶部坐标偏移位置
|
|
@@ -2396,7 +2396,59 @@ this.OnSelectChartPicture=function(chart){JSConsole.Chart.Log('[JSChartContainer
|
|
|
2396
2396
|
drawPicture.Period=this.Period;drawPicture.PointToValue();if(this.ChartDrawStorage)this.ChartDrawStorage.SaveDrawData(drawPicture);this.CurrentChartDrawPicture=null;if(this.SelectChartDrawPicture&&this.SelectChartDrawPicture.DragInfo)//图形移动了回调调用移动完成函数
|
|
2397
2397
|
{var dargInfo=this.SelectChartDrawPicture.DragInfo;if(dargInfo.Click&&dargInfo.Move){if(dargInfo.Click.X!=dargInfo.Move.X||dargInfo.Click.Y!=dargInfo.Move.Y){//通知上层画好了
|
|
2398
2398
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_FINISH_MOVE_DRAWPICTURE);//完成画图工具事件
|
|
2399
|
-
if(event&&event.Callback){var sendData={DrawPicture:drawPicture};event.Callback(event,sendData,this);}if(drawPicture.OnMoveFinish)drawPicture.OnMoveFinish();}}}return true;}
|
|
2399
|
+
if(event&&event.Callback){var sendData={DrawPicture:drawPicture};event.Callback(event,sendData,this);}if(drawPicture.OnMoveFinish)drawPicture.OnMoveFinish();}}}return true;};/*
|
|
2400
|
+
//对比画图
|
|
2401
|
+
this.CompareChartDrawPicture=function(aryData)
|
|
2402
|
+
{
|
|
2403
|
+
var mapData=new Map();
|
|
2404
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryData))
|
|
2405
|
+
{
|
|
2406
|
+
for(var i=0;i<aryData.length;++i)
|
|
2407
|
+
{
|
|
2408
|
+
var item=aryData[i];
|
|
2409
|
+
if (!item.Guid) continue;
|
|
2410
|
+
mapData.set(item.Guid, item);
|
|
2411
|
+
}
|
|
2412
|
+
}
|
|
2413
|
+
|
|
2414
|
+
var mapChart=new Map();
|
|
2415
|
+
if (IFrameSplitOperator.IsNonEmptyArray(this.ChartDrawPicture))
|
|
2416
|
+
{
|
|
2417
|
+
for(var i=0;i<this.ChartDrawPicture.length;++i)
|
|
2418
|
+
{
|
|
2419
|
+
var item=this.ChartDrawPicture[i];
|
|
2420
|
+
mapChart.set(item.Guid, item);
|
|
2421
|
+
}
|
|
2422
|
+
}
|
|
2423
|
+
|
|
2424
|
+
var aryDelete=[], aryEqual=[], aryNew=[];
|
|
2425
|
+
|
|
2426
|
+
for(var mapItem of mapData)
|
|
2427
|
+
{
|
|
2428
|
+
var item=mapItem[1];
|
|
2429
|
+
if (mapChart.has(item.Guid)) //存在的
|
|
2430
|
+
{
|
|
2431
|
+
var chart=mapChart.get(item.Guid);
|
|
2432
|
+
aryEqual.push({ Chart:chart, Data:item });
|
|
2433
|
+
}
|
|
2434
|
+
else
|
|
2435
|
+
{
|
|
2436
|
+
aryNew.push({ Data:item }); //新建
|
|
2437
|
+
}
|
|
2438
|
+
}
|
|
2439
|
+
|
|
2440
|
+
for(var mapItem of mapChart)
|
|
2441
|
+
{
|
|
2442
|
+
var item=mapItem[1];
|
|
2443
|
+
if (!mapData.has(item.Guid))
|
|
2444
|
+
{
|
|
2445
|
+
aryDelete.push({ Chart:item }); //删除的
|
|
2446
|
+
}
|
|
2447
|
+
}
|
|
2448
|
+
|
|
2449
|
+
return { AryDelete:aryDelete, AryNew:aryNew, AryEqual:aryEqual };
|
|
2450
|
+
}
|
|
2451
|
+
*///清空所有的画线工具 option={ Draw:false/true }
|
|
2400
2452
|
this.ClearChartDrawPicture=function(drawPicture,option){var bDraw=true;if(!drawPicture){this.ChartDrawPicture=[];if(this.ChartDrawStorage)this.ChartDrawStorage.Clear();this.SelectChartDrawPicture=null;if(option&&option.Draw==false)bDraw=false;if(bDraw)this.Draw();if(this.DialogModifyDraw)this.DialogModifyDraw.OnClearChartDrawPicture(null);}else{for(var i=0;i<this.ChartDrawPicture.length;++i){var item=this.ChartDrawPicture[i];if(item.Guid==drawPicture.Guid||item==drawPicture){if(this.ChartDrawStorage)this.ChartDrawStorage.DeleteDrawData(drawPicture);this.ChartDrawPicture.splice(i,1);if(this.SelectChartDrawPicture)//去掉选中
|
|
2401
2453
|
{if(this.SelectChartDrawPicture.Guid==drawPicture.Guid||this.SelectChartDrawPicture==drawPicture)this.SelectChartDrawPicture=null;}if(option&&option.Draw==false)bDraw=false;if(bDraw)this.Draw();if(this.DialogModifyDraw)this.DialogModifyDraw.OnClearChartDrawPicture(drawPicture);break;}}}};//获取画图工具当前选中图形的Guid
|
|
2402
2454
|
this.GetActiveDrawPicture=function(){var result={Move:{Guid:null},Select:{Guid:null},MoveOn:{Guid:null}};if(this.CurrentChartDrawPicture)result.Move={Guid:this.CurrentChartDrawPicture.Guid};if(this.SelectChartDrawPicture)result.Select={Guid:this.SelectChartDrawPicture.Guid,Chart:this.SelectChartDrawPicture};if(this.MoveOnChartDrawPicture)result.MoveOn={Guid:this.MoveOnChartDrawPicture.Guid};return result;};this.SetChartDrawOption=function(option){if(IFrameSplitOperator.IsBool(option.IsLockScreen))this.ChartDrawOption.IsLockScreen=option.IsLockScreen;if(IFrameSplitOperator.IsNumber(option.Zoom)&&option.Zoom>=0)this.ChartDrawOption.Zoom=option.Zoom;if(option.Magnet){var item=option.Magnet;if(!this.ChartDrawOption.Magnet)this.ChartDrawOption.Magnet={Type:0,Distance:20*GetDevicePixelRatio(),Enable:false};if(IFrameSplitOperator.IsBool(item.Enable))this.ChartDrawOption.Magnet.Enable=item.Enable;if(IFrameSplitOperator.IsNumber(item.Type))this.ChartDrawOption.Magnet.Type=item.Type;if(IFrameSplitOperator.IsNumber(item.Distance))this.ChartDrawOption.Magnet.Distance=item.Distance;}};//是否显示十字光标的十字线
|
|
@@ -2862,8 +2914,8 @@ if(i==0){var yLine=border.LeftEx-exLine.Width;this.DrawLine(yLine,yLine+exLine.W
|
|
|
2862
2914
|
}}this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(textLeft,bgTop,itemText.Width,textHeight);this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(itemText.Text,textLeft+1*pixelTatio,yText);if(i==0){if(position==2)this.DrawLine(border.LeftEx,right,yText,item.LineColor,item.LineType,item);else this.DrawLine(textLeft+itemText.Width,right,yText,item.LineColor,item.LineType,item);}if(item.ClickData)this.AddHorizontalLabel(textLeft,bgTop,itemText.Width,textHeight,item,i);yText+=textHeight+1*pixelTatio;}}}}else{if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.textAlign="right";this.Canvas.textBaseline="middle";var textInfo=this.GetCustomItemTextInfo(item,true,pixelTatio);var textWidth=textInfo.MaxWidth;var fontHeight=this.GetFontHeight();textHeight=fontHeight>defaultTextHeight?fontHeight:defaultTextHeight;var yText=y;for(var i=0;i<textInfo.Text.length;++i){var itemText=textInfo.Text[i];if(this.IsHScreen){if(i==0)var bgTop=top-itemText.Width;else var bgTop=top-textWidth;var textLeft=yText-textHeight/2-1*pixelTatio;this.Canvas.fillStyle=item.LineColor;this.Canvas.fillRect(textLeft,bgTop,textHeight,itemText.Width);this.DrawHScreenText({X:yText,Y:bgTop},{Text:itemText.Text,Color:item.TextColor,XOffset:1*pixelTatio,YOffset:2*pixelTatio});if(i==0)this.DrawLine(bgTop+itemText.Width,bottom,yText,item.LineColor,item.LineType,item);yText-=textHeight+1*pixelTatio;}else{var bgTop=yText-textHeight/2-1*pixelTatio;if(i==0){var rectLeft=left-itemText.Width;var textLeft=left;}else{var rectLeft=left-textWidth;var textLeft=left-(textWidth-itemText.Width);}if(item.ExtendLine&&item.ExtendLine[0])//右侧延长线
|
|
2863
2915
|
{var exLine=item.ExtendLine[0];if(IFrameSplitOperator.IsNumber(exLine.Width)){var lineType=item.LineType;if(IFrameSplitOperator.IsNumber(exLine.Type))lineType=exLine.Type;//外部设置延长线样式
|
|
2864
2916
|
var exLineColor=item.LineColor;if(exLine.LineColor)exLineColor=exLine.LineColor;//设置线段颜色
|
|
2865
|
-
if(i==0)this.DrawLine(left,left-exLine.Width,y,exLineColor,lineType,item);textLeft-=exLine.Width;rectLeft-=exLine.Width;}}if(emptyBGColor){this.Canvas.fillStyle=emptyBGColor;this.Canvas.fillRect(rectLeft-1,bgTop,itemText.Width+1,textHeight);this.Canvas.strokeStyle=item.LineColor;this.Canvas.strokeRect(ToFixedPoint(rectLeft-1),ToFixedPoint(bgTop),ToFixedPoint(itemText.Width+1),ToFixedPoint(textHeight));this.Canvas.fillStyle=item.LineColor;this.Canvas.fillText(itemText.Text,textLeft-1*pixelTatio,yText);}else{if(!(itemText.EnableBGColor===false)){var textBGColor=item.LineColor;if(itemText.BGColor)textBGColor=itemText.BGColor;this.Canvas.fillStyle=textBGColor;this.Canvas.fillRect(rectLeft,bgTop,itemText.Width,textHeight);}this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(itemText.Text,textLeft-1*pixelTatio,yText);}if(i==0)this.DrawLine(left,right,yText,item.LineColor,item.LineType,item);if(item.ClickData)//点击事件
|
|
2866
|
-
this.AddHorizontalLabel(textLeft,bgTop,itemText.Width,textHeight,item,i);yText+=textHeight+1*pixelTatio;}}}}
|
|
2917
|
+
if(i==0)this.DrawLine(left,left-exLine.Width,y,exLineColor,lineType,item);textLeft-=exLine.Width;rectLeft-=exLine.Width;}}if(emptyBGColor){this.Canvas.fillStyle=emptyBGColor;this.Canvas.fillRect(rectLeft-1,bgTop,itemText.Width+1,textHeight);this.Canvas.strokeStyle=item.LineColor;this.Canvas.strokeRect(ToFixedPoint(rectLeft-1),ToFixedPoint(bgTop),ToFixedPoint(itemText.Width+1),ToFixedPoint(textHeight));this.Canvas.fillStyle=item.LineColor;this.Canvas.fillText(itemText.Text,textLeft-1*pixelTatio,yText);}else{if(!(itemText.EnableBGColor===false)){var textBGColor=item.LineColor;if(itemText.BGColor)textBGColor=itemText.BGColor;this.Canvas.fillStyle=textBGColor;this.Canvas.fillRect(rectLeft,bgTop,itemText.Width,textHeight);}if(itemText.TextColor)this.Canvas.fillStyle=itemText.TextColor;else this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(itemText.Text,textLeft-1*pixelTatio,yText);}if(i==0)this.DrawLine(left,right,yText,item.LineColor,item.LineType,item);if(item.ClickData)//点击事件
|
|
2918
|
+
this.AddHorizontalLabel(textLeft,bgTop,itemText.Width,textHeight,item,i);yText+=textHeight+1*pixelTatio;}}}}if(item.Message[1])// 右
|
|
2867
2919
|
{if(borderRight<10||position==1){if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";var textInfo=this.GetCustomItemTextInfo(item,false,pixelTatio);var textWidth=textInfo.MaxWidth;var fontHeight=this.GetFontHeight();textHeight=fontHeight>defaultTextHeight?fontHeight:defaultTextHeight;var bgColor=item.LineColor;var rgb=this.RGBToStruct(item.LineColor);if(rgb)bgColor='rgba('+rgb.R+', '+rgb.G+', '+rgb.B+', '+g_JSChartResource.FrameLatestPrice.BGAlpha+')';//内部刻度 背景增加透明度
|
|
2868
2920
|
var yText=y;for(var i=0;i<textInfo.Text.length;++i){var itemText=textInfo.Text[i];if(this.IsHScreen){var bgTop=bottom-itemText.Width;var textLeft=yText-textHeight/2-1*pixelTatio;this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(textLeft,bgTop,textHeight,itemText.Width);this.DrawHScreenText({X:yText,Y:bgTop},{Text:itemText.Text,Color:item.TextColor,XOffset:1*pixelTatio,YOffset:2*pixelTatio});if(i==0)this.DrawLine(top,bgTop,yText,item.LineColor,item.LineType,item);yText-=textHeight+1*pixelTatio;}else{if(itemText.Type===1){if(this.GetEventCallback){var bgTop=yText-textHeight/2-1*pixelTatio;var sendData={Top:bgTop,Right:right,Height:null,IsShow:true,BGColor:item.LineColor,TextColor:item.TextColor,PixelTatio:pixelTatio,Position:"Right",IsInside:true};if(this.SendDrawCountDownEvent(sendData)){if(IFrameSplitOperator.IsPlusNumber(sendData.Height))yText+=textHeight+1*pixelTatio;}}}else{var bgTop=yText-textHeight/2-1*pixelTatio;var textLeft=right-itemText.Width;this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(textLeft,bgTop,itemText.Width,textHeight);//文本背景区域
|
|
2869
2921
|
if(itemText.TextColor)this.Canvas.fillStyle=itemText.TextColor;else this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(itemText.Text,textLeft+1*pixelTatio,yText);if(i==0)this.DrawLine(left,textLeft,yText,item.LineColor,item.LineType,item);yText+=textHeight+1*pixelTatio;}}}if(item.Type==3||item.Type==4){if(item.Title){var width=this.Canvas.measureText(item.Title).width+2*pixelTatio;if(this.IsHScreen){var bgTop=bottom-itemText.Width-width;var textLeft=y-textHeight/2-1*pixelTatio;this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(textLeft,bgTop,textHeight,width);this.DrawHScreenText({X:y,Y:bgTop},{Text:item.Title,Color:item.TextColor,XOffset:1*pixelTatio,YOffset:2*pixelTatio});}else{var bgTop=y-textHeight/2-1*pixelTatio;var textLeft=right-textWidth-width-1*pixelTatio;this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(textLeft,bgTop,width,textHeight);this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(item.Title,textLeft+1*pixelTatio,y);}}}}else{if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.textAlign="left";this.Canvas.textBaseline="middle";var textInfo=this.GetCustomItemTextInfo(item,false,pixelTatio);var textWidth=textInfo.MaxWidth;var fontHeight=this.GetFontHeight();textHeight=fontHeight>defaultTextHeight?fontHeight:defaultTextHeight;var preTextRect=null;if(mapTextRect&&mapTextRect.has(3))preTextRect=mapTextRect.get(3);var yText=y;var rtText={};for(var i=0;i<textInfo.Text.length;++i){var itemText=textInfo.Text[i];if(this.IsHScreen){var bgTop=bottom;//bgTop+=(textWidth-itemText.Width);
|
|
@@ -6474,7 +6526,7 @@ this.IsShowMainIndexTitle=true;//是否显示主图指标标题
|
|
|
6474
6526
|
this.MainTitlePaint=null;//主标题
|
|
6475
6527
|
//option={ DynamicTitle:true/false }
|
|
6476
6528
|
this.Clear=function(option){this.Data=[];this.Title=null;if(option){if(option.DynamicTitle===true)this.DynamicTitle={OutName:null,OutValue:null};//主图胴动态标题
|
|
6477
|
-
}};//十字线是否显示
|
|
6529
|
+
if(option.ArgumentsText===true)this.ArgumentsText=null;}};//十字线是否显示
|
|
6478
6530
|
this.IsShowCorssLine=function(){if(!this.HQChart||!this.HQChart.ChartCorssCursor)return false;return this.HQChart.ChartCorssCursor.IsShowCorss;};this.ReloadResource=function(){this.Font=g_JSChartResource.TitleFont;this.TitleColor=g_JSChartResource.DefaultTextColor;this.SelectedColor=g_JSChartResource.IndexTitleSelectedColor;this.OverlayIndexType.BGColor=g_JSChartResource.OverlayIndexTitleBGColor;this.BGColor=g_JSChartResource.IndexTitleBGColor;this.BGBorderColor=g_JSChartResource.IndexTitleBorderColor;this.BGBorderMoveOnColor=g_JSChartResource.IndexTitleBorderMoveOnColor;this.UpColor=g_JSChartResource.UpTextColor;this.DownColor=g_JSChartResource.DownTextColor;this.UnchangeColor=g_JSChartResource.UnchagneTextColor;this.VolColor=g_JSChartResource.Title.VolColor;this.AmountColor=g_JSChartResource.Title.AmountColor;this.DateTimeColor=g_JSChartResource.Title.DateTimeColor;this.PositionColor=g_JSChartResource.Title.PositionColor;//持仓
|
|
6479
6531
|
};this.SetDynamicTitleData=function(outName,args,data){if(!data.OutName)data.OutName=new _map2.default();else data.OutName.clear();if(!data.OutValue)data.OutValue=new _map2.default();else data.OutValue.clear();var mapArgs=new _map2.default();for(var i in args){var item=args[i];mapArgs.set('{'+item.Name+'}',item);}for(var i in outName){var item=outName[i];if(item.DynamicName){var aryFond=item.DynamicName.match(/{\w*}/i);if(!aryFond||aryFond.length<=0){data.OutName.set(item.Name,item.DynamicName);}else{var dyName=item.DynamicName;var bFind=true;for(var j=0;j<aryFond.length;++j){var findItem=aryFond[j];if(mapArgs.has(findItem)){var value=mapArgs.get(findItem).Value;dyName=dyName.replace(findItem,value.toString());}else{bFind=false;break;}}if(bFind)data.OutName.set(item.Name,dyName);}}if(item.DynamicValue){data.OutValue.set(item.Name,item.DynamicValue);}}};this.SetDynamicTitle=function(outName,args,overlayID){if(IFrameSplitOperator.IsString(overlayID)){var dynamicTitle=null;if(this.OverlayDynamicTitle.has(overlayID)){dynamicTitle=this.OverlayDynamicTitle.get(overlayID);}else{dynamicTitle={OutName:null,OutValue:null};this.OverlayDynamicTitle.set(overlayID,dynamicTitle);}this.SetDynamicTitleData(outName,args,dynamicTitle);}else{this.SetDynamicTitleData(outName,args,this.DynamicTitle);}};this.GetDynamicOutName=function(key,overlayID){if(IFrameSplitOperator.IsString(overlayID)){if(!this.OverlayDynamicTitle.has(overlayID))return null;var dynamicTitle=this.OverlayDynamicTitle.get(overlayID);var outName=dynamicTitle.OutName;}else{var outName=this.DynamicTitle.OutName;}if(!outName||outName.size<=0)return null;if(!outName.has(key))return null;return outName.get(key);};this.GetDynamicOutValue=function(key,value){var outValue=this.DynamicTitle.OutValue;if(!outValue||outValue.size<=0)return null;if(!outValue.has(key))return null;var strFormat=outValue.get(key);strFormat=strFormat.replace('{Value}',value);return strFormat;};this.IsClickTitle=function(x,y)//是否点击了指标标题
|
|
6480
6532
|
{if(!this.TitleRect)return false;if(x>this.TitleRect.Left&&x<this.TitleRect.Left+this.TitleRect.Width&&y>this.TitleRect.Top&&y<this.TitleRect.Top+this.TitleRect.Height){return true;}return false;};this.FormatValue=function(value,item){if(item.StringFormat==STRING_FORMAT_TYPE.DEFAULT)return IFrameSplitOperator.FormatValueStringV2(value,item.FloatPrecision,2,this.LanguageID);else if(item.StringFormat==STRING_FORMAT_TYPE.THOUSANDS)return IFrameSplitOperator.FormatValueThousandsString(value,item.FloatPrecision);else if(item.StringFormat==STRING_FORMAT_TYPE.ORIGINAL)return value.toFixed(item.FloatPrecision).toString();else if(item.StringFormat==STRING_FORMAT_TYPE.INTEGER)return IFrameSplitOperator.FromatIntegerString(value,item.FloatPrecision,this.LanguageID);};this.FormatMultiReport=function(data,format){if(!IFrameSplitOperator.IsNonEmptyArray(data))return null;var text="";for(var i=0;i<data.length;++i){var item=data[i];var quarter=item.Quarter;var year=item.Year;var _value2=item.Value;if(text.length>0)text+=',';text+=year.toString();switch(quarter){case 1:text+='一季报 ';break;case 2:text+='半年报 ';break;case 3:text+='三季报 ';break;case 4:text+='年报 ';break;}text+=this.FormatValue(_value2,format);}return text;};this.FormatMultiDataLine=function(value,dataInfo){if(!value)return null;var text="";if(Array.isArray(value)){for(var i=0;i<value.length;++i){var item=value[i];if(item.Type==0)continue;if(!IFrameSplitOperator.IsNumber(item.Value))continue;var strValue=this.FormatValue(item.Value,dataInfo);if(text.length>0)text+=',';text+=strValue;}}else{if(value.Type!=0&&IFrameSplitOperator.IsNumber(value.Value)){text=this.FormatValue(value.Value,dataInfo);}}if(text.length<=0)return null;return text;};//多变量输出
|
|
@@ -6582,7 +6634,7 @@ this.CacheData;//数据缓存
|
|
|
6582
6634
|
//接口函数
|
|
6583
6635
|
this.SetLastPoint=null;//this.SetLastPoint=function(obj) obj={X:,Y:}
|
|
6584
6636
|
this.Update=null;//更新数据回调
|
|
6585
|
-
this.GetActiveDrawPicture=null;this.GetYCoordinatePoint=null;this.Draw=function(){};this.SetOption=function(option){if(!option)return;if(option.LineColor)this.LineColor=option.LineColor;if(option.LineWidth>0)this.LineWidth=option.LineWidth;if(option.AreaColor)this.AreaColor=option.AreaColor;if(option.PointColor)this.PointColor=option.PointColor;if(option.MoveOnPointColor)this.MoveOnPointColor=option.MoveOnPointColor;if(option.PointRadius)this.PointRadius=option.PointRadius;if(IFrameSplitOperator.IsNumber(option.SquareSize))this.SquareSize=option.SquareSize;if(IFrameSplitOperator.IsBool(option.IsShowPoint))this.IsShowPoint=option.IsShowPoint;if(IFrameSplitOperator.IsNumber(option.LimitFrameID))this.LimitFrameID=option.LimitFrameID;if(IFrameSplitOperator.IsBool(option.EnableCtrlMove))this.EnableCtrlMove=option.EnableCtrlMove;if(IFrameSplitOperator.IsBool(option.IsShowYCoordinate))this.IsShowYCoordinate=option.IsShowYCoordinate;if(IFrameSplitOperator.IsBool(option.EnableSave))this.EnableSave=option.EnableSave;if(IFrameSplitOperator.IsBool(option.EnableMove))this.EnableMove=option.EnableMove;};this.ReloadResource=function(resource){if(!resource){this.PointColor=g_JSChartResource.DrawPicture.PointColor[0];this.MoveOnPointColor=g_JSChartResource.DrawPicture.PointColor[1];this.PointBGColor=g_JSChartResource.DrawPicture.PointColor[2];}};this.SetLineWidth=function(){this.BackupLineWidth=null;if(this.LineWidth>0){this.BackupLineWidth=this.Canvas.lineWidth;this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();}};this.GetFontHeight=function(font){return GetFontHeight(this.Canvas,font,"擎");};this.RestoreLineWidth=function(){if(this.BackupLineWidth!=null){this.Canvas.lineWidth=this.BackupLineWidth;}};//磁吸K线
|
|
6637
|
+
this.GetActiveDrawPicture=null;this.GetYCoordinatePoint=null;this.Draw=function(){};this.SetOption=function(option){if(!option)return;if(option.LineColor)this.LineColor=option.LineColor;if(option.LineWidth>0)this.LineWidth=option.LineWidth;if(option.AreaColor)this.AreaColor=option.AreaColor;if(option.PointColor)this.PointColor=option.PointColor;if(option.MoveOnPointColor)this.MoveOnPointColor=option.MoveOnPointColor;if(option.PointRadius)this.PointRadius=option.PointRadius;if(IFrameSplitOperator.IsNumber(option.SquareSize))this.SquareSize=option.SquareSize;if(IFrameSplitOperator.IsBool(option.IsShowPoint))this.IsShowPoint=option.IsShowPoint;if(IFrameSplitOperator.IsNumber(option.LimitFrameID))this.LimitFrameID=option.LimitFrameID;if(IFrameSplitOperator.IsBool(option.EnableCtrlMove))this.EnableCtrlMove=option.EnableCtrlMove;if(IFrameSplitOperator.IsBool(option.IsShowYCoordinate))this.IsShowYCoordinate=option.IsShowYCoordinate;if(IFrameSplitOperator.IsBool(option.EnableSave))this.EnableSave=option.EnableSave;if(IFrameSplitOperator.IsBool(option.EnableMove))this.EnableMove=option.EnableMove;if(option.CacheData)this.CacheData=option.CacheData;};this.ReloadResource=function(resource){if(!resource){this.PointColor=g_JSChartResource.DrawPicture.PointColor[0];this.MoveOnPointColor=g_JSChartResource.DrawPicture.PointColor[1];this.PointBGColor=g_JSChartResource.DrawPicture.PointColor[2];}};this.SetLineWidth=function(){this.BackupLineWidth=null;if(this.LineWidth>0){this.BackupLineWidth=this.Canvas.lineWidth;this.Canvas.lineWidth=this.LineWidth*GetDevicePixelRatio();}};this.GetFontHeight=function(font){return GetFontHeight(this.Canvas,font,"擎");};this.RestoreLineWidth=function(){if(this.BackupLineWidth!=null){this.Canvas.lineWidth=this.BackupLineWidth;}};//磁吸K线
|
|
6586
6638
|
this.PointMagnetKLine=function(){if(!this.IsSupportMagnet)return false;if(!this.Frame)return false;if(this.Frame.ClassName=="MinuteFrame"||this.Frame.Class=="MinuteHScreenFrame")return false;if(this.Frame.Identify!=0)return false;var pointIndex=-1;if(this.Status==2)pointIndex=1;else if(this.Status==1)pointIndex=0;else if(IFrameSplitOperator.IsNumber(this.MovePointIndex))pointIndex=this.MovePointIndex;if(pointIndex<0)return false;if(this.Option&&this.Option.Magnet&&this.Option.Magnet.Enable){var option={IsFixedX:false,Magnet:{Enable:true,PointIndex:pointIndex,Distance:this.Option.Magnet.Distance,Type:this.Option.Magnet.Type}};return this.AdjustPoint(this.Point,option);}return false;};//Point => Value
|
|
6587
6639
|
this.PointToValue=function(){if(!this.Frame)return false;if(this.Frame.ClassName=="MinuteFrame"||this.Frame.Class=="MinuteHScreenFrame"){return this.PointToValue_Minute();}else{return this.PointToValue_KLine();}};this.PointToKLine=function(aryPoint){if(!this.Frame)return null;var data=this.Frame.Data;if(!data)return null;var kLine=[];var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i in aryPoint){var item=aryPoint[i];var xValue=parseInt(this.Frame.GetXData(item.Y))+data.DataOffset;var yValue=this.Frame.GetYData(item.X);var valueItem={XValue:xValue,YValue:yValue};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;kLine[i]=valueItem;}}else{for(var i in aryPoint){var item=aryPoint[i];var index=parseInt(this.Frame.GetXData(item.X,false));var xValue=index+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length){xValue=data.Data.length-1;index=xValue-data.DataOffset;}var yValue=this.Frame.GetYData(item.Y,false);var valueItem={XValue:xValue,YValue:yValue,XIndex:index};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;kLine[i]=valueItem;}}return kLine;};this.PointToValue_KLine=function(){if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.Y,false))+data.DataOffset;var yValue=this.Frame.GetYData(item.X,false);var valueItem={XValue:xValue,YValue:yValue};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;this.Value[i]=valueItem;}}else{for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.X,false))+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length)xValue=data.Data.length-1;var yValue=this.Frame.GetYData(item.Y,false);var valueItem={XValue:xValue,YValue:yValue};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;this.Value[i]=valueItem;}}return true;};this.PointToValue_Minute=function(){if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.Y,false));var yValue=this.Frame.GetYData(item.X,false);var valueItem={XValue:xValue,YValue:yValue};var minuteItem=data.Data[xValue];valueItem.DateTime={Date:minuteItem.Date,Time:minuteItem.Time};this.Value[i]=valueItem;}}else{var xDatetime=g_MinuteTimeStringData.GetTimeData(this.Symbol);for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.X,false));var yValue=this.Frame.GetYData(item.Y,false);if(xValue>=data.Data.length)//超过当前数据,直接读固定时间
|
|
6588
6640
|
{var index=xValue%xDatetime.length;var dataIndex=data.Data.length-1;var valueItem={XValue:xValue,YValue:yValue};var minuteItem=data.Data[dataIndex];var timeItem=xDatetime[index];valueItem.DateTime={Date:minuteItem.Date,Time:timeItem};this.Value[i]=valueItem;}else{var valueItem={XValue:xValue,YValue:yValue};var minuteItem=data.Data[xValue];valueItem.DateTime={Date:minuteItem.Date,Time:minuteItem.Time};this.Value[i]=valueItem;}}}return true;};this.IsPointIn=function(x,y,option){return false;};//Value => Point
|
|
@@ -8360,7 +8412,7 @@ for(var i=0;i<this.ChartPaint.length;++i){var item=this.ChartPaint[i];var bFind=
|
|
|
8360
8412
|
subFrame.YSplitScale=null;//清空固定刻度
|
|
8361
8413
|
subFrame.YSplitOperator.SplitType=subFrame.YSplitOperator.DefaultSplitType;//还原Y坐标分割模式
|
|
8362
8414
|
this.ChartPaint=paint;//清空东条标题
|
|
8363
|
-
var titleIndex=windowIndex+1;var chartTitle=this.TitlePaint[titleIndex];if(chartTitle)chartTitle.Clear({DynamicTitle:true});};//显示隐藏主图K线
|
|
8415
|
+
var titleIndex=windowIndex+1;var chartTitle=this.TitlePaint[titleIndex];if(chartTitle)chartTitle.Clear({DynamicTitle:true,ArgumentsText:true});};//显示隐藏主图K线
|
|
8364
8416
|
this.ShowKLine=function(isShow){if(this.ChartPaint.length<=0||!this.ChartPaint[0])return;this.ChartPaint[0].IsShow=isShow;};this.SetInstructionData=function(type,instructionData){if(this.ChartPaint.length<=0||!this.ChartPaint[0])return;var title=this.TitlePaint[1];if(type==2)//五彩K线
|
|
8365
8417
|
{this.ChartPaint[0].ColorData=instructionData.Data;if(title)title.ColorIndex={Name:instructionData.Name,Param:instructionData.Param};}else if(type==1)//专家指示
|
|
8366
8418
|
{this.ChartPaint[0].TradeData={Sell:instructionData.Sell,Buy:instructionData.Buy,Name:instructionData.Name,Param:instructionData.Param};if(title)title.TradeIndex={Name:instructionData.Name,Param:instructionData.Param};}};this.ChangeInstructionIndex=function(indexName,option){var scriptData=new JSIndexScript();var indexInfo=scriptData.Get(indexName);if(!indexInfo)return;if(indexInfo.InstructionType!=1&&indexInfo.InstructionType!=2)return;if(option){if(option.Args)indexInfo.Args=option.Args;}indexInfo.ID=indexName;this.ChangeInstructionScriptIndex(indexInfo);};this.ChangeInstructionScriptIndex=function(indexData){if(indexData.InstructionType==1)//交易系统
|
|
@@ -9477,8 +9529,7 @@ this.Draw();};this.CreateChartDrawPicture=function(name,option,callback){var dra
|
|
|
9477
9529
|
if(option)drawPicture.SetOption(option);var self=this;drawPicture.Update=function()//更新回调函数
|
|
9478
9530
|
{self.DrawDynamicInfo();};drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.CurrentChartDrawPicture=drawPicture;JSConsole.Chart.Log("[MinuteChartContainer::CreateChartDrawPicture] ",name,this.CurrentChartDrawPicture);return true;};//手动添加画线
|
|
9479
9531
|
this.AddChartDrawPicture=function(obj){if(!obj)return null;if(obj.FrameID<0||obj.FrameID>=this.Frame.SubFrame.length)return null;var self=this;var item=IChartDrawPicture.GetDrawPictureByClassName(obj.ClassName);if(!item)return null;var drawPicture=item.Create();drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[obj.FrameID].Frame;//绑定框架坐标
|
|
9480
|
-
drawPicture.Symbol=this.Symbol;drawPicture.Period=888888888;drawPicture.HQChart=this;if(obj.Value)drawPicture.Value=obj.Value;if(obj.Guid)drawPicture.Guid=obj.Guid;if(obj.
|
|
9481
|
-
if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(obj);drawPicture.SetOption(obj);if(obj.EnableUpdateXValue)drawPicture.UpdateXValue();drawPicture.ValueToPoint();drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.ChartDrawPicture.push(drawPicture);if(obj.Draw==true)this.DrawDynamicInfo();return drawPicture;};this.ReloadChartDrawPicture=function(){this.ChartDrawPicture=[];if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.IsSelected=false;this.SelectChartDrawPicture=null;this.CurrentChartDrawPicture=null;this.MoveOnChartDrawPicture=null;if(this.ChartDrawStorage){this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData({Symbol:this.Symbol,Period:888888888});}};this.CreateChartDrawPictureByStorage=function()//把缓存(this.ChartDrawStorageCache) 画图工具创建出来
|
|
9532
|
+
drawPicture.Symbol=this.Symbol;drawPicture.Period=888888888;drawPicture.HQChart=this;if(obj.Value)drawPicture.Value=obj.Value;if(obj.Guid)drawPicture.Guid=obj.Guid;if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(obj);drawPicture.SetOption(obj);if(obj.EnableUpdateXValue)drawPicture.UpdateXValue();drawPicture.ValueToPoint();drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.ChartDrawPicture.push(drawPicture);if(obj.Draw==true)this.DrawDynamicInfo();return drawPicture;};this.ReloadChartDrawPicture=function(){this.ChartDrawPicture=[];if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.IsSelected=false;this.SelectChartDrawPicture=null;this.CurrentChartDrawPicture=null;this.MoveOnChartDrawPicture=null;if(this.ChartDrawStorage){this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData({Symbol:this.Symbol,Period:888888888});}};this.CreateChartDrawPictureByStorage=function()//把缓存(this.ChartDrawStorageCache) 画图工具创建出来
|
|
9482
9533
|
{var _this43=this;if(!this.ChartDrawStorageCache||this.ChartDrawStorageCache.length<=0)return;var kData=this.GetKData();for(var i=0;i<this.ChartDrawStorageCache.length;++i){var item=this.ChartDrawStorageCache[i];if(item.FrameID<0||!this.Frame.SubFrame||this.Frame.SubFrame.length<item.FrameID)continue;var drawPicture=IChartDrawPicture.CreateChartDrawPicture(item);if(!drawPicture)continue;drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.HQChart=this;drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame;//绑定框架坐标
|
|
9483
9534
|
if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(item);drawPicture.ResetXValue();drawPicture.UpdateXValue();drawPicture.ValueToPoint();drawPicture.GetActiveDrawPicture=function(){return _this43.GetActiveDrawPicture();};this.ChartDrawPicture.push(drawPicture);}this.ChartDrawStorageCache=null;//清空缓存
|
|
9484
9535
|
};this.SetSizeChange=function(bChanged){this.Frame.SetSizeChage(bChanged);for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];item.SizeChange=bChanged;}};this.SetSizeChage=this.SetSizeChange;//根据X坐标获取数据索引
|
|
@@ -10664,17 +10715,21 @@ cp===0x3010||cp===0x3011||cp===0x25B2||cp===0x25BC||cp>=0x80&&Regex.NonAsciiIden
|
|
|
10664
10715
|
cp===0x3010||cp===0x3011||cp===0x25B2||cp===0x25BC||cp>=0x80&&Regex.NonAsciiIdentifierPart.test(Character.FromCodePoint(cp));},// https://tc39.github.io/ecma262/#sec-literals-numeric-literals
|
|
10665
10716
|
IsDecimalDigit:function IsDecimalDigit(cp){return cp>=0x30&&cp<=0x39;// 0..9
|
|
10666
10717
|
},IsHexDigit:function IsHexDigit(cp){return cp>=0x30&&cp<=0x39||cp>=0x41&&cp<=0x46||cp>=0x61&&cp<=0x66;// a..f
|
|
10667
|
-
},
|
|
10668
|
-
}};var TOKEN_NAME={};TOKEN_NAME[1/* BooleanLiteral */]='Boolean';TOKEN_NAME[2/* EOF */]='<end>';TOKEN_NAME[3/* Identifier */]='Identifier';TOKEN_NAME[4/* Keyword */]='Keyword';TOKEN_NAME[5/* NullLiteral */]='Null';TOKEN_NAME[6/* NumericLiteral */]='Numeric';TOKEN_NAME[7/* Punctuator */]='Punctuator';TOKEN_NAME[8/* StringLiteral */]='String';TOKEN_NAME[9/* RegularExpression */]='RegularExpression';TOKEN_NAME[10/* Template */]='Template';//公共方法
|
|
10718
|
+
},IsOctalDigit:function IsOctalDigit(cp){return cp>=0x30&&cp<=0x37;// 0..7
|
|
10719
|
+
}};function HexValue(ch){return'0123456789abcdef'.indexOf(ch.toLowerCase());}function OctalValue(ch){return'01234567'.indexOf(ch);}var TOKEN_NAME={};TOKEN_NAME[1/* BooleanLiteral */]='Boolean';TOKEN_NAME[2/* EOF */]='<end>';TOKEN_NAME[3/* Identifier */]='Identifier';TOKEN_NAME[4/* Keyword */]='Keyword';TOKEN_NAME[5/* NullLiteral */]='Null';TOKEN_NAME[6/* NumericLiteral */]='Numeric';TOKEN_NAME[7/* Punctuator */]='Punctuator';TOKEN_NAME[8/* StringLiteral */]='String';TOKEN_NAME[9/* RegularExpression */]='RegularExpression';TOKEN_NAME[10/* Template */]='Template';//公共方法
|
|
10669
10720
|
function JSComplierHelper(){}JSComplierHelper.GetPeriodInfo=function(obj){var PERIOD_LIST=[{Name:'MIN1',Period:4,Order:1},{Name:'MIN5',Period:5,Order:2},{Name:'MIN15',Period:6,Order:3},{Name:'MIN30',Period:7,Order:4},{Name:'MIN60',Period:8,Order:5},{Name:'DAY',Period:0,Order:1000},{Name:'MULTIDAY',Period:40002,Order:1002},{Name:'DAY2',Period:40002,Order:1002},{Name:'DAY3',Period:40003,Order:1003},{Name:'DAY4',Period:40004,Order:1004},{Name:'DAY5',Period:40005,Order:1005},{Name:'WEEK',Period:1,Order:1005},{Name:'DAY6',Period:40006,Order:1006},{Name:'DAY7',Period:40007,Order:1007},{Name:'DAY8',Period:40008,Order:1008},{Name:'DAY9',Period:40009,Order:1009},{Name:'DAY10',Period:40009,Order:1010},{Name:"WEEK2",Period:21,Order:1010},{Name:'DAY11',Period:40011,Order:1011},{Name:'DAY12',Period:40012,Order:1012},{Name:'DAY13',Period:40013,Order:1013},{Name:'DAY14',Period:40014,Order:1014},{Name:'MONTH',Period:2,Order:1030},{Name:"SEASON",Period:9,Order:1090},{Name:"HALFYEAR",Period:22,Order:1180},{Name:"YEAR",Period:3,Order:1365}];if(obj.Name){for(var i in PERIOD_LIST){if(obj.Name&&PERIOD_LIST[i].Name==obj.Name)return PERIOD_LIST[i];}return null;}if(IFrameSplitOperator.IsNumber(obj.PeriodID)){for(var i in PERIOD_LIST){if(PERIOD_LIST[i].Period==obj.PeriodID)return PERIOD_LIST[i];}return null;}return null;};JSComplierHelper.GetConvertValueName=function(funcName){var valueName;if(funcName=='COVER_C')valueName='CLOSE';else if(funcName=='COVER_O')valueName="OPEN";else if(funcName=='COVER_H')valueName="HIGH";else if(funcName=='COVER_L')valueName="LOW";else if(funcName=='COVER_A')valueName="AMOUNT";else if(funcName=='COVER_V')valueName="VOL";return valueName;};//编译异常, 错误类
|
|
10670
|
-
function ErrorHandler(){this.Error=[];this.RecordError=function(error){this.Error.push(error);};this.ConstructError=function(msg,column){var error=new Error(msg);//通过自己抛异常并自己截获 来获取调用堆栈信息
|
|
10671
|
-
try{throw error;}catch(base){if(_create2.default&&_defineProperties2.default){error=(0,_create2.default)(base);error.Column=column;}}return error;};this.CreateError=function(index,line,col,description
|
|
10672
|
-
return error;};this.ThrowError=function(index,line,col,description,word){var error=this.CreateError(index,line,col,description,word);throw error;};//重新下载数据
|
|
10721
|
+
function ErrorHandler(){this.Error=[];this.IsTolerant=false;this.RecordError=function(error){this.Error.push(error);};this.ConstructError=function(msg,column){var error=new Error(msg);//通过自己抛异常并自己截获 来获取调用堆栈信息
|
|
10722
|
+
try{throw error;}catch(base){if(_create2.default&&_defineProperties2.default){error=(0,_create2.default)(base);error.Column=column;}}return error;};this.CreateError=function(index,line,col,description){var word=arguments.length>4&&arguments[4]!==undefined?arguments[4]:null;var msg='Line '+line+': '+description;var error=this.ConstructError(msg,col);error.Index=index;error.LineNumber=line;error.Description=description;error.Word=word;//错误单词
|
|
10723
|
+
return error;};this.ThrowError=function(index,line,col,description,word){var error=this.CreateError(index,line,col,description,word);throw error;};this.TolerateError=function(index,line,col,description){var error=this.CreateError(index,line,col,description);if(this.IsTolerant)this.RecordError(error);else throw error;};//重新下载数据
|
|
10673
10724
|
this.ThrowDownloadJob=function(index,line,col,description,job){var error=this.CreateError(index,line,col,description);error.Job=job;throw error;};}//扫描类
|
|
10674
10725
|
function Scanner(code,ErrorHandler){this.Source=code;this.ErrorHandler=ErrorHandler;this.Length=code.length;this.Index=0;this.LineNumber=code.length>0?1:0;this.LineStart=0;this.CurlyStack=[];this.SaveState=function()//保存当前扫描状态
|
|
10675
10726
|
{return{Index:this.Index,LineNumber:this.LineNumber,LineStart:this.LineStart};};this.RestoreState=function(state)//还原扫描状态
|
|
10676
10727
|
{this.Index=state.Index;this.LineNumber=state.LineNumber;this.LineStart=state.LineStart;};this.IsEOF=function()//否是已经结束
|
|
10677
|
-
{return this.Index>=this.Length;};this.IsKeyword=function(id){return false;};this.CodePointAt=function(i){var cp=this.Source.charCodeAt(i);if(cp>=0xD800&&cp<=0xDBFF){var second=this.Source.charCodeAt(i+1);if(second>=0xDC00&&second<=0xDFFF){var first=cp;cp=(first-0xD800)*0x400+second-0xDC00+0x10000;}}return cp;}
|
|
10728
|
+
{return this.Index>=this.Length;};this.ThrowUnexpectedToken=function(){var message=arguments.length>0&&arguments[0]!==undefined?arguments[0]:Messages.UnexpectedTokenIllegal;return this.ErrorHandler.ThrowError(this.Index,this.LineNumber,this.Index-this.LineStart+1,message);};this.TolerateUnexpectedToken=function(){var message=arguments.length>0&&arguments[0]!==undefined?arguments[0]:Messages.UnexpectedTokenIllegal;this.ErrorHandler.TolerateError(this.Index,this.LineNumber,this.Index-this.LineStart+1,message);};this.IsKeyword=function(id){return false;};this.CodePointAt=function(i){var cp=this.Source.charCodeAt(i);if(cp>=0xD800&&cp<=0xDBFF){var second=this.Source.charCodeAt(i+1);if(second>=0xDC00&&second<=0xDFFF){var first=cp;cp=(first-0xD800)*0x400+second-0xDC00+0x10000;}}return cp;};//8进制->10进制
|
|
10729
|
+
this.OctalToDecimal=function(ch){// \0 is not octal escape sequence
|
|
10730
|
+
var octal=ch!=='0';var code=OctalValue(ch);if(!this.IsEOF()&&Character.IsOctalDigit(this.Source.charCodeAt(this.Index))){octal=true;code=code*8+OctalValue(this.Source[this.Index++]);// 3 digits are only allowed when string starts
|
|
10731
|
+
// with 0, 1, 2, 3
|
|
10732
|
+
if('0123'.indexOf(ch)>=0&&!this.IsEOF()&&Character.IsOctalDigit(this.Source.charCodeAt(this.Index)))code=code*8+OctalValue(this.Source[this.Index++]);}return{Code:code,Octal:octal};};this.Lex=function(){if(this.IsEOF())return{Type:2/*EOF*/,Value:'',LineNumber:this.LineNumber,LineStart:this.LineStart,Start:this.Index,End:this.Index};var cp=this.Source.charCodeAt(this.Index);//变量名 或 关键字
|
|
10678
10733
|
if(Character.IsIdentifierStart(cp))return this.ScanIdentifier();//( ) ; 开头 操作符扫描
|
|
10679
10734
|
if(cp===0x28||cp===0x29||cp===0x3B)return this.ScanPunctuator();//' " 开头 字符串扫描
|
|
10680
10735
|
if(cp===0x27||cp===0x22)return this.ScanStringLiteral();//. 开头 浮点型
|
|
@@ -10687,7 +10742,10 @@ else if(id==null)type=5;//NullLiteral
|
|
|
10687
10742
|
else if(id=='true'||id=='false')type=1;//BooleanLiteral
|
|
10688
10743
|
else type=3;//Identifier
|
|
10689
10744
|
if(type!=3&&start+id.length!=this.Index){var restore=this.Index;this.Index=start;throw Messages.InvalidEscapedReservedWord;this.Index=restore;}if(id=='AND'||id=='OR')type=7/*Punctuator*/;return{Type:type,Value:id,LineNumber:this.LineNumber,LineStart:this.LineStart,Start:start,End:this.Index};};this.GetIdentifier=function(){var start=this.Index++;//start 保存进来的位置
|
|
10690
|
-
while(!this.IsEOF()){var ch=this.Source.charCodeAt(this.Index);if(ch==0x5C){this.Index=start;return this.GetComplexIdentifier();}else if(ch>=0xD800&&ch<0xDFFF){this.Index=start;return this.GetComplexIdentifier();}if(Character.IsIdentifierPart(ch))++this.Index;else break;}return this.Source.slice(start,this.Index);}
|
|
10745
|
+
while(!this.IsEOF()){var ch=this.Source.charCodeAt(this.Index);if(ch==0x5C){this.Index=start;return this.GetComplexIdentifier();}else if(ch>=0xD800&&ch<0xDFFF){this.Index=start;return this.GetComplexIdentifier();}if(Character.IsIdentifierPart(ch))++this.Index;else break;}return this.Source.slice(start,this.Index);};this.GetComplexIdentifier=function(){var cp=this.CodePointAt(this.Index);var id=Character.FromCodePoint(cp);this.Index+=id.length;// '\u' (U+005C, U+0075) denotes an escaped character.
|
|
10746
|
+
var ch=void 0;if(cp===0x5C){if(this.Source.charCodeAt(this.Index)!==0x75)this.ThrowUnexpectedToken();++this.Index;if(this.Source[this.Index]==='{'){++this.Index;ch=this.ScanUnicodeCodePointEscape();}else{ch=this.ScanHexEscape('u');if(ch===null||ch==='\\'||!Character.IsIdentifierStart(ch.charCodeAt(0)))this.ThrowUnexpectedToken();}id=ch;}while(!this.IsEOF()){cp=this.CodePointAt(this.Index);if(!Character.IsIdentifierPart(cp))break;ch=Character.FromCodePoint(cp);id+=ch;this.Index+=ch.length;// '\u' (U+005C, U+0075) denotes an escaped character.
|
|
10747
|
+
if(cp===0x5C){id=id.substring(0,id.length-1);if(this.Source.charCodeAt(this.Index)!==0x75)this.ThrowUnexpectedToken();++this.Index;if(this.Source[this.Index]==='{'){++this.Index;ch=this.ScanUnicodeCodePointEscape();}else{ch=this.ScanHexEscape('u');if(ch===null||ch==='\\'||!Character.IsIdentifierPart(ch.charCodeAt(0)))this.ThrowUnexpectedToken();}id+=ch;}}return id;};this.ScanUnicodeCodePointEscape=function(){var result=this.TryToScanUnicodeCodePointEscape();if(result===null)return this.ThrowUnexpectedToken();return result;};this.TryToScanUnicodeCodePointEscape=function(){var ch=this.Source[this.Index];var code=0;// At least, one hex digit is required.
|
|
10748
|
+
if(ch==='}')return null;while(!this.IsEOF()){ch=this.Source[this.Index++];if(!Character.IsHexDigit(ch.charCodeAt(0)))break;code=code*16+HexValue(ch);}if(code>0x10FFFF||ch!=='}')return null;return Character.FromCodePoint(code);};this.ScanHexEscape=function(prefix){var len=prefix==='u'?4:2;var code=0;for(var _i23=0;_i23<len;++_i23){if(!this.IsEOF()&&Character.IsHexDigit(this.Source.charCodeAt(this.Index))){code=code*16+HexValue(this.source[this.Index++]);}else{return null;}}return String.fromCharCode(code);};//操作符 https://tc39.github.io/ecma262/#sec-punctuators
|
|
10691
10749
|
this.ScanPunctuator=function(){var start=this.Index;var str=this.Source[this.Index];switch(str){case'(':++this.Index;break;case')':case';':case',':++this.Index;break;case'.':++this.Index;/*if (this.Source[this.Index] === '.' && this.Source[this.Index + 1] === '.')
|
|
10692
10750
|
{
|
|
10693
10751
|
//Spread operator: ...
|
|
@@ -10696,7 +10754,15 @@ this.ScanPunctuator=function(){var start=this.Index;var str=this.Source[this.Ind
|
|
|
10696
10754
|
}
|
|
10697
10755
|
*/break;default:str=this.Source.substr(this.Index,3);if(str=='AND'){this.Index+=3;}else{str=this.Source.substr(this.Index,2);if(str==='&&'||str==='||'||str==='=='||str==='!='||str==='<='||str==='>='||str==='=>'||str==':='||str=='OR'||str=='<>'){this.Index+=2;}else{str=this.Source[this.Index];if('<>=!+-*%&|^/:'.indexOf(str)>=0)++this.Index;}}}if(this.Index==start)this.ThrowUnecpectedToken();return{Type:7/*Punctuator*/,Value:str,LineNumber:this.LineNumber,LineStart:this.LineStart,Start:start,End:this.Index};};//字符串 https://tc39.github.io/ecma262/#sec-literals-string-literals
|
|
10698
10756
|
this.ScanStringLiteral=function(){var start=this.Index;var quote=this.Source[this.Index];++this.Index;var octal=false;var str='';while(!this.IsEOF()){var ch=this.Source[this.Index++];if(ch==quote){quote='';break;}else if(ch=='\\')//字符串转义
|
|
10699
|
-
{
|
|
10757
|
+
{ch=this.Source[this.Index++];if(!ch||!Character.IsLineTerminator(ch.charCodeAt(0))){switch(ch){case'u':if(this.Source[this.Index]==='{'){++this.Index;str+=this.ScanUnicodeCodePointEscape();}else{var unescapedChar=this.ScanHexEscape(ch);if(unescapedChar===null)this.ThrowUnexpectedToken();str+=unescapedChar;}break;case'x'://十六进制 它的转义规则:\x<hex>,\x后跟上2位十六进制数
|
|
10758
|
+
var unescaped=this.ScanHexEscape(ch);if(unescaped===null)this.ThrowUnexpectedToken(Messages.InvalidHexEscapeSequence);str+=unescaped;break;case'n'://换行符
|
|
10759
|
+
str+='\n';break;case'r'://回车键
|
|
10760
|
+
str+='\r';break;case't'://制表符
|
|
10761
|
+
str+='\t';break;case'b'://后退键
|
|
10762
|
+
str+='\b';break;case'f'://换页符
|
|
10763
|
+
str+='\f';break;case'v'://垂直制表符
|
|
10764
|
+
str+='\x0B';break;case'8':case'9':str+=ch;this.TolerateUnexpectedToken();break;default:if(ch&&Character.IsOctalDigit(ch.charCodeAt(0)))//反斜杠后面跟3位八进制数,就代表一个转义字符
|
|
10765
|
+
{var octToDec=this.OctalToDecimal(ch);octal=octToDec.Octal||octal;str+=String.fromCharCode(octToDec.Code);}else{str+=ch;}break;}}}else if(Character.IsLineTerminator(ch.charCodeAt(0))){break;}else{str+=ch;}}if(quote!=''){this.Index=start;this.ThrowUnecpectedToken();}return{Type:8/*StringLiteral*/,Value:str,LineNumber:this.LineNumber,LineStart:this.LineStart,Start:start,End:this.Index};};this.ScanNumericLiteral=function(){var start=this.Index;var ch=this.Source[this.Index];var num='';if(ch!='.'){num=this.Source[this.Index++];ch=this.Source[this.Index];// Hex number starts with '0x'. 16进制
|
|
10700
10766
|
if(num=='0'){if(ch=='x'||ch=='X'){++this.Index;return this.ScanHexLiteral(start);}}while(Character.IsDecimalDigit(this.Source.charCodeAt(this.Index))){num+=this.Source[this.Index++];}ch=this.Source[this.Index];}if(ch=='.'){num+=this.Source[this.Index++];while(Character.IsDecimalDigit(this.Source.charCodeAt(this.Index))){num+=this.Source[this.Index++];}ch=this.Source[this.Index];}//科学计数法
|
|
10701
10767
|
if(ch=='e'||ch=='E'){num+=this.Source[this.Index++];ch=this.Source[this.Index];if(ch=='+'||ch=='-')num+=this.Source[this.Index];if(Character.IsDecimalDigit(this.Source.charCodeAt(this.Index))){while(Character.IsDecimalDigit(this.Source.charCodeAt(this.Index))){num+=this.Source[this.Index++];}}else{this.ThrowUnecpectedToken();}}if(Character.IsIdentifierStart(this.Source.charCodeAt(this.Index))){this.ThrowUnecpectedToken();}return{Type:6/*NumericLiteral*/,Value:parseFloat(num),LineNumber:this.LineNumber,LineStart:this.LineStart,Start:start,End:this.Index};};//空格 或 注释
|
|
10702
10768
|
this.ScanComments=function(){var comments=void 0;var start=this.Index==0;while(!this.IsEOF()){var ch=this.Source.charCodeAt(this.Index);if(Character.IsWhiteSpace(ch))//过滤掉空格
|
|
@@ -10760,7 +10826,7 @@ this.ParseStatement=function(){var statement=void 0;switch(this.LookAhead.Type){
|
|
|
10760
10826
|
this.ParseEmptyStatement=function(){var node=this.CreateNode();this.Expect(';');return this.Finalize(node,this.Node.EmptyStatement());};//https://tc39.github.io/ecma262/#sec-labelled-statements
|
|
10761
10827
|
this.ParseLabelledStatement=function(){var node=this.CreateNode();var expr=this.ParseExpression();this.ConsumeSemicolon();var statement=new this.Node.ExpressionStatement(expr);return this.Finalize(node,statement);};// https://tc39.github.io/ecma262/#sec-comma-operator
|
|
10762
10828
|
this.ParseExpression=function(){var startToken=this.LookAhead;var expr=this.IsolateCoverGrammar(this.ParseAssignmentExpression);if(this.Match(',')){var expressions=[];expressions.push(expr);while(this.LookAhead.Type!=2/*EOF*/){if(!this.Match(','))break;this.NextToken();expressions.push(this.IsolateCoverGrammar(this.ParseAssignmentExpression));}expr=this.Finalize(this.StartNode(startToken),this.Node.SequenceExpression(expressions));}return expr;};this.ParseAssignmentExpression=function(){var expr=void 0;var startToken=this.LookAhead;var token=startToken;expr=this.ParseConditionalExpression();if(this.MatchAssign()){if(!this.Context.IsAssignmentTarget){var marker=expr.Marker;this.ThrowUnexpectedError(marker.Index,marker.Line,marker.Column,Messages.InvalidLHSInAssignment);}if(!this.Match('=')&&!this.Match(':')){this.Context.IsAssignmentTarget=false;this.Context.IsBindingElement=false;}else{this.ReinterpretExpressionAsPattern(expr);}token=this.NextToken();var operator=token.Value;var right=this.IsolateCoverGrammar(this.ParseAssignmentExpression);expr=this.Finalize(this.StartNode(startToken),this.Node.AssignmentExpression(operator,expr,right));this.Context.FirstCoverInitializedNameError=null;}return expr;};this.ParseConditionalExpression=function(){var startToken=this.LookAhead;var expr=this.InheritCoverGrammar(this.ParseBinaryExpression);return expr;};this.ParseBinaryExpression=function(){var startToken=this.LookAhead;var expr=this.InheritCoverGrammar(this.ParseExponentiationExpression);var token=this.LookAhead;var prec=this.BinaryPrecedence(token);if(prec>0){this.NextToken();this.Context.IsAssignmentTarget=false;this.Context.IsBindingElement=false;var markers=[startToken,this.LookAhead];var left=expr;var right=this.IsolateCoverGrammar(this.ParseExponentiationExpression);var stack=[left,token.Value,right];var precedences=[prec];while(true){prec=this.BinaryPrecedence(this.LookAhead);if(prec<=0)break;while(stack.length>2&&prec<=precedences[precedences.length-1]){right=stack.pop();var operator=stack.pop();precedences.pop();left=stack.pop();markers.pop();var node=this.StartNode(markers[markers.length-1]);stack.push(this.Finalize(node,this.Node.BinaryExpression(operator,left,right)));}//Shift
|
|
10763
|
-
stack.push(this.NextToken().Value);precedences.push(prec);markers.push(this.LookAhead);stack.push(this.IsolateCoverGrammar(this.ParseExponentiationExpression));}var
|
|
10829
|
+
stack.push(this.NextToken().Value);precedences.push(prec);markers.push(this.LookAhead);stack.push(this.IsolateCoverGrammar(this.ParseExponentiationExpression));}var _i24=stack.length-1;expr=stack[_i24];var lastMarker=markers.pop();while(_i24>1){var marker=markers.pop();var lastLineStart=lastMarker&&lastMarker.LineStart;var _node=this.StartNode(marker,lastLineStart);var _operator=stack[_i24-1];expr=this.Finalize(_node,this.Node.BinaryExpression(_operator,stack[_i24-2],expr));_i24-=2;lastMarker=marker;}}return expr;};this.ParseExponentiationExpression=function(){var startToken=this.LookAhead;var expr=this.InheritCoverGrammar(this.ParseUnaryExpression);return expr;};this.ParseUnaryExpression=function(){var expr=void 0;if(this.Match('+')||this.Match('-')){var node=this.StartNode(this.LookAhead);var token=this.NextToken();expr=this.InheritCoverGrammar(this.ParseUnaryExpression);expr=this.Finalize(node,this.Node.UnaryExpression(token.Value,expr));this.Context.IsAssignmentTarget=false;this.Context.IsBindingElement=false;}else{expr=this.ParseUpdateExpression();}return expr;};// https://tc39.github.io/ecma262/#sec-update-expressions
|
|
10764
10830
|
this.ParseUpdateExpression=function(){var expr=void 0;var startToken=this.LookAhead;expr=this.InheritCoverGrammar(this.ParseLeftHandSideExpressionAllowCall);return expr;};this.ParseLeftHandSideExpressionAllowCall=function(){var startToken=this.LookAhead;var expr=void 0;expr=this.InheritCoverGrammar(this.ParsePrimaryExpression);while(true){if(this.Match('.')){this.Context.IsBindingElement=false;this.Context.IsAssignmentTarget=true;this.Expect('.');var property=this.ParseMemberIdentifierName();expr=this.Finalize(this.StartNode(startToken),this.Node.StaticMemberExpression(expr,property,startToken));}else if(this.Match('(')){this.Context.IsBindingElement=false;this.Context.IsAssignmentTarget=false;var args=this.ParseArguments();//解析 调用参数
|
|
10765
10831
|
expr=this.Finalize(this.StartNode(startToken),this.Node.CallExpression(expr,args,startToken));}else{break;}}return expr;};/*
|
|
10766
10832
|
BooleanLiteral = 1,
|
|
@@ -10789,77 +10855,77 @@ this.LastMarker.Index=this.StartMarker.Index;this.LastMarker.Line=this.StartMark
|
|
|
10789
10855
|
//相加
|
|
10790
10856
|
this.Add=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相加
|
|
10791
10857
|
if(isNumber&&isNumber2)return data+data2;//都是数组相加
|
|
10792
|
-
var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var
|
|
10793
|
-
if(
|
|
10794
|
-
var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var
|
|
10858
|
+
var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i25=0;_i25<count;++_i25){result[_i25]=null;//初始化
|
|
10859
|
+
if(_i25<data.length&&_i25<data2.length){if(this.IsNumber(data[_i25])&&this.IsNumber(data2[_i25]))result[_i25]=data[_i25]+data2[_i25];}}return result;}//单数据和数组相加
|
|
10860
|
+
var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var _i26 in aryData){result[_i26]=null;if(this.IsNumber(aryData[_i26])&&this.IsNumber(value))result[_i26]=value+aryData[_i26];}return result;};//相减
|
|
10795
10861
|
this.Subtract=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相减
|
|
10796
10862
|
if(isNumber&&isNumber2)return data-data2;//都是数组相减
|
|
10797
|
-
var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var
|
|
10798
|
-
if(
|
|
10799
|
-
{for(var
|
|
10800
|
-
{for(var
|
|
10863
|
+
var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i27=0;_i27<count;++_i27){result[_i27]=null;//初始化
|
|
10864
|
+
if(_i27<data.length&&_i27<data2.length){if(this.IsNumber(data[_i27])&&this.IsNumber(data2[_i27]))result[_i27]=data[_i27]-data2[_i27];}}return result;}if(isNumber)//单数据-数组
|
|
10865
|
+
{for(var _i28 in data2){result[_i28]=null;if(this.IsNumber(data)&&this.IsNumber(data2[_i28]))result[_i28]=data-data2[_i28];}}else//数组-单数据
|
|
10866
|
+
{for(var _i29 in data){result[_i29]=null;if(this.IsNumber(data[_i29])&&this.IsNumber(data2))result[_i29]=data[_i29]-data2;}}return result;};//相乘
|
|
10801
10867
|
this.Multiply=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相乘
|
|
10802
10868
|
if(isNumber&&isNumber2)return data*data2;//都是数组相乘
|
|
10803
|
-
var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var
|
|
10804
|
-
if(
|
|
10805
|
-
var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var
|
|
10869
|
+
var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i30=0;_i30<count;++_i30){result[_i30]=null;//初始化
|
|
10870
|
+
if(_i30<data.length&&_i30<data2.length){if(this.IsNumber(data[_i30])&&this.IsNumber(data2[_i30]))result[_i30]=data[_i30]*data2[_i30];}}return result;}//单数据和数组相乘
|
|
10871
|
+
var value=void 0;var aryData=void 0;if(isNumber){value=data;aryData=data2;}else{value=data2;aryData=data;}for(var _i31 in aryData){result[_i31]=null;if(this.IsNumber(aryData[_i31])&&this.IsNumber(value))result[_i31]=value*aryData[_i31];}return result;};//相除
|
|
10806
10872
|
this.Divide=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值相除
|
|
10807
10873
|
if(isNumber&&isNumber2){if(data2==0)return null;//除0判断
|
|
10808
10874
|
return data/data2;}//都是数组相除
|
|
10809
|
-
var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var
|
|
10810
|
-
if(
|
|
10811
|
-
{for(var
|
|
10812
|
-
{for(var
|
|
10875
|
+
var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i32=0;_i32<count;++_i32){result[_i32]=null;//初始化
|
|
10876
|
+
if(_i32<data.length&&_i32<data2.length){if(this.IsNumber(data[_i32])&&this.IsDivideNumber(data2[_i32]))result[_i32]=data[_i32]/data2[_i32];}}return result;}if(isNumber)//单数据-数组
|
|
10877
|
+
{for(var _i33 in data2){result[_i33]=null;if(this.IsNumber(data)&&this.IsDivideNumber(data2[_i33]))result[_i33]=data/data2[_i33];}}else//数组-单数据
|
|
10878
|
+
{for(var _i34 in data){result[_i34]=null;if(this.IsNumber(data[_i34])&&this.IsDivideNumber(data2))result[_i34]=data[_i34]/data2;}}return result;};//大于
|
|
10813
10879
|
this.GT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
10814
10880
|
if(isNumber&&isNumber2)return data>data2?1:0;//都是数组比较
|
|
10815
|
-
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var
|
|
10816
|
-
if(
|
|
10817
|
-
{for(var
|
|
10818
|
-
{for(var
|
|
10881
|
+
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i35=0;_i35<count;++_i35){result[_i35]=null;//初始化
|
|
10882
|
+
if(_i35<data.length&&_i35<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i35]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i35]))continue;if(!isNaN(data[_i35])&&!isNaN(data2[_i35]))result[_i35]=data[_i35]>data2[_i35]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
10883
|
+
{for(var _i36 in data2){result[_i36]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i36]))continue;if(!isNaN(data)&&!isNaN(data2[_i36]))result[_i36]=data>data2[_i36]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
10884
|
+
{for(var _i37 in data){result[_i37]=null;if(!IFrameSplitOperator.IsVaild(data[_i37]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;if(!isNaN(data[_i37])&&!isNaN(data2))result[_i37]=data[_i37]>data2?1:0;}}return result;};//大于等于
|
|
10819
10885
|
this.GTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
10820
10886
|
if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
|
|
10821
|
-
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var
|
|
10822
|
-
if(
|
|
10823
|
-
{for(var
|
|
10824
|
-
{for(var
|
|
10887
|
+
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i38=0;_i38<count;++_i38){result[_i38]=null;//初始化
|
|
10888
|
+
if(_i38<data.length&&_i38<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i38]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i38]))continue;result[_i38]=data[_i38]>=data2[_i38]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
10889
|
+
{for(var _i39 in data2){result[_i39]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i39]))continue;result[_i39]=data>=data2[_i39]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
10890
|
+
{for(var _i40 in data){result[_i40]=null;if(!IFrameSplitOperator.IsVaild(data[_i40]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i40]=data[_i40]>=data2?1:0;}}return result;};//小于
|
|
10825
10891
|
this.LT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
10826
10892
|
if(isNumber&&isNumber2)return data<data2?1:0;//都是数组比较
|
|
10827
|
-
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var
|
|
10828
|
-
if(
|
|
10829
|
-
{for(var
|
|
10830
|
-
{for(var
|
|
10893
|
+
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i41=0;_i41<count;++_i41){result[_i41]=null;//初始化
|
|
10894
|
+
if(_i41<data.length&&_i41<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i41]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i41]))continue;result[_i41]=data[_i41]<data2[_i41]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
10895
|
+
{for(var _i42 in data2){result[_i42]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i42]))continue;result[_i42]=data<data2[_i42]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
10896
|
+
{for(var _i43 in data){result[_i43]=null;if(!IFrameSplitOperator.IsVaild(data[_i43]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i43]=data[_i43]<data2?1:0;}}return result;};//小于等于
|
|
10831
10897
|
this.LTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
10832
10898
|
if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
|
|
10833
|
-
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var
|
|
10834
|
-
if(
|
|
10835
|
-
{for(var
|
|
10836
|
-
{for(var
|
|
10899
|
+
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i44=0;_i44<count;++_i44){result[_i44]=null;//初始化
|
|
10900
|
+
if(_i44<data.length&&_i44<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i44]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i44]))continue;result[_i44]=data[_i44]<=data2[_i44]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
10901
|
+
{for(var _i45 in data2){result[_i45]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i45]))continue;result[_i45]=data<=data2[_i45]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
10902
|
+
{for(var _i46 in data){result[_i46]=null;if(!IFrameSplitOperator.IsVaild(data[_i46]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i46]=data[_i46]<=data2?1:0;}}return result;};//等于
|
|
10837
10903
|
this.EQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
10838
10904
|
if(isNumber&&isNumber2)return data==data2?1:0;//都是数组比较
|
|
10839
|
-
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var
|
|
10840
|
-
if(
|
|
10841
|
-
{for(var
|
|
10842
|
-
{for(var
|
|
10905
|
+
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i47=0;_i47<count;++_i47){result[_i47]=null;//初始化
|
|
10906
|
+
if(_i47<data.length&&_i47<data2.length){if(!isNaN(data[_i47])&&!isNaN(data2[_i47]))result[_i47]=data[_i47]==data2[_i47]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
10907
|
+
{for(var _i48 in data2){result[_i48]=null;if(!isNaN(data)&&!isNaN(data2[_i48]))result[_i48]=data==data2[_i48]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
10908
|
+
{for(var _i49 in data){result[_i49]=null;if(!isNaN(data[_i49])&&!isNaN(data2))result[_i49]=data[_i49]==data2?1:0;}}return result;};//不等于
|
|
10843
10909
|
this.NEQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
10844
10910
|
if(isNumber&&isNumber2)return data!=data2?1:0;//都是数组比较
|
|
10845
|
-
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var
|
|
10846
|
-
if(
|
|
10847
|
-
{for(var
|
|
10848
|
-
{for(var
|
|
10911
|
+
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i50=0;_i50<count;++_i50){result[_i50]=null;//初始化
|
|
10912
|
+
if(_i50<data.length&&_i50<data2.length){if(!isNaN(data[_i50])&&!isNaN(data2[_i50]))result[_i50]=data[_i50]!=data2[_i50]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
10913
|
+
{for(var _i51 in data2){result[_i51]=null;if(!isNaN(data)&&!isNaN(data2[_i51]))result[_i51]=data!=data2[_i51]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
10914
|
+
{for(var _i52 in data){result[_i52]=null;if(!isNaN(data[_i52])&&!isNaN(data2))result[_i52]=data[_i52]!=data2?1:0;}}return result;};//AND &&
|
|
10849
10915
|
this.And=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值 &&
|
|
10850
10916
|
if(isNumber&&isNumber2)return data&&data2?1:0;//都是数组 &&
|
|
10851
|
-
var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var
|
|
10852
|
-
if(
|
|
10853
|
-
{for(var
|
|
10854
|
-
{for(var
|
|
10917
|
+
var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i53=0;_i53<count;++_i53){result[_i53]=null;//初始化
|
|
10918
|
+
if(_i53<data.length&&_i53<data2.length){if(!isNaN(data[_i53])&&!isNaN(data2[_i53]))result[_i53]=data[_i53]&&data2[_i53]?1:0;}}return result;}if(isNumber)//单数据-数组
|
|
10919
|
+
{for(var _i54 in data2){result[_i54]=null;if(!isNaN(data)&&!isNaN(data2[_i54]))result[_i54]=data&&data2[_i54]?1:0;}}else//数组-单数据
|
|
10920
|
+
{for(var _i55 in data){result[_i55]=null;if(!isNaN(data[_i55])&&!isNaN(data2))result[_i55]=data[_i55]&&data2?1:0;}}return result;};//OR ||
|
|
10855
10921
|
this.Or=function(data,data2){var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值 &&
|
|
10856
10922
|
if(isNumber&&isNumber2)return data||data2?1:0;//都是数组 &&
|
|
10857
|
-
var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var
|
|
10858
|
-
if(
|
|
10859
|
-
{for(var
|
|
10860
|
-
{for(var
|
|
10923
|
+
var result=[];if(!isNumber&&!isNumber2){var count=Math.max(data.length,data2.length);for(var _i56=0;_i56<count;++_i56){result[_i56]=null;//初始化
|
|
10924
|
+
if(_i56<data.length&&_i56<data2.length){if(!isNaN(data[_i56])&&!isNaN(data2[_i56]))result[_i56]=data[_i56]||data2[_i56]?1:0;}}return result;}if(isNumber)//单数据-数组
|
|
10925
|
+
{for(var _i57 in data2){result[_i57]=null;if(!isNaN(data)&&!isNaN(data2[_i57]))result[_i57]=data||data2[_i57]?1:0;}}else//数组-单数据
|
|
10926
|
+
{for(var _i58 in data){result[_i58]=null;if(!isNaN(data[_i58])&&!isNaN(data2))result[_i58]=data[_i58]||data2?1:0;}}return result;};this.IF=function(data,trueData,falseData){var isNumber=this.IsNumber(data);var isNumber2=this.IsNumber(trueData);var isNumber3=this.IsNumber(falseData);var isArray2=Array.isArray(trueData);var isArray3=Array.isArray(falseData);//单数值
|
|
10861
10927
|
if(isNumber){if(isNumber2&&isNumber3)return data?trueData:falseData;return data?trueData:falseData;}//都是数组
|
|
10862
|
-
var result=[];for(var
|
|
10928
|
+
var result=[];for(var _i59 in data){if(data[_i59]){if(isNumber2)result[_i59]=trueData;else if(isArray2)result[_i59]=trueData[_i59];else result[_i59]=null;}else{if(isNumber3)result[_i59]=falseData;else if(isArray3)result[_i59]=falseData[_i59];else result[_i59]=null;}}return result;};/*
|
|
10863
10929
|
根据条件求不同的值,同IF判断相反.
|
|
10864
10930
|
用法: IFN(X,A,B)若X不为0则返回B,否则返回A
|
|
10865
10931
|
例如: IFN(CLOSE>OPEN,HIGH,LOW)表示该周期收阴则返回最高值,否则返回最低值
|
|
@@ -10870,35 +10936,35 @@ var result=[];for(var _i58 in data){if(data[_i58]){if(isNumber2)result[_i58]=tru
|
|
|
10870
10936
|
//例如: REF(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价.
|
|
10871
10937
|
this.REF=function(data,n){var result=[];if(typeof n=='number'){if(IFrameSplitOperator.IsNumber(data))//单数值
|
|
10872
10938
|
{if(n<0)return result;var kData=this.SymbolData.Data.Data;if(!kData||kData.length<=0)return result;var count=kData.length;for(var i=n;i<count;++i){result[i]=data;}}else{if(data.length<=0)return result;if(n>=data.length)return result;result=data.slice(0,data.length-n);//平滑处理
|
|
10873
|
-
var firstData=data[0];for(var
|
|
10874
|
-
{for(var
|
|
10939
|
+
var firstData=data[0];for(var _i60=0;_i60<n;++_i60){result.unshift(firstData);}}}else//n 为数组的情况
|
|
10940
|
+
{for(var _i61=0;_i61<data.length;++_i61){result[_i61]=null;if(_i61>=n.length)continue;var value=n[_i61];if(value>=0&&value<=_i61)result[_i61]=data[_i61-value];else if(_i61)result[_i61]=result[_i61-1];else result[_i61]=data[_i61];}}return result;};//引用若干周期前的数据(未作平滑处理).
|
|
10875
10941
|
//用法: REFV(X,A),引用A周期前的X值.A可以是变量.
|
|
10876
10942
|
//平滑处理:当引用不到数据时进行的操作.
|
|
10877
10943
|
//例如: REFV(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价.
|
|
10878
|
-
this.REFV=function(data,n){var result=[];if(typeof n=='number'){if(data.length<=0)return result;if(n>=data.length)return result;result=data.slice(0,data.length-n);for(var
|
|
10944
|
+
this.REFV=function(data,n){var result=[];if(typeof n=='number'){if(data.length<=0)return result;if(n>=data.length)return result;result=data.slice(0,data.length-n);for(var _i62=0;_i62<n;++_i62){//不作平滑处理
|
|
10879
10945
|
result.unshift(null);}}else//n 为数组的情况
|
|
10880
|
-
{for(var
|
|
10946
|
+
{for(var _i63=0;_i63<data.length;++_i63){result[_i63]=null;if(_i63>=n.length)continue;var value=n[_i63];if(value>=0&&value<=_i63)result[_i63]=data[_i63-value];}}return result;};//属于未来函数,引用若干周期后的数据(平滑处理).
|
|
10881
10947
|
//用法: REFX(X,A),引用A周期后的X值.A可以是变量.
|
|
10882
10948
|
//平滑处理:当引用不到数据时进行的操作.此函数中,平滑时使用上一个周期的引用值.
|
|
10883
10949
|
//例如: TT:=IF(C>O,1,2);
|
|
10884
10950
|
// REFX(CLOSE,TT);表示阳线引用下一周期的收盘价,阴线引用日后第二周期的收盘价.
|
|
10885
10951
|
this.REFX=function(data,n){var result=[];if(typeof n=='number'){if(data.length<=0)return result;if(n>=data.length){if(data.length>0)return data[data.length-1];//取最后一个数据
|
|
10886
10952
|
return result;}result=data.slice(n,data.length);//平滑处理
|
|
10887
|
-
var lastData=data[data.length-1];for(var
|
|
10888
|
-
{var dataCount=data.length;for(var
|
|
10953
|
+
var lastData=data[data.length-1];for(var _i64=0;_i64<n;++_i64){result.push(lastData);}}else//n 为数组的情况
|
|
10954
|
+
{var dataCount=data.length;for(var _i65=0;_i65<data.length;++_i65){result[_i65]=null;if(_i65>=n.length)continue;var value=n[_i65];if(value>=0&&value+_i65<dataCount)result[_i65]=data[_i65+value];else if(_i65)result[_i65]=result[_i65-1];else result[_i65]=data[_i65];}}return result;};//属于未来函数,引用若干周期后的数据(未作平滑处理).
|
|
10889
10955
|
//用法:REFXV(X,A),引用A周期后的X值.A可以是变量.
|
|
10890
10956
|
//平滑处理:当引用不到数据时进行的操作.
|
|
10891
10957
|
//例如: REFXV(CLOSE,1)表示下一周期的收盘价,在日线上就是明天收盘价
|
|
10892
10958
|
this.REFXV=function(data,n){var result=[];if(typeof n=='number'){if(data.length<=0)return result;if(n>=data.length)return result;result=data.slice(n,data.length);//平滑处理
|
|
10893
|
-
for(var
|
|
10894
|
-
{var dataCount=data.length;for(var
|
|
10959
|
+
for(var _i66=0;_i66<n;++_i66){result.push(null);}}else//n 为数组的情况
|
|
10960
|
+
{var dataCount=data.length;for(var _i67=0;_i67<data.length;++_i67){result[_i67]=null;if(_i67>=n.length)continue;var value=n[_i67];if(value>=0&&value+_i67<dataCount)result[_i67]=data[_i67+value];}}return result;};//求最大值.
|
|
10895
10961
|
//用法:MAX(A,B,C,D ..... ) 返回A,B,C,D ..... 中的较大值
|
|
10896
10962
|
//例如: MAX(CLOSE-OPEN,0)表示若收盘价大于开盘价返回它们的差值,否则返回0
|
|
10897
10963
|
this.MAX=function(args,node){if(args.length==0)this.ThrowUnexpectedNode(node,'MAX() Error: 参数个数不能为0');if(args.length==1)return args[0];var aryData=[],aryNumber=[];for(var i in args){var item=args[i];if(IFrameSplitOperator.IsNumber(item))aryNumber.push(item);else if(Array.isArray(item))aryData.push(item);}var maxNumber=null;if(aryNumber.length>0){maxNumber=aryNumber[0];for(var i=1;i<aryNumber.length;++i){maxNumber=Math.max(maxNumber,aryNumber[i]);}}var maxAryData=null;if(aryData.length>0){maxAryData=aryData[0].slice(0);for(var i=1;i<aryData.length;++i){var dataItem=aryData[i];for(var j in dataItem){var maxItem=maxAryData[j];var item=dataItem[j];if(!IFrameSplitOperator.IsNumber(maxItem))continue;if(!IFrameSplitOperator.IsNumber(item)){maxAryData[j]=null;continue;}maxAryData[j]=Math.max(maxItem,item);}}}if(maxAryData==null&&maxNumber!=null)return maxNumber;if(maxAryData&&maxNumber==null)return maxAryData;for(var i in maxAryData){if(!IFrameSplitOperator.IsNumber(maxAryData[i]))continue;maxAryData[i]=Math.max(maxAryData[i],maxNumber);}return maxAryData;};//求最小值.
|
|
10898
10964
|
//用法:MIN(A,B, C, D .....)返回A,B, C ,D ......中的较小值
|
|
10899
10965
|
//例如:MIN(CLOSE,OPEN)返回开盘价和收盘价中的较小值
|
|
10900
10966
|
this.MIN=function(args,node){if(args.length==0)this.ThrowUnexpectedNode(node,'MIN() Error: 参数个数不能为0');if(args.length==1)return args[0];var aryData=[],aryNumber=[];for(var i in args){var item=args[i];if(IFrameSplitOperator.IsNumber(item))aryNumber.push(item);else if(Array.isArray(item))aryData.push(item);}var minNumber=null;if(aryNumber.length>0){minNumber=aryNumber[0];for(var i=1;i<aryNumber.length;++i){minNumber=Math.min(minNumber,aryNumber[i]);}}var minAryData=null;if(aryData.length>0){minAryData=aryData[0].slice(0);for(var i=1;i<aryData.length;++i){var dataItem=aryData[i];for(var j in dataItem){var minItem=minAryData[j];var item=dataItem[j];if(!IFrameSplitOperator.IsNumber(minItem))continue;if(!IFrameSplitOperator.IsNumber(item)){minAryData[j]=null;continue;}minAryData[j]=Math.min(minItem,item);}}}if(minAryData==null&&minNumber!=null)return minNumber;if(minAryData&&minNumber==null)return minAryData;for(var i in minAryData){if(!IFrameSplitOperator.IsNumber(minAryData[i]))continue;minAryData[i]=Math.min(minAryData[i],minNumber);}return minAryData;};//取正数
|
|
10901
|
-
this.ABS=function(data){var result=[];for(var
|
|
10967
|
+
this.ABS=function(data){var result=[];for(var _i68 in data){result[_i68]=null;if(!isNaN(data[_i68]))result[_i68]=Math.abs(data[_i68]);}return result;};this.MA=function(data,dayCount){var result=[];if(dayCount<=0)return result;if(!Array.isArray(dayCount)){dayCount=parseInt(dayCount);//转整形
|
|
10902
10968
|
if(dayCount<=0)dayCount=1;if(!data||!data.length)return result;for(var i=0;i<data.length;++i){result[i]=null;if(this.IsNumber(data[i]))break;}var data=data.slice(0);//复制一份数据出来
|
|
10903
10969
|
for(var days=0;i<data.length;++i,++days){if(days<dayCount-1){result[i]=null;continue;}var preValue=data[i-(dayCount-1)];var _sum=0;for(var _j=dayCount-1;_j>=0;--_j){var value=data[i-_j];if(!this.IsNumber(value)){value=preValue;//空数据就取上一个数据
|
|
10904
10970
|
data[i-_j]=value;}else{preValue=value;}_sum+=value;}result[i]=_sum/dayCount;}}else{for(var i=0;i<data.length;++i){result[i]=null;if(i>=dayCount.length)continue;var sumCount=dayCount[i];if(!this.IsNumber(sumCount))continue;if(sumCount<=0)continue;var sum=0;var count=0;for(var j=i,k=0;j>=0&&k<sumCount;--j,++k){sum+=data[j];++count;}if(count>0)result[i]=sum/count;}}return result;};//指数平均数指标 EMA(close,10)
|
|
@@ -11024,14 +11090,14 @@ this.MULAR=function(data,n){var result=[];if(!Array.isArray(n)){if(data.length<n
|
|
|
11024
11090
|
求总的周期数。
|
|
11025
11091
|
用法: BARSCOUNT(X) 第一个有效数据到当前的天数。
|
|
11026
11092
|
例如: BARSCOUNT(CLOSE) 对于日线数据取得上市以来总交易日数,对于分笔成交取得当日成交笔数,对于1分钟线取得当日交易分钟数。
|
|
11027
|
-
*/this.BARSCOUNT=function(data){var result=[];var days=null;for(var
|
|
11093
|
+
*/this.BARSCOUNT=function(data){var result=[];var days=null;for(var _i69 in data){result[_i69]=0;if(days==null){if(!this.IsNumber(data[_i69]))continue;days=0;}result[_i69]=days;++days;}return result;};//DEVSQ 数据偏差平方和
|
|
11028
11094
|
//DEVSQ(X,N) 返回数据偏差平方和。
|
|
11029
11095
|
this.DEVSQ=function(data,n){if(this.IsNumber(data)&&this.IsNumber(n))return 0;var result=[];if(Array.isArray(data)){var num=null;if(Array.isArray(n))//取最后一个有效数
|
|
11030
11096
|
{for(var i=n.length-1;i>=0;--i){if(this.IsNumber(n[i])){num=parseInt(n[i]);break;}}}else{num=parseInt(n);}if(!this.IsNumber(num))return result;var datanum=data.length;var i=0,j=0,k=0;var E=0,DEV=0;for(i=0;i<datanum&&!this.IsNumber(data[i]);++i){result[i]=null;}if(num<1||i+num>datanum)return result;for(E=0;i<datanum&&j<num;++i,++j){E+=data[i]/num;}if(j==num){DEV=0;for(i--;k<num;k++){DEV+=(data[i-k]-E)*(data[i-k]-E);}result[i]=DEV;i++;}for(;i<datanum;++i){E+=(data[i]-data[i-num])/num;for(DEV=0,k=0;k<num;++k){DEV+=(data[i-k]-E)*(data[i-k]-E);}result[i]=DEV;}}return result;};//NOT 取反
|
|
11031
11097
|
//求逻辑非。
|
|
11032
11098
|
//用法: NOT(X) 返回非X,即当X=0时返回1,否则返回0。
|
|
11033
11099
|
//例如: NOT(ISUP) 表示平盘或收阴。
|
|
11034
|
-
this.NOT=function(data){var isNumber=typeof data=='number';if(isNumber)return data?0:1;var result=[];for(var
|
|
11100
|
+
this.NOT=function(data){var isNumber=typeof data=='number';if(isNumber)return data?0:1;var result=[];for(var _i70 in data){result[_i70]=null;if(this.IsNumber(data[_i70]))result[_i70]=data[_i70]?0:1;}return result;};//FORCAST 线性回归预测值
|
|
11035
11101
|
//FORCAST(X,N) 返回线性回归预测值。
|
|
11036
11102
|
this.FORCAST=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
|
|
11037
11103
|
var num=n;var datanum=data.length;if(num<1||num>=datanum)return result;var Ex=0,Ey=0,Sxy=0,Sxx=0,Const,Slope;var i,j,x;for(j=0;j<datanum&&!this.IsNumber(data[j]);++j){result[j]=null;}for(i=j+num-1;i<datanum;++i){Ex=Ey=Sxy=Sxx=0;for(j=0,x=num;j<num&&j<=i;++j,--x){Ex+=x;Ey+=data[i-j];}Ex/=num;Ey/=num;for(j=0,x=num;j<num&&j<=i;++j,--x){Sxy+=(x-Ex)*(data[i-j]-Ey);Sxx+=(x-Ex)*(x-Ex);}Slope=Sxy/Sxx;Const=Ey-Ex*Slope;result[i]=Slope*num+Const;}return result;};//TSMA(X,N):求X在N个周期内的时间序列三角移动平均
|
|
@@ -11048,9 +11114,9 @@ this.TSMA=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//
|
|
|
11048
11114
|
var num=n;var datanum=data.length;if(num<1||num>=datanum)return result;var Ex=0,Ey=0,Sxy=0,Sxx=0,Const,Slope;var i,j,x;for(j=0;j<datanum&&!this.IsNumber(data[j]);++j){result[j]=null;}for(i=j+num-1;i<datanum;++i){Ex=Ey=Sxy=Sxx=0;for(j=0,x=num;j<num&&j<=i;++j,--x){Ex+=x;Ey+=data[i-j];}Ex/=num;Ey/=num;for(j=0,x=num;j<num&&j<=i;++j,--x){Sxy+=(x-Ex)*(data[i-j]-Ey);Sxx+=(x-Ex)*(x-Ex);}Slope=Sxy/Sxx;Const=Ey-Ex*Slope;result[i]=Slope*num+Const+Slope;}return result;};//SLOPE 线性回归斜率
|
|
11049
11115
|
//SLOPE(X,N) 返回线性回归斜率。
|
|
11050
11116
|
this.SLOPE=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
|
|
11051
|
-
if(n<1||!data.length)return result;if(n>=data.length)return result;var start=0;for(var
|
|
11052
|
-
y+=data[
|
|
11053
|
-
}x=x/n;y=y/n;for(j=0;j<n&&j<=
|
|
11117
|
+
if(n<1||!data.length)return result;if(n>=data.length)return result;var start=0;for(var _i71=0;_i71<data.length;++_i71,++start){result[_i71]=null;if(this.IsNumber(data[_i71]))break;}var x=void 0,y=void 0,xy=void 0,xx=void 0;for(var _i72=start+n-1;_i72<data.length;++_i72){result[_i72]=null;x=y=xy=xx=0;for(var j=0;j<n&&j<=_i72;++j){x+=_i72-j;//数据索引相加
|
|
11118
|
+
y+=data[_i72-j];//数据相加
|
|
11119
|
+
}x=x/n;y=y/n;for(j=0;j<n&&j<=_i72;++j){xy+=(_i72-j-x)*(data[_i72-j]-y);xx+=(_i72-j-x)*(_i72-j-x);}if(xx)result[_i72]=xy/xx;else if(_i72)result[_i72]=result[_i72-1];}return result;};//STDP 总体标准差
|
|
11054
11120
|
//STDP(X,N) 返回总体标准差。
|
|
11055
11121
|
this.STDP=function(data,n){var result=[];if(!Array.isArray(data))return result;var nStart=this.GetFirstVaildIndex(data);if(!IFrameSplitOperator.IsNumber(n))return result;if(nStart+n>data.length||n<1)return result;var i=nStart,j=0,bFirst=true,dTotal=0,dAvg=0;for(i+=n-1;i<data.length;++i){dTotal=0;if(bFirst){bFirst=false;for(j=i-n+1;j<=i;++j){dAvg+=data[j];}dAvg/=n;}else{dAvg+=(data[i]-data[i-n])/n;}for(j=i-n+1;j<=i;++j){dTotal+=(data[j]-dAvg)*(data[j]-dAvg);}result[i]=Math.sqrt(dTotal/n);}return result;};//VAR 估算样本方差
|
|
11056
11122
|
//VAR(X,N) 返回估算样本方差。
|
|
@@ -11058,13 +11124,13 @@ this.VAR=function(data,n){if(this.IsNumber(data)&&this.IsNumber(n))return 0;var
|
|
|
11058
11124
|
//VARP(X,N) 返回总体样本方差 。
|
|
11059
11125
|
this.VARP=function(data,n){var result=[];if(typeof n!='number')n=parseInt(n);//字符串的转成数值型
|
|
11060
11126
|
var num=n;var datanum=data.length;if(num<1||num>=datanum)return result;var i=0,j=0;for(i=0;i<datanum&&!this.IsNumber(data[i]);++i){result[i]=null;}var SigmaPowerX=0,SigmaX=0;for(;i<datanum&&j<num;++i,++j){SigmaPowerX+=data[i]*data[i];SigmaX+=data[i];}if(j==num)result[i-1]=(num*SigmaPowerX-SigmaX*SigmaX)/(num*num);for(;i<datanum;++i){SigmaPowerX+=data[i]*data[i]-data[i-num]*data[i-num];SigmaX+=data[i]-data[i-num];result[i]=(num*SigmaPowerX-SigmaX*SigmaX)/(num*num);}return result;};//RANGE(A,B,C)表示A>B AND A<C;
|
|
11061
|
-
this.RANGE=function(data,range,range2){var isNumber=typeof data=='number';var isNumber2=typeof range=='number';var isNumber3=typeof range2=='number';if(isNumber&&isNumber2&&isNumber3){if(data>Math.min(range,range2)&&data<Math.max(range,range2))return 1;else return 0;}var result=[];var value=void 0,rangeValue=void 0,rangValue2=void 0;for(var
|
|
11127
|
+
this.RANGE=function(data,range,range2){var isNumber=typeof data=='number';var isNumber2=typeof range=='number';var isNumber3=typeof range2=='number';if(isNumber&&isNumber2&&isNumber3){if(data>Math.min(range,range2)&&data<Math.max(range,range2))return 1;else return 0;}var result=[];var value=void 0,rangeValue=void 0,rangValue2=void 0;for(var _i73=0;_i73<data.length;++_i73){result[_i73]=null;value=data[_i73];if(!this.IsNumber(value))continue;if(!isNumber2){if(_i73>=range.length)continue;rangeValue=range[_i73];}else{rangeValue=range;}if(!this.IsNumber(rangeValue))continue;if(!isNumber3){if(_i73>=range2.length)continue;rangeValue2=range2[_i73];}else{rangeValue2=range2;}if(!this.IsNumber(rangeValue2))continue;result[_i73]=value>Math.min(rangeValue,rangeValue2)&&value<Math.max(rangeValue,rangeValue2)?1:0;}return result;};/*
|
|
11062
11128
|
是否存在.
|
|
11063
11129
|
例如: EXIST(CLOSE>OPEN,10)
|
|
11064
11130
|
表示10日内存在着阳线
|
|
11065
11131
|
*/this.EXIST=function(data,n){if(typeof data=='number')return 0;if(Array.isArray(n)){var result=[];if(data.length<=0)return result;for(var i in data)//初始化
|
|
11066
11132
|
{result[i]=0;}for(var i=0;i<n.length&&i<data.length;++i){var period=n[i];if(!this.IsNumber(period))continue;period=parseInt(period);if(period<=0)continue;if(period>i+1)period=i+1;var bExist=false;var index=0,value=0;for(var j=0;j<period;++j){index=i-(period-j-1);value=data[i];if(this.IsNumber(value)&&value>0){bExist=true;break;}}result[i]=bExist?1:0;}return result;}else{n=parseInt(n);var latestID=null;//最新满足条件的数据索引
|
|
11067
|
-
var result=[];var value;for(var
|
|
11133
|
+
var result=[];var value;for(var _i74=0;_i74<data.length;++_i74){result[_i74]=null;value=data[_i74];if(this.IsNumber(value)&&value>0)latestID=_i74;if(latestID!=null&&_i74-latestID<n)result[_i74]=1;else result[_i74]=0;}return result;}};/*
|
|
11068
11134
|
过滤连续出现的信号.
|
|
11069
11135
|
用法:TFILTER(买入条件,卖出条件,N);过滤掉买入(卖出)信号发出后,下一个反向信号发出前的所有买入(卖出)信号.
|
|
11070
11136
|
|
|
@@ -11085,16 +11151,16 @@ var result=[];var value;for(var _i73=0;_i73<data.length;++_i73){result[_i73]=nul
|
|
|
11085
11151
|
用法:FILTER(X,N):X满足条件后,将其后N周期内的数据置为0,N为常量.
|
|
11086
11152
|
例如:
|
|
11087
11153
|
FILTER(CLOSE>OPEN,5)查找阳线,5天内再次出现的阳线不被记录在内
|
|
11088
|
-
*/this.FILTER=function(data,n){var result=[];for(var
|
|
11154
|
+
*/this.FILTER=function(data,n){var result=[];for(var _i75=0,_j2=0;_i75<data.length;++_i75){if(data[_i75]){result[_i75]=1;for(_j2=0;_j2<n&&_j2+_i75+1<data.length;++_j2){result[_j2+_i75+1]=0;}_i75+=n;}else{result[_i75]=0;}}return result;};//反向过滤连续出现的信号.
|
|
11089
11155
|
//用法:FILTERX(X,N):X满足条件后,将其前N周期内的数据置为0,N为常量.
|
|
11090
11156
|
//例如:FILTERX(CLOSE>OPEN,5)查找阳线,前5天内出现过的阳线不被记录在内
|
|
11091
|
-
this.FILTERX=function(data,n,node){var result=[];for(var
|
|
11157
|
+
this.FILTERX=function(data,n,node){var result=[];for(var _i76=0,_j3=0;_i76<data.length;++_i76){if(data[_i76]){result[_i76]=1;for(_j3=0;_j3<n&&_i76-_j3-1>=0;++_j3){result[_i76-_j3-1]=0;}_i76+=n;}else{result[_i76]=0;}}return result;};//上一次条件成立到当前的周期数.
|
|
11092
11158
|
//用法:BARSLAST(X):上一次X不为0到现在的周期数
|
|
11093
11159
|
//例如:BARSLAST(CLOSE/REF(CLOSE,1)>=1.1)表示上一个涨停板到当前的周期数
|
|
11094
|
-
this.BARSLAST=function(data){var result=[];if(!data)return result;var day=null;for(var
|
|
11160
|
+
this.BARSLAST=function(data){var result=[];if(!data)return result;var day=null;for(var _i77=0;_i77<data.length;++_i77){result[_i77]=null;if(data[_i77]>0)day=0;else if(day!=null)++day;if(day!=null)result[_i77]=day;}return result;};//倒数第N次成立时距今的周期数.
|
|
11095
11161
|
//用法:BARSLASTS(X,N):X倒数第N满足到现在的周期数,N支持变量
|
|
11096
11162
|
this.BARSLASTS=function(data,n,node){var result=[];if(!data)return result;if(n<=0)n=data.length;var day=null;var SingleValue=0;//单词数
|
|
11097
|
-
var periodCount=0;for(var
|
|
11163
|
+
var periodCount=0;for(var _i78=0;_i78<data.length;++_i78){result[_i78]=null;var value=data[_i78];if(value>0){if(day==null){day=0;++periodCount;}else{++periodCount;if(periodCount>n)day-=SingleValue;}SingleValue=0;}else{if(day!=null){++day;++SingleValue;}}if(day!=null)result[_i78]=day;}return result;};/*
|
|
11098
11164
|
N周期内第一个条件成立到当前的周期数.
|
|
11099
11165
|
用法:
|
|
11100
11166
|
BARSSINCEN(X,N):N周期内第一次X不为0到现在的天数,N为常量
|
|
@@ -11106,7 +11172,7 @@ var periodCount=0;for(var _i77=0;_i77<data.length;++_i77){result[_i77]=null;var
|
|
|
11106
11172
|
BARSSINCE(X):第一次X不为0到现在的天数
|
|
11107
11173
|
例如:
|
|
11108
11174
|
BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数
|
|
11109
|
-
*/this.BARSSINCE=function(data){var result=[];var day=null;for(var
|
|
11175
|
+
*/this.BARSSINCE=function(data){var result=[];var day=null;for(var _i79=0;_i79<data.length;++_i79){result[_i79]=null;if(day==null){if(data[_i79])day=0;}else{++day;}if(day)result[_i79]=day;}return result;};/*三角函数调用 func 三角函数
|
|
11110
11176
|
反正切值. 用法: ATAN(X)返回X的反正切值
|
|
11111
11177
|
余弦值. 用法: COS(X)返回X的余弦值
|
|
11112
11178
|
正弦值. 用法: SIN(X)返回X的正弦值
|
|
@@ -11116,9 +11182,9 @@ var periodCount=0;for(var _i77=0;_i77<data.length;++_i77){result[_i77]=null;var
|
|
|
11116
11182
|
求10为底的对数. 用法: LOG(X)取得X的对数 例如: LOG(100)等于2
|
|
11117
11183
|
指数. 用法: EXP(X)为e的X次幂 例如: EXP(CLOSE)返回e的CLOSE次幂
|
|
11118
11184
|
开平方. 用法: SQRT(X)为X的平方根 例如: SQRT(CLOSE)收盘价的平方根
|
|
11119
|
-
*/this.Trigonometric=function(data,func){if(!Array.isArray(data)){if(this.IsNumber(data))return func(data);return null;}else{var result=[];for(var
|
|
11120
|
-
this.ASIN=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var
|
|
11121
|
-
this.ACOS=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var
|
|
11185
|
+
*/this.Trigonometric=function(data,func){if(!Array.isArray(data)){if(this.IsNumber(data))return func(data);return null;}else{var result=[];for(var _i80 in data){var item=data[_i80];if(this.IsNumber(item))result[_i80]=func(item);else result[_i80]=null;}return result;}};//反正弦值. 用法: ASIN(X)返回X的反正弦值
|
|
11186
|
+
this.ASIN=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var _i81 in data){var item=data[_i81];result[_i81]=null;if(this.IsNumber(item)){if(item>=-1&&item<=1){result[_i81]=Math.asin(item);}else if(_i81-1>=0){var preItem=result[_i81-1];if(this.IsNumber(preItem))result[_i81]=preItem;}}}return result;}};//反余弦值. 用法: ACOS(X)返回X的反余弦值
|
|
11187
|
+
this.ACOS=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var _i82 in data){var item=data[_i82];result[_i82]=null;if(this.IsNumber(item)){if(item>=-1&&item<=1){result[_i82]=Math.acos(item);}else if(_i82-1>=0){var preItem=result[_i82-1];if(this.IsNumber(preItem))result[_i82]=preItem;}}}return result;}};/*
|
|
11122
11188
|
LAST(X,A,B):持续存在.
|
|
11123
11189
|
用法:
|
|
11124
11190
|
LAST(CLOSE>OPEN,10,5)
|
|
@@ -11321,42 +11387,42 @@ for(var i=startDay,j=0;i<kData.length;++i){var start=i-startDay;if(start<0)conti
|
|
|
11321
11387
|
*/this.LWINNER=function(n,data,node){var startDay=n;if(startDay<=0)this.ThrowUnexpectedNode(node,'LWINNER() 第1个参数错误');var result=[];var kData=this.SymbolData.Data.Data;if(!kData||kData.length<=0)return result;var aryCapital=this.SymbolData.GetStockCacheData({FunctionName:"FINANCE",Args:[7],ArgCount:1,Node:node});//流通股本
|
|
11322
11388
|
var dTotalVol=0,dVol=0;for(var i=startDay-1,j=0,k=0;i<kData.length;++i){var index=i-startDay+1;var dMaxPrice=kData[index].High,dMinPrice=kData[index].Low;for(var j=0;j<startDay;++j){var item=kData[index+j];dMinPrice=Math.min(dMinPrice,item.Low);dMaxPrice=Math.max(dMaxPrice,item.High);}if(dMinPrice>5000||dMinPrice<0||dMaxPrice>5000||dMinPrice<0)this.ThrowUnexpectedNode(node,'LWINNER() 历史K线最大最小值错误, 超出(0,5000)范围');var lMaxPrice=parseInt(dMaxPrice*100+1);var lMinPrice=parseInt(dMinPrice*100-1);var lLow=0,lHigh=0,lClose=0;dMaxPrice=lMaxPrice/100.0;dMinPrice=lMinPrice/100.0;var lSpeed=lMaxPrice-lMinPrice+1;if(lSpeed<1)return result;var aryVolPrice=[],aryPerVol=[];for(var j=0;j<lSpeed;++j){aryVolPrice[j]=0;aryPerVol[j]=0;}for(j=0;j<startDay;++j){var capital=aryCapital[index+j];if(capital<1)continue;var kItem=kData[index+j];var dHSL=kItem.Vol/capital;for(k=0;k<lSpeed;k++){aryVolPrice[k]*=1-dHSL;}lLow=parseInt(Math.min(lMaxPrice,Math.max(lMinPrice,kItem.Low*100)))-lMinPrice;lHigh=parseInt(Math.min(lMaxPrice,Math.max(lMinPrice,kItem.High*100)))-lMinPrice;lClose=parseInt(Math.min(lMaxPrice,Math.max(lMinPrice,kItem.Close*100)))-lMinPrice;for(var k=0;k<lSpeed;++k){aryPerVol[k]=0;}var lHalf=parseInt((lLow+lHigh+2*lClose)/4);if(lHalf==lHigh||lHalf==lLow){aryPerVol[lHalf]+=kItem.Vol;}else{var dVH=kItem.Vol/(lHalf-lLow);for(var _k=lLow;_k<lHalf;++_k){aryPerVol[_k]+=(_k-lLow)*(dVH/(lHalf-lLow));}for(var _k2;_k2<=lHigh;++_k2){aryPerVol[_k2]+=(_k2-lHigh)*(dVH/(lHalf-lHigh));}}dTotalVol=0;for(var k=lLow;k<=lHigh;k++){aryVolPrice[k]+=aryPerVol[k];}}for(var j=0;j<lSpeed;j++){dTotalVol+=aryVolPrice[j];}if(Array.isArray(data))lHigh=parseInt(Math.min(data[i]*100-lMinPrice,lSpeed-1));else lHigh=parseInt(Math.min(data*100-lMinPrice,lSpeed-1));dVol=0;for(k=0;k<=lHigh;k++){dVol+=aryVolPrice[k];}if(dTotalVol>0&&dVol>0&&dVol<=dTotalVol)result[i]=dVol/dTotalVol;else if(i-1>=0)result[i]=result[i-1];}return result;};this.PWINNER=function(n,data,node){var result=[];return result;};//计算截至到某一天的历史所有筹码
|
|
11323
11389
|
this.CalculateChip=function(index,exchangeData,hisData,dRate){var result={Min:null,Max:null,Data:[]};var seed=1;//筹码历史衰减换手系数
|
|
11324
|
-
var max=null,min=null;for(var
|
|
11325
|
-
var kData=hisData[
|
|
11390
|
+
var max=null,min=null;for(var _i83=index;_i83>=0;--_i83){var _item9={};//Vol:量 High:最高 Low:最低
|
|
11391
|
+
var kData=hisData[_i83];if(_i83==index)_item9.Vol=kData.Vol*exchangeData[_i83];else _item9.Vol=kData.Vol*seed;_item9.Date=kData.Date;_item9.High=kData.High;_item9.Low=kData.Low;if(max==null)max=_item9.High;else if(max<_item9.High)max=_item9.High;if(min==null)min=_item9.Low;else if(min<_item9.Low)min=_item9.Low;result.Data[_i83]=_item9;seed*=1-exchangeData[_i83]/100*dRate;//换手率累乘
|
|
11326
11392
|
}result.Max=max;result.Min=min;return result;};/*
|
|
11327
11393
|
返回是否连涨周期数.
|
|
11328
11394
|
用法:
|
|
11329
11395
|
UPNDAY(CLOSE,M)
|
|
11330
11396
|
表示连涨M个周期,M为常量
|
|
11331
|
-
*/this.UPNDAY=function(data,n){var result=[];if(n<1)return result;if(data==null||n>data.length)return result;var days=0;for(var
|
|
11332
|
-
{days=0;continue;}if(data[
|
|
11397
|
+
*/this.UPNDAY=function(data,n){var result=[];if(n<1)return result;if(data==null||n>data.length)return result;var days=0;for(var _i84=0;_i84<data.length;++_i84){result[_i84]=0;if(_i84-1<0)continue;if(!this.IsNumber(data[_i84])||!this.IsNumber(data[_i84-1]))//无效数都不算连涨
|
|
11398
|
+
{days=0;continue;}if(data[_i84]>data[_i84-1])++days;else days=0;if(days==n){result[_i84]=1;--days;}}return result;};/*
|
|
11333
11399
|
返回是否连跌周期.
|
|
11334
11400
|
用法:
|
|
11335
11401
|
DOWNNDAY(CLOSE,M)
|
|
11336
11402
|
表示连跌M个周期,M为常量
|
|
11337
|
-
*/this.DOWNNDAY=function(data,n){var result=[];if(n<1)return result;if(data==null||n>data.length)return result;var days=0;for(var
|
|
11338
|
-
{days=0;continue;}if(data[
|
|
11403
|
+
*/this.DOWNNDAY=function(data,n){var result=[];if(n<1)return result;if(data==null||n>data.length)return result;var days=0;for(var _i85=0;_i85<data.length;++_i85){result[_i85]=0;if(_i85-1<0)continue;if(!this.IsNumber(data[_i85])||!this.IsNumber(data[_i85-1]))//无效数都不算连涨
|
|
11404
|
+
{days=0;continue;}if(data[_i85]<data[_i85-1])++days;else days=0;if(days==n){result[_i85]=1;--days;}}return result;};/*
|
|
11339
11405
|
返回是否持续存在X>Y
|
|
11340
11406
|
用法:
|
|
11341
11407
|
NDAY(CLOSE,OPEN,3)
|
|
11342
11408
|
表示连续3日收阳线
|
|
11343
|
-
*/this.NDAY=function(data,data2,n){var result=[];if(n<1)return result;if(!Array.isArray(data)&&!Array.isArray(data2))return result;if(data==null||data2==null)return result;if(Array.isArray(data)&&Array.isArray(data2)){if(n>=data.length||n>=data2.length)return result;var count=Math.max(data.length,data2.length);var days=0;for(var
|
|
11409
|
+
*/this.NDAY=function(data,data2,n){var result=[];if(n<1)return result;if(!Array.isArray(data)&&!Array.isArray(data2))return result;if(data==null||data2==null)return result;if(Array.isArray(data)&&Array.isArray(data2)){if(n>=data.length||n>=data2.length)return result;var count=Math.max(data.length,data2.length);var days=0;for(var _i86=0;_i86<count;++_i86){result[_i86]=0;if(_i86>=data.length||_i86>=data2.length)continue;if(!this.IsNumber(data[_i86])||!this.IsNumber(data2[_i86])){days=0;continue;}if(data[_i86]>data2[_i86])++days;else days=0;if(days==n){result[_i86]=1;--days;}}}else if(Array.isArray(data)&&!Array.isArray(data2)){if(n>=data.length||!this.IsNumber(data2))return;var days=0;for(var _i87 in data){result[_i87]=0;if(!this.IsNumber(data[_i87])){days=0;continue;}if(data[_i87]>data2)++days;else days=0;if(days==n){result[_i87]=1;--days;}}}else if(!Array.isArray(data)&&Array.isArray(data2)){if(n>=data2.length||!this.IsNumber(data))return;var days=0;for(var _i88 in data2){result[_i88]=0;if(!this.IsNumber(data2[_i88])){days=0;continue;}if(data>data2[_i88])++days;else days=0;if(days==n){result[_i88]=1;--days;}}}return result;};/*
|
|
11344
11410
|
两条线维持一定周期后交叉.
|
|
11345
11411
|
用法:LONGCROSS(A,B,N)表示A在N周期内都小于B,本周期从下方向上穿过B时返回1,否则返回0
|
|
11346
|
-
*/this.LONGCROSS=function(data,data2,n){var result=[];var count=Math.max(data.length,data2.length);for(var
|
|
11412
|
+
*/this.LONGCROSS=function(data,data2,n){var result=[];var count=Math.max(data.length,data2.length);for(var _i89=0;_i89<count;++_i89){result[_i89]=0;if(_i89-1<0)continue;if(_i89>=data.length||_i89>=data2.length)continue;if(!this.IsNumber(data[_i89])||!this.IsNumber(data2[_i89])||!this.IsNumber(data[_i89-1])||!this.IsNumber(data2[_i89-1]))continue;if(data[_i89]>data2[_i89]&&data[_i89-1]<data2[_i89-1])result[_i89]=1;}for(var _i90=0,_j4=0;_i90<count;++_i90){if(!result[_i90])continue;for(_j4=1;_j4<=n&&_i90-_j4>=0;++_j4){if(data[_i90-_j4]>=data2[_i90-_j4]){result[_i90]=0;break;}}}return result;};this.ISVALID=function(data){if(Array.isArray(data)){var result=[];for(var i=0;i<data.length;++i){var item=data[i];if(item)result[i]=1;else result[i]=0;}return result;}else{if(data)return 1;else return 0;}};/*
|
|
11347
11413
|
EXISTR(X,A,B):是否存在(前几日到前几日间).
|
|
11348
11414
|
例如: EXISTR(CLOSE>OPEN,10,5)
|
|
11349
11415
|
表示从前10日内到前5日内存在着阳线
|
|
11350
11416
|
若A为0,表示从第一天开始,B为0,表示到最后日止
|
|
11351
|
-
*/this.EXISTR=function(data,n,n2){var result=[];if(!Array.isArray(data))return result;n=parseInt(n);n2=parseInt(n2);if(n<=0)n=data.length;if(n2<=0)n2=1;if(n2>n)return result;var result=[];var value;for(var
|
|
11417
|
+
*/this.EXISTR=function(data,n,n2){var result=[];if(!Array.isArray(data))return result;n=parseInt(n);n2=parseInt(n2);if(n<=0)n=data.length;if(n2<=0)n2=1;if(n2>n)return result;var result=[];var value;for(var _i91=0,_j5=0;_i91<data.length;++_i91){result[_i91]=null;if(_i91-n<0||_i91-n2<0)continue;result[_i91]=0;for(_j5=n;_j5>=n2;--_j5){var value=data[_i91-_j5];if(this.IsNumber(value)&&value){result[_i91]=1;break;}}}return result;};/*
|
|
11352
11418
|
RELATE(X,Y,N) 返回X和Y的N周期的相关系数
|
|
11353
11419
|
RELATE(X,Y,N)=(∑[(Xi-Avg(X))(Yi-Avg(y))])/N ÷ √((∑(Xi-Avg(X))^2)/N * (∑(Yi-Avg(Y))^2)/N)
|
|
11354
11420
|
其中 avg(x)表示x的N周期均值: avg(X) = (∑Xi)/N
|
|
11355
11421
|
√(...)表示开平方
|
|
11356
|
-
*/this.RELATE=function(data,data2,n){var result=[];if(n<1)n=1;if(!Array.isArray(data)||!Array.isArray(data2))return result;var dataAverage=this.CalculateAverage(data,n);var data2Average=this.CalculateAverage(data2,n);var count=Math.max(data.length,data2.length);for(var
|
|
11422
|
+
*/this.RELATE=function(data,data2,n){var result=[];if(n<1)n=1;if(!Array.isArray(data)||!Array.isArray(data2))return result;var dataAverage=this.CalculateAverage(data,n);var data2Average=this.CalculateAverage(data2,n);var count=Math.max(data.length,data2.length);for(var _i92=0,_j6=0;_i92<count;++_i92){result[_i92]=null;if(_i92>=data.length||_i92>=data2.length||_i92>=dataAverage.length||_i92>=data2Average.length)continue;var average=dataAverage[_i92];var average2=data2Average[_i92];var total=0,total2=0,total3=0;for(_j6=_i92-n+1;_j6<=_i92;++_j6){total+=(data[_j6]-average)*(data2[_j6]-average2);//∑[(Xi-Avg(X))(Yi-Avg(y))])
|
|
11357
11423
|
total2+=Math.pow(data[_j6]-average,2);//∑(Xi-Avg(X))^2
|
|
11358
11424
|
total3+=Math.pow(data2[_j6]-average2,2);//∑(Yi-Avg(Y))^2)
|
|
11359
|
-
}result[
|
|
11425
|
+
}result[_i92]=total/n/(Math.sqrt(total2/n)*Math.sqrt(total3/n));}return result;};//计算数组n周期内的均值
|
|
11360
11426
|
this.CalculateAverage=function(data,n){var result=[];if(n<1)return result;var total=0;for(var i=0;i<data.length;++i)//去掉开始的无效数
|
|
11361
11427
|
{if(this.IsNumber(data[i]))break;}for(;i<data.length&&i<n;++i)//计算第1个周期的数据
|
|
11362
11428
|
{result[i]=null;var value=data[i];if(!this.IsNumber(value))continue;total+=value;}result[i-1]=total/n;for(;i<data.length;++i)//计算后面的周期数据
|
|
@@ -11364,7 +11430,7 @@ this.CalculateAverage=function(data,n){var result=[];if(n<1)return result;var to
|
|
|
11364
11430
|
if(!this.IsNumber(value))value=0;if(!this.IsNumber(preValue))preValue=0;total=total-preValue+value;//当前周期的数据 等于上一个周期数据 去掉上一个周期的第1个数据 加上这个周期的最后1个数据
|
|
11365
11431
|
result[i]=total/n;}return result;};/*
|
|
11366
11432
|
COVAR(X,Y,N) 返回X和Y的N周期的协方差
|
|
11367
|
-
*/this.COVAR=function(data,data2,n){if(this.IsNumber(data)||this.IsNumber(data2))return 0;var result=[];if(n<1)n=1;if(!Array.isArray(data)||!Array.isArray(data2))return result;var dataAverage=this.CalculateAverage(data,n);var data2Average=this.CalculateAverage(data2,n);var count=Math.max(data.length,data2.length);var count=Math.max(data.length,data2.length);for(var
|
|
11433
|
+
*/this.COVAR=function(data,data2,n){if(this.IsNumber(data)||this.IsNumber(data2))return 0;var result=[];if(n<1)n=1;if(!Array.isArray(data)||!Array.isArray(data2))return result;var dataAverage=this.CalculateAverage(data,n);var data2Average=this.CalculateAverage(data2,n);var count=Math.max(data.length,data2.length);var count=Math.max(data.length,data2.length);for(var _i93=0,_j7=0;_i93<count;++_i93){result[_i93]=null;if(_i93>=data.length||_i93>=data2.length||_i93>=dataAverage.length||_i93>=data2Average.length)continue;var average=dataAverage[_i93];var average2=data2Average[_i93];var total=0;for(_j7=_i93-n+1;_j7<=_i93;++_j7){total+=(data[_j7]-average)*(data2[_j7]-average2);}result[_i93]=total/n;}return result;};/*
|
|
11368
11434
|
求上一高点到当前的周期数.
|
|
11369
11435
|
用法:
|
|
11370
11436
|
HHVBARS(X,N):求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计
|
|
@@ -11388,7 +11454,7 @@ for(var i=0;i<data.length;++i){result[i]=null;if(this.IsNumber(data[i])){nMin=i;
|
|
|
11388
11454
|
公式=股票和指数协方差/指数方差
|
|
11389
11455
|
*/this.BETA=function(n){var result=[];var stockData=this.SymbolData.Data;var indexData=this.SymbolData.IndexData;if(n<=0)n=1;var stockProfit=[];//股票涨幅
|
|
11390
11456
|
var indexProfit=[];//指数涨幅
|
|
11391
|
-
for(var
|
|
11457
|
+
for(var _i94=0;_i94<stockData.Data.length;++_i94){stockProfit[_i94]=0;indexProfit[_i94]=0;var stockItem=stockData.Data[_i94];var indexItem=indexData.Data[_i94];if(stockItem.Close>0&&stockItem.YClose>0)stockProfit[_i94]=(stockItem.Close-stockItem.YClose)/stockItem.YClose;if(indexItem.Close>0&&indexItem.YClose>0)indexProfit[_i94]=(indexItem.Close-indexItem.YClose)/indexItem.YClose;}//计算均值数组
|
|
11392
11458
|
var averageStockProfit=this.CalculateAverage(stockProfit,n);var averageIndexProfit=this.CalculateAverage(indexProfit,n);for(var i=0,j=0;i<stockData.Data.length;++i){result[i]=null;if(i>=stockProfit.length||i>=indexProfit.length||i>=averageStockProfit.length||i>=averageIndexProfit.length)continue;var averageStock=averageStockProfit[i];var averageIndex=averageIndexProfit[i];var covariance=0;//协方差
|
|
11393
11459
|
var variance=0;//方差
|
|
11394
11460
|
for(j=i-n+1;j<=i;++j){var value=indexProfit[j]-averageIndex;var value2=stockProfit[j]-averageStock;covariance+=value*value2;variance+=value*value;}if(this.IsDivideNumber(variance)&&this.IsNumber(covariance))result[i]=covariance/variance;//(covariance/n)/(variance/n)=covariance/variance;
|
|
@@ -11436,8 +11502,8 @@ this.CON2STR=function(data,n){var result=[];if(Array.isArray(data)){for(var i=da
|
|
|
11436
11502
|
//用法: VAR2STR(C,3)表示取收盘价,以3位小数转为字符串
|
|
11437
11503
|
this.VAR2STR=function(data,n){var result=[];if(Array.isArray(data)){for(var i=0;i<data.length;++i){result[i]=null;var item=data[i];if(this.IsNumber(item))result[i]=item.toFixed(n);}}else{if(this.IsNumber(data))result=data.toFixed(n);}return result;};this.MOD=function(data,data2){var result=[];var isNumber=typeof data=='number';var isNumber2=typeof data2=='number';//单数值
|
|
11438
11504
|
if(isNumber&&isNumber2){return JSAlgorithm.MOD(data,data2);}else if(!isNumber&&!isNumber2)//都是数组相加
|
|
11439
|
-
{var count=Math.max(data.length,data2.length);for(var
|
|
11440
|
-
if(
|
|
11505
|
+
{var count=Math.max(data.length,data2.length);for(var _i95=0;_i95<count;++_i95){result[_i95]=null;//初始化
|
|
11506
|
+
if(_i95<data.length&&_i95<data2.length){if(this.IsNumber(data[_i95])&&this.IsNumber(data2[_i95]))result[_i95]=JSAlgorithm.MOD(data[_i95],data2[_i95]);}}return result;}else if(isNumber&&!isNumber2)//单数字 数组
|
|
11441
11507
|
{for(var i in data2){result[i]=null;if(this.IsNumber(data)&&this.IsNumber(data2[i]))result[i]=JSAlgorithm.MOD(data,data2[i]);}return result;}else if(!isNumber&&isNumber2)//数组 单数字
|
|
11442
11508
|
{for(var i in data){result[i]=null;if(this.IsNumber(data[i])&&this.IsNumber(data2))result[i]=JSAlgorithm.MOD(data[i],data2);}return result;}return result;};this.POW=function(data,n){var result=[];if(Array.isArray(data)&&Array.isArray(n)){for(var i=0;i<data.length;++i){var value=data[i];var value2=n[i];if(this.IsNumber(value)&&this.IsNumber(value2))result[i]=Math.pow(value,value2);else result[i]=null;}}else if(IFrameSplitOperator.IsNumber(data)&&Array.isArray(n)){for(var i=0;i<n.length;++i){var item=n[i];if(this.IsNumber(item))result[i]=Math.pow(data,item);else result[i]=null;}}else if(IFrameSplitOperator.IsNumber(data)&&IFrameSplitOperator.IsNumber(n)){return Math.pow(data,n);}else if(Array.isArray(data)&&IFrameSplitOperator.IsNumber(n)){for(var i=0;i<data.length;++i){var item=data[i];if(this.IsNumber(item))result[i]=Math.pow(item,n);else result[i]=null;}}return result;};this.CEILING=function(data){var isNumber=typeof data=='number';if(isNumber)return parseInt(data);var result=[];for(var i in data){var item=data[i];if(this.IsNumber(item))result[i]=parseInt(item);else result[i]=null;}return result;};this.FLOOR=function(data){var isNumber=typeof data=='number';if(isNumber)return parseInt(data-1);var result=[];for(var i in data){var item=data[i];if(this.IsNumber(item))result[i]=parseInt(item-1);else result[i]=null;}return result;};this.ZTPRICE=function(data,rate){if(!this.IsNumber(rate))return null;if(Array.isArray(data)){var result=[];for(var i in data){var item=data[i];if(this.IsNumber(item))result[i]=(1+rate)*item;else result[i]=null;}return result;}else if(this.IsNumber(data)){var result=(1+rate)*data;return result;}};this.DTPRICE=function(data,rate){if(!this.IsNumber(rate))return null;if(Array.isArray(data)){var result=[];for(var i in data){var item=data[i];if(this.IsNumber(item))result[i]=(1-rate)*item;else result[i]=null;}return result;}else if(this.IsNumber(data)){var result=(1-rate)*data;return result;}};/*
|
|
11443
11509
|
FRACPART(A) 取得小数部分
|
|
@@ -11608,18 +11674,18 @@ var IsNumber=typeof data=="number";var IsNumber2=typeof data2=="number";if(Array
|
|
|
11608
11674
|
用法: DRAWLINE(COND1,PRICE1,COND2,PRICE2,EXPAND)
|
|
11609
11675
|
当COND1条件满足时,在PRICE1位置画直线起点,当COND2条件满足时,在PRICE2位置画直线终点,EXPAND为延长类型。
|
|
11610
11676
|
例如: DRAWLINE(HIGH>=HHV(HIGH,20),HIGH,LOW<=LLV(LOW,20),LOW,1) 表示在创20天新高与创20天新低之间画直线并且向右延长。
|
|
11611
|
-
*/this.DRAWLINE=function(condition,data,condition2,data2,expand){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWLINE',Expand:expand};if(condition.length<=0)return result;var count=Math.max(condition.length,condition2.length);var bFirstPoint=false;var bSecondPont=false;var lineCache={Start:{},End:{},List:new Array()};for(var
|
|
11612
|
-
}else if(bFirstPoint==true&&bSecondPont==false){var bCondition2=condition2[
|
|
11613
|
-
if(!bCondition2){if(condition[
|
|
11614
|
-
lineCache.Start={ID:
|
|
11615
|
-
continue;}if(bCondition2){bSecondPont=true;lineCache.End={ID:
|
|
11616
|
-
}}else if(bFirstPoint==true&&bSecondPont==true){var bCondition2=condition2[
|
|
11677
|
+
*/this.DRAWLINE=function(condition,data,condition2,data2,expand){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWLINE',Expand:expand};if(condition.length<=0)return result;var count=Math.max(condition.length,condition2.length);var bFirstPoint=false;var bSecondPont=false;var lineCache={Start:{},End:{},List:new Array()};for(var _i96=0;_i96<count;++_i96){drawData[_i96]=null;if(_i96<condition.length&&_i96<condition2.length){if(bFirstPoint==false&&bSecondPont==false){if(condition[_i96]==null||!condition[_i96])continue;bFirstPoint=true;lineCache.Start={ID:_i96,Value:data[_i96]};//第1个点
|
|
11678
|
+
}else if(bFirstPoint==true&&bSecondPont==false){var bCondition2=condition2[_i96]!=null&&condition2[_i96];//条件2
|
|
11679
|
+
if(!bCondition2){if(condition[_i96])//条件1满足
|
|
11680
|
+
lineCache.Start={ID:_i96,Value:data[_i96]};//移动第1个点
|
|
11681
|
+
continue;}if(bCondition2){bSecondPont=true;lineCache.End={ID:_i96,Value:data2[_i96]};//第2个点
|
|
11682
|
+
}}else if(bFirstPoint==true&&bSecondPont==true){var bCondition2=condition2[_i96]!=null&&condition2[_i96];//条件2
|
|
11617
11683
|
if(bCondition2)//条件2满足
|
|
11618
|
-
{lineCache.End={ID:
|
|
11619
|
-
}else if(condition[
|
|
11684
|
+
{lineCache.End={ID:_i96,Value:data2[_i96]};//移动第2个点
|
|
11685
|
+
}else if(condition[_i96])//条件1满足
|
|
11620
11686
|
{var lineData=this.CalculateDrawLine(lineCache);//计算2个点的线上 其他点的数值
|
|
11621
11687
|
for(var _j8 in lineData){var _item10=lineData[_j8];drawData[_item10.ID]=_item10.Value;}if(expand==1)this.CalculateDrawDataExtendLine(drawData,lineCache.Start.ID-2);//右延长线
|
|
11622
|
-
bFirstPoint=bSecondPont=false;lineCache={Start:{},End:{}};bFirstPoint=true;bSecondPont=false;lineCache.Start={ID:
|
|
11688
|
+
bFirstPoint=bSecondPont=false;lineCache={Start:{},End:{}};bFirstPoint=true;bSecondPont=false;lineCache.Start={ID:_i96,Value:data[_i96]};//第1个点
|
|
11623
11689
|
}}}//最后一组线
|
|
11624
11690
|
if(bFirstPoint==true&&bSecondPont==true){var _lineData=this.CalculateDrawLine(lineCache);for(var _j9 in _lineData){var _item11=_lineData[_j9];drawData[_item11.ID]=_item11.Value;}}}if(expand==1)this.CalculateDrawDataExtendLine(drawData);//右延长线
|
|
11625
11691
|
return result;};/*
|
|
@@ -11634,8 +11700,8 @@ if(color)result.Color[0]=color.toLowerCase();if(color2)result.Color[1]=color2.to
|
|
|
11634
11700
|
{for(var i in condition){drawData[i]=null;var condItem=condition[i];if(!condItem)continue;var value=this.GetDataByIndex(data,i);if(!value.Result)continue;var value2=this.GetDataByIndex(data2,i);if(!value2.Result)continue;var item={Value:value.Data,Value2:value2.Data};drawData[i]=item;}}else{if(condition){for(var i=0;i<this.SymbolData.Data.Data.length;++i)//以K线长度为数据长度
|
|
11635
11701
|
{drawData[i]=null;var value=this.GetDataByIndex(data,i);if(!value.Result)continue;var value2=this.GetDataByIndex(data2,i);if(!value2.Result)continue;var item={Value:value.Data,Value2:value2.Data};drawData[i]=item;}}}return result;};//DRAWKLINE(HIGH,OPEN,LOW,CLOSE).
|
|
11636
11702
|
//用法:以HIGH为最高价,OPEN为开盘价,LOW为最低,CLOSE收盘画K线
|
|
11637
|
-
this.DRAWKLINE=function(high,open,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWKLINE'};var count=Math.max(high.length,open.length,low.length,close.length);for(var
|
|
11638
|
-
this.DRAWKLINE_IF=function(condition,high,open,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWKLINE_IF'};var count=Math.max(condition.length,high.length,open.length,low.length,close.length);for(var
|
|
11703
|
+
this.DRAWKLINE=function(high,open,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWKLINE'};var count=Math.max(high.length,open.length,low.length,close.length);for(var _i97=0;_i97<count;++_i97){var _item12={Open:null,High:null,Low:null,Close:null};if(_i97<high.length&&_i97<open.length&&_i97<low.length&&_i97<close.length){_item12.Open=open[_i97];_item12.High=high[_i97];_item12.Low=low[_i97];_item12.Close=close[_i97];}drawData[_i97]=_item12;}return result;};//满足条件画一根K线
|
|
11704
|
+
this.DRAWKLINE_IF=function(condition,high,open,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWKLINE_IF'};var count=Math.max(condition.length,high.length,open.length,low.length,close.length);for(var _i98=0;_i98<count;++_i98){var _item13={Open:null,High:null,Low:null,Close:null};if(_i98<high.length&&_i98<open.length&&_i98<low.length&&_i98<close.length&&_i98<condition.length){if(condition[_i98]){_item13.Open=open[_i98];_item13.High=high[_i98];_item13.Low=low[_i98];_item13.Close=close[_i98];}}drawData[_i98]=_item13;}return result;};//叠加一个K线
|
|
11639
11705
|
this.DRAWOVERLAYKLINE=function(open,high,low,close){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWOVERLAYKLINE'};var count=Math.max(high.length,open.length,low.length,close.length);var kData=this.SymbolData.Data.Data;for(var i=0;i<count;++i){var item={Open:null,High:null,Low:null,Close:null};var kItem=kData[i];if(i<high.length&&i<open.length&&i<low.length&&i<close.length&&IFrameSplitOperator.IsNumber(open[i])&&IFrameSplitOperator.IsNumber(high[i])&&IFrameSplitOperator.IsNumber(low[i])&&IFrameSplitOperator.IsNumber(low[i])){item.Open=open[i];item.High=high[i];item.Low=low[i];item.Close=close[i];item.Date=kItem.Date;if(IFrameSplitOperator.IsNumber(kItem.Time))item.Time=kItem.Time;}drawData[i]=item;}return result;};/*
|
|
11640
11706
|
DRAWCOLORKLINE 绘制K线
|
|
11641
11707
|
用法:
|
|
@@ -11659,8 +11725,8 @@ this.DRAWOVERLAYKLINE=function(open,high,low,close){var drawData=[];var result={
|
|
|
11659
11725
|
}else if(bFirstPoint==true&&bSecondPont==false){if(!this.IsNumber(data[i]))continue;lineCache.End={ID:parseInt(i),Value:data[i]};//第2个点
|
|
11660
11726
|
//根据起始点和结束点 计算中间各个点的数据
|
|
11661
11727
|
var lineData=this.CalculateDrawLine(lineCache);//计算2个点的线上 其他点的数值
|
|
11662
|
-
for(var _j10 in lineData){var _item14=lineData[_j10];drawData[_item14.ID]=_item14.Value;}var start={ID:lineCache.End.ID,Value:lineCache.End.Value};lineCache={Start:start,End:{}};}}this.CalculateDrawDataExtendLine(drawData);}else{var _lineCache={Start:{},End:{},List:[]};for(var
|
|
11663
|
-
}else if(bFirstPoint==true&&bSecondPont==false){if(condition[
|
|
11728
|
+
for(var _j10 in lineData){var _item14=lineData[_j10];drawData[_item14.ID]=_item14.Value;}var start={ID:lineCache.End.ID,Value:lineCache.End.Value};lineCache={Start:start,End:{}};}}this.CalculateDrawDataExtendLine(drawData);}else{var _lineCache={Start:{},End:{},List:[]};for(var _i99 in condition){drawData[_i99]=null;if(bFirstPoint==false&&bSecondPont==false){if(condition[_i99]==null||!condition[_i99])continue;if(_i99>=data.length||!this.IsNumber(data[_i99]))continue;bFirstPoint=true;_lineCache.Start={ID:parseInt(_i99),Value:data[_i99]};//第1个点
|
|
11729
|
+
}else if(bFirstPoint==true&&bSecondPont==false){if(condition[_i99]==null||!condition[_i99])continue;if(_i99>=data.length||!this.IsNumber(data[_i99]))continue;_lineCache.End={ID:parseInt(_i99),Value:data[_i99]};//第2个点
|
|
11664
11730
|
//根据起始点和结束点 计算中间各个点的数据
|
|
11665
11731
|
var _lineData2=this.CalculateDrawLine(_lineCache);//计算2个点的线上 其他点的数值
|
|
11666
11732
|
for(var _j11 in _lineData2){var _item15=_lineData2[_j11];drawData[_item15.ID]=_item15.Value;}var _start={ID:_lineCache.End.ID,Value:_lineCache.End.Value};_lineCache={Start:_start,End:{}};}}this.CalculateDrawDataExtendLine(drawData);}}return result;};this.CalculateDrawDataExtendLine=function(drawData,maxCount){if(maxCount<0)return;var x2=null;var count=drawData.length;if(this.IsNumber(maxCount)&&maxCount<count)count=maxCount;for(var i=count-1;i>=0;--i){if(this.IsNumber(drawData[i])){x2=i;break;}}//y3=(y1-y2)*(x3-x1)/(x2-x1)
|
|
@@ -11870,8 +11936,8 @@ this.DRAWLASTBARNUMBER=function(data,value,dec,color){var drawItem={Value:null,T
|
|
|
11870
11936
|
this.TABLE_CELL=function(data,color,textAlign,bgColor){var text=null;if(IFrameSplitOperator.IsString(data)){text=data;}else if(IFrameSplitOperator.IsNonEmptyArray(data)){var precision=2;var lastValue=data[data.length-1];if(IFrameSplitOperator.IsNumber(lastValue))text=lastValue.toFixed(precision);else if(IFrameSplitOperator.IsString(lastValue))text=lastValue;}var cellItem={Text:text};if(color)cellItem.Color=color;if(bgColor)cellItem.BGColor=bgColor;if(IFrameSplitOperator.IsString(textAlign)){var strValue=textAlign.toLowerCase();//转小写
|
|
11871
11937
|
cellItem.TextAlign=strValue;}return cellItem;};this.TABLE_ROW=function(aryData){var aryCell=[];for(var i=0;i<aryData.length;++i){var item=aryData[i];aryCell.push(item);}return aryCell;};this.DRAWTABLE=function(aryData){var tableData=[];for(var i=0;i<aryData.length;++i){var item=aryData[i];tableData.push({AryCell:item});}return result={DrawData:{TableData:tableData},DrawType:'DRAW_SIMPLE_TABLE'};};//饼图
|
|
11872
11938
|
this.PIE_CELL=function(data,color,text,textColor,lineColor){var value=null;if(IFrameSplitOperator.IsNumber(data)){value=data;}else if(IFrameSplitOperator.IsString(data)){value=parseFloat(data);}else if(IFrameSplitOperator.IsNonEmptyArray(data)){var lastValue=data[data.length-1];if(IFrameSplitOperator.IsNumber(lastValue))value=lastValue;else if(IFrameSplitOperator.IsString(lastValue))value=parseFloat(lastValue);}var cellItem={Value:value,Color:color};if(text)cellItem.Text=text;if(textColor)cellItem.TextColor=textColor;if(lineColor)cellItem.LineColor=lineColor;return cellItem;};//0=Radius半径
|
|
11873
|
-
this.DRAWPIE=function(aryData){var radius=aryData[0];var aryCell=[];for(var i=1;i<aryData.length;++i){aryCell.push(aryData[i]);}return result={DrawData:{Data:aryCell,Radius:radius},DrawType:"DRAW_SIMPLE_PIE"};};this.RADAR_CELL=function(name,data,max,min){var cellItem={Name:name,Max:100,Min:0,Value:null};if(IFrameSplitOperator.IsNumber(data)){cellItem.Value=data;}else if(IFrameSplitOperator.IsString(data)){cellItem.Value=parseFloat(data);}else if(IFrameSplitOperator.IsNonEmptyArray(data)){var lastValue=data[data.length-1];if(IFrameSplitOperator.IsNumber(lastValue))cellItem.Value=lastValue;else if(IFrameSplitOperator.IsString(lastValue))cellItem.Value=parseFloat(lastValue);}if(IFrameSplitOperator.IsNumber(max))cellItem.Max=max;if(IFrameSplitOperator.IsNumber(min))cellItem.Min=min;return cellItem;};this.DRAWRADAR=function(args){var radius=args[0];var color=args[1];var aryIndex=[];var aryData=[];for(var i=2;i<args.length;++i){var item=args[i];aryIndex.push({Name:item.Name,Max:item.Max,Min:item.Min});aryData.push({Value:item.Value,Name:item.Name,Group:"Default"});}return result={DrawData:{Data:aryData,AryIndex:aryIndex,Radius:radius,AryArea:[{LineColor:color}]},DrawType:"DRAW_SIMPLE_RADAR"};};this.DRAWDOUGHNUT=function(aryData){var radius=aryData[0];var aryCell=[];for(var i=1;i<aryData.length;++i){aryCell.push(aryData[i]);}return result={DrawData:{Data:aryCell,Radius:radius,InnerRadius:radius/2},DrawType:"DRAW_SIMPLE_DOUGHNUT"};};}JSDraw.prototype.CalculateDrawLine=function(lineCache){lineCache.List=[];for(var
|
|
11874
|
-
if(lineCache.Start.Value>lineCache.End.Value){for(var
|
|
11939
|
+
this.DRAWPIE=function(aryData){var radius=aryData[0];var aryCell=[];for(var i=1;i<aryData.length;++i){aryCell.push(aryData[i]);}return result={DrawData:{Data:aryCell,Radius:radius},DrawType:"DRAW_SIMPLE_PIE"};};this.RADAR_CELL=function(name,data,max,min){var cellItem={Name:name,Max:100,Min:0,Value:null};if(IFrameSplitOperator.IsNumber(data)){cellItem.Value=data;}else if(IFrameSplitOperator.IsString(data)){cellItem.Value=parseFloat(data);}else if(IFrameSplitOperator.IsNonEmptyArray(data)){var lastValue=data[data.length-1];if(IFrameSplitOperator.IsNumber(lastValue))cellItem.Value=lastValue;else if(IFrameSplitOperator.IsString(lastValue))cellItem.Value=parseFloat(lastValue);}if(IFrameSplitOperator.IsNumber(max))cellItem.Max=max;if(IFrameSplitOperator.IsNumber(min))cellItem.Min=min;return cellItem;};this.DRAWRADAR=function(args){var radius=args[0];var color=args[1];var aryIndex=[];var aryData=[];for(var i=2;i<args.length;++i){var item=args[i];aryIndex.push({Name:item.Name,Max:item.Max,Min:item.Min});aryData.push({Value:item.Value,Name:item.Name,Group:"Default"});}return result={DrawData:{Data:aryData,AryIndex:aryIndex,Radius:radius,AryArea:[{LineColor:color}]},DrawType:"DRAW_SIMPLE_RADAR"};};this.DRAWDOUGHNUT=function(aryData){var radius=aryData[0];var aryCell=[];for(var i=1;i<aryData.length;++i){aryCell.push(aryData[i]);}return result={DrawData:{Data:aryCell,Radius:radius,InnerRadius:radius/2},DrawType:"DRAW_SIMPLE_DOUGHNUT"};};}JSDraw.prototype.CalculateDrawLine=function(lineCache){lineCache.List=[];for(var _i100=lineCache.Start.ID;_i100<=lineCache.End.ID;++_i100){lineCache.List.push(_i100);}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个点
|
|
11940
|
+
if(lineCache.Start.Value>lineCache.End.Value){for(var _i101=1;_i101<lineCache.List.length-1;++_i101){var value=height*(lineCache.List.length-1-_i101)/width+lineCache.End.Value;result.push({ID:lineCache.List[_i101],Value:value});}}else{for(var _i102=1;_i102<lineCache.List.length-1;++_i102){var value=height*_i102/width+lineCache.Start.Value;result.push({ID:lineCache.List[_i102],Value:value});}}result.push({ID:lineCache.End.ID,Value:lineCache.End.Value});//最后一个点
|
|
11875
11941
|
return result;};//是否有是有效的数字
|
|
11876
11942
|
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","DRAWLASTBARICON","DRAWLASTBARNUMBER","DRAWLASTBARTEXT","DRAWTABLE","DRAWPIE","DRAWRADAR","DRAWDOUGHNUT","DRAWFLAGTEXT"]);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
|
|
11877
11943
|
var DYNAINFO_ARGUMENT_ID={YCLOSE:3,OPEN:4,HIGH:5,LOW:6,CLOSE:7,VOL:8,AMOUNT:10,AMPLITUDE:13,//振幅
|
|
@@ -12028,12 +12094,12 @@ if(periodInfo.Period==0)hisData=dayData.Data;else hisData=dayData.GetPeriodData(
|
|
|
12028
12094
|
var result;if(curPeriodInfo.Period==periodInfo.Period){result=this.Data;}else{var hisData;if(this.IsApiPeriod){if(!this.PeriodData.has(periodName))return null;hisData=this.PeriodData.get(periodName);}else{if(ChartData.IsMinutePeriod(curPeriodInfo.Period,true)&&ChartData.IsDayPeriod(periodInfo.Period,true)){var dayData=this.PeriodData.get('DAY');//日线
|
|
12029
12095
|
if(periodInfo.Period==0)hisData=dayData;else hisData=dayData.GetPeriodData(periodInfo.Period);//日线周期
|
|
12030
12096
|
}else{var bindData=new ChartData();bindData.Data=this.SourceData.Data;bindData.Period=this.Period;bindData.Right=this.Right;if(ChartData.IsDayPeriod(periodInfo.Period,true)&&bindData.Right>0)//日线数据才复权
|
|
12031
|
-
{var rightData=bindData.GetRightData(bindData.Right);bindData.Data=rightData;}hisData=bindData.GetPeriodData(periodInfo.Period);}}var data=this.Data.ConverPeriod(hisData,this.Period,periodInfo.Period);var result=new ChartData();result.Data=data;}if(IFrameSplitOperator.IsPlusNumber(n)){var refResult=new ChartData();var data=result.GetRef(n);refResult.Data=data;result=refResult;}var upperSymbol=this.Symbol.toUpperCase();switch(valueName){case'C':case"CLOSE":return result.GetClose();case'O':case"OPEN":return result.GetOpen();case'H':case"HIGH":return result.GetHigh();case'L':case"LOW":return result.GetLow();case'AMO':case"AMOUNT":return result.GetAmount();case'V':case"VOL":return result.GetVol(MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol));case"VOLINSTK":return result.GetPosition();default:return null;}};this.GetCurrBarsCount=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var
|
|
12097
|
+
{var rightData=bindData.GetRightData(bindData.Right);bindData.Data=rightData;}hisData=bindData.GetPeriodData(periodInfo.Period);}}var data=this.Data.ConverPeriod(hisData,this.Period,periodInfo.Period);var result=new ChartData();result.Data=data;}if(IFrameSplitOperator.IsPlusNumber(n)){var refResult=new ChartData();var data=result.GetRef(n);refResult.Data=data;result=refResult;}var upperSymbol=this.Symbol.toUpperCase();switch(valueName){case'C':case"CLOSE":return result.GetClose();case'O':case"OPEN":return result.GetOpen();case'H':case"HIGH":return result.GetHigh();case'L':case"LOW":return result.GetLow();case'AMO':case"AMOUNT":return result.GetAmount();case'V':case"VOL":return result.GetVol(MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol));case"VOLINSTK":return result.GetPosition();default:return null;}};this.GetCurrBarsCount=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i103=lCount-1;_i103>=0;--_i103){result.push(_i103+1);}//数据从0开始
|
|
12032
12098
|
return result;};//BARPOS 返回从第一根K线开始到当前的周期数。
|
|
12033
12099
|
//注:
|
|
12034
12100
|
//1、BARPOS返回本地已有的K线根数,从本机上存在的数据开始算起。
|
|
12035
12101
|
//2、本机已有的第一根K线上返回值为1。
|
|
12036
|
-
this.GetBarPos=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var
|
|
12102
|
+
this.GetBarPos=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i104=0;_i104<lCount;++_i104){result.push(_i104+1);}return result;};this.GetTotalTradeMinuteCount=function(){var data=g_MinuteCoordinateData.GetCoordinateData(this.Symbol);if(data&&data.Count>0)return data.Count-1;return 242;};this.GetTotalBarsCount=function(){var lCount=this.Data.Data.length;return lCount;};this.GetIsLastBar=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var _i105=0;_i105<lCount;++_i105){if(_i105==lCount-1)result.push(1);else result.push(0);}return result;};//BARSTATUS返回数据位置信息,1表示第一根K线,2表示最后一个数据,0表示中间位置.
|
|
12037
12103
|
//例如:BARSTATUS=2表示当天是该数据的最后一个周期.
|
|
12038
12104
|
this.GetBarStatus=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var lCount=this.Data.Data.length;for(var i=0;i<lCount;++i){if(i==0)result[i]=1;else if(i==lCount-1)result[i]=2;else result[i]=0;}return result;};//求真实波幅, (最高-最低),(最高-昨收),(最低-昨收)三者绝对值中的最大值.
|
|
12039
12105
|
//用法:
|
|
@@ -12054,7 +12120,7 @@ case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY://卖出信息-偿还量
|
|
|
12054
12120
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET://卖出信息-融券净卖出
|
|
12055
12121
|
fieldList.push("margin.sell");break;}//请求数据
|
|
12056
12122
|
JSNetwork.HttpRequest({url:this.StockHistoryDayApiUrl,data:{"field":fieldList,"symbol":[this.Symbol],"orderfield":"date"},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvMarginData(recvData,jobID);self.Execute.RunNextJob();}});};this.RecvMarginData=function(data,jobID){JSConsole.Complier.Log(data);if(!data.stock||data.stock.length!=1)return;var stock=data.stock[0];var aryData=new Array();var aryData2=[],aryData3=[],aryData4=[];//其他3个数据
|
|
12057
|
-
for(var
|
|
12123
|
+
for(var _i106 in stock.stockday){var item=stock.stockday[_i106];var marginData=item.margin;if(!marginData)continue;var indexData=new SingleData();indexData.Date=item.date;switch(jobID){case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE:if(!this.IsNumber(marginData.balance))continue;indexData.Value=marginData.balance;//融资融券余额
|
|
12058
12124
|
aryData.push(indexData);break;case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE:if(!this.IsNumber(marginData.rate))continue;indexData.Value=marginData.rate;//融资占比
|
|
12059
12125
|
aryData.push(indexData);break;case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE://买入信息-融资余额
|
|
12060
12126
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT://买入信息-买入额
|
|
@@ -12064,9 +12130,9 @@ var buyData=marginData.buy;if(!buyData)continue;if(!this.IsNumber(buyData.balanc
|
|
|
12064
12130
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME://卖出信息-卖出量
|
|
12065
12131
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY://卖出信息-偿还量
|
|
12066
12132
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET://卖出信息-融券净卖出
|
|
12067
|
-
var sellData=marginData.sell;if(!sellData)continue;if(!this.IsNumber(sellData.balance)||!this.IsNumber(sellData.volume)||!this.IsNumber(sellData.repay)||!this.IsNumber(sellData.net))continue;indexData.Value=buyData.balance;var indexData2=new SingleData();indexData2.Date=item.date;indexData2.Value=buyData.volume;var indexData3=new SingleData();indexData3.Date=item.date;indexData3.Value=buyData.repay;var indexData4=new SingleData();indexData4.Date=item.date;indexData4.Value=buyData.net;aryData.push(indexData);aryData2.push(indexData2);aryData3.push(indexData3);aryData4.push(indexData4);break;default:continue;}}var allData=[];if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE){allData.push({JobID:jobID,Data:aryData});}else if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_REPAY||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_NET){allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE,Data:aryData});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT,Data:aryData2});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_REPAY,Data:aryData3});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_NET,Data:aryData4});}else if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET){allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_BALANCE,Data:aryData});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME,Data:aryData2});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY,Data:aryData3});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET,Data:aryData4});}for(var
|
|
12133
|
+
var sellData=marginData.sell;if(!sellData)continue;if(!this.IsNumber(sellData.balance)||!this.IsNumber(sellData.volume)||!this.IsNumber(sellData.repay)||!this.IsNumber(sellData.net))continue;indexData.Value=buyData.balance;var indexData2=new SingleData();indexData2.Date=item.date;indexData2.Value=buyData.volume;var indexData3=new SingleData();indexData3.Date=item.date;indexData3.Value=buyData.repay;var indexData4=new SingleData();indexData4.Date=item.date;indexData4.Value=buyData.net;aryData.push(indexData);aryData2.push(indexData2);aryData3.push(indexData3);aryData4.push(indexData4);break;default:continue;}}var allData=[];if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE){allData.push({JobID:jobID,Data:aryData});}else if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_REPAY||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_NET){allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE,Data:aryData});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT,Data:aryData2});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_REPAY,Data:aryData3});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_NET,Data:aryData4});}else if(jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_BALANCE||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY||jobID===JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET){allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_BALANCE,Data:aryData});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME,Data:aryData2});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY,Data:aryData3});allData.push({JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET,Data:aryData4});}for(var _i107 in allData){var aryFixedData=this.SourceData.GetFittingData(allData[_i107].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
|
|
12068
12134
|
if(bindData.Period>0)//周期数据
|
|
12069
|
-
{var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data=bindData.GetValue();this.MarginData.set(allData[
|
|
12135
|
+
{var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data=bindData.GetValue();this.MarginData.set(allData[_i107].JobID,_data);}};this.GetNewsAnalysisCacheData=function(id,node){var jobID=JS_EXECUTE_JOB_ID.GetNewsAnalysisID(id);if(!jobID)this.Execute.ThrowUnexpectedNode(node,'不支持NEWS('+id+')');if(this.NewsAnalysisData.has(jobID))return this.NewsAnalysisData.get(jobID);return[];};this.GetHKToSHSZData=function(job){var args=job.Args;var code=this.Symbol;if(args.length>0){var item=args[0];if(item.Type==Syntax.Literal){code=item.Value;}else if(item.Type==Syntax.Identifier)//变量 !!只支持默认的变量值
|
|
12070
12136
|
{var isFind=false;for(var j in this.Arguments){var argItem=this.Arguments[j];if(argItem.Name==item.Name){code=argItem.Value;isFind=true;break;}}if(!isFind){var token=job.Token;this.Execute.ErrorHandler.ThrowError(token.Index,token.Line,0,'HK2SHSZ() Error: can\'t read '+item.Name);}}}job.Symbol=code;if(code==1||code==2||code==3)//下载全市场数据
|
|
12071
12137
|
this.GetHKToSHSZMarketData(code,job);else this.GetHKToSHSZStockData(code,job);//下载个股数据
|
|
12072
12138
|
};this.GetHKToSHSZStockData=function(symbol,job){if(this.HKToSHSZData.has(symbol))return this.Execute.RunNextJob();var upperSymbol=symbol.toLowerCase();//代码小写
|
|
@@ -12079,9 +12145,9 @@ if(bindData.Period>0)//周期数据
|
|
|
12079
12145
|
JSNetwork.HttpRequest({url:url,data:{"symbol":this.Symbol,'daycount':this.MaxRequestMinuteDayCount},type:"post",dataType:"json",async:true,success:function success(recvData){self.RecvMulitMinuteHKToSHSZData(recvData,job);self.Execute.RunNextJob();}});}else{//请求数据
|
|
12080
12146
|
JSNetwork.HttpRequest({url:url,type:"get",dataType:"json",async:true,success:function success(recvData){if(dataType==0)self.RecvHKToSHSZData(recvData,job);else if(dataType==1)self.RecvMinuteHKToSHSZData(recvData,job);self.Execute.RunNextJob();}});}};this.RecvMinuteHKToSHSZData=function(data,job){var arySHSZData=[],arySHData=[],arySZData=[];if(this.IsBeforeData){for(i in this.SourceData.Data){var item=this.SourceData.Data[i];if(item.Before){arySHSZData.push(null);arySHData.push(null);arySZData.push(null);}else{break;}}for(var i=0;i<data.time.length;++i){var time=data.time[i];if(time===925)continue;var SHValue=data.hk2sh[i];var SZValue=data.hk2sz[i];var total=SHValue+SZValue;arySHSZData.push(total);arySHData.push(SHValue);arySZData.push(SZValue);}}else{for(var i=0;i<data.time.length;++i){var time=data.time[i];var SHValue=data.hk2sh[i];var SZValue=data.hk2sz[i];var total=SHValue+SZValue;arySHSZData.push(total);arySHData.push(SHValue);arySZData.push(SZValue);}}var allData=[{Data:arySHSZData,ID:1},{Data:arySHData,ID:2},{Data:arySZData,ID:3}];for(var i in allData){var item=allData[i];this.HKToSHSZData.set(item.ID,item.Data);}};this.RecvHKToSHSZData=function(data,job){var arySHSZData=[],arySHData=[],arySZData=[];for(var i=0;i<data.date.length;++i){var date=data.date[i];var SHValue=data.hk2sh[i]*1000000;//单位是百万
|
|
12081
12147
|
var SZValue=data.hk2sz[i]*1000000;//单位是百万
|
|
12082
|
-
var total=SHValue+SZValue;var itemSHSZData=new SingleData();itemSHSZData.Date=date;itemSHSZData.Value=total;var itemSHData=new SingleData();itemSHData.Date=date;itemSHData.Value=SHValue;var itemSZData=new SingleData();itemSZData.Date=date;itemSZData.Value=SZValue;arySHSZData.push(itemSHSZData);arySHData.push(itemSHData);arySZData.push(itemSZData);}var allData=[{Data:arySHSZData,ID:1},{Data:arySHData,ID:2},{Data:arySZData,ID:3}];for(var
|
|
12148
|
+
var total=SHValue+SZValue;var itemSHSZData=new SingleData();itemSHSZData.Date=date;itemSHSZData.Value=total;var itemSHData=new SingleData();itemSHData.Date=date;itemSHData.Value=SHValue;var itemSZData=new SingleData();itemSZData.Date=date;itemSZData.Value=SZValue;arySHSZData.push(itemSHSZData);arySHData.push(itemSHData);arySZData.push(itemSZData);}var allData=[{Data:arySHSZData,ID:1},{Data:arySHData,ID:2},{Data:arySZData,ID:3}];for(var _i108 in allData){var aryFixedData=this.Data.GetFittingData(allData[_i108].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
|
|
12083
12149
|
if(bindData.Period>0)//周期数据
|
|
12084
|
-
{var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data2=bindData.GetValue();this.HKToSHSZData.set(allData[
|
|
12150
|
+
{var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data2=bindData.GetValue();this.HKToSHSZData.set(allData[_i108].ID,_data2);}};this.RecvMulitMinuteHKToSHSZData=function(data,job)//多日分时图北上资金
|
|
12085
12151
|
{if(!data.data||data.data.length<=0)return;var arySHSZData=[],arySHData=[],arySZData=[];for(var i=0,j=0;i<this.Data.Data.length&&j<data.data.length;){arySHSZData[i]=null;arySHData[i]=null;arySZData[i]=null;var item=this.Data.Data[i];var dateTime=item.DateTime;//日期加时间
|
|
12086
12152
|
if(!dateTime){++i;continue;}var aryValue=dateTime.split(' ');if(aryValue.length!=2){++i;continue;}var date=parseInt(aryValue[0]);var day=data.data[j];if(!day.minute||day.minute.length<=0){++j;continue;}if(day.date>date){++i;continue;}else if(day.date<date){++j;continue;}for(var k in day.minute){var timeItem=day.minute[k];var SHValue=timeItem[1];var SZValue=timeItem[2];var total=SHValue+SZValue;arySHSZData[i]=total;arySHData[i]=SHValue;arySZData[i]=SZValue;++i;}++j;}var allData=[{Data:arySHSZData,ID:1},{Data:arySHData,ID:2},{Data:arySZData,ID:3}];for(var i in allData){var item=allData[i];this.HKToSHSZData.set(item.ID,item.Data);}};//北上资金函数
|
|
12087
12153
|
this.GetHKToSHSZCacheData=function(code,node){//if (!this.HKToSHSZData.has(code)) this.Execute.ThrowUnexpectedNode(node,`不支持HK2SHSZ(${code})`);
|
|
@@ -12217,8 +12283,8 @@ if(list[i].length>up)item.Up=list[i][up];if(list[i].length>down)item.Down=list[i
|
|
|
12217
12283
|
aryDayData.push(item);}return aryDayData;};this.JsonDataToMinuteHistoryData=function(data){var list=data.data;var aryDayData=new Array();var date=0,yclose=1,open=2,high=3,low=4,close=5,vol=6,amount=7,time=8;for(var i=0;i<list.length;++i){var _item16=new HistoryData();_item16.Date=list[i][date];_item16.Open=list[i][open];_item16.YClose=list[i][yclose];_item16.Close=list[i][close];_item16.High=list[i][high];_item16.Low=list[i][low];_item16.Vol=list[i][vol];//原始单位股
|
|
12218
12284
|
_item16.Amount=list[i][amount];_item16.Time=list[i][time];// if (isNaN(item.Open) || item.Open<=0) continue; //停牌的数据剔除
|
|
12219
12285
|
aryDayData.push(_item16);}// 无效数据处理
|
|
12220
|
-
for(var
|
|
12221
|
-
{for(var _j12=
|
|
12286
|
+
for(var _i109=0;_i109<aryDayData.length;++_i109){var minData=aryDayData[_i109];if(minData==null)coninue;if(isNaN(minData.Open)||minData.Open<=0||isNaN(minData.High)||minData.High<=0||isNaN(minData.Low)||minData.Low<=0||isNaN(minData.Close)||minData.Close<=0||isNaN(minData.YClose)||minData.YClose<=0){if(_i109==0){if(minData.YClose>0){minData.Open=minData.YClose;minData.High=minData.YClose;minData.Low=minData.YClose;minData.Close=minData.YClose;}}else// 用前一个有效数据填充
|
|
12287
|
+
{for(var _j12=_i109-1;_j12>=0;--_j12){var minData2=aryDayData[_j12];if(minData2==null)coninue;if(minData2.Open>0&&minData2.High>0&&minData2.Low>0&&minData2.Close>0){if(minData.YClose<=0)minData.YClose=minData2.Close;minData.Open=minData2.Open;minData.High=minData2.High;minData.Low=minData2.Low;minData.Close=minData2.Close;break;}}}}}return aryDayData;};//API 返回数据 转化为array[]
|
|
12222
12288
|
this.JsonDataToMinuteData=function(data){var aryMinuteData=new Array();for(var i in data.stock[0].minute){var jsData=data.stock[0].minute[i];var item=new MinuteData();item.Close=jsData.price;item.Open=jsData.open;item.High=jsData.high;item.Low=jsData.low;item.Vol=jsData.vol;//股
|
|
12223
12289
|
item.Amount=jsData.amount;if(i==0)//第1个数据 写死9:25
|
|
12224
12290
|
item.DateTime=data.stock[0].date.toString()+" 0925";else item.DateTime=data.stock[0].date.toString()+" "+jsData.time.toString();item.Date=data.stock[0].date;item.Time=jsData.time;item.Increase=jsData.increase;item.Risefall=jsData.risefall;item.AvPrice=jsData.avprice;aryMinuteData[i]=item;}return aryMinuteData;};//多日日线数据API 转化成array[];
|
|
@@ -12236,23 +12302,23 @@ if(item.Open<=0)item.Open=null;if(item.Close<=0)item.Close=null;if(item.AvPrice<
|
|
|
12236
12302
|
this.CODELIKE=function(value){if(this.Symbol&&this.Symbol.indexOf(value)==0)return 1;return 0;};this.NAMELIKE=function(value){if(this.Name&&this.Name.indexOf(value)==0)return 1;return 0;};/*
|
|
12237
12303
|
SETCODE 市场类型
|
|
12238
12304
|
0:深圳 1:上海,47:中金所期货 28:郑州商品 29:大连商品 30:上海商品,27:香港指数 31:香港主板,48:香港创业板...
|
|
12239
|
-
*/this.SETCODE=function(){if(this.Symbol.indexOf('.sh'))return 1;if(this.Symbol.indexOf('.sz'))return 0;return 0;};this.GetSymbol=function(){return this.Symbol;};this.GetName=function(){return this.Name;};this.DATE=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var
|
|
12305
|
+
*/this.SETCODE=function(){if(this.Symbol.indexOf('.sh'))return 1;if(this.Symbol.indexOf('.sz'))return 0;return 0;};this.GetSymbol=function(){return this.Symbol;};this.GetName=function(){return this.Name;};this.DATE=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i110 in this.Data.Data){var item=this.Data.Data[_i110];result[_i110]=item.Date-19000000;}return result;};this.YEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i111 in this.Data.Data){var item=this.Data.Data[_i111];if(this.IsNumber(item.Date))result[_i111]=parseInt(item.Date/10000);else result[_i111]=null;}return result;};this.DAY=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i112 in this.Data.Data){var item=this.Data.Data[_i112];if(this.IsNumber(item.Date))result[_i112]=parseInt(item.Date%100);else result[_i112]=null;}return result;};this.MONTH=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i113 in this.Data.Data){var item=this.Data.Data[_i113];if(this.IsNumber(item.Date))result[_i113]=parseInt(item.Date%10000/100);else result[_i113]=null;}return result;};this.TIME=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i114=0;_i114<this.Data.Data.length;++_i114){var item=this.Data.Data[_i114];if(this.IsNumber(item.Time))result[_i114]=item.Time;else result[_i114]=0;}return result;};/*
|
|
12240
12306
|
取得该周期的时分秒,适用于日线以下周期.
|
|
12241
12307
|
用法: TIME2
|
|
12242
12308
|
函数返回有效值范围为(000000-235959)
|
|
12243
|
-
*/this.TIME2=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var
|
|
12244
|
-
this.WEEK=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var tempDate=new Date();for(var
|
|
12309
|
+
*/this.TIME2=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i115=0;_i115<this.Data.Data.length;++_i115){var item=this.Data.Data[_i115];if(this.IsNumber(item.Time))result[_i115]=item.Time*100;else result[_i115]=0;}return result;};this.DateTime=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var isKLineMinute=ChartData.IsMinutePeriod(this.Period,true);for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];if(isKLineMinute){result[i]=item.Date*10000+item.Time;}else{result[i]=item.Date;}}return result;};//星期 1-7
|
|
12310
|
+
this.WEEK=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var tempDate=new Date();for(var _i116 in this.Data.Data){var item=this.Data.Data[_i116];result[_i116]=null;if(!this.IsNumber(item.Date))continue;var year=parseInt(item.Date/10000);var month=parseInt(item.Date%10000/100);var day=item.Date%100;tempDate.setFullYear(year,month-1,day);result[_i116]=tempDate.getDay();}return result;};/*
|
|
12245
12311
|
取得该周期的日期离今天的天数.
|
|
12246
12312
|
用法: DAYSTOTODAY
|
|
12247
|
-
*/this.DAYSTOTODAY=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var nowDate=new Date();var endDate=new Date(nowDate.getFullYear(),nowDate.getMonth(),nowDate.getDate());for(var
|
|
12313
|
+
*/this.DAYSTOTODAY=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var nowDate=new Date();var endDate=new Date(nowDate.getFullYear(),nowDate.getMonth(),nowDate.getDate());for(var _i117=0;_i117<this.Data.Data.length;++_i117){var item=this.Data.Data[_i117];result[_i117]=null;if(!this.IsNumber(item.Date))continue;var year=parseInt(item.Date/10000);var month=parseInt(item.Date%10000/100);var day=item.Date%100;var beginDate=new Date(year,month-1,day);var diffDays=Math.ceil((endDate-beginDate)/(24*60*60*1000));result[_i117]=diffDays;}return result;};/*
|
|
12248
12314
|
取得该周是年内第几个周.
|
|
12249
12315
|
用法:WEEKOFYEAR
|
|
12250
|
-
*/this.WEEKOFYEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var
|
|
12316
|
+
*/this.WEEKOFYEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i118 in this.Data.Data){var item=this.Data.Data[_i118];result[_i118]=null;if(!this.IsNumber(item.Date))continue;var year=parseInt(item.Date/10000);var month=parseInt(item.Date%10000/100);var day=item.Date%100;var endDate=new Date(year,month-1,day);var beginDate=new Date(year,0,1);var diffDays=Math.ceil((endDate-beginDate)/(24*60*60*1000));diffDays+=beginDate.getDay()+1-1;var week=Math.ceil(diffDays/7);var value=week;result[_i118]=value;}return result;};this.GetYearWeek=function(endDate){var beginDate=new Date(endDate.getFullYear(),0,1);//星期从0-6,0代表星期天,6代表星期六
|
|
12251
12317
|
var endWeek=endDate.getDay();if(endWeek==0)endWeek=7;var beginWeek=beginDate.getDay();if(beginWeek==0)beginWeek=7;//计算两个日期的天数差
|
|
12252
|
-
var millisDiff=endDate.getTime()-beginDate.getTime();var dayDiff=Math.floor((millisDiff+(beginWeek-endWeek)*(24*60*60*1000))/86400000);return Math.ceil(dayDiff/7)+1;};this.REFDATE=function(data,date){var result=null;var findDate=null;if(Array.isArray(date)){if(date.length>0)findDate=date[date.length-1];}else if(this.IsNumber(date)){findDate=date;}if(findDate==null)return null;if(findDate<5000000)findDate+=19000000;var index=null;for(var
|
|
12253
|
-
{if(this.Data.Data[
|
|
12318
|
+
var millisDiff=endDate.getTime()-beginDate.getTime();var dayDiff=Math.floor((millisDiff+(beginWeek-endWeek)*(24*60*60*1000))/86400000);return Math.ceil(dayDiff/7)+1;};this.REFDATE=function(data,date){var result=null;var findDate=null;if(Array.isArray(date)){if(date.length>0)findDate=date[date.length-1];}else if(this.IsNumber(date)){findDate=date;}if(findDate==null)return null;if(findDate<5000000)findDate+=19000000;var index=null;for(var _i119 in this.Data.Data)//查找日期对应的索引
|
|
12319
|
+
{if(this.Data.Data[_i119].Date==findDate){index=parseInt(_i119);break;}}if(index==null||index>=data.length)return null;return data[index];};//用法:结果从0到11,依次分别是1/5/15/30/60分钟,日/周/月,多分钟,多日,季,年
|
|
12254
12320
|
this.PERIOD=function(){//Period周期 0=日线 1=周线 2=月线 3=年线 9=季线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟
|
|
12255
|
-
var PERIOD_MAP=[5,6,7,11,0,1,2,3,4,5,9];if(this.Period>=0&&this.Period<=PERIOD_MAP.length-1)return PERIOD_MAP[this.Period];return this.Period;};this.GetDrawNull=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var
|
|
12321
|
+
var PERIOD_MAP=[5,6,7,11,0,1,2,3,4,5,9];if(this.Period>=0&&this.Period<=PERIOD_MAP.length-1)return PERIOD_MAP[this.Period];return this.Period;};this.GetDrawNull=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i120 in this.Data.Data){result[_i120]=null;}return result;};this.HOUR=function(){var result=[];if(!this.Data||!this.Data.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return result;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];result[i]=0;if(IFrameSplitOperator.IsNumber(item.Time))result[i]=parseInt(item.Time/100);}return result;};this.MINUTE=function(){var result=[];if(!this.Data||!this.Data.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return result;for(var i=0;i<this.Data.Data.length;++i){var item=this.Data.Data[i];result[i]=0;if(IFrameSplitOperator.IsNumber(item.Time))result[i]=item.Time%100;}return result;};/*
|
|
12256
12322
|
飞狐函数 SYSPARAM
|
|
12257
12323
|
SYSPARAM(1)画面上光标位置(K线序号)
|
|
12258
12324
|
SYSPARAM(2)主图可见K线最初位置
|
|
@@ -12261,7 +12327,7 @@ var PERIOD_MAP=[5,6,7,11,0,1,2,3,4,5,9];if(this.Period>=0&&this.Period<=PERIOD_M
|
|
|
12261
12327
|
SYSPARAM(5)主图可见K线最低价,注意:该函数仅K线图形分析且打开十字光标时有效,否则返回值不确定
|
|
12262
12328
|
SYSPARAM(6)画面上光标数值,注意:该函数仅K线图形分析且打开十字光标时有效,否则返回值不确定
|
|
12263
12329
|
*/this.SysParam=function(id,jsExec){if(!this.DrawInfo)return[];if(id==2){jsExec.IsUsePageData=true;if(IFrameSplitOperator.IsNumber(this.DrawInfo.Start))return this.DrawInfo.Start+1;}else if(id==3){jsExec.IsUsePageData=true;if(IFrameSplitOperator.IsNumber(this.DrawInfo.End))return this.DrawInfo.End+1;}else if(id==4){jsExec.IsUsePageData=true;if(!IFrameSplitOperator.IsNumber(this.DrawInfo.End)||!IFrameSplitOperator.IsNumber(this.DrawInfo.Start))return[];if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return[];var high=null;for(var i=this.DrawInfo.Start;i<=this.DrawInfo.End&&i<this.Data.Data.length;++i){var item=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(item.High))continue;if(high==null)high=item.High;else if(high<item.High)high=item.High;}return high;}else if(id==5){jsExec.IsUsePageData=true;if(!IFrameSplitOperator.IsNumber(this.DrawInfo.End)||!IFrameSplitOperator.IsNumber(this.DrawInfo.Start))return[];if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return[];var low=null;for(var i=this.DrawInfo.Start;i<=this.DrawInfo.End&&i<this.Data.Data.length;++i){var item=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(item.Low))continue;if(low==null)low=item.Low;else if(low>item.Low)low=item.Low;}return low;}return[];};}//是否有是有效的数字
|
|
12264
|
-
JSSymbolData.prototype.IsNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return true;};JSSymbolData.prototype.IsDivideNumber=function(value){if(value==null)return false;if(isNaN(value))return false;if(value==0)return false;return true;};JSSymbolData.prototype.JsonDataToFinance=function(data){var financeData;for(var
|
|
12330
|
+
JSSymbolData.prototype.IsNumber=function(value){if(value==null)return false;if(isNaN(value))return false;return true;};JSSymbolData.prototype.IsDivideNumber=function(value){if(value==null)return false;if(isNaN(value))return false;if(value==0)return false;return true;};JSSymbolData.prototype.JsonDataToFinance=function(data){var financeData;for(var _i121=1;_i121<=4;++_i121){switch(_i121){case 1:var finance=data.finance1;var announcement=data.announcement1;break;case 2:var finance=data.finance2;var announcement=data.announcement2;break;case 3:var finance=data.finance3;var announcement=data.announcement3;break;case 4:var finance=data.finance4;var announcement=data.announcement4;break;default:break;}if(!finance||!announcement||!this.IsNumber(announcement.year)||!this.IsNumber(announcement.quarter))continue;if(financeData)//如果存在1天公布多个报告期数据 只取最新的一个公告期数据
|
|
12265
12331
|
{if(financeData.Announcement.year<announcement.year)financeData={Date:data.date,Finance:finance,Announcement:announcement};}else{financeData={Date:data.date,Finance:finance,Announcement:announcement};}}return financeData;};var JS_EXECUTE_DEBUG_LOG=false;var JS_EXECUTE_JOB_ID={JOB_DOWNLOAD_SYMBOL_DATA:1,//下载股票的K线数据
|
|
12266
12332
|
JOB_DOWNLOAD_INDEX_DATA:2,//下载大盘的K线数据
|
|
12267
12333
|
JOB_DOWNLOAD_SYMBOL_LATEST_DATA:3,//最新的股票行情数据
|
|
@@ -12441,8 +12507,8 @@ this.ConstVarTable=new _map2.default([//个股数据
|
|
|
12441
12507
|
this.UpdateUICallback=null;//回调
|
|
12442
12508
|
this.CallbackParam=null;this.IsSectionMode=false;if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam){this.CallbackParam=option.CallbackParam;if(this.CallbackParam.HQChart)this.GetEventCallback=function(id){return _this54.CallbackParam.HQChart.GetEventCallback(id);};}if(option.Arguments)this.Arguments=option.Arguments;if(option.IsSectionMode)this.IsSectionMode=option.IsSectionMode;if(option.Self)this.IndexCtrl=option.Self;//调试模式信息
|
|
12443
12509
|
if(IFrameSplitOperator.IsNumber(option.Debug))this.Debug=option.Debug;if(option.DebugFilter)this.DebugFilter=option.DebugFilter;}this.Execute=function(){this.OutVarTable=[];this.VarTable=new _map2.default();this.VarDrawTable=new _map2.default();//绘图变量表
|
|
12444
|
-
JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var
|
|
12445
|
-
{var _item17=this.Arguments[
|
|
12510
|
+
JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var _i122 in this.Arguments)//预定义的变量
|
|
12511
|
+
{var _item17=this.Arguments[_i122];this.VarTable.set(_item17.Name,_item17.Value);}this.RunNextJob();};this.RunNextJob=function(){if(this.JobList.length<=0)return;JSConsole.Complier.Log('[JSExecute::Execute] JobList',this.JobList);var jobItem=this.JobList.shift();switch(jobItem.ID){case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_DATA:return this.SymbolData.GetSymbolData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_PERIOD_DATA:return this.SymbolData.GetSymbolPeriodData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_DATA:return this.SymbolData.GetIndexData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_LATEST_INDEX_DATA:return this.SymbolData.GetLatestIndexData();case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_INDEX_INCREASE_DATA:return this.SymbolData.GetIndexIncreaseData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_LATEST_DATA:return this.SymbolData.GetLatestData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VOLR_DATA://量比
|
|
12446
12512
|
return this.SymbolData.GetVolRateData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_OTHER_SYMBOL_DATA://指定股票数据
|
|
12447
12513
|
return this.SymbolData.GetOtherSymbolData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BALANCE:case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE:case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE://买入信息-融资余额
|
|
12448
12514
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT://买入信息-买入额
|
|
@@ -12474,7 +12540,7 @@ case'INDEXA':case'INDEXC':case'INDEXH':case'INDEXH':case'INDEXO':case'INDEXV':ca
|
|
|
12474
12540
|
this.ReadVariable=function(name,node){if(this.ConstVarTable.has(name)){var data=this.ConstVarTable.get(name);if(data==null)//动态加载,用到再加载
|
|
12475
12541
|
{data=this.ReadSymbolData(name,node);this.ConstVarTable.set(name,data);}return data;}if(g_JSComplierResource.IsCustomVariant(name))return this.ReadCustomVariant(name,node);//读取自定义变量
|
|
12476
12542
|
if(this.VarTable.has(name))return this.VarTable.get(name);if(name.indexOf('#')>0){var aryPeriod=name.split('#');return this.SymbolData.GetSymbolPeriodCacheData(aryPeriod[0],aryPeriod[1]);}if(name.indexOf("COLOR")==0){var colorValue=JSComplier.ColorVarToRGB(name);if(colorValue)return colorValue;}this.ThrowUnexpectedNode(node,'变量'+name+'不存在',name);return null;};this.ReadMemberVariable=function(node){var obj=node.Object;var member=node.Property;var maiObj=void 0;if(obj.Type==Syntax.BinaryExpression||obj.Type==Syntax.LogicalExpression)maiObj=this.VisitBinaryExpression(obj);else if(obj.Type==Syntax.CallExpression)maiObj=this.VisitCallExpression(obj);else maiObj=this.GetNodeValue(obj);if(!maiObj)return null;var value=maiObj[member.Name];if(value)return value;return null;};//单数据转成数组 个数和历史数据一致
|
|
12477
|
-
this.SingleDataToArrayData=function(value){var count=this.SymbolData.Data.Data.length;var result=[];for(var
|
|
12543
|
+
this.SingleDataToArrayData=function(value){var count=this.SymbolData.Data.Data.length;var result=[];for(var _i123=0;_i123<count;++_i123){result[_i123]=value;}return result;};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i124=0;_i124<this.AST.Body.length;++_i124){var _item18=this.AST.Body[_i124];this.RunASTNode(_item18,_i124);if(this.Interrupt&&this.Interrupt.Exit){JSConsole.Complier.Log('[JSExecute::RunAST] Interrupt',this.Interrupt);//中断退出
|
|
12478
12544
|
break;}}JSConsole.Complier.Log('[JSExecute::RunAST]',this.VarTable);return this.OutVarTable;};this.RunASTNode=function(item,lineID){this.VisitNode(item);var i=lineID;//输出变量
|
|
12479
12545
|
if(item.Type==Syntax.ExpressionStatement&&item.Expression){if(item.Expression.Type==Syntax.AssignmentExpression){if(item.Expression.Operator==':'&&item.Expression.Left){var assignmentItem=item.Expression;var _varName=assignmentItem.Left.Name;var _outVar=this.VarTable.get(_varName);if(this.VarDrawTable.has(_varName))//绘图函数赋值
|
|
12480
12546
|
{var draw=this.VarDrawTable.get(_varName);this.OutVarTable.push({Name:draw.Name,Draw:draw,Type:1});}else{var type=0;if(_outVar&&(typeof _outVar==='undefined'?'undefined':(0,_typeof3.default)(_outVar))=='object'&&_outVar.__Type__=='Object'){type=1000;}else if(!this.IsSectionMode&&!Array.isArray(_outVar)){if(typeof _outVar=='string'){var floatValue=parseFloat(_outVar);if(IFrameSplitOperator.IsNumber(floatValue)){_outVar=this.SingleDataToArrayData(floatValue);}else{_outVar=this.SingleDataToArrayData(_outVar);type=1001;}}else _outVar=this.SingleDataToArrayData(_outVar);}this.OutVarTable.push({Name:_varName,Data:_outVar,Type:type});}}}else if(item.Expression.Type==Syntax.CallExpression){var callItem=item.Expression;if(this.Draw.IsDrawFunction(callItem.Callee.Name)){var _draw=callItem.Draw;_draw.Name=callItem.Callee.Name;this.OutVarTable.push({Name:_draw.Name,Draw:_draw,Type:1});}else if(callItem.Callee.Name==="IFC"&&callItem.Draw){var _draw2=callItem.Draw;_draw2.Name=_draw2.DrawType;this.OutVarTable.push({Name:_draw2.Name,Draw:_draw2,Type:1});}else{var _outVar2=callItem.Out;varName='__temp_c_'+callItem.Callee.Name+'_'+i+'__';var type=0;if(!Array.isArray(_outVar2))_outVar2=this.SingleDataToArrayData(_outVar2);this.OutVarTable.push({Name:varName,Data:_outVar2,Type:type,NoneName:true});}}else if(item.Expression.Type==Syntax.Identifier){var _varName2=item.Expression.Name;var _outVar3=this.ReadVariable(_varName2,item.Expression);var type=0;if(_outVar3&&(typeof _outVar3==='undefined'?'undefined':(0,_typeof3.default)(_outVar3))=='object'&&_outVar3.__Type__=='Object'){type=1000;}else if(!this.IsSectionMode&&!Array.isArray(_outVar3)){if(typeof _outVar3=='string')_outVar3=this.SingleDataToArrayData(parseFloat(_outVar3));else _outVar3=this.SingleDataToArrayData(_outVar3);}_varName2="__temp_i_"+i+"__";this.OutVarTable.push({Name:_varName2,Data:_outVar3,Type:type,NoneName:true});}else if(item.Expression.Type==Syntax.Literal)//常量
|
|
@@ -12508,7 +12574,7 @@ else if(_value4.indexOf("FONTSIZE")==0){var strFontSize=_value4.replace("FONTSIZ
|
|
|
12508
12574
|
{var _outVar14=this.VarTable.get(_varName3);var _value12={Name:_varName3,Data:_outVar14,Color:color,Type:2};if(lineWidth)_value12.LineWidth=lineWidth;if(color)_value12.Color=color;if(upColor)_value12.UpColor=upColor;if(downColor)_value12.DownColor=downColor;this.OutVarTable.push(_value12);}else if(_varName3&&color&&!_draw3){var _outVar15=this.VarTable.get(_varName3);if(!Array.isArray(_outVar15))_outVar15=this.SingleDataToArrayData(_outVar15);var _value13={Name:_varName3,Data:_outVar15,Color:color,Type:0};if(lineWidth)_value13.LineWidth=lineWidth;if(isShow==false)_value13.IsShow=false;if(isExData==true)_value13.IsExData=true;if(isDotLine==true)_value13.IsDotLine=true;if(IFrameSplitOperator.IsNonEmptyArray(lineDash))_value13.LineDash=lineDash;if(isOverlayLine==true)_value13.IsOverlayLine=true;if(isSingleLine==true)_value13.IsSingleLine=true;if(isNoneName==true)_value13.NoneName=true;if(isShowTitle==false)_value13.IsShowTitle=false;if(stepLine==true)_value13.Type=7;this.OutVarTable.push(_value13);}else if(_draw3)//画图函数
|
|
12509
12575
|
{var outVar={Name:_draw3.Name,Draw:_draw3,Type:1};if(color)outVar.Color=color;if(isDotLine==true)outVar.IsDotLine=true;if(IFrameSplitOperator.IsNonEmptyArray(lineDash))outVar.LineDash=lineDash;if(lineWidth)outVar.LineWidth=lineWidth;if(isDrawAbove)outVar.IsDrawAbove=true;if(isDrawCenter)outVar.IsDrawCenter=true;if(isDrawBelow)outVar.IsDrawBelow=true;if(drawAlign>=0)outVar.DrawAlign=drawAlign;if(drawVAlign>=0)outVar.DrawVAlign=drawVAlign;if(fontSize>0)outVar.DrawFontSize=fontSize;if(bgConfig)outVar.Background=bgConfig;if(vLineConfig)outVar.VerticalLine=vLineConfig;if(IFrameSplitOperator.IsNumber(xOffset))outVar.XOffset=xOffset;if(IFrameSplitOperator.IsNumber(yOffset))outVar.YOffset=yOffset;if(IFrameSplitOperator.IsBool(isFirstDraw))outVar.IsFirstDraw=isFirstDraw;if(IFrameSplitOperator.IsNumber(klineType))outVar.KLineType=klineType;this.OutVarTable.push(outVar);}else if(_varName3){var _outVar16=this.VarTable.get(_varName3);var _value14={Name:_varName3,Data:_outVar16,Type:0};if(color)_value14.Color=color;if(lineWidth)_value14.LineWidth=lineWidth;if(isShow==false)_value14.IsShow=false;if(isExData==true)_value14.IsExData=true;if(isDotLine==true)_value14.IsDotLine=true;if(IFrameSplitOperator.IsNonEmptyArray(lineDash))_value14.LineDash=lineDash;if(isOverlayLine==true)_value14.IsOverlayLine=true;if(isSingleLine==true)_value14.IsSingleLine=true;if(isShowTitle==false)_value14.IsShowTitle=false;if(stepLine==true)_value14.Type=7;this.OutVarTable.push(_value14);}}}};this.ReadUnaryExpression=function(item,varInfo){var argument=item.Argument;var outVar=null;if(argument.Type==Syntax.Literal){outVar=argument.Value;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.Identifier){var varName=argument.Name;outVar=this.ReadVariable(varName,item.Expression);if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.BinaryExpression){outVar=argument.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}else if(argument.Type==Syntax.CallExpression){var callItem=argument;if(this.Draw.IsDrawFunction(callItem.Callee.Name)){return false;}else if(callItem.Callee.Name==="IFC"&&callItem.Draw){return false;}else{outVar=callItem.Out;if(!Array.isArray(outVar))outVar=this.SingleDataToArrayData(outVar);}}else{return false;}if(item.Operator=='-'){if(outVar)outVar=this.Algorithm.Subtract(0,outVar);}varInfo.OutVar=outVar;return true;};this.GetOutIconData=function(cond,iconDraw){if(Array.isArray(cond)){for(var i=0;i<cond.length&&i<iconDraw.DrawData.length;++i){var item=cond[i];if(item<=0)iconDraw.DrawData[i]=null;}return iconDraw;}if(cond)return iconDraw;return null;};this.GetSoundEvent=function(){if(!this.GetEventCallback)return null;return this.GetEventCallback(JSCHART_EVENT_ID.ON_PLAY_SOUND);};this.Run=function(){try{var data=this.RunAST();//执行脚本
|
|
12510
12576
|
JSConsole.Complier.Log('[JSComplier.Run] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.Run] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}}catch(error){JSConsole.Complier.Log(error);if(error.Job){JSConsole.Complier.Log('[JSComplier.Run] download job and reexectue',error.Job);this.JobList.push(error.Job);this.JobList.push({ID:JS_EXECUTE_JOB_ID.JOB_RUN_SCRIPT});this.Execute();}else if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.DebugRun_End=function(){var data=this.OutVarTable;JSConsole.Complier.Log('[JSComplier.DebugRun_End] execute finish',data);if(this.IndexCtrl)this.IndexCtrl.Status=0;if(this.UpdateUICallback){JSConsole.Complier.Log('[JSComplier.DebugRun_End] invoke UpdateUICallback.');if(this.CallbackParam&&this.CallbackParam.Job&&this.CallbackParam.Job.ID==JS_EXECUTE_JOB_ID.JOB_EXECUTE_INDEX){this.UpdateUICallback(data,this.CallbackParam,this.SymbolData);}else{if(this.CallbackParam&&this.CallbackParam.Self&&this.CallbackParam.Self.ClassName==='ScriptIndexConsole')this.CallbackParam.JSExecute=this;if(this.IsUsePageData==true)this.CallbackParam.Self.IsUsePageData=true;this.UpdateUICallback(data,this.CallbackParam);}}};this.DebugRun_Next=function(debugCtrl){var _this55=this;if(debugCtrl.ExeLine<debugCtrl.LineCount){var item=this.AST.Body[debugCtrl.ExeLine];this.RunASTNode(item);++debugCtrl.ExeLine;this.DebugFilter(debugCtrl,function(){_this55.DebugRun_Next(debugCtrl);});}else{this.DebugRun_End();debugCtrl.Status=2;this.DebugFilter(debugCtrl,null);}};//debug模式
|
|
12511
|
-
this.DebugRun=function(){var _this56=this;try{if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();var debugCtrl={LineCount:this.AST.Body.length,ExeLine:0,Self:this,Status:1};this.DebugFilter(debugCtrl,function(){_this56.DebugRun_Next(debugCtrl);});}catch(error){if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var tempValue=this.GetNodeValueEx(node.Argument);var value=this.Algorithm.Subtract(0,tempValue);}else{var value=node.Argument.Value;}return value;};this.VisitSequenceExpression=function(node){for(var
|
|
12577
|
+
this.DebugRun=function(){var _this56=this;try{if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();var debugCtrl={LineCount:this.AST.Body.length,ExeLine:0,Self:this,Status:1};this.DebugFilter(debugCtrl,function(){_this56.DebugRun_Next(debugCtrl);});}catch(error){if(this.ErrorCallback){if(this.IndexCtrl)this.IndexCtrl.Status=0;this.ErrorCallback(error,this.CallbackParam);}}};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var tempValue=this.GetNodeValueEx(node.Argument);var value=this.Algorithm.Subtract(0,tempValue);}else{var value=node.Argument.Value;}return value;};this.VisitSequenceExpression=function(node){for(var _i125 in node.Expression){var _item19=node.Expression[_i125];this.VisitNode(_item19);}};this.GetDynamicScriptIndex=function(node,args){var dynamicName=node.Callee.Value;var aryValue=dynamicName.split(".");if(aryValue.length!=2){this.ThrowUnexpectedNode(node,'\u8C03\u7528\u6307\u6807\u683C\u5F0F\''+dynamicName+'\'\u9519\u8BEF');}var name=aryValue[0];var outName=aryValue[1];var period=null;var pos=outName.indexOf('#');if(pos!=-1){period=outName.slice(pos+1);//周期
|
|
12512
12578
|
outName=outName.slice(0,pos);}var strValue="";for(var i=0;i<args.length;++i){var value=args[i];if(strValue.length>0)strValue+=",";strValue+=''+value;}var strArgs='('+strValue+')';var key=outName+'#'+strArgs;if(period)key+='#'+period;if(!this.VarTable.has(name))return null;var indexData=this.VarTable.get(name);var value=indexData[key];return value;};//函数调用
|
|
12513
12579
|
this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var i=0;i<node.Arguments.length;++i){var item=node.Arguments[i];var value;if(funcName==="IFC"&&i>=1)break;//IFC先处理第1个条件参数
|
|
12514
12580
|
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(node.Callee.Type==Syntax.Literal){node.Out=[];node.Draw=null;var data=this.GetDynamicScriptIndex(node,args);if(data)node.Out=data;return node.Out;}if(funcName==="IFC"){//IFC(X,A,B)若X不为0则执行A,否则执行B.IFC与IF函数的区别:根据X的值来选择性执行A、B表达式.
|
|
@@ -12549,8 +12615,8 @@ this.ConstVarTable=new _map2.default([//个股数据
|
|
|
12549
12615
|
['HYBLOCK',"所属行业"],//所属行业板块
|
|
12550
12616
|
['DYBLOCK',"所属地域"],//所属地域板块
|
|
12551
12617
|
['GNBLOCK',"所属概念"],//所属概念
|
|
12552
|
-
["FGBLOCK","所属风格板块"],["ZSBLOCK","所属指数板块"],["ZHBLOCK",'所属组合板块'],["ZDBLOCK",'所属自定义板块'],["HYZSCODE","所属行业的板块指数代码"],["GNBLOCKNUM","所属概念板块的个数"],["FGBLOCKNUM","所属风格板块的个数"],["ZSBLOCKNUM","所属指数板块的个数"],["ZHBLOCKNUM","所属组合板块的个数"],["ZDBLOCKNUM","所属自定义板块的个数"],["HYSYL","指数市盈率或个股所属行业的市盈率"],["HYSJL","指数市净率或个股所属行业的市净率"],['DRAWNULL',"无效数据"],["TR","求真实波幅"],["LARGEINTRDVOL","逐笔买入大单成交量"],["LARGEOUTTRDVOL","逐笔卖出大单成交量"],["TRADENUM","逐笔成交总单数"],["TRADEINNUM","逐笔买入成交单数"],["TRADEOUTNUM","逐笔卖出成交单数"],["LARGETRDINNUM","逐笔买入大单成交单数"],["LARGETRDOUTNUM","逐笔卖出大单成交单数"],["CUR_BUYORDER","总委买量"],["CUR_SELLORDER","总委卖量"],["ACTINVOL","主动买成交量"],["ACTOUTVOL","主动卖成交量"],["BIDORDERVOL","累计总有效委买量"],["BIDCANCELVOL","累计总有效撤买量"],["AVGBIDPX","最新委买均价"],["OFFERORDERVOL","累计总有效委卖量"],["OFFERCANCELVOL","累计总有效撤卖量"],["AVGOFFERPX","最新委卖均价"],['COLORBLACK','黑色'],['COLORBLUE','蓝色'],['COLORGREEN','绿色'],['COLORCYAN','青色'],['COLORRED','红色'],['COLORMAGENTA','洋红色'],['COLORBROWN','棕色'],['COLORLIGRAY','淡灰色'],['COLORGRAY','深灰色'],['COLORLIBLUE','淡蓝色'],['COLORLIGREEN','淡绿色'],['COLORLICYAN','淡青色'],['COLORLIRED','淡红色'],['COLORLIMAGENTA','淡洋红色'],['COLORWHITE','白色'],['COLORYELLOW','黄色']]);if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam)this.CallbackParam=option.CallbackParam;if(option.Arguments)this.Arguments=option.Arguments;}this.Run=function(){try{this.OutVarTable=[];this.VarTable=new _map2.default();JSConsole.Complier.Log('[JSExecute::JSExplainer] Load Arguments',this.Arguments);for(var
|
|
12553
|
-
{var _item20=this.Arguments[
|
|
12618
|
+
["FGBLOCK","所属风格板块"],["ZSBLOCK","所属指数板块"],["ZHBLOCK",'所属组合板块'],["ZDBLOCK",'所属自定义板块'],["HYZSCODE","所属行业的板块指数代码"],["GNBLOCKNUM","所属概念板块的个数"],["FGBLOCKNUM","所属风格板块的个数"],["ZSBLOCKNUM","所属指数板块的个数"],["ZHBLOCKNUM","所属组合板块的个数"],["ZDBLOCKNUM","所属自定义板块的个数"],["HYSYL","指数市盈率或个股所属行业的市盈率"],["HYSJL","指数市净率或个股所属行业的市净率"],['DRAWNULL',"无效数据"],["TR","求真实波幅"],["LARGEINTRDVOL","逐笔买入大单成交量"],["LARGEOUTTRDVOL","逐笔卖出大单成交量"],["TRADENUM","逐笔成交总单数"],["TRADEINNUM","逐笔买入成交单数"],["TRADEOUTNUM","逐笔卖出成交单数"],["LARGETRDINNUM","逐笔买入大单成交单数"],["LARGETRDOUTNUM","逐笔卖出大单成交单数"],["CUR_BUYORDER","总委买量"],["CUR_SELLORDER","总委卖量"],["ACTINVOL","主动买成交量"],["ACTOUTVOL","主动卖成交量"],["BIDORDERVOL","累计总有效委买量"],["BIDCANCELVOL","累计总有效撤买量"],["AVGBIDPX","最新委买均价"],["OFFERORDERVOL","累计总有效委卖量"],["OFFERCANCELVOL","累计总有效撤卖量"],["AVGOFFERPX","最新委卖均价"],['COLORBLACK','黑色'],['COLORBLUE','蓝色'],['COLORGREEN','绿色'],['COLORCYAN','青色'],['COLORRED','红色'],['COLORMAGENTA','洋红色'],['COLORBROWN','棕色'],['COLORLIGRAY','淡灰色'],['COLORGRAY','深灰色'],['COLORLIBLUE','淡蓝色'],['COLORLIGREEN','淡绿色'],['COLORLICYAN','淡青色'],['COLORLIRED','淡红色'],['COLORLIMAGENTA','淡洋红色'],['COLORWHITE','白色'],['COLORYELLOW','黄色']]);if(option){if(option.Callback)this.UpdateUICallback=option.Callback;if(option.CallbackParam)this.CallbackParam=option.CallbackParam;if(option.Arguments)this.Arguments=option.Arguments;}this.Run=function(){try{this.OutVarTable=[];this.VarTable=new _map2.default();JSConsole.Complier.Log('[JSExecute::JSExplainer] Load Arguments',this.Arguments);for(var _i126 in this.Arguments)//预定义的变量
|
|
12619
|
+
{var _item20=this.Arguments[_i126];this.VarTable.set(_item20.Name,_item20.Value);}var data=this.RunAST();//执行脚本
|
|
12554
12620
|
JSConsole.Complier.Log('[JSExplainer.Run] explain finish',data);if(this.UpdateUICallback)//回调发送结果, 可以支持异步
|
|
12555
12621
|
{JSConsole.Complier.Log('[JSExplainer.Run] invoke UpdateUICallback.');this.UpdateUICallback(data);}}catch(error){JSConsole.Complier.Log('[JSExplainer.Run] throw error ',error);if(this.ErrorCallback){this.ErrorCallback(error,this.OutVarTable);}}};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var i=0;i<this.AST.Body.length;++i){//console.log(`[JSExplainer::RunAST] ${i}`);
|
|
12556
12622
|
var item=this.AST.Body[i];this.VisitNode(item);//输出变量
|
|
@@ -12573,8 +12639,8 @@ else if(_value16.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(_value16.i
|
|
|
12573
12639
|
{outValue+=",画柱状线";var _value20={Name:_varName8,Draw:outValue,Type:5};this.OutVarTable.push(_value20);}else if(volStick&&_varName8)//VOLSTICK 画彩色柱状线
|
|
12574
12640
|
{outValue+=",画成交量柱状线";var _value21={Name:_varName8,Draw:outValue,Type:6};this.OutVarTable.push(_value21);}else if(_varName8&&color){var _value22={Name:_varName8,Data:outValue,Color:color,Type:0};this.OutVarTable.push(_value22);}else if(draw)//画图函数
|
|
12575
12641
|
{var outVar={Name:_drawName,Draw:outValue,Type:1};this.OutVarTable.push(outVar);}else if(colorStick&&_varName8)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
|
|
12576
|
-
{outValue+=",画彩色柱状线";var _value23={Name:_varName8,Draw:outValue,Color:color,Type:2};this.OutVarTable.push(_value23);}else if(_varName8){var _value24={Name:_varName8,Data:outValue,Type:0};this.OutVarTable.push(_value24);}}}}JSConsole.Complier.Log('[JSExplainer::Run]',this.VarTable);return this.OutVarTable;};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitSequenceExpression=function(node){for(var
|
|
12577
|
-
this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i127 in node.Arguments){var _item22=node.Arguments[_i127];var _value26=void 0;if(_item22.Type==Syntax.BinaryExpression||_item22.Type==Syntax.LogicalExpression)_value26=this.VisitBinaryExpression(_item22);else if(_item22.Type==Syntax.CallExpression)_value26=this.VisitCallExpression(_item22);else _value26=this.GetNodeValue(_item22);args.push(_value26);}if(node.Callee.Type==Syntax.Literal){var dynamicName=node.Callee.Value;node.Out='\u6307\u6807\u5F15\u7528\''+dynamicName+'\'';return node.Out;}if(JS_EXECUTE_DEBUG_LOG)JSConsole.Complier.Log('[JSExplainer::VisitCallExpression]',funcName,'(',args.toString(),')');if(g_JSComplierResource.IsCustomFunction(funcName)){var functionInfo=g_JSComplierResource.CustomFunction.Data.get(funcName);if(!functionInfo.Description)node.Out='\u81EA\u5B9A\u4E49\u51FD\u6570'+funcName;else node.Out=functionInfo.Description;return node.Out;}node.Out=this.CallFunctionExplain(funcName,args,node);return node.Out;};this.FUNCTION_INFO_LIST=new _map2.default([["REF",{Name:"REF",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684'+args[0];}}],["REFX",{Name:"REFX",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684'+args[0];}}],["REFV",{Name:"REFV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFXV",{Name:"REFXV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFDATE",{Name:"REFDATE",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5'+args[0];}}],["COUNT",{Name:"COUNT",Param:{Count:2},ToString:function ToString(args){return'\u7EDF\u8BA1'+args[1]+'\u65E5\u4E2D\u6EE1\u8DB3'+args[0]+'\u7684\u5929\u6570';}}],["BARSLASTCOUNT",{Name:"BARSLASTCOUNT",Param:{Count:1},ToString:function ToString(args){return'\u6761\u4EF6'+args[0]+'\u8FDE\u7EED\u6210\u7ACB\u6B21\u6570';}}],["BARSCOUNT",{Name:"BARSCOUNT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u6709\u6548\u6570\u636E\u5468\u671F\u6570';}}],["BARSLAST",{Name:"BARSLAST",Param:{Count:1},ToString:function ToString(args){return'\u4E0A\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSLASTS",{Name:"BARSLASTS",Param:{Count:2},ToString:function ToString(args){return'\u5012\u6570\u7B2CN\u6B21\u6210\u7ACB\u65F6\u8DDD\u4ECA\u7684\u5468\u671F\u6570';}}],["BARSNEXT",{Name:"BARSNEXT",Param:{Count:1},ToString:function ToString(args){return'\u4E0B\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCEN",{Name:"BARSSINCEN",Param:{Count:2},ToString:function ToString(args){return'\u5728'+args[1]+'\u5468\u671F\u5185\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCE",{Name:"BARSSINCE",Param:{Count:1},ToString:function ToString(args){return'\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["HHV",{Name:"HHV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u9AD8\u503C';}}],["LLV",{Name:"LLV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u4F4E\u503C';}}],["ZTPRICE",{Name:"ZTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算涨停价';}}],["DTPRICE",{Name:"DTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算跌停价';}}],["BACKSET",{Name:"BACKSET",Param:{Count:2},ToString:function ToString(args){return'\u82E5'+args[0]+'\u5219\u5C06\u6700\u8FD1'+args[1]+'\u5468\u671F\u7F6E\u4E3A1';}}],["HOD",{Name:"HOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u9AD8\u503C\u540D\u6B21';}}],["LOD",{Name:"LOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u4F4E\u503C\u540D\u6B21';}}],["REVERSE",{Name:"REVERSE",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u76F8\u53CD\u6570';}}],["FILTER",{Name:"FILTER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u8FC7\u6EE4';}}],["FILTERX",{Name:"FILTERX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u53CD\u5411\u8FC7\u6EE4';}}],["TFILTER",{Name:"TFILTER",Param:{Count:3},ToString:function ToString(args){return'\u4FE1\u53F7\u8FC7\u6EE4(\u591A\u5934)';}}],["SUMBARS",{Name:"SUMBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7D2F\u52A0\u81F3'+args[1]+'\u7684\u5929\u6570';}}],["MA",{Name:"MA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7B80\u5355\u79FB\u52A8\u5E73\u5747';}}],["SMA",{Name:"SMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["MEMA",{Name:"MEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["EMA",{Name:"EMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMA",{Name:"EXPMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMEMA",{Name:"EXPMEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["WMA",{Name:"WMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u52A0\u6743\u79FB\u52A8\u5E73\u5747';}}],["DMA",{Name:"DMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u52A8\u6001\u79FB\u52A8\u5E73\u5747';}}],["XMA",{Name:"XMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u504F\u79FB\u79FB\u52A8\u5E73\u5747';}}],["RANGE",{Name:"RANGE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["CONST",{Name:"CONST",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6700\u540E\u4E00\u65E5\u503C';}}],["TOPRANGE",{Name:"TOPRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5927\u503C';}}],["LOWRANGE",{Name:"LOWRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5C0F\u503C';}}],["FINDHIGH",{Name:"FINDHIGH",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7';}}],["FINDHIGHBARS",{Name:"FINDHIGHBARS",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["FINDLOW",{Name:"FINDLOW",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7';}}],["FINDLOWBARS",{Name:"FINDLOWBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["SUM",{Name:"SUM",Param:{Count:2},ToString:function ToString(args){return''+args[0]+args[1]+'\u65E5\u7D2F\u52A0';}}],["MULAR",{Name:"MULAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u65E5\u7D2F\u4E58';}}],["AMA",{Name:"AMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u81EA\u9002\u5E94\u5747\u7EBF';}}],["TMA",{Name:"TMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["CROSS",{Name:"CROSS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u4E0A\u7A7F'+args[1];}}],["LONGCROSS",{Name:"LONGCROSS",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u5C0F\u4E8E'+args[1]+'\u4FDD\u6301'+args[2]+'\u4E2A\u4EA4\u6613\u65E5\u540E\u4EA4\u53C9\u4E0A\u7A7F';}}],["UPNDAY",{Name:"UPNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u6DA8';}}],["DOWNNDAY",{Name:"DOWNNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u8DCC';}}],["NDAY",{Name:"NDAY",Param:{Count:3},ToString:function ToString(args){return'\u6700\u8FD1'+args[2]+'\u65E5'+args[0]+'\u4E00\u76F4\u5927\u4E8E'+args[1];}}],["EXIST",{Name:"EXIST",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u5B58\u5728'+args[0];}}],["EXISTR",{Name:"EXISTR",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u5B58\u5728'+args[0];}}],["EVERY",{Name:"EVERY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u4E00\u76F4\u5B58\u5728'+args[0];}}],["LAST",{Name:"LAST",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u6301\u7EED'+args[0];}}],["NOT",{Name:"NOT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u53D6\u53CD';}}],["IF",{Name:"IF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFF",{Name:"IFF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFN",{Name:"IFN",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFC",{Name:"IFC",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["TESTSKIP",{Name:"TESTSKIP",Param:{Count:1},ToString:function ToString(args){return'\u5982\u679C\u6EE1\u8DB3\u6761\u4EF6'+args[0]+',\u516C\u5F0F\u8FD4\u56DE';}}],["VALUEWHEN",{Name:"VALUEWHEN",Param:{Count:2},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE\u4E0A\u4E2A\u8F93\u51FA\u503C ';}}],["MAX",{Name:"MAX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5927\u503C';}}],["MIN",{Name:"MIN",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5C0F\u503C';}}],["ACOS",{Name:"ACOS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u4F59\u5F26';}}],["ASIN",{Name:"ASIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5F26';}}],["ATAN",{Name:"ATAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5207';}}],["COS",{Name:"COS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u4F59\u5F26';}}],["SIN",{Name:"SIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5F26';}}],["TAN",{Name:"TAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5207';}}],["EXP",{Name:"EXP",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6307\u6570';}}],["LN",{Name:"LN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u81EA\u7136\u5BF9\u6570';}}],["LOG",{Name:"LOG",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5BF9\u6570';}}],["SQRT",{Name:"SQRT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5F00\u65B9';}}],["ABS",{Name:"ABS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7EDD\u5BF9\u503C';}}],["POW",{Name:"POW",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u4E58\u5E42';}}],["CEILING",{Name:"CEILING",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["FLOOR",{Name:"FLOOR",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["INTPART",{Name:"INTPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6574\u6570\u90E8\u5206';}}],["BETWEEN",{Name:"BETWEEN",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["FRACPART",{Name:"FRACPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5C0F\u6570\u90E8\u5206';}}],["ROUND",{Name:"ROUND",Param:{Count:1},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["ROUND2",{Name:"ROUND2",Param:{Count:2},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["SIGN",{Name:"SIGN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7B26\u53F7';}}],["MOD",{Name:"MOD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5173\u4E8E'+args[1]+'\u7684\u6A21';}}],["RAND",{Name:"RAND",Param:{Count:1},ToString:function ToString(args){return'\u968F\u673A\u6B63\u6574\u6570';}}],["AVEDEV",{Name:"AVEDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u5747\u7EDD\u5BF9\u504F\u5DEE';}}],["DEVSQ",{Name:"DEVSQ",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6570\u636E\u504F\u5DEE\u5E73\u65B9\u548C';}}],["FORCAST",{Name:"FORCAST",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u9884\u6D4B\u503C';}}],["TSMA",{Name:"TSMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u4E2A\u5468\u671F\u5185\u7684\u65F6\u95F4\u5E8F\u5217\u4E09\u89D2\u79FB\u52A8\u5E73\u5747';}}],["SLOPE",{Name:"SLOPE",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u659C\u7387';}}],["STD",{Name:"STD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6807\u51C6\u5DEE';}}],["STDP",{Name:"STDP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6807\u51C6\u5DEE';}}],["STDDEV",{Name:"STDDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6807\u51C6\u504F\u5DEE';}}],["VAR",{Name:"VAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6837\u672C\u65B9\u5DEE';}}],["VARP",{Name:"VARP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6837\u672C\u65B9\u5DEE';}}],["COVAR",{Name:"COVAR",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u534F\u65B9\u5DEE';}}],["RELATE",{Name:"RELATE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[0]+'\u5468\u671F\u7684\u76F8\u5173\u7CFB\u6570';}}],["BETA",{Name:"BETA",Param:{Count:1},ToString:function ToString(args){return'\u03B2(Beta)\u7CFB\u6570';}}],["BETAEX",{Name:"BETAEX",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u76F8\u5173\u653E\u5927\u7CFB\u6570';}}],["COST",{Name:"COST",Param:{Count:1},ToString:function ToString(args){return'\u83B7\u5229\u76D8\u4E3A'+args[0]+'%\u7684\u6210\u672C\u5206\u5E03';}}],["WINNER",{Name:"WINNER",Param:{Count:1},ToString:function ToString(args){return'\u4EE5'+args[0]+'\u8BA1\u7B97\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["LWINNER",{Name:"LWINNER",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[0]+'\u65E5\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["PWINNER",{Name:"PWINNER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["COSTEX",{Name:"COSTEX",Param:{Count:2},ToString:function ToString(args){return'\u4F4D\u4E8E\u4EF7\u683C'+args[0]+'\u548C'+args[1]+'\u95F4\u7684\u6210\u672C';}}],["PPART",{Name:"PPART",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u5360\u603B\u6210\u672C\u7684\u6BD4\u4F8B';}}],["SAR",{Name:"SAR",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411';}}],["SARTURN",{Name:"SARTURN",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411\u70B9';}}],//字符串函数
|
|
12642
|
+
{outValue+=",画彩色柱状线";var _value23={Name:_varName8,Draw:outValue,Color:color,Type:2};this.OutVarTable.push(_value23);}else if(_varName8){var _value24={Name:_varName8,Data:outValue,Type:0};this.OutVarTable.push(_value24);}}}}JSConsole.Complier.Log('[JSExplainer::Run]',this.VarTable);return this.OutVarTable;};this.VisitNode=function(node){switch(node.Type){case Syntax.SequenceExpression:this.VisitSequenceExpression(node);break;case Syntax.ExpressionStatement:this.VisitNode(node.Expression);break;case Syntax.AssignmentExpression:this.VisitAssignmentExpression(node);break;case Syntax.BinaryExpression:case Syntax.LogicalExpression:this.VisitBinaryExpression(node);break;case Syntax.CallExpression:this.VisitCallExpression(node);break;case Syntax.UnaryExpression:this.VisitUnaryExpression(node);break;}};this.VisitSequenceExpression=function(node){for(var _i127 in node.Expression){var _item21=node.Expression[_i127];this.VisitNode(_item21);}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var _value25=this.GetNodeValueEx(node.Argument);return'-'+_value25;}return node.Argument.Value;};//函数调用
|
|
12643
|
+
this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i128 in node.Arguments){var _item22=node.Arguments[_i128];var _value26=void 0;if(_item22.Type==Syntax.BinaryExpression||_item22.Type==Syntax.LogicalExpression)_value26=this.VisitBinaryExpression(_item22);else if(_item22.Type==Syntax.CallExpression)_value26=this.VisitCallExpression(_item22);else _value26=this.GetNodeValue(_item22);args.push(_value26);}if(node.Callee.Type==Syntax.Literal){var dynamicName=node.Callee.Value;node.Out='\u6307\u6807\u5F15\u7528\''+dynamicName+'\'';return node.Out;}if(JS_EXECUTE_DEBUG_LOG)JSConsole.Complier.Log('[JSExplainer::VisitCallExpression]',funcName,'(',args.toString(),')');if(g_JSComplierResource.IsCustomFunction(funcName)){var functionInfo=g_JSComplierResource.CustomFunction.Data.get(funcName);if(!functionInfo.Description)node.Out='\u81EA\u5B9A\u4E49\u51FD\u6570'+funcName;else node.Out=functionInfo.Description;return node.Out;}node.Out=this.CallFunctionExplain(funcName,args,node);return node.Out;};this.FUNCTION_INFO_LIST=new _map2.default([["REF",{Name:"REF",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684'+args[0];}}],["REFX",{Name:"REFX",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684'+args[0];}}],["REFV",{Name:"REFV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u524D\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFXV",{Name:"REFXV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u540E\u7684(\u672A\u4F5C\u5E73\u6ED1\u5904\u7406)'+args[0];}}],["REFDATE",{Name:"REFDATE",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5'+args[0];}}],["COUNT",{Name:"COUNT",Param:{Count:2},ToString:function ToString(args){return'\u7EDF\u8BA1'+args[1]+'\u65E5\u4E2D\u6EE1\u8DB3'+args[0]+'\u7684\u5929\u6570';}}],["BARSLASTCOUNT",{Name:"BARSLASTCOUNT",Param:{Count:1},ToString:function ToString(args){return'\u6761\u4EF6'+args[0]+'\u8FDE\u7EED\u6210\u7ACB\u6B21\u6570';}}],["BARSCOUNT",{Name:"BARSCOUNT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u6709\u6548\u6570\u636E\u5468\u671F\u6570';}}],["BARSLAST",{Name:"BARSLAST",Param:{Count:1},ToString:function ToString(args){return'\u4E0A\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSLASTS",{Name:"BARSLASTS",Param:{Count:2},ToString:function ToString(args){return'\u5012\u6570\u7B2CN\u6B21\u6210\u7ACB\u65F6\u8DDD\u4ECA\u7684\u5468\u671F\u6570';}}],["BARSNEXT",{Name:"BARSNEXT",Param:{Count:1},ToString:function ToString(args){return'\u4E0B\u6B21'+args[0]+'\u4E0D\u4E3A0\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCEN",{Name:"BARSSINCEN",Param:{Count:2},ToString:function ToString(args){return'\u5728'+args[1]+'\u5468\u671F\u5185\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["BARSSINCE",{Name:"BARSSINCE",Param:{Count:1},ToString:function ToString(args){return'\u9996\u6B21'+args[0]+'\u8DDD\u4ECA\u5929\u6570';}}],["HHV",{Name:"HHV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u9AD8\u503C';}}],["LLV",{Name:"LLV",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u6700\u4F4E\u503C';}}],["ZTPRICE",{Name:"ZTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算涨停价';}}],["DTPRICE",{Name:"DTPRICE",Param:{Count:2},ToString:function ToString(args){return'计算跌停价';}}],["BACKSET",{Name:"BACKSET",Param:{Count:2},ToString:function ToString(args){return'\u82E5'+args[0]+'\u5219\u5C06\u6700\u8FD1'+args[1]+'\u5468\u671F\u7F6E\u4E3A1';}}],["HOD",{Name:"HOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u9AD8\u503C\u540D\u6B21';}}],["LOD",{Name:"LOD",Param:{Count:2},ToString:function ToString(args){return args[1]+'\u65E5\u5185'+args[0]+'\u7684\u4F4E\u503C\u540D\u6B21';}}],["REVERSE",{Name:"REVERSE",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u76F8\u53CD\u6570';}}],["FILTER",{Name:"FILTER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u8FC7\u6EE4';}}],["FILTERX",{Name:"FILTERX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u53CD\u5411\u8FC7\u6EE4';}}],["TFILTER",{Name:"TFILTER",Param:{Count:3},ToString:function ToString(args){return'\u4FE1\u53F7\u8FC7\u6EE4(\u591A\u5934)';}}],["SUMBARS",{Name:"SUMBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7D2F\u52A0\u81F3'+args[1]+'\u7684\u5929\u6570';}}],["MA",{Name:"MA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7B80\u5355\u79FB\u52A8\u5E73\u5747';}}],["SMA",{Name:"SMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["MEMA",{Name:"MEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["EMA",{Name:"EMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMA",{Name:"EXPMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u79FB\u52A8\u5E73\u5747';}}],["EXPMEMA",{Name:"EXPMEMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6307\u6570\u5E73\u6ED1\u79FB\u52A8\u5E73\u5747';}}],["WMA",{Name:"WMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u52A0\u6743\u79FB\u52A8\u5E73\u5747';}}],["DMA",{Name:"DMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u52A8\u6001\u79FB\u52A8\u5E73\u5747';}}],["XMA",{Name:"XMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u504F\u79FB\u79FB\u52A8\u5E73\u5747';}}],["RANGE",{Name:"RANGE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["CONST",{Name:"CONST",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6700\u540E\u4E00\u65E5\u503C';}}],["TOPRANGE",{Name:"TOPRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5927\u503C';}}],["LOWRANGE",{Name:"LOWRANGE",Param:{Count:1},ToString:function ToString(args){return'\u5F53\u524D\u503C\u662F\u8FD1'+args[0]+'\u5468\u671F\u7684\u6700\u5C0F\u503C';}}],["FINDHIGH",{Name:"FINDHIGH",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7';}}],["FINDHIGHBARS",{Name:"FINDHIGHBARS",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u9AD8\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["FINDLOW",{Name:"FINDLOW",Param:{Count:4},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7';}}],["FINDLOWBARS",{Name:"FINDLOWBARS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u65E5\u524D\u7684'+args[2]+'\u5929\u5185\u7B2C'+args[3]+'\u4E2A\u6700\u4F4E\u4EF7\u5230\u5F53\u524D\u5468\u671F\u7684\u5468\u671F\u6570';}}],["SUM",{Name:"SUM",Param:{Count:2},ToString:function ToString(args){return''+args[0]+args[1]+'\u65E5\u7D2F\u52A0';}}],["MULAR",{Name:"MULAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u65E5\u7D2F\u4E58';}}],["AMA",{Name:"AMA",Param:{Count:2},ToString:function ToString(args){return'\u4EE5'+args[1]+'\u4E3A\u6743\u91CD'+args[0]+'\u7684\u81EA\u9002\u5E94\u5747\u7EBF';}}],["TMA",{Name:"TMA",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5['+args[2]+'\u65E5\u6743\u91CD]\u79FB\u52A8\u5E73\u5747';}}],["CROSS",{Name:"CROSS",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u4E0A\u7A7F'+args[1];}}],["LONGCROSS",{Name:"LONGCROSS",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u5C0F\u4E8E'+args[1]+'\u4FDD\u6301'+args[2]+'\u4E2A\u4EA4\u6613\u65E5\u540E\u4EA4\u53C9\u4E0A\u7A7F';}}],["UPNDAY",{Name:"UPNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u6DA8';}}],["DOWNNDAY",{Name:"DOWNNDAY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5'+args[0]+'\u8FDE\u8DCC';}}],["NDAY",{Name:"NDAY",Param:{Count:3},ToString:function ToString(args){return'\u6700\u8FD1'+args[2]+'\u65E5'+args[0]+'\u4E00\u76F4\u5927\u4E8E'+args[1];}}],["EXIST",{Name:"EXIST",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u5B58\u5728'+args[0];}}],["EXISTR",{Name:"EXISTR",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u5B58\u5728'+args[0];}}],["EVERY",{Name:"EVERY",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[1]+'\u65E5\u4E00\u76F4\u5B58\u5728'+args[0];}}],["LAST",{Name:"LAST",Param:{Count:3},ToString:function ToString(args){return'\u4ECE\u524D'+args[1]+'\u65E5\u5230\u524D'+args[2]+'\u65E5\u6301\u7EED'+args[0];}}],["NOT",{Name:"NOT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u53D6\u53CD';}}],["IF",{Name:"IF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFF",{Name:"IFF",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFN",{Name:"IFN",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["IFC",{Name:"IFC",Param:{Count:3},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE'+args[2];}}],["TESTSKIP",{Name:"TESTSKIP",Param:{Count:1},ToString:function ToString(args){return'\u5982\u679C\u6EE1\u8DB3\u6761\u4EF6'+args[0]+',\u516C\u5F0F\u8FD4\u56DE';}}],["VALUEWHEN",{Name:"VALUEWHEN",Param:{Count:2},ToString:function ToString(args){return'\u5982\u679C'+args[0]+',\u8FD4\u56DE'+args[1]+',\u5426\u5219\u8FD4\u56DE\u4E0A\u4E2A\u8F93\u51FA\u503C ';}}],["MAX",{Name:"MAX",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5927\u503C';}}],["MIN",{Name:"MIN",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684\u8F83\u5C0F\u503C';}}],["ACOS",{Name:"ACOS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u4F59\u5F26';}}],["ASIN",{Name:"ASIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5F26';}}],["ATAN",{Name:"ATAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u53CD\u6B63\u5207';}}],["COS",{Name:"COS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u4F59\u5F26';}}],["SIN",{Name:"SIN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5F26';}}],["TAN",{Name:"TAN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6B63\u5207';}}],["EXP",{Name:"EXP",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6307\u6570';}}],["LN",{Name:"LN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u81EA\u7136\u5BF9\u6570';}}],["LOG",{Name:"LOG",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5BF9\u6570';}}],["SQRT",{Name:"SQRT",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5F00\u65B9';}}],["ABS",{Name:"ABS",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7EDD\u5BF9\u503C';}}],["POW",{Name:"POW",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u4E58\u5E42';}}],["CEILING",{Name:"CEILING",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["FLOOR",{Name:"FLOOR",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5411\u4E0A\u820D\u5165';}}],["INTPART",{Name:"INTPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u6574\u6570\u90E8\u5206';}}],["BETWEEN",{Name:"BETWEEN",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u4F4D\u4E8E'+args[1]+'\u548C'+args[2]+'\u4E4B\u95F4';}}],["FRACPART",{Name:"FRACPART",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u5C0F\u6570\u90E8\u5206';}}],["ROUND",{Name:"ROUND",Param:{Count:1},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["ROUND2",{Name:"ROUND2",Param:{Count:2},ToString:function ToString(args){return'\u5BF9'+args[0]+'(\u8FDB\u884C)\u56DB\u820D\u4E94\u5165';}}],["SIGN",{Name:"SIGN",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u7684\u7B26\u53F7';}}],["MOD",{Name:"MOD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5173\u4E8E'+args[1]+'\u7684\u6A21';}}],["RAND",{Name:"RAND",Param:{Count:1},ToString:function ToString(args){return'\u968F\u673A\u6B63\u6574\u6570';}}],["AVEDEV",{Name:"AVEDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u5E73\u5747\u7EDD\u5BF9\u504F\u5DEE';}}],["DEVSQ",{Name:"DEVSQ",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6570\u636E\u504F\u5DEE\u5E73\u65B9\u548C';}}],["FORCAST",{Name:"FORCAST",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u9884\u6D4B\u503C';}}],["TSMA",{Name:"TSMA",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u5728'+args[1]+'\u4E2A\u5468\u671F\u5185\u7684\u65F6\u95F4\u5E8F\u5217\u4E09\u89D2\u79FB\u52A8\u5E73\u5747';}}],["SLOPE",{Name:"SLOPE",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u7EBF\u6027\u56DE\u5F52\u659C\u7387';}}],["STD",{Name:"STD",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6807\u51C6\u5DEE';}}],["STDP",{Name:"STDP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6807\u51C6\u5DEE';}}],["STDDEV",{Name:"STDDEV",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u6807\u51C6\u504F\u5DEE';}}],["VAR",{Name:"VAR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u4F30\u7B97\u6837\u672C\u65B9\u5DEE';}}],["VARP",{Name:"VARP",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u7684'+args[1]+'\u65E5\u603B\u4F53\u6837\u672C\u65B9\u5DEE';}}],["COVAR",{Name:"COVAR",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u534F\u65B9\u5DEE';}}],["RELATE",{Name:"RELATE",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[0]+'\u5468\u671F\u7684\u76F8\u5173\u7CFB\u6570';}}],["BETA",{Name:"BETA",Param:{Count:1},ToString:function ToString(args){return'\u03B2(Beta)\u7CFB\u6570';}}],["BETAEX",{Name:"BETAEX",Param:{Count:3},ToString:function ToString(args){return args[0]+'\u548C'+args[1]+'\u7684'+args[2]+'\u5468\u671F\u7684\u76F8\u5173\u653E\u5927\u7CFB\u6570';}}],["COST",{Name:"COST",Param:{Count:1},ToString:function ToString(args){return'\u83B7\u5229\u76D8\u4E3A'+args[0]+'%\u7684\u6210\u672C\u5206\u5E03';}}],["WINNER",{Name:"WINNER",Param:{Count:1},ToString:function ToString(args){return'\u4EE5'+args[0]+'\u8BA1\u7B97\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["LWINNER",{Name:"LWINNER",Param:{Count:2},ToString:function ToString(args){return'\u6700\u8FD1'+args[0]+'\u65E5\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["PWINNER",{Name:"PWINNER",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u4EE5'+args[1]+'\u4EF7\u683C\u5356\u51FA\u7684\u83B7\u5229\u76D8\u6BD4\u4F8B';}}],["COSTEX",{Name:"COSTEX",Param:{Count:2},ToString:function ToString(args){return'\u4F4D\u4E8E\u4EF7\u683C'+args[0]+'\u548C'+args[1]+'\u95F4\u7684\u6210\u672C';}}],["PPART",{Name:"PPART",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u65E5\u524D\u90A3\u90E8\u5206\u6210\u672C\u5360\u603B\u6210\u672C\u7684\u6BD4\u4F8B';}}],["SAR",{Name:"SAR",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411';}}],["SARTURN",{Name:"SARTURN",Param:{Count:3},ToString:function ToString(args){return'\u6B65\u957F\u4E3A'+args[1]+'\u6781\u9650\u503C\u4E3A'+args[0]+'\u7684'+args[2]+'\u65E5\u629B\u7269\u8F6C\u5411\u70B9';}}],//字符串函数
|
|
12578
12644
|
["CON2STR",{Name:"CON2STR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u5B57\u7B26\u4E32';}}],["VAR2STR",{Name:"VAR2STR",Param:{Count:2},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u5B57\u7B26\u4E32';}}],["STR2CON",{Name:"STR2CON",Param:{Count:1},ToString:function ToString(args){return args[0]+'\u8F6C\u4E3A\u6570\u5B57';}}],["STRLEN",{Name:"STRLEN",Param:{Count:1},ToString:function ToString(args){return'\u5F97\u5230'+args[0]+'\u5B57\u7B26\u4E32\u957F\u5EA6';}}],["STRCAT",{Name:"STRCAT",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32\u76F8\u52A0';}}],["VARCAT",{Name:"VARCAT",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32\u76F8\u52A0';}}],["STRSPACE",{Name:"STRSPACE",Param:{Count:1},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u52A0\u4E00\u7A7A\u683C';}}],["SUBSTR",{Name:"SUBSTR",Param:{Count:3},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u4E2D\u53D6\u4E00\u90E8\u5206';}}],["STRCMP",{Name:"STRCMP",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u548C\u5B57\u7B26\u4E32'+args[1]+'\u6BD4\u8F83';}}],["FINDSTR",{Name:"FINDSTR",Param:{Count:2},ToString:function ToString(args){return'\u5B57\u7B26\u4E32'+args[0]+'\u4E2D\u67E5\u627E\u5B57\u7B26\u4E32'+args[1];}}],["NAMEINCLUDE",{Name:"NAMEINCLUDE",Param:{Count:1},ToString:function ToString(args){return'\u67E5\u627E\u54C1\u79CD\u540D\u79F0\u4E2D\u5305\u542B'+args[0];}}],["CODELIKE",{Name:"CODELIKE",Param:{Count:1},ToString:function ToString(args){return'\u67E5\u627E\u54C1\u79CD\u540D\u79F0\u4E2D\u5305\u542B'+args[0];}}],["INBLOCK",{Name:"AVEDEV",Param:{Count:1},ToString:function ToString(args){return'\u5C5E\u4E8E'+args[0]+'\u677F\u5757';}}],["STKINDI",{Name:"STKINDI",Param:{Dynamic:true},ToString:function ToString(args){return"指标引用";}}],["STRFORMAT",{Name:"STRFORMAT",Param:{Dynamic:true},ToString:function ToString(args){return'\u683C\u5F0F\u5316'+args[0]+'\u5B57\u7B26\u4E32';}}],["NAMELIKE",{Name:"NAMELIKE",Param:{Count:1},ToString:function ToString(args){return'\u54C1\u79CD\u540D\u79F0\u662F\u5426\u4EE5\''+args[0]+'\'\u5F00\u5934';}}],["HHVBARS",{Name:"HHVBARS",Param:{Count:2},ToString:function ToString(args){if(args[1]==0)return'\u5386\u53F2'+args[0]+'\u65B0\u9AD8\u8DDD\u4ECA\u5929\u6570';return args[1]+'\u65E5\u5185'+args[0]+'\u65B0\u9AD8\u8DDD\u4ECA\u5929\u6570';}}],["LLVBARS",{Name:"LLVBARS",Param:{Count:2},ToString:function ToString(args){if(args[1]==0)return'\u5386\u53F2'+args[0]+'\u65B0\u4F4E\u8DDD\u4ECA\u5929\u6570';return args[1]+'\u65E5\u5185'+args[0]+'\u65B0\u4F4E\u8DDD\u4ECA\u5929\u6570';}}],["L2_VOLNUM",{Name:"L2_VOLNUM",Param:{Count:2},ToString:function ToString(args){return'\u5355\u6570\u5206\u6863';}}],["L2_VOL",{Name:"L2_VOL",Param:{Count:2},ToString:function ToString(args){return'\u6210\u4EA4\u91CF\u5206\u6863';}}],["L2_AMO",{Name:"L2_AMO",Param:{Count:2},ToString:function ToString(args){return'\u6210\u4EA4\u989D\u5206\u6863';}}],["TABLE_CELL",{Name:"TABLE_CELL",Param:{Dynamic:true},ToString:function ToString(args){return'\u521B\u5EFA\u8868\u683C\u5355\u5143\u683C';}}],["TABLE_ROW",{Name:"TABLE_ROW",Param:{Dynamic:true},ToString:function ToString(args){return'\u521B\u5EFA\u8868\u683C\u884C';}}],["DRAWTABLE",{Name:"DRAWTABLE",Param:{Dynamic:true},ToString:function ToString(args){return'\u7ED8\u5236\u8868\u683C';}}]]);this.CallFunctionExplain=function(funcName,args,node){if(this.FUNCTION_INFO_LIST.has(funcName)){var item=this.FUNCTION_INFO_LIST.get(funcName);if(item.Param.Dynamic===true)//动态参数
|
|
12579
12645
|
{}else{if(item.Param.Count!=args.length)this.ThrowUnexpectedNode(node,'\u51FD\u6570'+funcName+'\u53C2\u6570\u4E2A\u6570\u4E0D\u6B63\u786E. \u9700\u8981'+item.Param.Count+'\u4E2A\u53C2\u6570');}return item.ToString(args);}switch(funcName){case"CALCSTOCKINDEX":return'\u5F15\u7528'+args[0]+'\u7684'+args[1]+'\u6307\u6807\u7B2C'+args[2]+'\u4E2A\u8F93\u51FA\u503C';case"PEAK":case"PEAKBARS":case"ZIG":case"ZIGA":case"TROUGH":case"TROUGHBARS":return this.GetZIGExplain(funcName,args);case"FINANCE":return this.GetFinanceExplain(args);case"DYNAINFO":return this.GetDynainfoExplain(args);case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':return this.GetOtherSymbolExplain({FunctionName:funcName,Args:args},node);//绘图函数
|
|
12580
12646
|
case"PLOYLINE":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6\u4EE5'+args[1]+'\u4F4D\u7F6E\u4E3A\u9876\u70B9\u753B\u6298\u7EBF\u8FDE\u63A5';case"DRAWLINE":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B\u76F4\u7EBF\u8D77\u70B9\uFF0C\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[2]+'\u65F6,\u5728'+args[3]+'\u4F4D\u7F6E\u753B\u76F4\u7EBF\u7EC8\u70B9,'+args[4]+'\u8868\u793A\u662F\u5426\u5EF6\u957F';case"DRAWSL":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B\u659C\u7EBF\u7EBF\u6027\u56DE\u5F52,'+args[2]+'\u659C\u7387,'+args[3]+'\u957F\u5EA6,'+args[4]+'\u65B9\u5411';case"DRAWKLINE":case"DRAWKLINE1":return'K线';case"DRAWICON":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B'+args[2]+'\u53F7\u56FE\u6807';case"DRAWTEXT":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u4E66\u5199\u6587\u5B57';case"DRAWTEXT_FIX":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728\u6A2A\u8F74'+args[1]+'\u7EB5\u8F74'+args[2]+'\u4F4D\u7F6E\u4E66\u5199\u6587\u5B57';case"DRAWNUMBER":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u4E66\u5199\u6570\u5B57';case"DRAWNUMBER_FIX":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728\u6A2A\u8F74'+args[1]+'\u7EB5\u8F74'+args[2]+'\u4F4D\u7F6E\u4E66\u5199\u6570\u5B57';case"RGB":return'\u81EA\u5B9A\u8272['+args[0]+','+args[1]+','+args[2]+']';case"RGBA":return'\u81EA\u5B9A\u8272['+args[0]+','+args[1]+','+args[2]+','+args[3]+']';case"DRAWBAND":return'画带状线';case"DRAWRECTREL":return"相对位置上画矩形.";case"DRAWGBK":return"填充背景";case"TIPICON":return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6,\u5728'+args[1]+'\u4F4D\u7F6E\u753B'+args[2]+'\u53F7\u56FE\u6807';case"STICKLINE":var barType="";if(args[4]==-1)barType="虚线空心柱";else if(args[4]==0)barType="实心柱";else barType="实线空心柱";return'\u5F53\u6EE1\u8DB3\u6761\u4EF6'+args[0]+'\u65F6, \u5728'+args[1]+'\u548C'+args[2]+'\u4F4D\u7F6E\u4E4B\u95F4\u753B\u67F1\u72B6\u7EBF,\u5BBD\u5EA6\u4E3A'+args[3]+','+barType;case"PARTLINE":return"画折线";case"SELL":return"卖出平仓";case"BUY":return"买入开仓";case"SELLSHORT":return"卖出开仓";case"BUYSHORT":return"买入平仓";case"DRAWLASTBARNUMBER":return"在最后一根k线输出数值";case"DRAWLASTBARTEXT":return"在最后一根k线显示文字";case"DRAWLASTBARICON":return"在最后一根k线绘制图标";case"YMOVE":return;case"BACKGROUND":return"绘制背景";case"UPCOLOR":return'\u4E0A\u6DA8\u989C\u8272'+args[0];case"DOWNCOLOR":return'\u4E0B\u8DCC\u989C\u8272'+args[0];case"STICKTYPE":case"FIRSTDRAW":return"";default:this.ThrowUnexpectedNode(node,'\u51FD\u6570'+funcName+'\u4E0D\u5B58\u5728');}};this.GetDynainfoExplain=function(args){var DATA_NAME_MAP=new _map2.default([[3,"前收盘价"],[4,"开盘价"],[5,"最高价"],[6,"最低价"],[7,"现价"],[8,'总量'],[9,"现量"],[10,"总金额"],[11,"均价"],[12,"日涨跌"],[13,"振幅"],[14,"涨幅"],[15,"开盘时的成交金额"],[16,"前5日每分钟均量"],[17,"量比"],[18,"上涨家数"],[19,"下跌家数"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u5373\u65F6\u884C\u60C5['+id+']';};this.GetFinanceExplain=function(args){var DATA_NAME_MAP=new _map2.default([[1,"总股本"],[2,"市场类型"],[3,"沪深品种类型"],[4,"沪深行业代码"],[5,"B股"],[6,"H股"],[7,"流通股本[股]"],[8,"股东人数[户]"],[9,"资产负债率%"],[10,"总资产"],[11,"流动资产"],[12,"固定资产"],[13,"无形资产"],[15,"流动负债"],[16,"少数股东权益"]]);var id=args[0];if(DATA_NAME_MAP.has(id))return DATA_NAME_MAP.get(id);return'\u8D22\u52A1\u6570\u636E['+id+']';};this.GetZIGExplain=function(funcName,args){var value=args[0];if(value==0)value="开盘价";else if(value==1)value="最高价";else if(value==2)value="最低价";else if(value==3)value="收盘价";switch(funcName){case"PEAK":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u503C';case"PEAKBARS":return value+'\u7684'+args[1]+'5%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u5CF0\u4F4D\u7F6E';case"ZIG":return value+'\u7684'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"ZIGA":return value+'\u53D8\u5316'+args[1]+'\u7684\u4E4B\u5B57\u8F6C\u5411';case"TROUGH":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u503C';case"TROUGHBARS":return value+'\u7684'+args[1]+'%\u4E4B\u5B57\u8F6C\u5411\u7684\u524D'+args[2]+'\u4E2A\u6CE2\u8C37\u4F4D\u7F6E';}};this.GetColorExplain=function(colorName){var COLOR_MAP=new _map2.default([['COLORBLACK','黑色'],['COLORBLUE','蓝色'],['COLORGREEN','绿色'],['COLORCYAN','青色'],['COLORRED','红色'],['COLORMAGENTA','洋红色'],['COLORBROWN','棕色'],['COLORLIGRAY','淡灰色'],['COLORGRAY','深灰色'],['COLORLIBLUE','淡蓝色'],['COLORLIGREEN','淡绿色'],['COLORLICYAN','淡青色'],['COLORLIRED','淡红色'],['COLORLIMAGENTA','淡洋红色'],['COLORWHITE','白色'],['COLORYELLOW','黄色']]);if(COLOR_MAP.has(colorName))return COLOR_MAP.get(colorName);//COLOR 自定义色
|
|
@@ -12766,7 +12832,7 @@ chart.KLineColor=varItem.Draw.DrawData.KLine;if(varItem.Color)chart.Color=varIte
|
|
|
12766
12832
|
if(varItem.IsShow==false)chart.IsShow=false;var titleIndex=windowIndex+1;chart.Data.Data=varItem.Draw.DrawData.Data;chart.MainData.Data=varItem.Draw.DrawData.MainData;if(varItem.Draw.DrawData.Title)hqChart.TitlePaint[titleIndex].Data[i]=new DynamicTitleData(chart.Data,varItem.Draw.DrawData.Title,chart.Color);hqChart.ChartPaint.push(chart);};//创建K线
|
|
12767
12833
|
this.CreateSelfKLine=function(hqChart,windowIndex,hisData){var chart=new ChartKLine();chart.Canvas=hqChart.Canvas;chart.Name="Self Kline";chart.Identify=this.Guid;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.Data=hisData;chart.IsShowMaxMinPrice=false;chart.IsShowKTooltip=false;chart.DrawType=this.KLineType;hqChart.ChartPaint.push(chart);};this.BindInstructionData=function(hqChart,windowIndex,hisData)//绑定指示指标
|
|
12768
12834
|
{if(this.OutVar==null||this.OutVar.length<0)return;//参数
|
|
12769
|
-
var indexParam='';for(var
|
|
12835
|
+
var indexParam='';for(var _i129 in this.Arguments){var _item23=this.Arguments[_i129];if(indexParam.length>0)indexParam+=',';indexParam+=_item23.Value.toString();}if(indexParam.length>0)indexParam='('+indexParam+')';if(this.InstructionType==2)//五彩K线
|
|
12770
12836
|
{var varItem=this.OutVar[this.OutVar.length-1];//取最后一组数据作为指示数据
|
|
12771
12837
|
hqChart.SetInstructionData(this.InstructionType,{Data:varItem.Data,Name:this.Name,Param:indexParam,ID:this.ID});//设置指示数据
|
|
12772
12838
|
return true;}else if(this.InstructionType==1)//交易系统
|
|
@@ -12784,12 +12850,12 @@ if(this.YSplitScale)hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.Y
|
|
|
12784
12850
|
var testData={ Name:'MULTI_LINE', Type:1,Draw:{ DrawType:'MULTI_LINE', DrawData:[point1,point2] } };
|
|
12785
12851
|
this.OutVar.push(testData);
|
|
12786
12852
|
}
|
|
12787
|
-
*/for(var
|
|
12853
|
+
*/for(var _i130=0;_i130<this.OutVar.length;++_i130){var _item25=this.OutVar[_i130];if(_item25.IsExData===true)continue;//扩展数据不显示图形
|
|
12788
12854
|
if(_item25.Type==1000||_item25.Type==1001)continue;//数据集合, 字符串
|
|
12789
|
-
if(_item25.Type==0){if(_item25.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item25,
|
|
12790
|
-
if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item25,
|
|
12791
|
-
{if(this.StringFormat>0)titlePaint.Data[
|
|
12792
|
-
titlePaint.ArgumentsText=null;titlePaint.Script=this;titlePaint.IsShowMainIndexTitle=this.IsShowIndexTitle;if(!this.IsShortTitle){var indexParam='';for(var
|
|
12855
|
+
if(_item25.Type==0){if(_item25.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item25,_i130,_item25.Type);else if(_item25.IsSingleLine)this.CreateSingleLine(hqChart,windowIndex,_item25,_i130,_item25.Type);else this.CreateLine(hqChart,windowIndex,_item25,_i130,_item25.Type);}else if(_item25.Type==1){switch(_item25.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item25,_i130);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item25,_i130);break;case"DRAWFLAGTEXT":this.CreateDrawFlagText(hqChart,windowIndex,_item25,_i130);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item25,_i130);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item25,_i130);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item25,_i130);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item25,_i130);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item25,_i130);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item25,_i130);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item25,_i130);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item25,_i130);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item25,_i130);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item25,_i130);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item25,_i130);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item25,_i130);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item25,_i130);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item25,_i130);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item25,_i130);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item25,_i130);break;case"DRAWNUMBER_FIX":case'DRAWTEXT_FIX':this.CreateNumberText(hqChart,windowIndex,_item25,_i130);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item25,_i130);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item25,_i130);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item25,_i130);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item25,_i130);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item25,_i130);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item25,_i130);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item25,_i130);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item25,_i130);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item25,_i130);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item25,_i130);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item25,_i130);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item25,_i130);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item25,_i130);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item25,_i130);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item25,_i130);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item25,_i130);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item25,_i130);break;case"DRAWTITLE":this.CreateTitle(hqChart,windowIndex,_item25,_i130);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item25,_i130);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item25,_i130);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item25,_i130);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item25,_i130);break;case"DRAW_SIMPLE_TABLE":this.CreateSimpleTable(hqChart,windowIndex,_item25,_i130);break;case"DRAW_SIMPLE_PIE":this.CreateSimplePie(hqChart,windowIndex,_item25,_i130);break;case"DRAW_SIMPLE_RADAR":this.CreateSimpleRadar(hqChart,windowIndex,_item25,_i130);break;case"DRAW_SIMPLE_DOUGHNUT":this.CreateSimpleDoughnut(hqChart,windowIndex,_item25,_i130);break;case"BUY":case"SELL":case"SELLSHORT":case"BUYSHORT":this.CreateTradeIcon(hqChart,windowIndex,_item25,_i130);break;case"DRAWLASTBARICON":case"DRAWLASTBARNUMBER":case"DRAWLASTBARTEXT":this.CreateDrawLastBarText(hqChart,windowIndex,_item25,_i130);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item25,_i130);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item25,_i130);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item25,_i130);break;case SCRIPT_CHART_NAME.SCATTER_PLOT_V2:this.CreateScatterPlotV2(hqChart,windowIndex,_item25,_i130);break;case SCRIPT_CHART_NAME.CLIP_COLOR_STICK:this.CreateClipColorStick(hqChart,windowIndex,_item25,_i130);break;case SCRIPT_CHART_NAME.BASELINE_BAR:this.CreateBaseLineBar(hqChart,windowIndex,_item25,_i130);break;default:{var find=g_ScriptIndexChartFactory.Get(_item25.Draw.DrawType);//外部挂接
|
|
12856
|
+
if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item25,_i130,this);}break;}}else if(_item25.Type==2){this.CreateMACD(hqChart,windowIndex,_item25,_i130);}else if(_item25.Type==3){this.CreatePointDot(hqChart,windowIndex,_item25,_i130,hisData);}else if(_item25.Type==4){this.CreateLineStick(hqChart,windowIndex,_item25,_i130);}else if(_item25.Type==5){this.CreateStick(hqChart,windowIndex,_item25,_i130);}else if(_item25.Type==6){this.CreateVolStick(hqChart,windowIndex,_item25,_i130,hisData);}else if(_item25.Type==7){this.CreateLine(hqChart,windowIndex,_item25,_i130,_item25.Type);}else if(_item25.Type==8){this.CreateLine(hqChart,windowIndex,_item25,_i130,_item25.Type);}else if(_item25.Type==9){this.CreateArea(hqChart,windowIndex,_item25,_i130);}var titlePaint=hqChart.TitlePaint[windowIndex+1];if(titlePaint&&titlePaint.Data&&_i130<titlePaint.Data.length)//设置标题数值 小数位数和格式
|
|
12857
|
+
{if(this.StringFormat>0)titlePaint.Data[_i130].StringFormat=this.StringFormat;if(this.FloatPrecision>=0)titlePaint.Data[_i130].FloatPrecision=this.FloatPrecision;if(this.OutName&&this.OutName.length>0&&this.Arguments&&this.Arguments.length>0){titlePaint.SetDynamicTitle(this.OutName,this.Arguments);}}}var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.Title=this.Name;titlePaint.Identify=this.Guid;//指标ID
|
|
12858
|
+
titlePaint.ArgumentsText=null;titlePaint.Script=this;titlePaint.IsShowMainIndexTitle=this.IsShowIndexTitle;if(!this.IsShortTitle){var indexParam='';for(var _i131=0;_i131<this.Arguments.length;++_i131){var _item26=this.Arguments[_i131];if(indexParam.length>0)indexParam+=',';indexParam+=_item26.Value.toString();}if(indexParam.length>0)titlePaint.ArgumentsText='('+indexParam+')';}if(this.TitleFont)titlePaint.Font=this.TitleFont;return true;};//给一个默认的颜色
|
|
12793
12859
|
this.GetDefaultColor=function(id){var COLOR_ARRAY=null;//使用全局线段配置
|
|
12794
12860
|
if(g_JSChartResource&&g_JSChartResource.Index&&g_JSChartResource.Index.LineColor){COLOR_ARRAY=g_JSChartResource.Index.LineColor;}if(!COLOR_ARRAY||!Array.isArray(COLOR_ARRAY)){COLOR_ARRAY=["rgb(255,174,0)","rgb(25,199,255)","rgb(175,95,162)","rgb(236,105,65)","rgb(68,114,196)","rgb(229,0,79)","rgb(0,128,255)","rgb(252,96,154)","rgb(42,230,215)","rgb(24,71,178)"];}var number=parseInt(id);return COLOR_ARRAY[number%(COLOR_ARRAY.length-1)];};//获取颜色
|
|
12795
12861
|
this.GetColor=function(colorName){if(colorName.indexOf("RGB(")==0)return colorName.toLowerCase();if(colorName.indexOf("rgb(")==0)return colorName;if(colorName.indexOf("RGBA(")==0)return colorName.toLowerCase();if(colorName.indexOf("rgba(")==0)return colorName;var color=JSComplier.ColorVarToRGB(colorName);if(color)return color;return'rgb(30,144,255)';/*
|
|
@@ -15562,7 +15628,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
15562
15628
|
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);};}/********************************************************************************
|
|
15563
15629
|
* 版本信息输出
|
|
15564
15630
|
*
|
|
15565
|
-
*/var HQCHART_VERSION="1.1.
|
|
15631
|
+
*/var HQCHART_VERSION="1.1.15167";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
|
|
15566
15632
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
15567
15633
|
// BaseIndex:BaseIndex,
|
|
15568
15634
|
// ChartLine:ChartLine,
|