hqchart 1.1.15258 → 1.1.15292
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 +187 -122
- package/package.json +1 -1
- package/src/jscommon/umychart.NetworkFilterTest.js +22 -0
- package/src/jscommon/umychart.complier.js +327 -43
- package/src/jscommon/umychart.js +370 -16
- package/src/jscommon/umychart.resource/js/codemirror/javascript.js +1 -1
- package/src/jscommon/umychart.testdata.js +22 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +698 -60
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.NetworkFilterTest.vue.js +22 -0
- package/src/jscommon/umychart.vue/umychart.vue.js +698 -60
package/lib/umychart.vue.js
CHANGED
|
@@ -1892,7 +1892,7 @@ this.DisableMouse=false;//禁止鼠标事件
|
|
|
1892
1892
|
this.LanguageID=JSCHART_LANGUAGE_ID.LANGUAGE_CHINESE_ID;this.PressTime=500;this.IsPress=false;//是否长按
|
|
1893
1893
|
this.IsPressKeyboard=false;//是否键盘按键
|
|
1894
1894
|
this.PressKeyboardConfig={PauseUpdate:false};//按键以后 是否涨停数据更新
|
|
1895
|
-
this.NetworkFilter;//网络请求回调 function(data, callback);
|
|
1895
|
+
this.DrawStatusData={LatestTime:{Draw:null,DrawDynamicInfo:null}};this.NetworkFilter;//网络请求回调 function(data, callback);
|
|
1896
1896
|
this.LastMouseStatus={MouseOnToolbar:null};// MouseOnToolbar={ Rect:{}, Title: }
|
|
1897
1897
|
this.ClickDownPoint;//鼠标点击坐标 {X, Y}, 鼠标放开以后清空为null
|
|
1898
1898
|
this.IsDestroy=false;//是否已经销毁了
|
|
@@ -1945,7 +1945,7 @@ this.DataMoveConfig={Touch:{EnableLR:true},Mouse:{EnableLR:true}};//数据移动
|
|
|
1945
1945
|
this.MapEventListenerCache=new _map2.default();//addEventListener 监听事件 key=type:"keydown|keyup ....", value:{ Callback:, Option: }
|
|
1946
1946
|
this.AddEventListener=function(eventTarget,type,listener,option){if(!eventTarget||!type||!listener)return false;var callback=listener.bind(this);var item={Callback:callback,Option:option,Type:type,Element:eventTarget};eventTarget.addEventListener(type,callback,option);this.MapEventListenerCache.set(item.Type,item);return true;};this.RemoveEventListener=function(eventTarget,type){if(!eventTarget||!type)return false;if(!this.MapEventListenerCache.has(type))return false;var item=this.MapEventListenerCache.get(type);if(!item.Element||!item.Callback)return false;this.MapEventListenerCache.delete(item.Type);item.Element.removeEventListener(item.Type,item.Callback,item.Option);};//option={ KeyDown:, Wheel }
|
|
1947
1947
|
this.AddDefaultEventListener=function(option){var _this4=this;var bRegisterKeydown=true;var bRegisterWheel=true;if(option){if(IFrameSplitOperator.IsBool(option.KeyDown))bRegisterKeydown=option.KeyDown;if(IFrameSplitOperator.IsBool(option.Wheel))bRegisterWheel=option.Wheel;}if(bRegisterKeydown){this.AddEventListener(this.UIElement,"keydown",function(e){_this4.OnKeyDown(e);},true);this.AddEventListener(this.UIElement,"keyup",function(e){_this4.OnKeyUp(e);},true);}if(bRegisterWheel){this.AddEventListener(this.UIElement,"wheel",function(e){_this4.OnWheel(e);},true);}JSConsole.Chart.Log('[JSChartContainer::AddDefaultEventListener] [keydown,keyup]='+bRegisterKeydown+', [wheel]='+bRegisterWheel);};this.RemoveAllEventListener=function(){var _iteratorNormalCompletion2=true;var _didIteratorError2=false;var _iteratorError2=undefined;try{for(var _iterator2=(0,_getIterator3.default)(this.MapEventListenerCache),_step2;!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){var mapItem=_step2.value;var item=mapItem[1];if(!item.Element||!item.Callback)continue;item.Element.removeEventListener(item.Type,item.Callback,item.Option);}}catch(err){_didIteratorError2=true;_iteratorError2=err;}finally{try{if(!_iteratorNormalCompletion2&&_iterator2.return){_iterator2.return();}}finally{if(_didIteratorError2){throw _iteratorError2;}}}this.MapEventListenerCache.clear();};this.ClearGlobalOption=function(){if(!this.GlobalOption)return;this.GlobalOption.LatestPoint=null;this.GlobalOption.TradeStatus=null;this.GlobalOption.CountDown=null;};this.RestoreFocus=function(delay){var _this5=this;var value=1000;if(IFrameSplitOperator.IsNumber(delay))value=delay;this.ClearRestoreFocusTimer();this.RestoreFocusTimer=setTimeout(function(){_this5.SetFocus();},value);};this.ClearRestoreFocusTimer=function(){if(this.RestoreFocusTimer){clearTimeout(this.RestoreFocusTimer);this.RestoreFocusTimer=null;}};this.GetVolUnit=function()//成交量单位
|
|
1948
|
-
{var upperSymbol=this.Symbol?this.Symbol.toUpperCase():null;var unit=MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol);return unit;};this.ClearStockCache=function(){this.StockCache.Data=null;this.BuySellData.AryBuy=null;this.BuySellData.ArySell=null;};this.UpdateCorssCursorStatus=function(){if(!this.ChartCorssCursor)return false;if(!this.GlobalOption||!this.GlobalOption.CorssCursorStatus)return false;var status=this.ChartCorssCursor.Status;//状态改变了
|
|
1948
|
+
{var upperSymbol=this.Symbol?this.Symbol.toUpperCase():null;var unit=MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol);return unit;};this.ClearDrawStatusData=function(){this.DrawStatusData.LatestTime.Draw=null;this.DrawStatusData.LatestTime.DrawDynamicInfo=null;};this.UpdateDrawStatusData=function(funName){if(funName=="Draw"){this.DrawStatusData.LatestTime.Draw=new Date();}else if(funName=="DrawDynamicInfo"){this.DrawStatusData.LatestTime.DrawDynamicInfo=new Date();}};this.ClearStockCache=function(){this.StockCache.Data=null;this.BuySellData.AryBuy=null;this.BuySellData.ArySell=null;};this.UpdateCorssCursorStatus=function(){if(!this.ChartCorssCursor)return false;if(!this.GlobalOption||!this.GlobalOption.CorssCursorStatus)return false;var status=this.ChartCorssCursor.Status;//状态改变了
|
|
1949
1949
|
if(this.GlobalOption.CorssCursorStatus.Value!=status){this.GlobalOption.CorssCursorStatus.Value=status;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CORSSCURSOR_STATUS_CHANGE);if(event&&event.Callback){var sendData={Status:status,IsShowLine:(status&JSCHART_CORSSCURSOR_STATUS_ID.LINE_ID)>0};event.Callback(event,sendData,this);}}return true;};this.InitalPopMenu=function()//初始化弹出窗口
|
|
1950
1950
|
{if(this.JSPopMenu)return;this.JSPopMenu=new JSPopMenu();//内置菜单
|
|
1951
1951
|
this.JSPopMenu.Inital(this);};this.InitalDrawToolDialog=function(){if(this.DialogDrawTool)return;this.DialogDrawTool=new JSDialogDrawTool();this.DialogDrawTool.Inital(this);this.DialogDrawTool.Create();};this.InitalTooltipDialog=function(option){if(this.DialogTooltip)return;this.DialogTooltip=new JSDialogTooltip();this.DialogTooltip.Inital(this,option);this.DialogTooltip.Create();};this.InitalFloatTooltip=function(option){if(this.FloatTooltip)return;this.FloatTooltip=new JSFloatTooltip();this.FloatTooltip.Inital(this,option);this.FloatTooltip.Create();};this.InitalSmallFloatTooltip=function(option){if(this.SmallFloatTooltipGroup)return;this.SmallFloatTooltipGroup=new JSSmallFloatTooltipGroup();this.SmallFloatTooltipGroup.Inital(this,option);this.SmallFloatTooltipGroup.Create();};this.InitalModifyDrawDialog=function(){if(this.DialogModifyDraw)return;this.DialogModifyDraw=new JSDialogModifyDraw();this.DialogModifyDraw.Inital(this);this.DialogModifyDraw.Create();};this.InitalSelectRectDialog=function(option){if(this.DialogSelectRect)return;this.DialogSelectRect=new JSDialogSelectRect();this.DialogSelectRect.Inital(this,option);this.DialogSelectRect.Create();};this.InitalSearchIndexDialog=function(option){if(this.DialogSearchIndex)return;this.DialogSearchIndex=new JSDialogSearchIndex();this.DialogSearchIndex.Inital(this,option);this.DialogSearchIndex.Create();};this.InitalModifyIndexParamDialog=function(option){if(this.DialogModifyIndexParam)return;this.DialogModifyIndexParam=new JSDialogModifyIndexParam();this.DialogModifyIndexParam.Inital(this,option);this.DialogModifyIndexParam.Create();};this.ShowChangeIndexDialog=function(data){if(!data)return;if(!this.DialogSearchIndex)return;data.Title='\u5207\u6362\u6307\u6807 [\u7A97\u53E3'+(data.WindowIndex+1)+']';this.DialogSearchIndex.SetOpData(data);this.DialogSearchIndex.Show();};this.ShowAddOverlayIndexDialog=function(data){if(!data)return;if(!this.DialogSearchIndex)return;data.Title='\u6DFB\u52A0\u53E0\u52A0\u6307\u6807 [\u7A97\u53E3'+(data.WindowIndex+1)+']';this.DialogSearchIndex.SetOpData(data);this.DialogSearchIndex.Show();};//添加指标窗口
|
|
@@ -2185,7 +2185,7 @@ item.Draw();}if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.Draw();i
|
|
|
2185
2185
|
*/this.OffscreenToShowCanvas();//更新滚动条
|
|
2186
2186
|
if(typeof this.UpdateScrollBar=='function')this.UpdateScrollBar();if(this.LastMouseStatus.MouseOnToolbar)//工具栏按钮提示信息
|
|
2187
2187
|
{var frame=this.LastMouseStatus.MouseOnToolbar.Frame;if(frame&&frame.DrawToolbarTooltip)frame.DrawToolbarTooltip(this.LastMouseStatus.MouseOnToolbar);}if(bDrawDialogTooltip)this.DrawTooltipDialog();//发送图形状态给外部
|
|
2188
|
-
if(this.mapEvent.has(JSCHART_EVENT_ID.CHART_STATUS)){var event=this.mapEvent.get(JSCHART_EVENT_ID.CHART_STATUS);var data={};if(typeof this.GetChartStatus=='function')data=this.GetChartStatus();event.Callback(event,data,this);}++this.TouchDrawCount;this.UpdateCorssCursorStatus();};this.DrawExtendChartPaint=function(level,option){if(!IFrameSplitOperator.IsNonEmptyArray(this.ExtendChartPaint))return;//扩展图形
|
|
2188
|
+
if(this.mapEvent.has(JSCHART_EVENT_ID.CHART_STATUS)){var event=this.mapEvent.get(JSCHART_EVENT_ID.CHART_STATUS);var data={};if(typeof this.GetChartStatus=='function')data=this.GetChartStatus();event.Callback(event,data,this);}++this.TouchDrawCount;this.UpdateCorssCursorStatus();this.UpdateDrawStatusData("Draw");};this.DrawExtendChartPaint=function(level,option){if(!IFrameSplitOperator.IsNonEmptyArray(this.ExtendChartPaint))return;//扩展图形
|
|
2189
2189
|
for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.IsCallbackDraw)continue;var value=item.GetPriority();//绘图优先级
|
|
2190
2190
|
if(value!=level)continue;if(level==IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_20){item.Draw();if(item.DrawToolbar&&option)item.DrawToolbar(option.MoveonPoint,option.LastMouseStatus);}else if(level==IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25&&option){if(item.ClassName=='KLineTooltipPaint'&&option){if(option.Tooltip==false)continue;if(option.Point)item.LatestPoint=option.Point;}else if(item.ClassName=="MinuteTooltipPaint"&&option){if(option.Point)item.LatestPoint=option.Point;}item.Draw(option.MoveonPoint,option.LastMouseStatus);}else{item.Draw();}}};this.PtInButton=function(x,y){var button=this.Frame.PtInButtons(x,y);if(button)return{Name:"FrameButton",Button:button};button=this.PtInExtendChartButtons(x,y);if(button)return{Name:"ExtendChartButton",Button:button};button=this.PtInDrawPictureButtons(x,y);if(button)return{Name:"DrawPictureButton",Button:button};button=this.PtInTitleButtons(x,y);if(button)return{Name:"TitleButton",Button:button};return null;};this.DrawDrawPictureXYCoordinate=function(){var actionDrawPicture=null;//当前激活的画图
|
|
2191
2191
|
if(this.CurrentChartDrawPicture)actionDrawPicture=this.CurrentChartDrawPicture;else if(this.SelectChartDrawPicture)actionDrawPicture=this.SelectChartDrawPicture;//画图工具显示点在Y轴的刻度
|
|
@@ -2195,7 +2195,7 @@ if(frame.YSplitOperator&&frame.YSplitOperator.CoordinateType==1)isPercentage=tru
|
|
|
2195
2195
|
for(var i=0;i<frame.CustomHorizontalInfo.length;++i){var info=frame.CustomHorizontalInfo[i];if(info.Type==4)isOverlayCoordinate=true;if(isPercentage&&info.Type==3||info.Type==2){var item=this.ChartPaint[0];if(!item)continue;var data=item.Data;if(!data||!IFrameSplitOperator.IsNonEmptyArray(data.Data))continue;if(!IFrameSplitOperator.IsNumber(item.DrawKRange.Start)||!IFrameSplitOperator.IsNumber(item.DrawKRange.End))continue;var startKLine=data.Data[item.DrawKRange.Start];var endKLine=data.Data[item.DrawKRange.End];var value=(endKLine.Close-startKLine.Close)/startKLine.Close*100;info.Value=endKLine.Close;if(info.Type==2){info.Message[1]=endKLine.Close.toFixed(defaultfloatPrecision);if(endKLine.Close>endKLine.Open)info.LineColor=g_JSChartResource.FrameLatestPrice.UpBarColor;else if(endKLine.Close<endKLine.Open)info.LineColor=g_JSChartResource.FrameLatestPrice.DownBarColor;else info.LineColor=g_JSChartResource.FrameLatestPrice.UnchagneBarColor;}else{info.Message[1]=value.toFixed(2)+"%";}if(this.Name)info.Title=this.Name;}}if(isOverlayCoordinate){//叠加股票自定义刻度需要移除重新添加
|
|
2196
2196
|
var newCustomHorizontalInfo=frame.CustomHorizontalInfo.filter(function(value,index,ary){return value.Type!=4;});frame.CustomHorizontalInfo=newCustomHorizontalInfo;}//叠加股票右侧名称+涨幅
|
|
2197
2197
|
for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];if(!item)continue;if(item.YInfoType!=4)continue;var data=item.Data;if(!data||!IFrameSplitOperator.IsNonEmptyArray(data.Data))continue;if(!IFrameSplitOperator.IsNumber(item.DrawKRange.Start)||!IFrameSplitOperator.IsNumber(item.DrawKRange.End))continue;var startKLine=null;for(var j=item.DrawKRange.Start;j<=item.DrawKRange.End;++j){var kItem=data.Data[j];if(IFrameSplitOperator.IsNumber(kItem.Close)){startKLine=kItem;break;}}if(!startKLine)continue;var endKLine=data.Data[item.DrawKRange.End];var value=(endKLine.Close-startKLine.Close)/startKLine.Close*100;var info=new CoordinateInfo();info.Value=endKLine.Close/item.ShowRange.FirstOverlayOpen*item.ShowRange.FirstOpen;info.Message[1]=value.toFixed(2)+"%";info.LineType=-1;info.Type=item.YInfoType;//叠加股票
|
|
2198
|
-
info.LineColor=item.Color;info.TextColor=g_JSChartResource.FrameLatestPrice.OverlayTextColor;if(item.Title)info.Title=item.Title;frame.CustomHorizontalInfo.push(info);}};this.OffscreenToShowCanvas=function(){if(!this.ShowCanvas)return;this.ShowCanvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);this.ShowCanvas.drawImage(this.OffscreenCanvasElement,0,0);};this.GetDrawStatus=function(){var status={Point:{X:this.LastPoint.X,Y:this.LastPoint.Y},IsOnTouch:this.IsOnTouch,CorssCursorTouchEnd:this.CorssCursorTouchEnd,IsTitleShowLatestData:this.IsTitleShowLatestData,IsMinuteChart:this.ClassName=="MinuteChartContainer"||this.ClassName=="MinuteChartHScreenContainer"?true:false};status.FrameID=this.Frame.PtInFrame(this.LastPoint.X,this.LastPoint.Y);return status;};this.InvokeBeforeDrawSplashScreenCallback=function(){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_BEFORE_DRAW_SPLASH_SCREEN);if(!event||!event.Callback)return null;var data={PreventDefault:false};event.Callback(event,data,this);return data;};this.DrawSplashScreen=function(option){var data=this.InvokeBeforeDrawSplashScreenCallback();if(data&&data.PreventDefault===true)return;if(this.Frame.ScreenImageData==null&&!this.CacheCanvas)return;if(this.Frame.ScreenImageData){this.Canvas.putImageData(this.Frame.ScreenImageData,0,0);}else if(this.CacheCanvas){this.Canvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);this.Canvas.drawImage(this.CacheElement,0,0);}var bgColor=g_JSChartResource.SplashScreen.BGColor;this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(0,0,this.UIElement.width,this.UIElement.height);if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){var title=g_JSChartResource.SplashScreen.Title;if(option&&option.Title)title=option.Title;this.ChartSplashPaint.SetTitle(title);this.ChartSplashPaint.Draw();}};//十字光标坐标
|
|
2198
|
+
info.LineColor=item.Color;info.TextColor=g_JSChartResource.FrameLatestPrice.OverlayTextColor;if(item.Title)info.Title=item.Title;frame.CustomHorizontalInfo.push(info);}};this.OffscreenToShowCanvas=function(){if(!this.ShowCanvas)return;this.ShowCanvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);this.ShowCanvas.drawImage(this.OffscreenCanvasElement,0,0);};this.GetDrawStatus=function(){var status={Point:{X:this.LastPoint.X,Y:this.LastPoint.Y},IsOnTouch:this.IsOnTouch,CorssCursorTouchEnd:this.CorssCursorTouchEnd,IsTitleShowLatestData:this.IsTitleShowLatestData,IsMinuteChart:this.ClassName=="MinuteChartContainer"||this.ClassName=="MinuteChartHScreenContainer"?true:false,DrawStatusData:this.DrawStatusData};status.FrameID=this.Frame.PtInFrame(this.LastPoint.X,this.LastPoint.Y);return status;};this.InvokeBeforeDrawSplashScreenCallback=function(){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_BEFORE_DRAW_SPLASH_SCREEN);if(!event||!event.Callback)return null;var data={PreventDefault:false};event.Callback(event,data,this);return data;};this.DrawSplashScreen=function(option){var data=this.InvokeBeforeDrawSplashScreenCallback();if(data&&data.PreventDefault===true)return;if(this.Frame.ScreenImageData==null&&!this.CacheCanvas)return;if(this.Frame.ScreenImageData){this.Canvas.putImageData(this.Frame.ScreenImageData,0,0);}else if(this.CacheCanvas){this.Canvas.clearRect(0,0,this.UIElement.width,this.UIElement.height);this.Canvas.drawImage(this.CacheElement,0,0);}var bgColor=g_JSChartResource.SplashScreen.BGColor;this.Canvas.fillStyle=bgColor;this.Canvas.fillRect(0,0,this.UIElement.width,this.UIElement.height);if(this.ChartSplashPaint&&this.ChartSplashPaint.IsEnableSplash){var title=g_JSChartResource.SplashScreen.Title;if(option&&option.Title)title=option.Title;this.ChartSplashPaint.SetTitle(title);this.ChartSplashPaint.Draw();}};//十字光标坐标
|
|
2199
2199
|
this.GetCorssCursorPosition=function(){var position={LastPoint:{X:this.LastPoint.X,Y:this.LastPoint.Y},CursorIndex:this.CursorIndex};return position;};this.IsLockCorssCursor=function(){if(!this.GlobalOption||!this.GlobalOption.LockCorssCursor)return false;return this.GlobalOption.LockCorssCursor.X.Enable;};//画动态信息
|
|
2200
2200
|
this.DrawDynamicInfo=function(option){this.LastMouseStatus.MouseOnToolbar=null;//鼠标在工具栏按钮上
|
|
2201
2201
|
if(this.ChartCorssCursor)this.ChartCorssCursor.Status=0;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_BEFORE_DRAW_DYNAMIC_INFO);if(event&&event.Callback){var sendData={};event.Callback(event,sendData,this);}if(this.Frame.ScreenImageData==null&&!this.CacheCanvas)return;var isErase=false;if(this.ChartCorssCursor){if(this.ChartCorssCursor.PointX!=null||this.ChartCorssCursor.PointY!=null)isErase=true;}isErase=true;//每次都擦除背景
|
|
@@ -2218,7 +2218,7 @@ if(this.ChartCorssCursor){this.ChartCorssCursor.LastPoint=corssCursorPos.LastPoi
|
|
|
2218
2218
|
if(option&&option.Point&&(option.ParentFunction=='OnMouseMove'||option.ParentFunction=='MoveCorssCursorIndex')){ptPosition=this.Frame.PtInFrame(option.Point.X,option.Point.Y);}var drawStatus=this.GetDrawStatus();drawStatus.DrawName="DrawDynamicInfo";for(var i=0;i<this.TitlePaint.length;++i){var item=this.TitlePaint[i];if(!item.IsDynamic)continue;item.CursorIndex=corssCursorPos.CursorIndex;item.LastPoint=this.LastPoint;if(item.OnDrawEvent){item.OnDrawEvent.FunctionName='DrawDynamicInfo';item.OnDrawEvent.PointPosition=ptPosition;if(this.IsLockCorssCursor()){if(item.OnDrawEvent.PointPosition<0)item.OnDrawEvent.PointPosition=0;}}item.DrawStatus=drawStatus;var pointInfo=null;if(option&&IFrameSplitOperator.IsNumber(option.ClientPos)&&option.Point)//当前鼠标所在位置的详细信息 包含盘前盘后
|
|
2219
2219
|
{pointInfo={ClientPos:option.ClientPos,Point:{X:option.Point.X,Y:option.Point.Y}};if(this.IsLockCorssCursor()){if(pointInfo.ClientPos<=0)pointInfo.ClientPos=1;}}item.PointInfo=pointInfo;item.Draw(moveonPoint,this.LastMouseStatus);}var exChartOption={MoveonPoint:moveonPoint,LastMouseStatus:this.LastMouseStatus};if(option){exChartOption.Tooltip=option.Tooltip;exChartOption.Point=option.Point;}this.DrawExtendChartPaint(IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25,exChartOption);if(this.EnableAnimation)this.DrawExtendChartPaint(IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_30);for(var i=0;i<this.ChartDrawPicture.length;++i){var item=this.ChartDrawPicture[i];if(item.IsDrawFirst)continue;if(item.IsDrawMain&&item.IsDrawMain()){if(item.MainPartDraw)item.MainPartDraw();continue;}if(this.SelectChartDrawPicture&&item.Guid==this.SelectChartDrawPicture.Guid)continue;//选中画图最后画 确保显示在最外面
|
|
2220
2220
|
item.Draw(moveonPoint,this.LastMouseStatus);}if(this.SelectChartDrawPicture){this.SelectChartDrawPicture.Draw(moveonPoint,this.LastMouseStatus);}if(this.CurrentChartDrawPicture&&this.CurrentChartDrawPicture.Status!=10){this.CurrentChartDrawPicture.Draw();}this.DrawExtendChartPaint(IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_50);if(this.LastMouseStatus.MouseOnToolbar)//工具栏按钮提示信息
|
|
2221
|
-
{var frame=this.LastMouseStatus.MouseOnToolbar.Frame;if(frame&&frame.DrawToolbarTooltip)frame.DrawToolbarTooltip(this.LastMouseStatus.MouseOnToolbar);}this.OffscreenToShowCanvas();if(bDrawDialogTooltip)this.DrawTooltipDialog();++this.TouchDrawCount;this.UpdateCorssCursorStatus();};this.DrawAnimation=function()//绘制动画 如弹幕
|
|
2221
|
+
{var frame=this.LastMouseStatus.MouseOnToolbar.Frame;if(frame&&frame.DrawToolbarTooltip)frame.DrawToolbarTooltip(this.LastMouseStatus.MouseOnToolbar);}this.OffscreenToShowCanvas();if(bDrawDialogTooltip)this.DrawTooltipDialog();++this.TouchDrawCount;this.UpdateCorssCursorStatus();this.UpdateDrawStatusData("DrawDynamicInfo");};this.DrawAnimation=function()//绘制动画 如弹幕
|
|
2222
2222
|
{if(!this.EnableAnimation)return;if(this.Frame.ScreenImageData&&!this.IsOnTouch){for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.IsAnimation===true)item.IsMoveStep=true;//移动弹幕
|
|
2223
2223
|
}this.DrawDynamicInfo();}var self=this;window.requestAnimationFrame(function(){self.DrawAnimation();});};this.StartAnimation=function(option){var bCreated=false;//是否已经创建了弹幕画法
|
|
2224
2224
|
var barrageData=null;for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(item.ClassName==='BarragePaint'){bCreated=true;barrageData=item.BarrageList;break;}}if(!bCreated){var chart=new BarragePaint();chart.Canvas=this.Canvas;chart.ChartBorder=this.Frame.ChartBorder;chart.ChartFrame=this.Frame;chart.HQChart=this;chart.SetOption(option);this.ExtendChartPaint.push(chart);barrageData=chart.BarrageList;}this.EnableAnimation=true;var self=this;window.requestAnimationFrame(function(){self.DrawAnimation();});return barrageData;};this.StopAnimation=function(){this.EnableAnimation=false;this.DrawDynamicInfo();};this.GetChartTooltipData=function(x,y,option){var toolTip=new TooltipData();if(this.ChartInfoPaint){if(this.ChartInfoPaint.GetTooltipData(x,y,toolTip))return toolTip;}if(this.PtInChartPaintTooltip(x,y,toolTip))return toolTip;if(IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame)){for(var i=0;i<this.Frame.SubFrame.length;++i){var subFrame=this.Frame.SubFrame[i];for(var j=0;j<subFrame.OverlayIndex.length;++j){var overlayItem=subFrame.OverlayIndex[j];for(var k=0;k<overlayItem.ChartPaint.length;++k){var item=overlayItem.ChartPaint[k];if(item.GetTooltipData(x,y,toolTip))return toolTip;}}}}if(this.PtInOverlayChartPaintTooltip(x,y,toolTip))return toolTip;if(this.PtInExtendChartPaintTooltip(x,y,toolTip))return toolTip;return null;};this.GetCorssCursorTooltipData=function(option){if(!this.ChartCorssCursor)return null;if(this.ChartCorssCursor.Status===0)return null;if(!this.ChartCorssCursor.IsShowCorss)return null;var kItem=this.ChartCorssCursor.StringFormatX.KItem;if(!kItem)return null;//X轴取十字光标坐标
|
|
@@ -4657,14 +4657,38 @@ FontName:g_JSChartResource.DRAWNUMBER.FontName,YOffset:g_JSChartResource.DRAWNUM
|
|
|
4657
4657
|
{if(!this.Text)return;var isHScreen=this.ChartFrame.IsHScreen===true;if(isHScreen){var y=this.ChartBorder.GetRightEx()-this.ChartBorder.GetWidthEx()*this.Position.Y;var x=this.ChartBorder.GetTop()+this.ChartBorder.GetHeight()*this.Position.X;}else{var x=this.ChartBorder.GetLeft()+this.ChartBorder.GetWidth()*this.Position.X;var y=this.ChartBorder.GetTopEx()+this.ChartBorder.GetHeightEx()*this.Position.Y;}this.Canvas.fillStyle=this.Color;if(this.Name=="DRAWTEXT_FIX")this.Canvas.font=this.Font.DRAWTEXT_FIX;else if(this.Name=="DRAWNUMBER_FIX")this.Canvas.font=this.Font.DRAWNUMBER_FIX;//TYPE:0为左对齐,1为右对齐.
|
|
4658
4658
|
if(this.Position.Type==0)this.Canvas.textAlign='left';else if(this.Position.Type==1)this.Canvas.textAlign='right';else this.Canvas.textAlign='center';if(this.Direction==1)this.Canvas.textBaseline='bottom';else if(this.Direction==2)this.Canvas.textBaseline='top';else this.Canvas.textBaseline='middle';if(Array.isArray(this.Text)){if(!this.Data||!this.Data.Data)return;var xPointCount=this.ChartFrame.XPointCount;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var text=this.Text[i];if(text){this.DrawText(text,x,y,isHScreen);break;}}}else{this.DrawText(this.Text,x,y,isHScreen);}};this.DrawText=function(text,x,y,isHScreen){if(isHScreen){this.Canvas.save();this.Canvas.translate(y,x);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(text,0,0);this.Canvas.restore();}else{this.Canvas.fillText(text,x,y);}};this.DrawTextV2=function(text,drawInfo,isHScreen){var textWidth=this.Canvas.measureText(text).width;if(isHScreen){var x=drawInfo.Y;var y=drawInfo.X;if(drawInfo.Text.Align=="right")y=y-textWidth;else if(drawInfo.Text.Align=="center")y=y-textWidth/2;if(drawInfo.Text.Baseline=="top")x-=drawInfo.Font.Height;else if(drawInfo.Text.Baseline=="middle")x-=drawInfo.Font.Height/2;if(this.TextBG&&(this.TextBG.Color||this.TextBG.Border)){var margin=this.TextBG.Margin;//0=上 1=下 2=左 3=右
|
|
4659
4659
|
var xRect=x-margin[0];var yRect=y-margin[2];var bgWidth=textWidth+margin[2]+margin[3];var bgHeight=drawInfo.Font.Height+margin[0]+margin[1];if(this.TextBG.Color){this.Canvas.fillStyle=this.TextBG.Color;this.Canvas.fillRect(xRect,yRect,bgHeight,bgWidth);}if(this.TextBG.Border){this.Canvas.strokeStyle=this.TextBG.Border;this.Canvas.strokeRect(ToFixedPoint(xRect),ToFixedPoint(yRect),ToFixedRect(bgHeight),ToFixedRect(bgWidth));}}this.Canvas.textBaseline="bottom";this.Canvas.textAlign="left";this.Canvas.fillStyle=drawInfo.Text.Color;this.Canvas.save();this.Canvas.translate(x,y);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(text,0,0);this.Canvas.restore();}else{var x=drawInfo.X;var y=drawInfo.Y;if(drawInfo.Text.Align=="right")x=x-textWidth;else if(drawInfo.Text.Align=="center")x=x-textWidth/2;if(drawInfo.Text.Baseline=="top")y+=drawInfo.Font.Height;else if(drawInfo.Text.Baseline=="middle")y+=drawInfo.Font.Height/2;if(this.TextBG&&(this.TextBG.Color||this.TextBG.Border)){var margin=this.TextBG.Margin;//0=上 1=下 2=左 3=右
|
|
4660
|
-
var xRect=x-margin[2];var yRect=y-drawInfo.Font.Height-margin[1];var bgWidth=textWidth+margin[2]+margin[3];var bgHeight=drawInfo.Font.Height+margin[0]+margin[1];if(this.TextBG.Color){this.Canvas.fillStyle=this.TextBG.Color;this.Canvas.fillRect(xRect,yRect,bgWidth,bgHeight);}if(this.TextBG.Border){this.Canvas.strokeStyle=this.TextBG.Border;this.Canvas.strokeRect(ToFixedPoint(xRect),ToFixedPoint(yRect),ToFixedRect(bgWidth),ToFixedRect(bgHeight));}}this.Canvas.textBaseline="bottom";this.Canvas.textAlign="left";this.Canvas.fillStyle=drawInfo.Text.Color;this.Canvas.fillText(text,x,y);}};}function
|
|
4660
|
+
var xRect=x-margin[2];var yRect=y-drawInfo.Font.Height-margin[1];var bgWidth=textWidth+margin[2]+margin[3];var bgHeight=drawInfo.Font.Height+margin[0]+margin[1];if(this.TextBG.Color){this.Canvas.fillStyle=this.TextBG.Color;this.Canvas.fillRect(xRect,yRect,bgWidth,bgHeight);}if(this.TextBG.Border){this.Canvas.strokeStyle=this.TextBG.Border;this.Canvas.strokeRect(ToFixedPoint(xRect),ToFixedPoint(yRect),ToFixedRect(bgWidth),ToFixedRect(bgHeight));}}this.Canvas.textBaseline="bottom";this.Canvas.textAlign="left";this.Canvas.fillStyle=drawInfo.Text.Color;this.Canvas.fillText(text,x,y);}};}function ChartDrawText_Fix(){this.newMethod=IChartPainting;//派生
|
|
4661
|
+
this.newMethod();delete this.newMethod;this.ClassName='ChartDrawText_Fix';//类名
|
|
4662
|
+
this.Color="rgb(255,193,37)";//字颜色
|
|
4663
|
+
this.TextFont=g_JSChartResource.DRAWTEXT_FIX.Font;this.PtPercentage=null;//{ X:, Y: } 百分比坐标
|
|
4664
|
+
this.TextBaseline="top";this.TextAlign='center';this.ShowOffset={X:0,Y:0};//显示偏移
|
|
4665
|
+
this.MapCache;this.HQChart;this.AryText;this.BuildCacheData=function(kData,data){var mapData=new _map2.default();this.MapCache=mapData;if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return;if(!data||!IFrameSplitOperator.IsNonEmptyArray(data.Value)||!IFrameSplitOperator.IsNonEmptyArray(data.Text))return;for(var i=0;i<kData.Data.length;++i){var value=data.Value[i];if(value!==1)continue;var text=data.Text[i];if(!text)continue;var kItem=kData.Data[i];var item={Value:value,Text:text,Date:kItem.Date,Time:kItem.Time};var key=this.BuildKey(item);/* //测试
|
|
4666
|
+
item.Text=
|
|
4667
|
+
[
|
|
4668
|
+
{ Name:`日期`, Text:`${item.Date}`, Margin:{ Bottom:10 }},
|
|
4669
|
+
{ Name:`日期2`, Text:`${item.Date}-2`},
|
|
4670
|
+
]
|
|
4671
|
+
*/mapData.set(key,item);}};this.ReloadResource=function(resource){this.TextFont=g_JSChartResource.DRAWTEXT_FIX.Font;};this.Draw=function(){this.AryText=null;if(!this.IsShow||this.ChartFrame.IsMinSize)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!this.MapCache||this.MapCache.size<=0)return;if(!this.PtPercentage||!IFrameSplitOperator.IsNumber(this.PtPercentage.X)||!IFrameSplitOperator.IsNumber(this.PtPercentage.Y))return;if(!this.IsDrawText())return;var bHScreen=this.ChartFrame.IsHScreen===true;this.Canvas.save();this.ClipClient(bHScreen);this.DrawText();this.Canvas.restore();this.AryText=null;};//当前屏是否要绘制文字
|
|
4672
|
+
this.IsDrawText=function(){if(!this.HQChart)return false;var kData=this.HQChart.GetKData();if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return false;var bHScreen=this.ChartFrame.IsHScreen===true;var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=this.ChartBorder.GetRight();var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottomEx();if(bHScreen){chartright=this.ChartBorder.GetBottom();top=this.ChartBorder.GetRightEx();bottom=this.ChartBorder.GetLeftEx();xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}for(var i=kData.DataOffset,j=0;i<kData.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var kItem=kData.Data[i];if(kItem==null)continue;var key=this.BuildKey(kItem);if(!this.MapCache.has(key))continue;var item=this.MapCache.get(key);if(Array.isArray(item.Text))this.AryText=item.Text;else this.AryText=[{Name:item.Text}];return true;}return false;};this.DrawText=function(){var bHScreen=this.ChartFrame.IsHScreen===true;if(bHScreen){var x=this.ChartBorder.GetRightEx()-this.ChartBorder.GetWidthEx()*this.PtPercentage.Y;var y=this.ChartBorder.GetTop()+this.ChartBorder.GetHeight()*this.PtPercentage.X;}else{var x=this.ChartBorder.GetLeft()+this.ChartBorder.GetWidth()*this.PtPercentage.X;var y=this.ChartBorder.GetTopEx()+this.ChartBorder.GetHeightEx()*this.PtPercentage.Y;}var drawInfo=this.CalculateComplexTextSize(this.AryText,{Font:this.TextFont,Color:this.Color});if(!drawInfo)return;drawInfo.IsHScreen=bHScreen;if(bHScreen){if(this.TextBaseline=="middle")x=x-drawInfo.Height/2;//上下居中
|
|
4673
|
+
else if(this.TextBaseline=="bottom")x=x-drawInfo.Height;//底部
|
|
4674
|
+
if(this.TextAlign=="center")y=y-drawInfo.Width/2;//左右居中
|
|
4675
|
+
else if(this.TextAlign=='right')y=y-drawInfo.Width;//右对齐
|
|
4676
|
+
this.DrawComplexText(x,y,drawInfo);}else{if(this.TextBaseline=="middle")y=y-drawInfo.Height/2;//上下居中
|
|
4677
|
+
else if(this.TextBaseline=="bottom")y=y-drawInfo.Height;//底部
|
|
4678
|
+
if(this.TextAlign=="center")x=x-drawInfo.Width/2;//左右居中
|
|
4679
|
+
else if(this.TextAlign=='right')x=x-drawInfo.Width;//右对齐
|
|
4680
|
+
this.DrawComplexText(x,y,drawInfo);}};this.DrawComplexText=function(x,y,drawInfo){var left=x;var lineTop=y;if(drawInfo.IsHScreen){left=0;lineTop=0;this.Canvas.save();this.Canvas.translate(x,y);this.Canvas.rotate(90*Math.PI/180);}this.Canvas.textBaseline="bottom";this.Canvas.textAlign="left";for(var i=0;i<drawInfo.AryData.length;++i){var item=drawInfo.AryData[i];var margin=item.Margin;var xText=left+margin.Left;var yText=lineTop+item.Height-margin.Bottom;if(item.Name){this.Canvas.font=item.Font;this.Canvas.fillStyle=item.NameColor;this.Canvas.fillText(item.Name,xText,yText);xText+=item.NameWidth+item.Space;}if(item.Text){this.Canvas.font=item.Font;this.Canvas.fillStyle=item.TextColor;this.Canvas.fillText(item.Text,xText,yText);xText+=item.TextWidth;}lineTop+=item.Height;}if(drawInfo.IsHScreen)this.Canvas.restore();};//计算复杂文本长度高度 defaultOption:{ Font:, }
|
|
4681
|
+
this.CalculateComplexTextSize=function(aryText,defaultOption){if(!defaultOption)return null;if(!aryText||!IFrameSplitOperator.IsNonEmptyArray(aryText))return null;this.Canvas.font=defaultOption.Font;var lineHeight=this.Canvas.measureText("擎").width;var maxNameWidth=0,maxTextWidth=0;var result={AryData:[],Width:0,Height:0};for(var i=0;i<aryText.length;++i){var item=aryText[i];var newItem={NameWidth:0,TextWidth:0,Margin:{Left:0,Top:0,Right:0,Bottom:0},Font:defaultOption.Font,Space:0,YOffset:0,Width:0,Height:0};if(item.Name){newItem.NameWidth=this.Canvas.measureText(item.Name).width;newItem.Name=item.Name;if(maxNameWidth<item.NameWidth)maxNameWidth=newItem.NameWidth;if(IFrameSplitOperator.IsNumber(item.Space))newItem.Space=item.Space;if(item.NameColor)newItem.NameColor=item.NameColor;else newItem.NameColor=defaultOption.Color;}if(item.Text){newItem.TextWidth=this.Canvas.measureText(item.Text).width;newItem.Text=item.Text;if(maxTextWidth<item.TextWidth)maxTextWidth=newItem.TextWidth;if(item.TextColor)newItem.TextColor=item.TextColor;else newItem.TextColor=defaultOption.Color;}CopyMarginConfig(newItem.Margin,item.Margin);if(IFrameSplitOperator.IsNumber(item.YOffset))newItem.YOffset=item.YOffset;newItem.Width=newItem.NameWidth+newItem.TextWidth;newItem.Width+=newItem.Margin.Left+newItem.Margin.Right+newItem.Space;newItem.Height=lineHeight+newItem.Margin.Top+newItem.Margin.Bottom;result.AryData.push(newItem);result.Height+=newItem.Height;if(result.Width<newItem.Width)result.Width=newItem.Width;}return result;};}function ChartDrawNumber_Fix(){this.newMethod=ChartDrawText_Fix;//派生
|
|
4682
|
+
this.newMethod();delete this.newMethod;this.ClassName='ChartDrawNumber_Fix';//类名
|
|
4683
|
+
this.TextFont=g_JSChartResource.DRAWNUMBER_FIX.Font;this.BuildCacheData=function(kData,data){var mapData=new _map2.default();this.MapCache=mapData;if(!kData||!IFrameSplitOperator.IsNonEmptyArray(kData.Data))return;if(!data||!IFrameSplitOperator.IsNonEmptyArray(data.Value)||!IFrameSplitOperator.IsNonEmptyArray(data.Text))return;for(var i=0;i<kData.Data.length;++i){var value=data.Value[i];var text=data.Text[i];if(!text)continue;var kItem=kData.Data[i];var item={Value:value,Text:text,Date:kItem.Date,Time:kItem.Time};var key=this.BuildKey(item);mapData.set(key,item);}};this.ReloadResource=function(resource){this.TextFont=g_JSChartResource.DRAWNUMBER_FIX.Font;};}function ChartTradeIcon(){this.newMethod=IChartPainting;//派生
|
|
4661
4684
|
this.newMethod();delete this.newMethod;this.ClassName='ChartTradeIcon';//类名
|
|
4662
4685
|
this.TextAlign='center';this.TextBaseline='middle';this.SVG={Family:"iconfont",Size:12};this.AryIcon;this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(!this.Data||!this.Data.Data)return;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon))return;var bHScreen=this.ChartFrame.IsHScreen===true;this.Canvas.font=this.SVG.Size+'px '+this.SVG.Family;this.Canvas.textAlign=this.TextAlign;this.Canvas.textBaseline='middle';var yOffset=0;if(this.TradeType=="BUY"||this.TradeType=="BUYSHORT"){this.Canvas.textBaseline="top";yOffset+=bHScreen?-2:2;}else if(this.TradeType=="SELL"||this.TradeType=="SELLSHORT"){this.Canvas.textBaseline="bottom";yOffset=bHScreen?2:-2;}var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();var xPointCount=this.ChartFrame.XPointCount;var border=this.ChartFrame.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;if(bHScreen){chartright=this.ChartBorder.GetBottom();//top=this.ChartBorder.GetRightEx();
|
|
4663
4686
|
//bottom=this.ChartBorder.GetLeftEx();
|
|
4664
4687
|
xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(value))continue;if(value<=0)continue;var iconItem=this.AryIcon[i];if(!IFrameSplitOperator.IsNumber(iconItem.Value)||!iconItem.Icon)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var y=this.GetYFromData(iconItem.Value,false);this.Canvas.fillStyle=iconItem.Color;if(dataWidth>2)x=ToFixedPoint(x);this.DrawTradeIcon(iconItem.Icon,x,y+yOffset,bHScreen);}};this.DrawTradeIcon=function(text,x,y,isHScreen){if(isHScreen){this.Canvas.save();this.Canvas.translate(y,x);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(text,0,0);this.Canvas.restore();}else{this.Canvas.fillText(text,x,y);}};this.GetMaxMin=function(){var range={Max:null,Min:null};if(!this.Data||!this.Data.Data)return range;if(!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon))return range;var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;if(this.ChartFrame.GlobalOption&&this.ChartFrame.GlobalOption.IsValueFullRange){start=0;xPointCount=this.Data.Data.length;}for(var i=start,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(value))continue;if(value<=0)continue;var iconItem=this.AryIcon[i];if(!IFrameSplitOperator.IsNumber(iconItem.Value)||!iconItem.Icon)continue;if(range.Max==null)range.Max=iconItem.Value;else if(range.Max<iconItem.Value)range.Max=iconItem.Value;if(range.Min==null)range.Min=iconItem.Value;else if(range.Min>iconItem.Value)range.Min=iconItem.Value;}return range;};}function ChartDrawText(){this.newMethod=IChartPainting;//派生
|
|
4665
4688
|
this.newMethod();delete this.newMethod;this.ClassName='ChartDrawText';//类名
|
|
4666
4689
|
this.Color="rgb(255,193,37)";//线段颜色
|
|
4667
|
-
this.
|
|
4690
|
+
this.Font;//固定字体
|
|
4691
|
+
this.TextFont="14px 微软雅黑";//输出使用的字体
|
|
4668
4692
|
this.TextBaseline="middle";this.TextAlign='left';this.Text;this.TextBG;//{ Color:"rgb(0,0,92)", Border:"rgb(205,0,92)", Margin:[0,1,1,1], } // { Color:背景色, Border:边框颜色, Margin=[上,下,左, 右] }
|
|
4669
4693
|
this.FixedFontSize=-1;//固定字体大小
|
|
4670
4694
|
this.YOffset=0;//连线
|
|
@@ -4675,7 +4699,7 @@ this.ExportData=this.ExportBoolData;this.TextSize={Max:g_JSChartResource.DRAWICO
|
|
|
4675
4699
|
Zoom:{Type:g_JSChartResource.DRAWICON.Text.Zoom.Type,Value:g_JSChartResource.DRAWICON.Text.Zoom.Value},//放大倍数
|
|
4676
4700
|
FontName:g_JSChartResource.DRAWICON.Text.FontName,YOffset:g_JSChartResource.DRAWICON.Text.YOffset};this.ReloadResource=function(resource){this.TextSize={Max:g_JSChartResource.DRAWTEXT.MaxSize,Min:g_JSChartResource.DRAWTEXT.MinSize,//字体的最大最小值
|
|
4677
4701
|
Zoom:{Type:g_JSChartResource.DRAWTEXT.Zoom.Type,Value:g_JSChartResource.DRAWTEXT.Zoom.Value},//放大倍数
|
|
4678
|
-
FontName:g_JSChartResource.DRAWTEXT.FontName,YOffset:g_JSChartResource.DRAWTEXT.YOffset};};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}if(!this.Data||!this.Data.Data)return;var isHScreen=this.ChartFrame.IsHScreen===true;var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=this.ChartBorder.GetRight();var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottomEx();this.Canvas.save();this.ClipClient(isHScreen);if(isHScreen){chartright=this.ChartBorder.GetBottom();top=this.ChartBorder.GetRightEx();bottom=this.ChartBorder.GetLeftEx();xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}var xPointCount=this.ChartFrame.XPointCount;var isArrayText=Array.isArray(this.Text);var drawTextInfo={Text:{Color:this.Color,Align:this.TextAlign,Baseline:this.TextBaseline},Font:{}};if(this.FixedFontSize>0)//固定字体大小模式
|
|
4702
|
+
FontName:g_JSChartResource.DRAWTEXT.FontName,YOffset:g_JSChartResource.DRAWTEXT.YOffset};};this.GetMaxMin=function(){var range={Min:null,Max:null};return range;};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}if(!this.Data||!this.Data.Data)return;var isHScreen=this.ChartFrame.IsHScreen===true;var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=this.ChartBorder.GetRight();var top=this.ChartBorder.GetTopEx();var bottom=this.ChartBorder.GetBottomEx();this.Canvas.save();this.ClipClient(isHScreen);if(isHScreen){chartright=this.ChartBorder.GetBottom();top=this.ChartBorder.GetRightEx();bottom=this.ChartBorder.GetLeftEx();xOffset=this.ChartBorder.GetTop()+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;}var xPointCount=this.ChartFrame.XPointCount;var isArrayText=Array.isArray(this.Text);var drawTextInfo={Text:{Color:this.Color,Align:this.TextAlign,Baseline:this.TextBaseline},Font:{}};if(this.Font)this.TextFont=this.Font;else if(this.FixedFontSize>0)//固定字体大小模式
|
|
4679
4703
|
this.TextFont=this.FixedFontSize+'px '+this.TextSize.FontName;else//动态字体大小
|
|
4680
4704
|
this.TextFont=this.GetDynamicFont(dataWidth,distanceWidth,this.TextSize.Max,this.TextSize.Min,this.TextSize.Zoom,this.TextSize.FontName);this.Canvas.font=this.TextFont;drawTextInfo.Font={Height:this.GetFontHeight()};for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];if(value==null)continue;if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;}var y;if(this.FixedPosition===1){y=top;}else if(this.FixedPosition===2){y=bottom;}else{y=this.ChartFrame.GetYFromData(value,false);}if(x>chartright)break;y+=this.ShowOffset.Y;x+=this.ShowOffset.X;drawTextInfo.X=x;drawTextInfo.Y=y;if(isArrayText){var text=this.Text[i];if(!text)continue;this.DrawText(text,drawTextInfo,isHScreen);}else{this.DrawText(this.Text,drawTextInfo,isHScreen);}this.DrawVerticalLine(i,drawTextInfo,isHScreen);}this.Canvas.restore();};this.DrawText=function(text,drawInfo,isHScreen){var textWidth=this.Canvas.measureText(text).width;if(isHScreen){var x=drawInfo.Y;var y=drawInfo.X;if(drawInfo.Text.Align=="right")y=y-textWidth;else if(drawInfo.Text.Align=="center")y=y-textWidth/2;if(drawInfo.Text.Baseline=="top")x-=drawInfo.Font.Height;else if(drawInfo.Text.Baseline=="middle")x-=drawInfo.Font.Height/2;if(this.TextBG&&(this.TextBG.Color||this.TextBG.Border)){var margin=this.TextBG.Margin;//0=上 1=下 2=左 3=右
|
|
4681
4705
|
var xRect=x-margin[0];var yRect=y-margin[2];var bgWidth=textWidth+margin[2]+margin[3];var bgHeight=drawInfo.Font.Height+margin[0]+margin[1];if(this.TextBG.Color){this.Canvas.fillStyle=this.TextBG.Color;this.Canvas.fillRect(xRect,yRect,bgHeight,bgWidth);}if(this.TextBG.Border){this.Canvas.strokeStyle=this.TextBG.Border;this.Canvas.strokeRect(ToFixedPoint(xRect),ToFixedPoint(yRect),ToFixedRect(bgHeight),ToFixedRect(bgWidth));}drawInfo.Rect={Bottom:xRect,Top:xRect+bgHeight};}else{var xRect=x;var bgHeight=drawInfo.Font.Height;drawInfo.Rect={Bottom:xRect,Top:xRect+bgHeight};}this.Canvas.textBaseline="bottom";this.Canvas.textAlign="left";this.Canvas.fillStyle=drawInfo.Text.Color;this.Canvas.save();this.Canvas.translate(x,y);this.Canvas.rotate(90*Math.PI/180);this.Canvas.fillText(text,0,0);this.Canvas.restore();}else{var x=drawInfo.X;var y=drawInfo.Y;if(drawInfo.Text.Align=="right")x=x-textWidth;else if(drawInfo.Text.Align=="center")x=x-textWidth/2;if(drawInfo.Text.Baseline=="top")y+=drawInfo.Font.Height;else if(drawInfo.Text.Baseline=="middle")y+=drawInfo.Font.Height/2;if(this.TextBG&&(this.TextBG.Color||this.TextBG.Border)){var margin=this.TextBG.Margin;//0=上 1=下 2=左 3=右
|
|
@@ -5135,7 +5159,7 @@ this.VolColor=g_JSChartResource.TooltipPaint.VolColor;//标题成交量
|
|
|
5135
5159
|
this.AmountColor=g_JSChartResource.TooltipPaint.AmountColor;//成交金额
|
|
5136
5160
|
};this.GetLeft=function(){if(this.IsHScreen){return this.ChartBorder.GetRightEx()-this.Height-this.Top;}else{if(this.ShowPosition==0)return this.ChartBorder.GetLeft()+this.Left;else return this.ChartBorder.GetRight()-this.Width-this.Left;}};this.GetTop=function(){if(this.IsHScreen){if(this.ShowPosition==0)return this.ChartBorder.GetTop()+this.Left;else return this.ChartBorder.GetBottom()-this.Width-this.Left;}else{return this.ChartBorder.GetTopEx()+this.Top;}};this.IsEnableDraw=function(){if(!this.HQChart||!this.HQChart.TitlePaint||!this.HQChart.TitlePaint[0])return false;if(this.HQChart.DragMode==JSCHART_DRAG_ID.CLICK_TOUCH_MODE_ID){if(this.HQChart.TouchStatus.CorssCursorShow==false)return false;}else if(this.HQChart.EnableClickModel){if(this.HQChart.ClickModel.IsShowCorssCursor===false)return false;}else if(this.HQChart.VerticalDrag){if(this.HQChart.VerticalDrag.IsDrag)return false;//拖X轴的时候 不要显示tooltip
|
|
5137
5161
|
}else if(!this.HQChart.IsOnTouch){return false;}if(this.HQChart.CurrentChartDrawPicture)return false;//画图工具操作的时候 不显示
|
|
5138
|
-
return true;};this.Draw=function(){if(!this.IsEnableDraw())return;this.IsHScreen=this.ChartFrame.IsHScreen===true;this.KLineTitlePaint=this.HQChart.TitlePaint[0];var klineData=this.KLineTitlePaint.GetCurrentKLineData();if(!klineData)return;var titleData=this.GetFormatTitle({Data:klineData});if(!titleData||!IFrameSplitOperator.IsNonEmptyArray(titleData.AryText))return;this.CalculateTooltipSize(titleData);this.CalculateShowPosition();this.DrawBG();this.DrawTooltipData(titleData);this.DrawBorder();};this.CalculateTooltipSize=function(titleData){this.Canvas.font=this.Font[0];this.LineHeight=this.Canvas.measureText("擎").width;var pixelRatio=GetDevicePixelRatio();var height=0;var maxTitleWidth=0,maxTextWidth=0,maxLineWidth=0;for(var i=0;i<titleData.AryText.length;++i){var item=titleData.AryText[i];if(height>0)height+=this.LineSpace;var lineWidth=0;if(item.Title){var textWidth=this.Canvas.measureText(item.Title).width+2;if(maxTitleWidth<textWidth)maxTitleWidth=textWidth;lineWidth+=textWidth;}if(item.Text){var textWidth=this.Canvas.measureText(item.Text).width+2;if(maxTextWidth<textWidth)maxTextWidth=textWidth;lineWidth+=textWidth;}if(maxLineWidth<lineWidth)maxLineWidth=lineWidth;height+=this.LineHeight;}this.Height=height+(this.Mergin.Top+this.Mergin.Bottom)*pixelRatio;this.Width=maxLineWidth+(this.Mergin.Left+this.Mergin.Right+this.ExtendLineWidth)*pixelRatio;return{Height:this.Height,Width:this.Width,MaxTitleWidth:maxTitleWidth,MaxTextWidth:maxTextWidth};};//判断显示位置
|
|
5162
|
+
return true;};this.Draw=function(){if(!this.IsEnableDraw())return;this.IsHScreen=this.ChartFrame.IsHScreen===true;this.KLineTitlePaint=this.HQChart.TitlePaint[0];var klineData=this.KLineTitlePaint.GetCurrentKLineData();if(!klineData)return;var titleData=this.GetFormatTitle({Data:klineData});if(!titleData||!IFrameSplitOperator.IsNonEmptyArray(titleData.AryText))return;this.CalculateTooltipSize(titleData);this.CalculateShowPosition();this.DrawBG();this.DrawTooltipData(titleData);this.DrawBorder();};this.CalculateTooltipSize=function(titleData){this.Canvas.font=this.Font[0];this.LineHeight=this.Canvas.measureText("擎").width;var pixelRatio=GetDevicePixelRatio();var height=0;var maxTitleWidth=0,maxTextWidth=0,maxLineWidth=0;for(var i=0;i<titleData.AryText.length;++i){var item=titleData.AryText[i];if(height>0)height+=this.LineSpace;var lineWidth=0;if(item.Title){var textWidth=this.Canvas.measureText(item.Title).width+2;if(maxTitleWidth<textWidth)maxTitleWidth=textWidth;lineWidth+=textWidth;}if(item.Text){var textWidth=this.Canvas.measureText(item.Text).width+2;if(maxTextWidth<textWidth)maxTextWidth=textWidth;lineWidth+=textWidth;}if(IFrameSplitOperator.IsNumber(item.Space))lineWidth+=item.Space;if(maxLineWidth<lineWidth)maxLineWidth=lineWidth;height+=this.LineHeight;}this.Height=height+(this.Mergin.Top+this.Mergin.Bottom)*pixelRatio;this.Width=maxLineWidth+(this.Mergin.Left+this.Mergin.Right+this.ExtendLineWidth)*pixelRatio;return{Height:this.Height,Width:this.Width,MaxTitleWidth:maxTitleWidth,MaxTextWidth:maxTextWidth};};//判断显示位置
|
|
5139
5163
|
this.CalculateShowPosition=function(){this.ShowPosition=0;if(!this.LatestPoint)return;if(this.IsHScreen){var top=this.ChartBorder.GetTop();var height=this.ChartBorder.GetHeight();var yCenter=top+height/2;if(this.LatestPoint.Y<yCenter)this.ShowPosition=1;}else{var left=this.ChartBorder.GetLeft();var width=this.ChartBorder.GetWidth();var xCenter=left+width/2;if(this.LatestPoint.X<xCenter)this.ShowPosition=1;}};this.GetFormatTitle=function(data){if(!data||!data.Data)return;var item=data.Data;var upperSymbol;if(this.HQChart.Symbol)upperSymbol=this.HQChart.Symbol.toUpperCase();var defaultfloatPrecision=GetfloatPrecision(this.HQChart.Symbol);//价格小数位数
|
|
5140
5164
|
var unit=MARKET_SUFFIX_NAME.GetVolUnit(upperSymbol);var aryText=[];var result={AryText:aryText};var text,title,color;text=IFrameSplitOperator.FormatDateString(item.Date);aryText.push({Text:text,Color:this.DateTimeColor});var period=this.HQChart.Period;if(ChartData.IsMinutePeriod(period,true)&&IFrameSplitOperator.IsNumber(item.Time)){text=IFrameSplitOperator.FormatTimeString(item.Time);aryText.push({Text:text,Color:this.DateTimeColor});}else if(ChartData.IsSecondPeriod(period)&&IFrameSplitOperator.IsNumber(item.Time)){text=IFrameSplitOperator.FormatTimeString(item.Time,'HH:MM:SS');aryText.push({Text:text,Color:this.DateTimeColor});}else if(ChartData.IsMilliSecondPeriod(period)&&IFrameSplitOperator.IsNumber(item.Time)){text=IFrameSplitOperator.FormatTimeString(item.Time,'HH:MM:SS.fff');aryText.push({Text:text,Color:this.DateTimeColor});}if(IFrameSplitOperator.IsNumber(item.Open))//开盘
|
|
5141
5165
|
{title=g_JSChartLocalization.GetText('Tooltip-Open',this.LanguageID);color=this.KLineTitlePaint.GetColor(item.Open,item.YClose);text=item.Open.toFixed(defaultfloatPrecision);aryText.push({Title:title,TitleColor:this.TitleColor,Text:text,Color:color});}if(IFrameSplitOperator.IsNumber(item.High))//高
|
|
@@ -5146,7 +5170,9 @@ title=g_JSChartLocalization.GetText('Tooltip-Increase',this.LanguageID);if(IFram
|
|
|
5146
5170
|
text=IFrameSplitOperator.FromatIntegerString(vol/unit,2,this.LanguageID);aryText.push({Title:title,TitleColor:this.TitleColor,Text:text,Color:this.VolColor});}if(IFrameSplitOperator.IsNumber(item.Amount)){title=g_JSChartLocalization.GetText('Tooltip-Amount',this.LanguageID);var text=IFrameSplitOperator.FormatValueString(item.Amount,2,this.LanguageID);aryText.push({Title:title,TitleColor:this.TitleColor,Text:text,Color:this.AmountColor});}//换手率
|
|
5147
5171
|
if(IFrameSplitOperator.IsNumber(item.FlowCapital)){var text="--.--";title=g_JSChartLocalization.GetText('Tooltip-Exchange',this.LanguageID);if(item.FlowCapital!=0){var value=item.Vol/item.FlowCapital*100;var text=value.toFixed(2)+'%';}aryText.push({Title:title,TitleColor:this.TitleColor,Text:text,Color:this.TitleColor});}//持仓量
|
|
5148
5172
|
if(MARKET_SUFFIX_NAME.IsFutures(upperSymbol)&&IFrameSplitOperator.IsNumber(item.Position)){title=g_JSChartLocalization.GetText('Tooltip-Position',this.LanguageID);var text=IFrameSplitOperator.FromatIntegerString(item.Position,2,this.LanguageID);aryText.push({Title:title,TitleColor:this.TitleColor,Text:text,Color:this.TitleColor});}return result;};this.DrawTooltipData=function(titleData){if(!titleData||!IFrameSplitOperator.IsNonEmptyArray(titleData.AryText))return;var pixelRatio=GetDevicePixelRatio();var left=this.GetLeft()+2*pixelRatio;var top=this.GetTop()+3*pixelRatio;if(this.IsHScreen){this.Canvas.save();var x=this.GetLeft()+this.Height,y=this.GetTop();this.Canvas.translate(x,y);this.Canvas.rotate(90*Math.PI/180);//x, y 作为原点
|
|
5149
|
-
left=2*pixelRatio;top=3*pixelRatio;}this.Canvas.textBaseline="top";var right=left+this.Width-this.Mergin.Right*pixelRatio;left+=this.Mergin.Left*pixelRatio;top+=this.Mergin.Top*pixelRatio;for(var i=0;i<titleData.AryText.length;++i){var item=titleData.AryText[i];if(item.Title){this.Canvas.textAlign="left";this.Canvas.fillStyle=item.TitleColor;this.Canvas.fillText(item.Title,left,top);
|
|
5173
|
+
left=2*pixelRatio;top=3*pixelRatio;}this.Canvas.textBaseline="top";var right=left+this.Width-this.Mergin.Right*pixelRatio;left+=this.Mergin.Left*pixelRatio;top+=this.Mergin.Top*pixelRatio;for(var i=0;i<titleData.AryText.length;++i){var item=titleData.AryText[i];var titleWidth=0;if(item.Title){this.Canvas.textAlign="left";this.Canvas.fillStyle=item.TitleColor;this.Canvas.fillText(item.Title,left,top);var titleWidth=this.Canvas.measureText(item.Title).width+2;}if(item.Text){if(item.TextAlign==1)//1=左对齐 0=右对齐
|
|
5174
|
+
{var yText=left+titleWidth+2;if(IFrameSplitOperator.IsNumber(item.Space))yText+=item.Space;//标题和数据内容间距
|
|
5175
|
+
this.Canvas.textAlign="left";this.Canvas.fillStyle=item.Color;this.Canvas.fillText(item.Text,yText,top);}else{this.Canvas.textAlign="right";this.Canvas.fillStyle=item.Color;this.Canvas.fillText(item.Text,right,top);}}top+=this.LineHeight+this.LineSpace;}if(this.IsHScreen)this.Canvas.restore();};/*
|
|
5150
5176
|
this.DrawTooltipData=function(item)
|
|
5151
5177
|
{
|
|
5152
5178
|
//JSConsole.Chart.Log('[KLineTooltipPaint::DrawKLineData] ', item);
|
|
@@ -5539,11 +5565,13 @@ this.FrameID=0;this.SetOption=function(option)//设置
|
|
|
5539
5565
|
//this.Canvas.font=this.Font;
|
|
5540
5566
|
var yText=subFrame.ChartBorder.GetTopEx()+this.MerginTop;for(var i=0;i<this.Data.length;++i){var item=this.Data[i];if(!mapDate.has(item.Date))continue;var range=mapDate.get(item.Date);var xCenter=range.Left+(range.Right-range.Left)/2;if(item.Font)this.Canvas.font=item.Font;else this.Canvas.font=this.Font;if(item.TextColor)this.Canvas.fillStyle=item.TextColor;else this.Canvas.fillStyle=this.TextColor;this.Canvas.fillText(item.Text,xCenter,yText);}};}//最新数据点闪动
|
|
5541
5567
|
function LatestPointFlashPaint(){this.newMethod=IExtendChartPainting;//派生
|
|
5542
|
-
this.newMethod();delete this.newMethod;this.ClassName='LatestPointFlashPaint';this.HQChart;this.
|
|
5568
|
+
this.newMethod();delete this.newMethod;this.ClassName='LatestPointFlashPaint';this.HQChart;this.FlashType=0;//0=数据更新了闪烁, 1=一直显示
|
|
5569
|
+
//闪烁
|
|
5570
|
+
this.Status=0;this.UpdateTime=new Date();this.FlashCount=0;//闪烁次数
|
|
5543
5571
|
this.Frequency=500;//闪烁频率ms
|
|
5544
5572
|
this.PointColor=g_JSChartResource.LatestPointFlash.PointColor;this.PointRadius=g_JSChartResource.LatestPointFlash.PointRadius;this.BGColor=g_JSChartResource.LatestPointFlash.BGColor;this.BGRadius=g_JSChartResource.LatestPointFlash.BGRadius;this.DrawPriority=IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25;this.Style=1;//0=默认配置 1=图形保持一致
|
|
5545
5573
|
this.FlashCanvas;this.SetOption=function(option){if(this.HQChart){var extraElement=this.HQChart.GetExtraCanvas(JSChart.LatestPointFlashKey);if(extraElement&&extraElement.Canvas)this.FlashCanvas=extraElement.Canvas;//绑定独立的画布
|
|
5546
|
-
}if(option){if(IFrameSplitOperator.IsNumber(option.Frequency))this.Frequency=option.Frequency;}};this.ReloadResource=function(resource){this.PointColor=g_JSChartResource.LatestPointFlash.PointColor;this.PointRadius=g_JSChartResource.LatestPointFlash.PointRadius;this.BGColor=g_JSChartResource.LatestPointFlash.BGColor;this.BGRadius=g_JSChartResource.LatestPointFlash.BGRadius;};this.GetChartColor=function(){var chart=this.HQChart.ChartPaint[0];if(!chart)return;if(chart.ClassName=="ChartKLine"){this.PointColor=chart.CloseLineColor;this.BGColor=IChartDrawPicture.ColorToRGBA(chart.CloseLineColor,0.6);}else if(chart.ClassName=="ChartMinutePriceLine"){this.PointColor=chart.Color;this.BGColor=IChartDrawPicture.ColorToRGBA(chart.Color,0.6);}};this.Draw=function(){if(!this.FlashCanvas)return;if(!this.HQChart)return;this.HQChart.ClearCanvas(this.FlashCanvas);if(this.FlashCount<=0)return;if(this.IsStatusChange()){this.Status=(this.Status+1)%2;--this.FlashCount;}if(this.Status==0)return;if(!this.HQChart.GlobalOption||!this.HQChart.GlobalOption.LatestPoint)return;var point=this.HQChart.GlobalOption.LatestPoint;if(!IFrameSplitOperator.IsNumber(point.X)||!IFrameSplitOperator.IsNumber(point.Y))return;if(this.Style==1)this.GetChartColor();this.FlashCanvas.fillStyle=this.BGColor;this.FlashCanvas.beginPath();this.FlashCanvas.arc(point.X,point.Y,this.BGRadius,0,360,false);this.FlashCanvas.fill();this.FlashCanvas.closePath();//画实心圆
|
|
5574
|
+
}if(option){if(IFrameSplitOperator.IsNumber(option.Frequency))this.Frequency=option.Frequency;if(IFrameSplitOperator.IsNumber(option.FlashType))this.FlashType=option.FlashType;}};this.ReloadResource=function(resource){this.PointColor=g_JSChartResource.LatestPointFlash.PointColor;this.PointRadius=g_JSChartResource.LatestPointFlash.PointRadius;this.BGColor=g_JSChartResource.LatestPointFlash.BGColor;this.BGRadius=g_JSChartResource.LatestPointFlash.BGRadius;};this.GetChartColor=function(){var chart=this.HQChart.ChartPaint[0];if(!chart)return;if(chart.ClassName=="ChartKLine"){this.PointColor=chart.CloseLineColor;this.BGColor=IChartDrawPicture.ColorToRGBA(chart.CloseLineColor,0.6);}else if(chart.ClassName=="ChartMinutePriceLine"){this.PointColor=chart.Color;this.BGColor=IChartDrawPicture.ColorToRGBA(chart.Color,0.6);}};this.Draw=function(){if(!this.FlashCanvas)return;if(!this.HQChart)return;this.HQChart.ClearCanvas(this.FlashCanvas);if(this.FlashType===1){}else{if(this.FlashCount<=0)return;if(this.IsStatusChange()){this.Status=(this.Status+1)%2;--this.FlashCount;}if(this.Status==0)return;}if(!this.HQChart.GlobalOption||!this.HQChart.GlobalOption.LatestPoint)return;var point=this.HQChart.GlobalOption.LatestPoint;if(!IFrameSplitOperator.IsNumber(point.X)||!IFrameSplitOperator.IsNumber(point.Y))return;this.DrawPoint(point);};this.DrawPoint=function(point){if(this.Style==1)this.GetChartColor();this.FlashCanvas.fillStyle=this.BGColor;this.FlashCanvas.beginPath();this.FlashCanvas.arc(point.X,point.Y,this.BGRadius,0,360,false);this.FlashCanvas.fill();this.FlashCanvas.closePath();//画实心圆
|
|
5547
5575
|
this.FlashCanvas.fillStyle=this.PointColor;this.FlashCanvas.beginPath();this.FlashCanvas.arc(point.X,point.Y,this.PointRadius,0,360,false);this.FlashCanvas.fill();this.FlashCanvas.closePath();};this.IsStatusChange=function(){if(!this.UpdateTime){this.UpdateTime=new Date();return true;}var now=new Date();var diffValue=now.getTime()-this.UpdateTime.getTime();if(diffValue<=this.Frequency)return false;this.UpdateTime=now;return true;};}//K线倒计时
|
|
5548
5576
|
function KLineCountDownPaint(){this.newMethod=IExtendChartPainting;//派生
|
|
5549
5577
|
this.newMethod();delete this.newMethod;this.ClassName='KLineCountDownPaint';this.HQChart;this.CanvasEx;this.Frequency=500;//闪烁频率ms
|
|
@@ -7639,7 +7667,7 @@ YOffset:0,Zoom:{Type:1,//0=放大(K线宽度*Value) 1=放大(K线+间距)*Value
|
|
|
7639
7667
|
Value:1},FontName:'微软雅黑'//字体
|
|
7640
7668
|
};this.DRAWABOVE={YOffset:0//y坐标向上偏移
|
|
7641
7669
|
};this.DRAWTEXT_FIX={Font:14*GetDevicePixelRatio()+'px 微软雅黑'};this.DRAWNUMBER_FIX={Font:14*GetDevicePixelRatio()+'px 微软雅黑'//虚线配置
|
|
7642
|
-
};this.DOTLINE={LineDash:[
|
|
7670
|
+
};this.DOTLINE={LineDash:[2*GetDevicePixelRatio(),2*GetDevicePixelRatio()]//虚线配置
|
|
7643
7671
|
};this.DRAWSL={PixelWidth:15//1个像素点宽度
|
|
7644
7672
|
};this.CIRCLEDOT={Radius:1.3*GetDevicePixelRatio()};this.TIPICON={Family:'iconfont',TextFont:GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1',Size:10*GetDevicePixelRatio(),Color:"rgb(255,165,0)"};this.POINTDOT={Radius:2*GetDevicePixelRatio()};this.DepthMapPaint={LineColor:"rgba(255,185,15)",AreaColor:["rgba(255,185,15,0.8)","rgba(255,185,15,0.4)"],TextColor:"rgba(255,255,255)",TextBGColor:'rgb(43,54,69)'};this.KLineYAxisBGPaint={Font:12*GetDevicePixelRatio()+'px 微软雅黑',LineColor:"rgb(117,125,129)",DiffValutTextColor:"rgb(117,125,129)",DiffValueBGColor:"rgb(251,140,1)"};this.ChartScatterPlotV2={Color:"rgb(0,0,255)",TextColor:"rgb(0,0,0)",Radius:3,Font:10*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1'//筹码分布图
|
|
7645
7673
|
};this.StockChip={InfoColor:'rgb(0,0,0)',//文字颜色
|
|
@@ -8396,7 +8424,7 @@ case 11://2小时
|
|
|
8396
8424
|
case 12://4小时
|
|
8397
8425
|
if(this.SourceData.DataType!=1)isDataTypeChange=true;break;case 10://分笔线
|
|
8398
8426
|
if(this.SourceData.DataType!=2)isDataTypeChange=true;break;}}}this.Period=period;if(right!=null)this.Right=right;this.ReloadChartDrawPicture();//切换周期了 清空画图工具
|
|
8399
|
-
this.ClearRectSelect(true);this.Frame.ClearUpDonwFrameYData();this.ClearCustomKLine();this.ClearKLineCaluate();this.UnlockCorssCursor();var kLineDrawType=this.GetKLineDrawType();if(kLineDrawType==10||kLineDrawType==11||kLineDrawType==12||kLineDrawType==16)isDataTypeChange=true;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CHANGE_KLINE_PERIOD);if(event&&event.Callback){var sendData={IsApiPeriod:this.IsApiPeriod,Old:oldData,Now:{Period:this.Period,Right:this.Right,KLineDrawType:this.KLineDrawType,Symbol:this.Symbol},IsDataTypeChange:isDataTypeChange//数据类型是否改变 true 重新请求数据
|
|
8427
|
+
this.ClearRectSelect(true);this.Frame.ClearUpDonwFrameYData();this.ClearCustomKLine();this.ClearKLineCaluate();this.UnlockCorssCursor();this.ClearDrawStatusData();var kLineDrawType=this.GetKLineDrawType();if(kLineDrawType==10||kLineDrawType==11||kLineDrawType==12||kLineDrawType==16)isDataTypeChange=true;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_CHANGE_KLINE_PERIOD);if(event&&event.Callback){var sendData={IsApiPeriod:this.IsApiPeriod,Old:oldData,Now:{Period:this.Period,Right:this.Right,KLineDrawType:this.KLineDrawType,Symbol:this.Symbol},IsDataTypeChange:isDataTypeChange//数据类型是否改变 true 重新请求数据
|
|
8400
8428
|
};event.Callback(event,sendData,this);isDataTypeChange=sendData.IsDataTypeChange;}if(isDataTypeChange==false&&!this.IsApiPeriod){this.ClearIndexRunCount();this.Update({UpdateCursorIndexType:2});//更新的时候 取消显示十字光标
|
|
8401
8429
|
return;}this.ClearIndexPaint();this.ClearKLineBreakPoint();if(ChartData.IsDayPeriod(this.Period,true)){this.CancelAutoUpdate();//先停止定时器
|
|
8402
8430
|
this.AutoUpdateEvent(false,'KLineChartContainer::ChangePeriod');//切换周期先停止更新
|
|
@@ -8567,7 +8595,7 @@ this.UpdateFrameMaxMin();//调整坐标最大 最小值
|
|
|
8567
8595
|
this.Frame.SetSizeChage(true);this.Draw();//叠加指标
|
|
8568
8596
|
for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i];for(var j in item.OverlayIndex){var overlayItem=item.OverlayIndex[j];this.BindOverlayIndexData(overlayItem,i,bindData);}}};//切换股票代码
|
|
8569
8597
|
this.ChangeSymbol=function(symbol,option){this.CancelAutoUpdate();//先停止定时器
|
|
8570
|
-
this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');this.ClearRectSelect(true);this.ClearCustomKLine();this.ClearKLineBreakPoint();this.ClearKLineCaluate();this.HideTooltip();this.ResetScrollBar();this.ClearIndexRunCount();this.UnlockCorssCursor();this.Frame.ClearYCoordinateMaxMin();this.ClosePopMinuteChart();this.Symbol=symbol;if(!symbol){this.DrawEmpty();return;}if(option){if(option.KLine){var item=option.KLine;if(IFrameSplitOperator.IsNumber(item.Right))this.Right=item.Right;if(IFrameSplitOperator.IsNumber(item.Period))this.Period=item.Period;if(IFrameSplitOperator.IsNumber(item.DataWidth))this.KLineSize={DataWidth:item.DataWidth};}}if(MARKET_SUFFIX_NAME.IsSHSZIndex(symbol))this.Right=0;//指数没有复权
|
|
8598
|
+
this.AutoUpdateEvent(false,'KLineChartContainer::ChangeSymbol');this.ClearRectSelect(true);this.ClearCustomKLine();this.ClearKLineBreakPoint();this.ClearKLineCaluate();this.HideTooltip();this.ResetScrollBar();this.ClearIndexRunCount();this.UnlockCorssCursor();this.Frame.ClearYCoordinateMaxMin();this.ClosePopMinuteChart();this.ClearDrawStatusData();this.Symbol=symbol;if(!symbol){this.DrawEmpty();return;}if(option){if(option.KLine){var item=option.KLine;if(IFrameSplitOperator.IsNumber(item.Right))this.Right=item.Right;if(IFrameSplitOperator.IsNumber(item.Period))this.Period=item.Period;if(IFrameSplitOperator.IsNumber(item.DataWidth))this.KLineSize={DataWidth:item.DataWidth};}}if(MARKET_SUFFIX_NAME.IsSHSZIndex(symbol))this.Right=0;//指数没有复权
|
|
8571
8599
|
this.ClearIndexPaint();//清空指标
|
|
8572
8600
|
if(option){if(IFrameSplitOperator.IsNonEmptyArray(option.Windows)){var windows=option.Windows;for(var i=0;i<windows.length;++i){if(i>=this.WindowIndex.length)break;//暂时不支持 动态增加/减少
|
|
8573
8601
|
var item=windows[i];if(!item)continue;if(item.Script){this.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
|
|
@@ -9261,7 +9289,7 @@ for(var i=1;i<this.TitlePaint.length;++i){var item=this.TitlePaint[i];item.Overl
|
|
|
9261
9289
|
chart.Data.Data=[];//清空数据
|
|
9262
9290
|
}};//切换股票代码
|
|
9263
9291
|
this.ChangeSymbol=function(symbol,option){this.StopDisplayLatest();this.ClearGlobalOption();this.CancelAutoUpdate();this.AutoUpdateEvent(false,"MinuteChartContainer::ChangeSymbol");this.Symbol=symbol;this.ResetDayOffset();this.ResetDataStatus();this.ClearMinuteData();this.ClearIndexPaint();//清空指标
|
|
9264
|
-
this.ResetOverlaySymbolStatus();this.ReloadChartDrawPicture();this.ClearIndexRunCount();this.ClearStockCache();this.UnlockCorssCursor();this.Frame.ClearYCoordinateMaxMin();if(option){if(IFrameSplitOperator.IsNumber(option.DayCount))this.DayCount=option.DayCount;if(IFrameSplitOperator.IsNonEmptyArray(option.Windows))//切换指标
|
|
9292
|
+
this.ResetOverlaySymbolStatus();this.ReloadChartDrawPicture();this.ClearIndexRunCount();this.ClearStockCache();this.UnlockCorssCursor();this.Frame.ClearYCoordinateMaxMin();this.ClearDrawStatusData();if(option){if(IFrameSplitOperator.IsNumber(option.DayCount))this.DayCount=option.DayCount;if(IFrameSplitOperator.IsNonEmptyArray(option.Windows))//切换指标
|
|
9265
9293
|
{for(var i=0;i<option.Windows.length;++i){var index=2+i;if(index>=this.WindowIndex.length)break;//暂时不支持 动态增加/减少
|
|
9266
9294
|
var item=option.Windows[i];if(!item)continue;if(item.Script){this.WindowIndex[index]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
|
|
9267
9295
|
}else if(item.API){var apiItem=item.API;this.WindowIndex[index]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var systemScript=new JSIndexScript();var indexID=item.Index;var indexInfo=systemScript.Get(indexID);if(indexInfo){JSIndexScript.ModifyAttribute(indexInfo,item);indexInfo.ID=indexID;this.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
|
|
@@ -9275,7 +9303,7 @@ if(paint.SetOption)paint.SetOption(item);this.OverlayChartPaint.push(paint);}}if
|
|
|
9275
9303
|
this.Draw();this.RequestData();}};this.SetPageInfo=function(pageInfo){if(!pageInfo)return;if(IFrameSplitOperator.IsBool(pageInfo.Enable))this.PageInfo.Enable=pageInfo.Enable;if(IFrameSplitOperator.IsNumber(pageInfo.Offset))this.PageInfo.Offset=pageInfo.Offset;if(IFrameSplitOperator.IsNumber(pageInfo.ShowDayCount))this.PageInfo.ShowDayCount=pageInfo.ShowDayCount;};this.ClearMinuteData=function(){this.SourceData=null;this.DayData=null;this.BeforeOpenData=null;this.AfterCloseData=null;this.MultiDayBeforeOpenData=null;this.MultiDayAfterCloseData=null;this.ClearMainChartData();};this.ClearMainChartData=function(){if(!IFrameSplitOperator.IsNonEmptyArray(this.ChartPaint))return;var chart=this.ChartPaint[0];//价格线
|
|
9276
9304
|
if(chart){chart.Data=null;chart.BeforeOpenData=null;chart.AfterCloseData=null;chart.MultiDayBeforeOpenData=null;chart.MultiDayAfterCloseData=null;}var chart=this.ChartPaint[1];//均线
|
|
9277
9305
|
if(chart){chart.Data=null;}var chart=this.ChartPaint[2];//成交量
|
|
9278
|
-
if(chart){chart.Data=null;}};this.ChangeDayCount=function(count,option){if(count<0)return;this.StopDisplayLatest();this.ClearGlobalOption();this.CancelAutoUpdate();this.AutoUpdateEvent(false,"MinuteChartContainer::ChangeDayCount");this.DayCount=count;this.ClearMinuteData();this.ClearStockCache();this.UnlockCorssCursor();this.Frame.ClearYCoordinateMaxMin();if(option&&option.PageInfo){this.SetPageInfo(option.PageInfo);this.ResetDayOffset();}if(option){if(IFrameSplitOperator.IsNonEmptyArray(option.AryDate)){this.AryDate=option.AryDate.slice();}}this.ReloadChartDrawPicture();this.ResetDataStatus();this.ClearIndexPaint();//清空指标
|
|
9306
|
+
if(chart){chart.Data=null;}};this.ChangeDayCount=function(count,option){if(count<0)return;this.StopDisplayLatest();this.ClearGlobalOption();this.CancelAutoUpdate();this.AutoUpdateEvent(false,"MinuteChartContainer::ChangeDayCount");this.DayCount=count;this.ClearMinuteData();this.ClearStockCache();this.UnlockCorssCursor();this.Frame.ClearYCoordinateMaxMin();this.ClearDrawStatusData();if(option&&option.PageInfo){this.SetPageInfo(option.PageInfo);this.ResetDayOffset();}if(option){if(IFrameSplitOperator.IsNonEmptyArray(option.AryDate)){this.AryDate=option.AryDate.slice();}}this.ReloadChartDrawPicture();this.ResetDataStatus();this.ClearIndexPaint();//清空指标
|
|
9279
9307
|
this.Frame.ClearYCoordinateMaxMin();this.ResetOverlaySymbolStatus();this.RequestData();};this.ChangeBaselineType=function(type){if(this.BaselineType==type)return;this.BaselineType=type;if(this.DayCount>1)this.RequestData();};//[{ Symbol: , Color, Option: }]
|
|
9280
9308
|
this.OverlaySymbols=function(aryData,option){if(option&&option.ClearAll===true)//全部清空
|
|
9281
9309
|
{for(var i=0;i<this.OverlayChartPaint.length;++i){var item=this.OverlayChartPaint[i];item.IsDelete=true;}this.OverlayChartPaint=[];}var aryNewOverlay=[];for(var i=0,j=0;i<aryData.length;++i)//去重,已经叠加过的不用在叠加
|
|
@@ -11170,13 +11198,13 @@ var result=[];var value;for(var _i74=0;_i74<data.length;++_i74){result[_i74]=nul
|
|
|
11170
11198
|
*/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;};//反向过滤连续出现的信号.
|
|
11171
11199
|
//用法:FILTERX(X,N):X满足条件后,将其前N周期内的数据置为0,N为常量.
|
|
11172
11200
|
//例如:FILTERX(CLOSE>OPEN,5)查找阳线,前5天内出现过的阳线不被记录在内
|
|
11173
|
-
this.FILTERX=function(data,n,node){var result=[];for(var
|
|
11201
|
+
this.FILTERX=function(data,n,node){var result=[];if(IFrameSplitOperator.IsNumber(n)){for(var i=data.length-1,j=0;i>=0;--i){if(data[i]){result[i]=1;for(j=0;j<n&&i-j-1>=0;++j){result[i-j-1]=0;}i-=n;}else{result[i]=0;}}}else if(Array.isArray(n)){for(var i=data.length-1,j=0;i>=0;--i){if(data[i]){result[i]=1;if(!IFrameSplitOperator.IsNumber(n[i]))continue;var period=parseInt(n[i]);if(period<=0)continue;for(j=0;j<period&&i-j-1>=0;++j){result[i-j-1]=0;}i-=period;}else{result[i]=0;}}}return result;};//上一次条件成立到当前的周期数.
|
|
11174
11202
|
//用法:BARSLAST(X):上一次X不为0到现在的周期数
|
|
11175
11203
|
//例如:BARSLAST(CLOSE/REF(CLOSE,1)>=1.1)表示上一个涨停板到当前的周期数
|
|
11176
|
-
this.BARSLAST=function(data){var result=[];if(!data)return result;var day=null;for(var
|
|
11204
|
+
this.BARSLAST=function(data){var result=[];if(!data)return result;var day=null;for(var _i76=0;_i76<data.length;++_i76){result[_i76]=null;if(data[_i76]>0)day=0;else if(day!=null)++day;if(day!=null)result[_i76]=day;}return result;};//倒数第N次成立时距今的周期数.
|
|
11177
11205
|
//用法:BARSLASTS(X,N):X倒数第N满足到现在的周期数,N支持变量
|
|
11178
11206
|
this.BARSLASTS=function(data,n,node){var result=[];if(!data)return result;if(n<=0)n=data.length;var day=null;var SingleValue=0;//单词数
|
|
11179
|
-
var periodCount=0;for(var
|
|
11207
|
+
var periodCount=0;for(var _i77=0;_i77<data.length;++_i77){result[_i77]=null;var value=data[_i77];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[_i77]=day;}return result;};/*
|
|
11180
11208
|
N周期内第一个条件成立到当前的周期数.
|
|
11181
11209
|
用法:
|
|
11182
11210
|
BARSSINCEN(X,N):N周期内第一次X不为0到现在的天数,N为常量
|
|
@@ -11188,7 +11216,7 @@ var periodCount=0;for(var _i78=0;_i78<data.length;++_i78){result[_i78]=null;var
|
|
|
11188
11216
|
BARSSINCE(X):第一次X不为0到现在的天数
|
|
11189
11217
|
例如:
|
|
11190
11218
|
BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数
|
|
11191
|
-
*/this.BARSSINCE=function(data){var result=[];var day=null;for(var
|
|
11219
|
+
*/this.BARSSINCE=function(data){var result=[];var day=null;for(var _i78=0;_i78<data.length;++_i78){result[_i78]=null;if(day==null){if(data[_i78])day=0;}else{++day;}if(day)result[_i78]=day;}return result;};/*三角函数调用 func 三角函数
|
|
11192
11220
|
反正切值. 用法: ATAN(X)返回X的反正切值
|
|
11193
11221
|
余弦值. 用法: COS(X)返回X的余弦值
|
|
11194
11222
|
正弦值. 用法: SIN(X)返回X的正弦值
|
|
@@ -11198,9 +11226,9 @@ var periodCount=0;for(var _i78=0;_i78<data.length;++_i78){result[_i78]=null;var
|
|
|
11198
11226
|
求10为底的对数. 用法: LOG(X)取得X的对数 例如: LOG(100)等于2
|
|
11199
11227
|
指数. 用法: EXP(X)为e的X次幂 例如: EXP(CLOSE)返回e的CLOSE次幂
|
|
11200
11228
|
开平方. 用法: SQRT(X)为X的平方根 例如: SQRT(CLOSE)收盘价的平方根
|
|
11201
|
-
*/this.Trigonometric=function(data,func){if(!Array.isArray(data)){if(this.IsNumber(data))return func(data);return null;}else{var result=[];for(var
|
|
11202
|
-
this.ASIN=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var
|
|
11203
|
-
this.ACOS=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var
|
|
11229
|
+
*/this.Trigonometric=function(data,func){if(!Array.isArray(data)){if(this.IsNumber(data))return func(data);return null;}else{var result=[];for(var _i79 in data){var item=data[_i79];if(this.IsNumber(item))result[_i79]=func(item);else result[_i79]=null;}return result;}};//反正弦值. 用法: ASIN(X)返回X的反正弦值
|
|
11230
|
+
this.ASIN=function(data){if(!Array.isArray(data)){if(this.IsNumber(data))return Math.acos(data);return null;}else{var result=[];for(var _i80 in data){var item=data[_i80];result[_i80]=null;if(this.IsNumber(item)){if(item>=-1&&item<=1){result[_i80]=Math.asin(item);}else if(_i80-1>=0){var preItem=result[_i80-1];if(this.IsNumber(preItem))result[_i80]=preItem;}}}return result;}};//反余弦值. 用法: ACOS(X)返回X的反余弦值
|
|
11231
|
+
this.ACOS=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.acos(item);}else if(_i81-1>=0){var preItem=result[_i81-1];if(this.IsNumber(preItem))result[_i81]=preItem;}}}return result;}};/*
|
|
11204
11232
|
LAST(X,A,B):持续存在.
|
|
11205
11233
|
用法:
|
|
11206
11234
|
LAST(CLOSE>OPEN,10,5)
|
|
@@ -11403,42 +11431,42 @@ for(var i=startDay,j=0;i<kData.length;++i){var start=i-startDay;if(start<0)conti
|
|
|
11403
11431
|
*/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});//流通股本
|
|
11404
11432
|
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;};//计算截至到某一天的历史所有筹码
|
|
11405
11433
|
this.CalculateChip=function(index,exchangeData,hisData,dRate){var result={Min:null,Max:null,Data:[]};var seed=1;//筹码历史衰减换手系数
|
|
11406
|
-
var max=null,min=null;for(var
|
|
11407
|
-
var kData=hisData[
|
|
11434
|
+
var max=null,min=null;for(var _i82=index;_i82>=0;--_i82){var _item9={};//Vol:量 High:最高 Low:最低
|
|
11435
|
+
var kData=hisData[_i82];if(_i82==index)_item9.Vol=kData.Vol*exchangeData[_i82];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[_i82]=_item9;seed*=1-exchangeData[_i82]/100*dRate;//换手率累乘
|
|
11408
11436
|
}result.Max=max;result.Min=min;return result;};/*
|
|
11409
11437
|
返回是否连涨周期数.
|
|
11410
11438
|
用法:
|
|
11411
11439
|
UPNDAY(CLOSE,M)
|
|
11412
11440
|
表示连涨M个周期,M为常量
|
|
11413
|
-
*/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
|
|
11414
|
-
{days=0;continue;}if(data[
|
|
11441
|
+
*/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 _i83=0;_i83<data.length;++_i83){result[_i83]=0;if(_i83-1<0)continue;if(!this.IsNumber(data[_i83])||!this.IsNumber(data[_i83-1]))//无效数都不算连涨
|
|
11442
|
+
{days=0;continue;}if(data[_i83]>data[_i83-1])++days;else days=0;if(days==n){result[_i83]=1;--days;}}return result;};/*
|
|
11415
11443
|
返回是否连跌周期.
|
|
11416
11444
|
用法:
|
|
11417
11445
|
DOWNNDAY(CLOSE,M)
|
|
11418
11446
|
表示连跌M个周期,M为常量
|
|
11419
|
-
*/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
|
|
11420
|
-
{days=0;continue;}if(data[
|
|
11447
|
+
*/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 _i84=0;_i84<data.length;++_i84){result[_i84]=0;if(_i84-1<0)continue;if(!this.IsNumber(data[_i84])||!this.IsNumber(data[_i84-1]))//无效数都不算连涨
|
|
11448
|
+
{days=0;continue;}if(data[_i84]<data[_i84-1])++days;else days=0;if(days==n){result[_i84]=1;--days;}}return result;};/*
|
|
11421
11449
|
返回是否持续存在X>Y
|
|
11422
11450
|
用法:
|
|
11423
11451
|
NDAY(CLOSE,OPEN,3)
|
|
11424
11452
|
表示连续3日收阳线
|
|
11425
|
-
*/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
|
|
11453
|
+
*/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 _i85=0;_i85<count;++_i85){result[_i85]=0;if(_i85>=data.length||_i85>=data2.length)continue;if(!this.IsNumber(data[_i85])||!this.IsNumber(data2[_i85])){days=0;continue;}if(data[_i85]>data2[_i85])++days;else days=0;if(days==n){result[_i85]=1;--days;}}}else if(Array.isArray(data)&&!Array.isArray(data2)){if(n>=data.length||!this.IsNumber(data2))return;var days=0;for(var _i86 in data){result[_i86]=0;if(!this.IsNumber(data[_i86])){days=0;continue;}if(data[_i86]>data2)++days;else days=0;if(days==n){result[_i86]=1;--days;}}}else if(!Array.isArray(data)&&Array.isArray(data2)){if(n>=data2.length||!this.IsNumber(data))return;var days=0;for(var _i87 in data2){result[_i87]=0;if(!this.IsNumber(data2[_i87])){days=0;continue;}if(data>data2[_i87])++days;else days=0;if(days==n){result[_i87]=1;--days;}}}return result;};/*
|
|
11426
11454
|
两条线维持一定周期后交叉.
|
|
11427
11455
|
用法:LONGCROSS(A,B,N)表示A在N周期内都小于B,本周期从下方向上穿过B时返回1,否则返回0
|
|
11428
|
-
*/this.LONGCROSS=function(data,data2,n){var result=[];var count=Math.max(data.length,data2.length);for(var
|
|
11456
|
+
*/this.LONGCROSS=function(data,data2,n){var result=[];var count=Math.max(data.length,data2.length);for(var _i88=0;_i88<count;++_i88){result[_i88]=0;if(_i88-1<0)continue;if(_i88>=data.length||_i88>=data2.length)continue;if(!this.IsNumber(data[_i88])||!this.IsNumber(data2[_i88])||!this.IsNumber(data[_i88-1])||!this.IsNumber(data2[_i88-1]))continue;if(data[_i88]>data2[_i88]&&data[_i88-1]<data2[_i88-1])result[_i88]=1;}for(var _i89=0,_j3=0;_i89<count;++_i89){if(!result[_i89])continue;for(_j3=1;_j3<=n&&_i89-_j3>=0;++_j3){if(data[_i89-_j3]>=data2[_i89-_j3]){result[_i89]=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;}};/*
|
|
11429
11457
|
EXISTR(X,A,B):是否存在(前几日到前几日间).
|
|
11430
11458
|
例如: EXISTR(CLOSE>OPEN,10,5)
|
|
11431
11459
|
表示从前10日内到前5日内存在着阳线
|
|
11432
11460
|
若A为0,表示从第一天开始,B为0,表示到最后日止
|
|
11433
|
-
*/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
|
|
11461
|
+
*/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 _i90=0,_j4=0;_i90<data.length;++_i90){result[_i90]=null;if(_i90-n<0||_i90-n2<0)continue;result[_i90]=0;for(_j4=n;_j4>=n2;--_j4){var value=data[_i90-_j4];if(this.IsNumber(value)&&value){result[_i90]=1;break;}}}return result;};/*
|
|
11434
11462
|
RELATE(X,Y,N) 返回X和Y的N周期的相关系数
|
|
11435
11463
|
RELATE(X,Y,N)=(∑[(Xi-Avg(X))(Yi-Avg(y))])/N ÷ √((∑(Xi-Avg(X))^2)/N * (∑(Yi-Avg(Y))^2)/N)
|
|
11436
11464
|
其中 avg(x)表示x的N周期均值: avg(X) = (∑Xi)/N
|
|
11437
11465
|
√(...)表示开平方
|
|
11438
|
-
*/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
|
|
11439
|
-
total2+=Math.pow(data[
|
|
11440
|
-
total3+=Math.pow(data2[
|
|
11441
|
-
}result[
|
|
11466
|
+
*/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 _i91=0,_j5=0;_i91<count;++_i91){result[_i91]=null;if(_i91>=data.length||_i91>=data2.length||_i91>=dataAverage.length||_i91>=data2Average.length)continue;var average=dataAverage[_i91];var average2=data2Average[_i91];var total=0,total2=0,total3=0;for(_j5=_i91-n+1;_j5<=_i91;++_j5){total+=(data[_j5]-average)*(data2[_j5]-average2);//∑[(Xi-Avg(X))(Yi-Avg(y))])
|
|
11467
|
+
total2+=Math.pow(data[_j5]-average,2);//∑(Xi-Avg(X))^2
|
|
11468
|
+
total3+=Math.pow(data2[_j5]-average2,2);//∑(Yi-Avg(Y))^2)
|
|
11469
|
+
}result[_i91]=total/n/(Math.sqrt(total2/n)*Math.sqrt(total3/n));}return result;};//计算数组n周期内的均值
|
|
11442
11470
|
this.CalculateAverage=function(data,n){var result=[];if(n<1)return result;var total=0;for(var i=0;i<data.length;++i)//去掉开始的无效数
|
|
11443
11471
|
{if(this.IsNumber(data[i]))break;}for(;i<data.length&&i<n;++i)//计算第1个周期的数据
|
|
11444
11472
|
{result[i]=null;var value=data[i];if(!this.IsNumber(value))continue;total+=value;}result[i-1]=total/n;for(;i<data.length;++i)//计算后面的周期数据
|
|
@@ -11446,7 +11474,7 @@ this.CalculateAverage=function(data,n){var result=[];if(n<1)return result;var to
|
|
|
11446
11474
|
if(!this.IsNumber(value))value=0;if(!this.IsNumber(preValue))preValue=0;total=total-preValue+value;//当前周期的数据 等于上一个周期数据 去掉上一个周期的第1个数据 加上这个周期的最后1个数据
|
|
11447
11475
|
result[i]=total/n;}return result;};/*
|
|
11448
11476
|
COVAR(X,Y,N) 返回X和Y的N周期的协方差
|
|
11449
|
-
*/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
|
|
11477
|
+
*/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 _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;for(_j6=_i92-n+1;_j6<=_i92;++_j6){total+=(data[_j6]-average)*(data2[_j6]-average2);}result[_i92]=total/n;}return result;};/*
|
|
11450
11478
|
求上一高点到当前的周期数.
|
|
11451
11479
|
用法:
|
|
11452
11480
|
HHVBARS(X,N):求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计
|
|
@@ -11470,7 +11498,7 @@ for(var i=0;i<data.length;++i){result[i]=null;if(this.IsNumber(data[i])){nMin=i;
|
|
|
11470
11498
|
公式=股票和指数协方差/指数方差
|
|
11471
11499
|
*/this.BETA=function(n){var result=[];var stockData=this.SymbolData.Data;var indexData=this.SymbolData.IndexData;if(n<=0)n=1;var stockProfit=[];//股票涨幅
|
|
11472
11500
|
var indexProfit=[];//指数涨幅
|
|
11473
|
-
for(var
|
|
11501
|
+
for(var _i93=0;_i93<stockData.Data.length;++_i93){stockProfit[_i93]=0;indexProfit[_i93]=0;var stockItem=stockData.Data[_i93];var indexItem=indexData.Data[_i93];if(stockItem.Close>0&&stockItem.YClose>0)stockProfit[_i93]=(stockItem.Close-stockItem.YClose)/stockItem.YClose;if(indexItem.Close>0&&indexItem.YClose>0)indexProfit[_i93]=(indexItem.Close-indexItem.YClose)/indexItem.YClose;}//计算均值数组
|
|
11474
11502
|
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;//协方差
|
|
11475
11503
|
var variance=0;//方差
|
|
11476
11504
|
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;
|
|
@@ -11518,8 +11546,8 @@ this.CON2STR=function(data,n){var result=[];if(Array.isArray(data)){for(var i=da
|
|
|
11518
11546
|
//用法: VAR2STR(C,3)表示取收盘价,以3位小数转为字符串
|
|
11519
11547
|
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';//单数值
|
|
11520
11548
|
if(isNumber&&isNumber2){return JSAlgorithm.MOD(data,data2);}else if(!isNumber&&!isNumber2)//都是数组相加
|
|
11521
|
-
{var count=Math.max(data.length,data2.length);for(var
|
|
11522
|
-
if(
|
|
11549
|
+
{var count=Math.max(data.length,data2.length);for(var _i94=0;_i94<count;++_i94){result[_i94]=null;//初始化
|
|
11550
|
+
if(_i94<data.length&&_i94<data2.length){if(this.IsNumber(data[_i94])&&this.IsNumber(data2[_i94]))result[_i94]=JSAlgorithm.MOD(data[_i94],data2[_i94]);}}return result;}else if(isNumber&&!isNumber2)//单数字 数组
|
|
11523
11551
|
{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)//数组 单数字
|
|
11524
11552
|
{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;}};/*
|
|
11525
11553
|
FRACPART(A) 取得小数部分
|
|
@@ -11673,7 +11701,11 @@ var value=Math.abs(Math.abs(divisor)*(Math.floor(absNumber/absDivisor)+1)-Math.a
|
|
|
11673
11701
|
*/function JSDraw(errorHandler,symbolData){this.ErrorHandler=errorHandler;this.SymbolData=symbolData;//绘制随光标移动的浮动文字。
|
|
11674
11702
|
//用法: DRAWFLAGTEXT(COND,PRICE,TEXT),光标处当COND条件满足时,在PRICE位置用半透明窗口显示文字TEXT,随光标移动而移动。将\\n插入TEXT内容中可实现文字换行。
|
|
11675
11703
|
//例如:DRAWFLAGTEXT(CLOSE/OPEN>1.08,LOW,'大阳线')表示当光标移动到涨幅大于8%的地方,在最低价位置显示'大阳线'字样的浮动窗口。
|
|
11676
|
-
this.DRAWFLAGTEXT=function(condition,price,text){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWFLAGTEXT'};if(!text)return result;if(Array.isArray(condition)){if(condition.length<=0)return result;var bSinglePrice=IFrameSplitOperator.IsNumber(price);for(var i=0;i<condition.length;++i){drawData[i]=null;if(isNaN(condition[i])||!condition[i])continue;if(bSinglePrice){drawData[i]={YValue:price,Text:text};}else{if(IFrameSplitOperator.IsNumber(price[i]))drawData[i]={YValue:price[i],Text:text};}}}else if(IFrameSplitOperator.IsPlusNumber(condition)){var bSinglePrice=IFrameSplitOperator.IsNumber(price);for(var i=0;i<this.SymbolData.Data.Data.length;++i){if(bSinglePrice){drawData[i]={YValue:price,Text:text};}else{if(IFrameSplitOperator.IsNumber(price[i]))drawData[i]={YValue:price[i],Text:text};}}}return result;}
|
|
11704
|
+
this.DRAWFLAGTEXT=function(condition,price,text){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWFLAGTEXT'};if(!text)return result;if(Array.isArray(condition)){if(condition.length<=0)return result;var bSinglePrice=IFrameSplitOperator.IsNumber(price);for(var i=0;i<condition.length;++i){drawData[i]=null;if(isNaN(condition[i])||!condition[i])continue;if(bSinglePrice){drawData[i]={YValue:price,Text:text};}else{if(IFrameSplitOperator.IsNumber(price[i]))drawData[i]={YValue:price[i],Text:text};}}}else if(IFrameSplitOperator.IsPlusNumber(condition)){var bSinglePrice=IFrameSplitOperator.IsNumber(price);for(var i=0;i<this.SymbolData.Data.Data.length;++i){if(bSinglePrice){drawData[i]={YValue:price,Text:text};}else{if(IFrameSplitOperator.IsNumber(price[i]))drawData[i]={YValue:price[i],Text:text};}}}return result;};//只有条件==1 才显示文字
|
|
11705
|
+
this.DRAWTEXT=function(condition,price,text){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWTEXT',Text:text};if(Array.isArray(condition)){if(condition.length<=0)return result;var IsNumber=this.IsNumber(price);var isFixedPosition=false;if(price==="TOP"||price==="BOTTOM"){result.FixedPosition=price;isFixedPosition=true;}for(var i=0;i<condition.length;++i){drawData[i]=null;if(condition[i]!==1)continue;if(IsNumber||isFixedPosition){drawData[i]=price;}else{if(this.IsNumber(price[i]))drawData[i]=price[i];}}}else if(this.IsNumber(condition)&&condition===1){var IsNumber=this.IsNumber(price);var isFixedPosition=false;if(price==="TOP"||price==="BOTTOM"){result.FixedPosition=price;isFixedPosition=true;}for(var i=0;i<this.SymbolData.Data.Data.length;++i){if(IsNumber||isFixedPosition){drawData[i]=price;}else{if(this.IsNumber(price[i]))drawData[i]=price[i];}}}return result;};//1.固定位置显示文字;2.在指标排序中显示字符串栏目.
|
|
11706
|
+
//用法:DRAWTEXT_FIX(COND,X,Y,TYPE,TEXT),COND中一般需要加ISLASTBAR,当COND条件满足时,在当前指标窗口内(X,Y)位置书写文字TEXT,X,Y为书写点在窗口中相对于左上角的百分比,TYPE:0为左对齐,1为右对齐,2=居中.
|
|
11707
|
+
//例如:DRAWTEXT_FIX(ISLASTBAR AND CLOSE/OPEN>1.08,0.5,0.5,0,'大阳线')表示最后一个交易日实体阳线大于8%时在窗口中间位置显示'大阳线'字样.若文字中含有&,则进行折行.最多只能显示250个字符
|
|
11708
|
+
this.DRAWTEXT_FIX=function(condition,x,y,type,text){var drawData={Value:[],Text:[]};var result={DrawData:drawData,DrawType:'DRAWTEXT_FIX',Text:null,Position:{X:x,Y:y,Type:type}};if(Array.isArray(condition)){for(var i=0;i<condition.length;++i){drawData.Text[i]=null;drawData.Value[i]=0;if(condition[i]!==1)continue;drawData.Value[i]=1;drawData.Text[i]=text;}}else{if(condition===1){for(var i=0;i<this.SymbolData.Data.Data.length;++i){drawData.Text[i]=text;drawData.Value[i]=1;}}}return result;};//direction 文字Y轴位置 0=middle 1=价格的顶部 2=价格的底部
|
|
11677
11709
|
//offset 文字Y轴偏移
|
|
11678
11710
|
this.SUPERDRAWTEXT=function(condition,price,text,direction,offset){var drawData=[];var result={DrawData:drawData,DrawType:'SUPERDRAWTEXT',Text:text,YOffset:offset,Direction:direction,TextAlign:'center'};if(condition.length<=0)return result;var IsNumber=typeof price=="number";for(var i in condition){drawData[i]=null;if(isNaN(condition[i])||!condition[i])continue;if(IsNumber){drawData[i]=price;}else{if(this.IsNumber(price[i]))drawData[i]=price[i];}}return result;};/*
|
|
11679
11711
|
STICKLINE 绘制柱线
|
|
@@ -11690,20 +11722,22 @@ var IsNumber=typeof data=="number";var IsNumber2=typeof data2=="number";if(Array
|
|
|
11690
11722
|
用法: DRAWLINE(COND1,PRICE1,COND2,PRICE2,EXPAND)
|
|
11691
11723
|
当COND1条件满足时,在PRICE1位置画直线起点,当COND2条件满足时,在PRICE2位置画直线终点,EXPAND为延长类型。
|
|
11692
11724
|
例如: DRAWLINE(HIGH>=HHV(HIGH,20),HIGH,LOW<=LLV(LOW,20),LOW,1) 表示在创20天新高与创20天新低之间画直线并且向右延长。
|
|
11693
|
-
*/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
|
|
11694
|
-
}else if(bFirstPoint==true&&bSecondPont==false){var bCondition2=condition2[
|
|
11695
|
-
if(!bCondition2){if(condition[
|
|
11696
|
-
lineCache.Start={ID:
|
|
11697
|
-
continue;}if(bCondition2){bSecondPont=true;lineCache.End={ID:
|
|
11698
|
-
|
|
11725
|
+
*/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()};function CopyLineData(aryDest,arySrc){if(!IFrameSplitOperator.IsNonEmptyArray(arySrc))return;for(var j=0;j<arySrc.length;++j){var item=arySrc[j];aryDest[item.ID]=item.Value;}}for(var _i95=0;_i95<count;++_i95){drawData[_i95]=null;if(_i95<condition.length&&_i95<condition2.length){if(bFirstPoint==false&&bSecondPont==false){if(condition[_i95]==null||!condition[_i95])continue;bFirstPoint=true;lineCache.Start={ID:_i95,Value:data[_i95]};//第1个点
|
|
11726
|
+
}else if(bFirstPoint==true&&bSecondPont==false){var bCondition2=condition2[_i95]!=null&&condition2[_i95];//条件2
|
|
11727
|
+
if(!bCondition2){if(condition[_i95])//条件1满足
|
|
11728
|
+
lineCache.Start={ID:_i95,Value:data[_i95]};//移动第1个点
|
|
11729
|
+
continue;}if(bCondition2){bSecondPont=true;lineCache.End={ID:_i95,Value:data2[_i95]};//第2个点
|
|
11730
|
+
if(condition[_i95]){var lineData=this.CalculateDrawLine(lineCache);//计算2个点的线上 其他点的数值
|
|
11731
|
+
CopyLineData(drawData,lineData);bFirstPoint=true;bSecondPont=false;lineCache.Start={ID:_i95,Value:data[_i95]};//第1个点
|
|
11732
|
+
}}}else if(bFirstPoint==true&&bSecondPont==true){var bCondition2=condition2[_i95]!=null&&condition2[_i95];//条件2
|
|
11699
11733
|
if(bCondition2)//条件2满足
|
|
11700
|
-
{lineCache.End={ID:
|
|
11701
|
-
}else if(condition[
|
|
11734
|
+
{lineCache.End={ID:_i95,Value:data2[_i95]};//移动第2个点
|
|
11735
|
+
}else if(condition[_i95])//条件1满足
|
|
11702
11736
|
{var lineData=this.CalculateDrawLine(lineCache);//计算2个点的线上 其他点的数值
|
|
11703
|
-
|
|
11704
|
-
bFirstPoint=bSecondPont=false;lineCache={Start:{},End:{}};bFirstPoint=true;bSecondPont=false;lineCache.Start={ID:
|
|
11737
|
+
CopyLineData(drawData,lineData);if(expand==1)this.CalculateDrawDataExtendLine(drawData,lineCache.Start.ID-2);//右延长线
|
|
11738
|
+
bFirstPoint=bSecondPont=false;lineCache={Start:{},End:{}};bFirstPoint=true;bSecondPont=false;lineCache.Start={ID:_i95,Value:data[_i95]};//第1个点
|
|
11705
11739
|
}}}//最后一组线
|
|
11706
|
-
if(bFirstPoint==true&&bSecondPont==true){var
|
|
11740
|
+
if(bFirstPoint==true&&bSecondPont==true){var lineData=this.CalculateDrawLine(lineCache);CopyLineData(drawData,lineData);}}if(expand==1)this.CalculateDrawDataExtendLine(drawData);//右延长线
|
|
11707
11741
|
return result;};/*
|
|
11708
11742
|
画出带状线.
|
|
11709
11743
|
用法: DRAWBAND(VAL1,COLOR1,VAL2,COLOR2),当VAL1>VAL2时,在VAL1和VAL2之间填充COLOR1;当VAL1<VAL2时,填充COLOR2,这里的颜色均使用RGB函数计算得到.
|
|
@@ -11716,8 +11750,8 @@ if(color)result.Color[0]=color.toLowerCase();if(color2)result.Color[1]=color2.to
|
|
|
11716
11750
|
{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线长度为数据长度
|
|
11717
11751
|
{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).
|
|
11718
11752
|
//用法:以HIGH为最高价,OPEN为开盘价,LOW为最低,CLOSE收盘画K线
|
|
11719
|
-
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
|
|
11720
|
-
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
|
|
11753
|
+
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 _i96=0;_i96<count;++_i96){var _item10={Open:null,High:null,Low:null,Close:null};if(_i96<high.length&&_i96<open.length&&_i96<low.length&&_i96<close.length){_item10.Open=open[_i96];_item10.High=high[_i96];_item10.Low=low[_i96];_item10.Close=close[_i96];}drawData[_i96]=_item10;}return result;};//满足条件画一根K线
|
|
11754
|
+
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 _i97=0;_i97<count;++_i97){var _item11={Open:null,High:null,Low:null,Close:null};if(_i97<high.length&&_i97<open.length&&_i97<low.length&&_i97<close.length&&_i97<condition.length){if(condition[_i97]){_item11.Open=open[_i97];_item11.High=high[_i97];_item11.Low=low[_i97];_item11.Close=close[_i97];}}drawData[_i97]=_item11;}return result;};//叠加一个K线
|
|
11721
11755
|
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;};/*
|
|
11722
11756
|
DRAWCOLORKLINE 绘制K线
|
|
11723
11757
|
用法:
|
|
@@ -11741,11 +11775,11 @@ this.DRAWOVERLAYKLINE=function(open,high,low,close){var drawData=[];var result={
|
|
|
11741
11775
|
}else if(bFirstPoint==true&&bSecondPont==false){if(!this.IsNumber(data[i]))continue;lineCache.End={ID:parseInt(i),Value:data[i]};//第2个点
|
|
11742
11776
|
//根据起始点和结束点 计算中间各个点的数据
|
|
11743
11777
|
var lineData=this.CalculateDrawLine(lineCache);//计算2个点的线上 其他点的数值
|
|
11744
|
-
for(var
|
|
11745
|
-
}else if(bFirstPoint==true&&bSecondPont==false){if(condition[
|
|
11778
|
+
for(var _j7 in lineData){var _item12=lineData[_j7];drawData[_item12.ID]=_item12.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 _i98 in condition){drawData[_i98]=null;if(bFirstPoint==false&&bSecondPont==false){if(condition[_i98]==null||!condition[_i98])continue;if(_i98>=data.length||!this.IsNumber(data[_i98]))continue;bFirstPoint=true;_lineCache.Start={ID:parseInt(_i98),Value:data[_i98]};//第1个点
|
|
11779
|
+
}else if(bFirstPoint==true&&bSecondPont==false){if(condition[_i98]==null||!condition[_i98])continue;if(_i98>=data.length||!this.IsNumber(data[_i98]))continue;_lineCache.End={ID:parseInt(_i98),Value:data[_i98]};//第2个点
|
|
11746
11780
|
//根据起始点和结束点 计算中间各个点的数据
|
|
11747
|
-
var
|
|
11748
|
-
for(var
|
|
11781
|
+
var _lineData=this.CalculateDrawLine(_lineCache);//计算2个点的线上 其他点的数值
|
|
11782
|
+
for(var _j8 in _lineData){var _item13=_lineData[_j8];drawData[_item13.ID]=_item13.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)
|
|
11749
11783
|
if(x2!=null&&x2-1>=0){var x1=x2-1;for(var i=x2+1;i<count;++i){var y1=drawData[x1];var y2=drawData[x2];var y3=(y1-y2)*(i-x1)/(x2-x1);if(y1-y3<0)break;drawData[i]=y1-y3;}}};/*
|
|
11750
11784
|
画出数字.
|
|
11751
11785
|
用法:
|
|
@@ -11756,11 +11790,11 @@ if(x2!=null&&x2-1>=0){var x1=x2-1;for(var i=x2+1;i<count;++i){var y1=drawData[x1
|
|
|
11756
11790
|
*/this.DRAWNUMBER=function(condition,data,data2,decimal){var drawData={Value:[],Text:[]};var result={DrawData:drawData,DrawType:'DRAWNUMBER'};var dec=2;//小数位数
|
|
11757
11791
|
if(IFrameSplitOperator.IsNumber(decimal))dec=decimal;var priceData={DataType:0,SingleValue:null,ArrayValue:null};//SingleValue=单值 ArrayValue=数组
|
|
11758
11792
|
if(Array.isArray(data)){priceData.ArrayValue=data;priceData.DataType=2;}else{if(data==="TOP"||data==="BOTTOM")result.FixedPosition=data;priceData.SingleValue=data;priceData.DataType=1;}var numberData={DataType:0,SingleValue:null,ArrayValue:null};if(Array.isArray(data2)){numberData.ArrayValue=data2;numberData.DataType=2;}else{//单值
|
|
11759
|
-
numberData.SingleValue=data2;numberData.DataType=1;if(IFrameSplitOperator.IsNumber(data2)){if(IFrameSplitOperator.IsInteger(data2))numberData.SingleValue=data2.toString();else text=data2.toFixed(dec);}}if(Array.isArray(condition)){for(var i=0;i<condition.length;++i){drawData.Value[i]=null;if(!condition[i])continue;drawData.Value[i]=this.DRAWNUMBER_Temp_PriceItem(i,priceData);drawData.Text[i]=this.DRAWNUMBER_Temp_NumberItem(i,numberData,dec);}}else if(this.IsNumber(condition)&&condition){for(var i=0;i<this.SymbolData.Data.Data.length;++i){drawData.Value[i]=this.DRAWNUMBER_Temp_PriceItem(i,priceData);drawData.Text[i]=this.DRAWNUMBER_Temp_NumberItem(i,numberData,dec);}}return result;};this.DRAWNUMBER_Temp_PriceItem=function(index,priceData){if(!priceData)return null;if(priceData.DataType==1)return priceData.SingleValue;if(!IFrameSplitOperator.IsNonEmptyArray(priceData.ArrayValue))return null;return priceData.ArrayValue[index];};this.DRAWNUMBER_Temp_NumberItem=function(index,numberData,decimal){if(!numberData)return null;if(numberData.DataType==1)
|
|
11793
|
+
numberData.SingleValue=data2;numberData.DataType=1;if(IFrameSplitOperator.IsNumber(data2)){if(IFrameSplitOperator.IsInteger(data2))numberData.SingleValue=data2.toString();else text=data2.toFixed(dec);}}if(Array.isArray(condition)){for(var i=0;i<condition.length;++i){drawData.Value[i]=null;if(!condition[i])continue;drawData.Value[i]=this.DRAWNUMBER_Temp_PriceItem(i,priceData);drawData.Text[i]=this.DRAWNUMBER_Temp_NumberItem(i,numberData,dec);}}else if(this.IsNumber(condition)&&condition){for(var i=0;i<this.SymbolData.Data.Data.length;++i){drawData.Value[i]=this.DRAWNUMBER_Temp_PriceItem(i,priceData);drawData.Text[i]=this.DRAWNUMBER_Temp_NumberItem(i,numberData,dec);}}return result;};this.DRAWNUMBER_Temp_PriceItem=function(index,priceData){if(!priceData)return null;if(priceData.DataType==1)return priceData.SingleValue;if(!IFrameSplitOperator.IsNonEmptyArray(priceData.ArrayValue))return null;return priceData.ArrayValue[index];};this.DRAWNUMBER_Temp_NumberItem=function(index,numberData,decimal){if(!numberData)return null;if(numberData.DataType==1){var value=numberData.SingleValue;if(IFrameSplitOperator.IsNumber(value))return value.toFixed(decimal);else if(value)return value.toString();else return null;}if(!IFrameSplitOperator.IsNonEmptyArray(numberData.ArrayValue))return null;var value=numberData.ArrayValue[index];if(this.IsNumber(value)){if(IFrameSplitOperator.IsInteger(value))return value.toString();else return value.toFixed(decimal);}return value.toString();};/*
|
|
11760
11794
|
固定位置显示数字.
|
|
11761
|
-
用法: DRAWNUMBER_FIX(COND,X,Y,TYPE,NUMBER),当COND条件满足时,在当前指标窗口内(X,Y)位置书写数字NUMBER,X,Y为书写点在窗口中相对于左上角的百分比,TYPE:0为左对齐,1
|
|
11795
|
+
用法: DRAWNUMBER_FIX(COND,X,Y,TYPE,NUMBER,decimal=2),当COND条件满足时,在当前指标窗口内(X,Y)位置书写数字NUMBER,X,Y为书写点在窗口中相对于左上角的百分比,TYPE:0为左对齐,1为右对齐 2=居中
|
|
11762
11796
|
例如: DRAWNUMBER_FIX(CURRBARSCOUNT=1 AND CLOSE/OPEN>1.08,0.5,0.5,0,C)表示最后一个交易日实体阳线大于8%时在窗口中间位置显示收盘价.
|
|
11763
|
-
*/this.DRAWNUMBER_FIX=function(condition,x,y,align,data){var drawData={Value:[],Text:[]};var result={DrawData:drawData,DrawType:'DRAWNUMBER_FIX',Position:{X:x,Y:y,Type:align}};var isNumber=IFrameSplitOperator.IsNumber(data);if(Array.isArray(condition)){for(var i
|
|
11797
|
+
*/this.DRAWNUMBER_FIX=function(condition,x,y,align,data){var decimal=arguments.length>5&&arguments[5]!==undefined?arguments[5]:2;var drawData={Value:[],Text:[]};var result={DrawData:drawData,DrawType:'DRAWNUMBER_FIX',Position:{X:x,Y:y,Type:align}};var isNumber=IFrameSplitOperator.IsNumber(data);if(Array.isArray(condition)){for(var i=0;i<condition.length;++i){drawData.Text[i]=null;drawData.Value[i]=null;if(condition[i]!==1)continue;if(isNumber){drawData.Text[i]=this.RemoveZero(data.toFixed(decimal));drawData.Value[i]=data;}else{if(i>=data.length||!IFrameSplitOperator.IsNumber(data[i]))continue;var item=data[i];drawData.Text[i]=this.RemoveZero(item.toFixed(decimal));drawData.Value[i]=item;}}}else{if(condition!==1){}else{for(var i=0;i<this.SymbolData.Data.Data.length;++i){if(isNumber){drawData.Text[i]=this.RemoveZero(data.toFixed(decimal));drawData.Value[i]=data;}else{if(i>=data.length||!IFrameSplitOperator.IsNumber(data[i]))continue;var item=data[i];drawData.Text[i]=this.RemoveZero(item.toFixed(decimal));drawData.Value[i]=item;}}}}return result;};/*
|
|
11764
11798
|
通达信语法:
|
|
11765
11799
|
在图形上绘制小图标.
|
|
11766
11800
|
用法:
|
|
@@ -11822,7 +11856,8 @@ numberData.SingleValue=data2;numberData.DataType=1;if(IFrameSplitOperator.IsNumb
|
|
|
11822
11856
|
areaColor: 通道面积颜色 RGB(200,30,44) 不填使用默认颜色
|
|
11823
11857
|
dotted: 通道顶部和底部虚线设置 '3,4' , 不填默认 3,3
|
|
11824
11858
|
*/this.DRAWCHANNEL=function(condition,data,data2,borderColor,borderWidth,dotted,areaColor){var drawData=[];var result={DrawData:drawData,DrawType:'DRAWCHANNEL',Border:{}};if(condition.length<=0)return result;if(borderColor)result.Border.Color=borderColor;if(areaColor)result.AreaColor=areaColor;if(borderWidth>0)result.Border.Width=borderWidth;if(dotted){if(dotted=='0'){result.Border.Dotted=[];}else{var ary=dotted.split(',');result.Border.Dotted=[];for(var i in ary){var item=ary[i];if(!item)continue;var value=parseInt(ary[i]);if(!IFrameSplitOperator.IsNumber(value))continue;if(value<=0)continue;result.Border.Dotted.push(value);}if(result.Border.Dotted.length<=0)result.Border.Dotted=null;}}var IsNumber=typeof data=="number";var IsNumber2=typeof data2=="number";if(typeof condition=='number'){if(!condition)return result;//条件是否
|
|
11825
|
-
for(var i=0;i<this.SymbolData.Data.Data.length;++i){drawData[i]=null;if(IsNumber&&IsNumber2){drawData[i]={Value:data,Value2:data2};}else if(IsNumber&&!IsNumber2){if(isNaN(data2[i]))continue;drawData[i]={Value:data,Value2:data2[i]};}else if(!IsNumber&&IsNumber2){if(isNaN(data[i]))continue;drawData[i]={Value:data[i],Value2:data2};}else{if(isNaN(data[i])||isNaN(data2[i]))continue;drawData[i]={Value:data[i],Value2:data2[i]};}}}else{for(var i=0;i<condition.length;++i){drawData[i]=null;if(isNaN(condition[i])||!condition[i])continue;if(IsNumber&&IsNumber2){drawData[i]={Value:data,Value2:data2};}else if(IsNumber&&!IsNumber2){if(isNaN(data2[i]))continue;drawData[i]={Value:data,Value2:data2[i]};}else if(!IsNumber&&IsNumber2){if(isNaN(data[i]))continue;drawData[i]={Value:data[i],Value2:data2};}else{if(isNaN(data[i])||isNaN(data2[i]))continue;drawData[i]={Value:data[i],Value2:data2[i]};}}}return result;};this.RGB=function(r,g,b){var rgb='RGB('+r+','+g+','+b+')';return rgb;};this.RGBA=function(r,g,b,a){var rgba='RGB('+r+','+g+','+b+','+a+')';return rgba;}
|
|
11859
|
+
for(var i=0;i<this.SymbolData.Data.Data.length;++i){drawData[i]=null;if(IsNumber&&IsNumber2){drawData[i]={Value:data,Value2:data2};}else if(IsNumber&&!IsNumber2){if(isNaN(data2[i]))continue;drawData[i]={Value:data,Value2:data2[i]};}else if(!IsNumber&&IsNumber2){if(isNaN(data[i]))continue;drawData[i]={Value:data[i],Value2:data2};}else{if(isNaN(data[i])||isNaN(data2[i]))continue;drawData[i]={Value:data[i],Value2:data2[i]};}}}else{for(var i=0;i<condition.length;++i){drawData[i]=null;if(isNaN(condition[i])||!condition[i])continue;if(IsNumber&&IsNumber2){drawData[i]={Value:data,Value2:data2};}else if(IsNumber&&!IsNumber2){if(isNaN(data2[i]))continue;drawData[i]={Value:data,Value2:data2[i]};}else if(!IsNumber&&IsNumber2){if(isNaN(data[i]))continue;drawData[i]={Value:data[i],Value2:data2};}else{if(isNaN(data[i])||isNaN(data2[i]))continue;drawData[i]={Value:data[i],Value2:data2[i]};}}}return result;};this.RGB=function(r,g,b){var rgb='RGB('+r+','+g+','+b+')';return rgb;};this.RGBA=function(r,g,b,a){var rgba='RGB('+r+','+g+','+b+','+a+')';return rgba;};//设置字体
|
|
11860
|
+
this.CSSFONT=function(strFont){return strFont;};this.UPCOLOR=function(color){return color;};this.DOWNCOLOR=function(color){return color;};this.STICKTYPE=function(value){return value;};//数据左右偏移
|
|
11826
11861
|
this.XMOVE=function(offset){return offset;};//数据上下偏移
|
|
11827
11862
|
this.YMOVE=function(offset){return offset;};this.LINEDASH=function(aryData){if(IFrameSplitOperator.IsNonEmptyArray(aryData))return aryData.slice();return[];};this.KLINETYPE=function(type){return type;};this.FIRSTDRAW=function(value){return value;};/*
|
|
11828
11863
|
SOUND 播放声音。用法:SOUND(NAME),播放NAME
|
|
@@ -11952,8 +11987,8 @@ this.DRAWLASTBARNUMBER=function(data,value,dec,color){var drawItem={Value:null,T
|
|
|
11952
11987
|
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();//转小写
|
|
11953
11988
|
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'};};//饼图
|
|
11954
11989
|
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半径
|
|
11955
|
-
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
|
|
11956
|
-
if(lineCache.Start.Value>lineCache.End.Value){for(var
|
|
11990
|
+
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 _i99=lineCache.Start.ID;_i99<=lineCache.End.ID;++_i99){lineCache.List.push(_i99);}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个点
|
|
11991
|
+
if(lineCache.Start.Value>lineCache.End.Value){for(var _i100=1;_i100<lineCache.List.length-1;++_i100){var value=height*(lineCache.List.length-1-_i100)/width+lineCache.End.Value;result.push({ID:lineCache.List[_i100],Value:value});}}else{for(var _i101=1;_i101<lineCache.List.length-1;++_i101){var value=height*_i101/width+lineCache.Start.Value;result.push({ID:lineCache.List[_i101],Value:value});}}result.push({ID:lineCache.End.ID,Value:lineCache.End.Value});//最后一个点
|
|
11957
11992
|
return result;};//是否有是有效的数字
|
|
11958
11993
|
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
|
|
11959
11994
|
var DYNAINFO_ARGUMENT_ID={YCLOSE:3,OPEN:4,HIGH:5,LOW:6,CLOSE:7,VOL:8,AMOUNT:10,AMPLITUDE:13,//振幅
|
|
@@ -12110,12 +12145,12 @@ if(periodInfo.Period==0)hisData=dayData.Data;else hisData=dayData.GetPeriodData(
|
|
|
12110
12145
|
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');//日线
|
|
12111
12146
|
if(periodInfo.Period==0)hisData=dayData;else hisData=dayData.GetPeriodData(periodInfo.Period);//日线周期
|
|
12112
12147
|
}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)//日线数据才复权
|
|
12113
|
-
{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
|
|
12148
|
+
{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 _i102=lCount-1;_i102>=0;--_i102){result.push(_i102+1);}//数据从0开始
|
|
12114
12149
|
return result;};//BARPOS 返回从第一根K线开始到当前的周期数。
|
|
12115
12150
|
//注:
|
|
12116
12151
|
//1、BARPOS返回本地已有的K线根数,从本机上存在的数据开始算起。
|
|
12117
12152
|
//2、本机已有的第一根K线上返回值为1。
|
|
12118
|
-
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
|
|
12153
|
+
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 _i103=0;_i103<lCount;++_i103){result.push(_i103+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 _i104=0;_i104<lCount;++_i104){if(_i104==lCount-1)result.push(1);else result.push(0);}return result;};//BARSTATUS返回数据位置信息,1表示第一根K线,2表示最后一个数据,0表示中间位置.
|
|
12119
12154
|
//例如:BARSTATUS=2表示当天是该数据的最后一个周期.
|
|
12120
12155
|
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;};//求真实波幅, (最高-最低),(最高-昨收),(最低-昨收)三者绝对值中的最大值.
|
|
12121
12156
|
//用法:
|
|
@@ -12136,7 +12171,7 @@ case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY://卖出信息-偿还量
|
|
|
12136
12171
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET://卖出信息-融券净卖出
|
|
12137
12172
|
fieldList.push("margin.sell");break;}//请求数据
|
|
12138
12173
|
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个数据
|
|
12139
|
-
for(var
|
|
12174
|
+
for(var _i105 in stock.stockday){var item=stock.stockday[_i105];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;//融资融券余额
|
|
12140
12175
|
aryData.push(indexData);break;case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_RATE:if(!this.IsNumber(marginData.rate))continue;indexData.Value=marginData.rate;//融资占比
|
|
12141
12176
|
aryData.push(indexData);break;case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_BALANCE://买入信息-融资余额
|
|
12142
12177
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT://买入信息-买入额
|
|
@@ -12146,9 +12181,9 @@ var buyData=marginData.buy;if(!buyData)continue;if(!this.IsNumber(buyData.balanc
|
|
|
12146
12181
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_VOLUME://卖出信息-卖出量
|
|
12147
12182
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_REPAY://卖出信息-偿还量
|
|
12148
12183
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_SELL_NET://卖出信息-融券净卖出
|
|
12149
|
-
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
|
|
12184
|
+
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 _i106 in allData){var aryFixedData=this.SourceData.GetFittingData(allData[_i106].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
|
|
12150
12185
|
if(bindData.Period>0)//周期数据
|
|
12151
|
-
{var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data=bindData.GetValue();this.MarginData.set(allData[
|
|
12186
|
+
{var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data=bindData.GetValue();this.MarginData.set(allData[_i106].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)//变量 !!只支持默认的变量值
|
|
12152
12187
|
{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)//下载全市场数据
|
|
12153
12188
|
this.GetHKToSHSZMarketData(code,job);else this.GetHKToSHSZStockData(code,job);//下载个股数据
|
|
12154
12189
|
};this.GetHKToSHSZStockData=function(symbol,job){if(this.HKToSHSZData.has(symbol))return this.Execute.RunNextJob();var upperSymbol=symbol.toLowerCase();//代码小写
|
|
@@ -12161,9 +12196,9 @@ if(bindData.Period>0)//周期数据
|
|
|
12161
12196
|
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{//请求数据
|
|
12162
12197
|
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;//单位是百万
|
|
12163
12198
|
var SZValue=data.hk2sz[i]*1000000;//单位是百万
|
|
12164
|
-
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
|
|
12199
|
+
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 _i107 in allData){var aryFixedData=this.Data.GetFittingData(allData[_i107].Data);var bindData=new ChartData();bindData.Data=aryFixedData;bindData.Period=this.Period;//周期
|
|
12165
12200
|
if(bindData.Period>0)//周期数据
|
|
12166
|
-
{var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data2=bindData.GetValue();this.HKToSHSZData.set(allData[
|
|
12201
|
+
{var periodData=bindData.GetPeriodSingleData(bindData.Period);bindData.Data=periodData;}var _data2=bindData.GetValue();this.HKToSHSZData.set(allData[_i107].ID,_data2);}};this.RecvMulitMinuteHKToSHSZData=function(data,job)//多日分时图北上资金
|
|
12167
12202
|
{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;//日期加时间
|
|
12168
12203
|
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);}};//北上资金函数
|
|
12169
12204
|
this.GetHKToSHSZCacheData=function(code,node){//if (!this.HKToSHSZData.has(code)) this.Execute.ThrowUnexpectedNode(node,`不支持HK2SHSZ(${code})`);
|
|
@@ -12296,11 +12331,11 @@ this.Execute.ThrowUnexpectedNode(node,funcName+'() Error: '+indexInfo.Error);}va
|
|
|
12296
12331
|
if(!this.ReadIndexArgumentValue(args,indexInfo))this.Execute.ThrowUnexpectedNode(node,funcName+'() \u6307\u6807\u53C2\u6570\u9519\u8BEF: '+indexInfo.Error);var key=this.GenerateScriptIndexKey(indexInfo);if(!this.ScriptIndexOutData.has(key))return null;return this.ScriptIndexOutData.get(key);};this.JsonDataToHistoryData=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;var up=8,down=9,stop=10,unchanged=11;for(var i=0;i<list.length;++i){var item=new HistoryData();item.Date=list[i][date];item.Open=list[i][open];item.YClose=list[i][yclose];item.Close=list[i][close];item.High=list[i][high];item.Low=list[i][low];item.Vol=list[i][vol];//原始单位股
|
|
12297
12332
|
item.Amount=list[i][amount];//上涨 下跌家数
|
|
12298
12333
|
if(list[i].length>up)item.Up=list[i][up];if(list[i].length>down)item.Down=list[i][down];if(list[i].length>stop)item.Stop=list[i][stop];if(list[i].length>unchanged)item.Unchanged=list[i][unchanged];if(isNaN(item.Open)||item.Open<=0)continue;//停牌的数据剔除
|
|
12299
|
-
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
|
|
12300
|
-
|
|
12301
|
-
aryDayData.push(
|
|
12302
|
-
for(var
|
|
12303
|
-
{for(var
|
|
12334
|
+
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 _item14=new HistoryData();_item14.Date=list[i][date];_item14.Open=list[i][open];_item14.YClose=list[i][yclose];_item14.Close=list[i][close];_item14.High=list[i][high];_item14.Low=list[i][low];_item14.Vol=list[i][vol];//原始单位股
|
|
12335
|
+
_item14.Amount=list[i][amount];_item14.Time=list[i][time];// if (isNaN(item.Open) || item.Open<=0) continue; //停牌的数据剔除
|
|
12336
|
+
aryDayData.push(_item14);}// 无效数据处理
|
|
12337
|
+
for(var _i108=0;_i108<aryDayData.length;++_i108){var minData=aryDayData[_i108];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(_i108==0){if(minData.YClose>0){minData.Open=minData.YClose;minData.High=minData.YClose;minData.Low=minData.YClose;minData.Close=minData.YClose;}}else// 用前一个有效数据填充
|
|
12338
|
+
{for(var _j9=_i108-1;_j9>=0;--_j9){var minData2=aryDayData[_j9];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[]
|
|
12304
12339
|
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;//股
|
|
12305
12340
|
item.Amount=jsData.amount;if(i==0)//第1个数据 写死9:25
|
|
12306
12341
|
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[];
|
|
@@ -12318,23 +12353,23 @@ if(item.Open<=0)item.Open=null;if(item.Close<=0)item.Close=null;if(item.AvPrice<
|
|
|
12318
12353
|
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;};/*
|
|
12319
12354
|
SETCODE 市场类型
|
|
12320
12355
|
0:深圳 1:上海,47:中金所期货 28:郑州商品 29:大连商品 30:上海商品,27:香港指数 31:香港主板,48:香港创业板...
|
|
12321
|
-
*/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
|
|
12356
|
+
*/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 _i109 in this.Data.Data){var item=this.Data.Data[_i109];result[_i109]=item.Date-19000000;}return result;};this.YEAR=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];if(this.IsNumber(item.Date))result[_i110]=parseInt(item.Date/10000);else result[_i110]=null;}return result;};this.DAY=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%100);else result[_i111]=null;}return result;};this.MONTH=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%10000/100);else result[_i112]=null;}return result;};this.TIME=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i113=0;_i113<this.Data.Data.length;++_i113){var item=this.Data.Data[_i113];if(this.IsNumber(item.Time))result[_i113]=item.Time;else result[_i113]=0;}return result;};/*
|
|
12322
12357
|
取得该周期的时分秒,适用于日线以下周期.
|
|
12323
12358
|
用法: TIME2
|
|
12324
12359
|
函数返回有效值范围为(000000-235959)
|
|
12325
|
-
*/this.TIME2=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var
|
|
12326
|
-
this.WEEK=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var tempDate=new Date();for(var
|
|
12360
|
+
*/this.TIME2=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*100;else result[_i114]=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
|
|
12361
|
+
this.WEEK=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;var tempDate=new Date();for(var _i115 in this.Data.Data){var item=this.Data.Data[_i115];result[_i115]=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[_i115]=tempDate.getDay();}return result;};/*
|
|
12327
12362
|
取得该周期的日期离今天的天数.
|
|
12328
12363
|
用法: DAYSTOTODAY
|
|
12329
|
-
*/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
|
|
12364
|
+
*/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 _i116=0;_i116<this.Data.Data.length;++_i116){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;var beginDate=new Date(year,month-1,day);var diffDays=Math.ceil((endDate-beginDate)/(24*60*60*1000));result[_i116]=diffDays;}return result;};/*
|
|
12330
12365
|
取得该周是年内第几个周.
|
|
12331
12366
|
用法:WEEKOFYEAR
|
|
12332
|
-
*/this.WEEKOFYEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var
|
|
12367
|
+
*/this.WEEKOFYEAR=function(){var result=[];if(!this.Data||!this.Data.Data||!this.Data.Data.length)return result;for(var _i117 in this.Data.Data){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 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[_i117]=value;}return result;};this.GetYearWeek=function(endDate){var beginDate=new Date(endDate.getFullYear(),0,1);//星期从0-6,0代表星期天,6代表星期六
|
|
12333
12368
|
var endWeek=endDate.getDay();if(endWeek==0)endWeek=7;var beginWeek=beginDate.getDay();if(beginWeek==0)beginWeek=7;//计算两个日期的天数差
|
|
12334
|
-
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
|
|
12335
|
-
{if(this.Data.Data[
|
|
12369
|
+
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 _i118 in this.Data.Data)//查找日期对应的索引
|
|
12370
|
+
{if(this.Data.Data[_i118].Date==findDate){index=parseInt(_i118);break;}}if(index==null||index>=data.length)return null;return data[index];};//用法:结果从0到11,依次分别是1/5/15/30/60分钟,日/周/月,多分钟,多日,季,年
|
|
12336
12371
|
this.PERIOD=function(){//Period周期 0=日线 1=周线 2=月线 3=年线 9=季线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟
|
|
12337
|
-
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
|
|
12372
|
+
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 _i119 in this.Data.Data){result[_i119]=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;};/*
|
|
12338
12373
|
飞狐函数 SYSPARAM
|
|
12339
12374
|
SYSPARAM(1)画面上光标位置(K线序号)
|
|
12340
12375
|
SYSPARAM(2)主图可见K线最初位置
|
|
@@ -12343,7 +12378,7 @@ var PERIOD_MAP=[5,6,7,11,0,1,2,3,4,5,9];if(this.Period>=0&&this.Period<=PERIOD_M
|
|
|
12343
12378
|
SYSPARAM(5)主图可见K线最低价,注意:该函数仅K线图形分析且打开十字光标时有效,否则返回值不确定
|
|
12344
12379
|
SYSPARAM(6)画面上光标数值,注意:该函数仅K线图形分析且打开十字光标时有效,否则返回值不确定
|
|
12345
12380
|
*/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[];};}//是否有是有效的数字
|
|
12346
|
-
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
|
|
12381
|
+
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 _i120=1;_i120<=4;++_i120){switch(_i120){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天公布多个报告期数据 只取最新的一个公告期数据
|
|
12347
12382
|
{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线数据
|
|
12348
12383
|
JOB_DOWNLOAD_INDEX_DATA:2,//下载大盘的K线数据
|
|
12349
12384
|
JOB_DOWNLOAD_SYMBOL_LATEST_DATA:3,//最新的股票行情数据
|
|
@@ -12523,8 +12558,8 @@ this.ConstVarTable=new _map2.default([//个股数据
|
|
|
12523
12558
|
this.UpdateUICallback=null;//回调
|
|
12524
12559
|
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;//调试模式信息
|
|
12525
12560
|
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();//绘图变量表
|
|
12526
|
-
JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var
|
|
12527
|
-
{var
|
|
12561
|
+
JSConsole.Complier.Log('[JSExecute::Execute] Load Arguments',this.Arguments);for(var _i121 in this.Arguments)//预定义的变量
|
|
12562
|
+
{var _item15=this.Arguments[_i121];this.VarTable.set(_item15.Name,_item15.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://量比
|
|
12528
12563
|
return this.SymbolData.GetVolRateData(jobItem);case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_OTHER_SYMBOL_DATA://指定股票数据
|
|
12529
12564
|
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://买入信息-融资余额
|
|
12530
12565
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_MARGIN_BUY_AMOUNT://买入信息-买入额
|
|
@@ -12556,7 +12591,7 @@ case'INDEXA':case'INDEXC':case'INDEXH':case'INDEXH':case'INDEXO':case'INDEXV':ca
|
|
|
12556
12591
|
this.ReadVariable=function(name,node){if(this.ConstVarTable.has(name)){var data=this.ConstVarTable.get(name);if(data==null)//动态加载,用到再加载
|
|
12557
12592
|
{data=this.ReadSymbolData(name,node);this.ConstVarTable.set(name,data);}return data;}if(g_JSComplierResource.IsCustomVariant(name))return this.ReadCustomVariant(name,node);//读取自定义变量
|
|
12558
12593
|
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;};//单数据转成数组 个数和历史数据一致
|
|
12559
|
-
this.SingleDataToArrayData=function(value){var count=this.SymbolData.Data.Data.length;var result=[];for(var
|
|
12594
|
+
this.SingleDataToArrayData=function(value){var count=this.SymbolData.Data.Data.length;var result=[];for(var _i122=0;_i122<count;++_i122){result[_i122]=value;}return result;};this.RunAST=function(){if(!this.AST)this.ThrowError();if(!this.AST.Body)this.ThrowError();for(var _i123=0;_i123<this.AST.Body.length;++_i123){var _item16=this.AST.Body[_i123];this.RunASTNode(_item16,_i123);if(this.Interrupt&&this.Interrupt.Exit){JSConsole.Complier.Log('[JSExecute::RunAST] Interrupt',this.Interrupt);//中断退出
|
|
12560
12595
|
break;}}JSConsole.Complier.Log('[JSExecute::RunAST]',this.VarTable);return this.OutVarTable;};this.RunASTNode=function(item,lineID){this.VisitNode(item);var i=lineID;//输出变量
|
|
12561
12596
|
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))//绘图函数赋值
|
|
12562
12597
|
{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)//常量
|
|
@@ -12569,16 +12604,16 @@ var isNoneName=false;var isShowTitle=true;//显示在位置之上,对于DRAWTEXT
|
|
|
12569
12604
|
var isDrawAbove=false;var isDrawCenter=false;var isDrawBelow=false;//VALIGN0,VALIGN1,VALIGN2 设置文字垂直对齐方式(上中下)
|
|
12570
12605
|
//ALIGN0,ALIGN1,ALIGN2 设置文字水平对齐方式(左中右)
|
|
12571
12606
|
var drawAlign=-1,drawVAlign=-1;var fontSize=-1;var bgConfig=null;//背景设置
|
|
12572
|
-
var vLineConfig=null;var isFirstDraw=null;var xOffset=null,yOffset=null;var klineType=null;var lineDash=null;for(var
|
|
12607
|
+
var vLineConfig=null;var isFirstDraw=null;var xOffset=null,yOffset=null;var klineType=null;var lineDash=null;var font=null;for(var _j10=0;_j10<item.Expression.Expression.length;++_j10){var itemExpression=item.Expression.Expression[_j10];if(itemExpression.Type==Syntax.AssignmentExpression&&itemExpression.Operator==':'&&itemExpression.Left){if(_j10==0){_varName3=itemExpression.Left.Name;var _varValue=this.VarTable.get(_varName3);if(this.VarDrawTable.has(_varName3))//绘图函数赋值
|
|
12573
12608
|
{_draw3=this.VarDrawTable.get(_varName3);}else if(!Array.isArray(_varValue)){_varValue=this.SingleDataToArrayData(_varValue);this.VarTable.set(_varName3,_varValue);//把常量放到变量表里
|
|
12574
12609
|
}}else{}}else if(itemExpression.Type==Syntax.Identifier){var _value4=itemExpression.Name;if(_value4==='COLORSTICK')colorStick=true;else if(_value4==='POINTDOT')pointDot=true;else if(_value4==='CIRCLEDOT')circleDot=true;else if(_value4==='DOTLINE')isDotLine=true;else if(_value4=="UPDOWNDOT")upDownDot=true;else if(_value4==='LINESTICK')lineStick=true;else if(_value4==='STICK')stick=true;else if(_value4==='VOLSTICK')volStick=true;else if(_value4=="LINEAREA")lineArea=true;else if(_value4==="DRAWABOVE")isDrawAbove=true;else if(_value4==="DRAWCENTER")isDrawCenter=true;else if(_value4=="DRAWBELOW")isDrawBelow=true;else if(_value4=="STEPLINE")stepLine=true;else if(_value4=="SINGLELINE")isSingleLine=true;else if(_value4.indexOf('COLOR')==0)color=_value4;else if(_value4.indexOf("RGBX")==0&&_value4.length==10)color=_value4;//RGBX+“RRGGBB”
|
|
12575
12610
|
else if(_value4.indexOf('LINETHICK')==0)lineWidth=_value4;else if(_value4=="ALIGN0")drawAlign=0;else if(_value4=="ALIGN1")drawAlign=1;else if(_value4=="ALIGN2")drawAlign=2;else if(_value4=="VALIGN0")drawVAlign=0;else if(_value4=="VALIGN1")drawVAlign=1;else if(_value4=="VALIGN2")drawVAlign=2;else if(_value4.indexOf('NODRAW')==0)isShow=false;else if(_value4.indexOf('EXDATA')==0)isExData=true;//扩展数据, 不显示再图形里面
|
|
12576
12611
|
else if(_value4.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(_value4.indexOf("NOTEXT")==0||_value4.indexOf("NOTITLE")==0)isShowTitle=false;//标题不显示
|
|
12577
|
-
else if(_value4.indexOf("FONTSIZE")==0){var strFontSize=_value4.replace("FONTSIZE","");fontSize=parseInt(strFontSize);}else{if(
|
|
12612
|
+
else if(_value4.indexOf("FONTSIZE")==0){var strFontSize=_value4.replace("FONTSIZE","");fontSize=parseInt(strFontSize);}else{if(_j10==0){_varName3=itemExpression.Name;var _varValue2=this.ReadVariable(_varName3,itemExpression);if(!Array.isArray(_varValue2))_varValue2=this.SingleDataToArrayData(_varValue2);_varName3="__temp_si_"+i+"__";isNoneName=true;this.VarTable.set(_varName3,_varValue2);//放到变量表里
|
|
12578
12613
|
}}}else if(itemExpression.Type==Syntax.Literal)//常量
|
|
12579
|
-
{if(
|
|
12580
|
-
}}else if(itemExpression.Type==Syntax.CallExpression){if(
|
|
12581
|
-
{if(
|
|
12614
|
+
{if(_j10==0){var aryValue=this.SingleDataToArrayData(itemExpression.Value);_varName3=itemExpression.Value.toString();this.VarTable.set(_varName3,aryValue);//把常量放到变量表里
|
|
12615
|
+
}}else if(itemExpression.Type==Syntax.CallExpression){if(_j10==0){if(this.Draw.IsDrawFunction(itemExpression.Callee.Name)){_draw3=itemExpression.Draw;_draw3.Name=itemExpression.Callee.Name;}else{var _varValue3=itemExpression.Out;_varName3='__temp_sc_'+itemExpression.Callee.Name+'_'+i+'__';isNoneName=true;this.VarTable.set(_varName3,_varValue3);}}else{if(itemExpression.Callee.Name=="RGB"||itemExpression.Callee.Name=="RGBA"){color=itemExpression.Out;}else if(itemExpression.Callee.Name=="UPCOLOR"){upColor=itemExpression.Out;}else if(itemExpression.Callee.Name=="DOWNCOLOR"){downColor=itemExpression.Out;}else if(itemExpression.Callee.Name=="CSSFONT"){font=itemExpression.Out;}else if(itemExpression.Callee.Name=="STICKTYPE"){stickType=itemExpression.Out;}else if(itemExpression.Callee.Name=="XMOVE"){xOffset=itemExpression.Out;}else if(itemExpression.Callee.Name=="YMOVE"){yOffset=itemExpression.Out;}else if(itemExpression.Callee.Name=="LINEDASH"){if(IFrameSplitOperator.IsNonEmptyArray(itemExpression.Out))lineDash=itemExpression.Out.slice();}else if(itemExpression.Callee.Name=="FIRSTDRAW"){if(itemExpression.Out===0)isFirstDraw=false;else if(itemExpression.Out===1)isFirstDraw=true;}else if(itemExpression.Callee.Name=="SOUND"){var event=this.GetSoundEvent();if(event){}_varName3=null;}else if(itemExpression.Callee.Name=="ICON"){var drawCond=this.VarTable.get(_varName3);if(drawCond){_draw3=this.GetOutIconData(drawCond,itemExpression.Draw);if(_draw3)_draw3.Name=itemExpression.Callee.Name;}_varName3=null;}else if(itemExpression.Callee.Name=="BACKGROUND"){bgConfig=itemExpression.Draw;_varName3=null;}else if(itemExpression.Callee.Name=="CKLINE"){vLineConfig=itemExpression.Draw;_varName3=null;}else if(itemExpression.Callee.Name=="KLINETYPE"){klineType=itemExpression.Out;}}}else if(itemExpression.Type==Syntax.BinaryExpression){if(_j10==0){_varName3="__temp_sb_"+i+"__";var _aryValue=itemExpression.Out;isNoneName=true;this.VarTable.set(_varName3,_aryValue);}}else if(itemExpression.Type==Syntax.UnaryExpression){if(_j10==0){_varName3="__temp_su_"+i+"__";var varInfo={};if(this.ReadUnaryExpression(itemExpression,varInfo)){isNoneName=true;this.VarTable.set(_varName3,varInfo.OutVar);}}}else if(itemExpression.Type==Syntax.MemberExpression)//"MA.MA2"(5,12,29), COLORRED;
|
|
12616
|
+
{if(_j10==0){var outVar=this.ReadMemberVariable(itemExpression);if(outVar){if(!Array.isArray(outVar))varValue=this.SingleDataToArrayData(outVar);isNoneName=true;_varName3="__temp_di_"+i+"__";this.VarTable.set(_varName3,outVar);//把常量放到变量表里
|
|
12582
12617
|
}}}}if(pointDot&&_varName3)//圆点
|
|
12583
12618
|
{var _outVar7=this.VarTable.get(_varName3);if(!Array.isArray(_outVar7))_outVar7=this.SingleDataToArrayData(_outVar7);var _value5={Name:_varName3,Data:_outVar7,Radius:g_JSChartResource.POINTDOT.Radius,Type:3};if(color)_value5.Color=color;if(lineWidth)_value5.LineWidth=lineWidth;this.OutVarTable.push(_value5);}else if(circleDot&&_varName3)//圆点
|
|
12584
12619
|
{var _outVar8=this.VarTable.get(_varName3);if(!Array.isArray(_outVar8))_outVar8=this.SingleDataToArrayData(_outVar8);var _value6={Name:_varName3,Data:_outVar8,Radius:g_JSChartResource.CIRCLEDOT.Radius,Type:3};if(color)_value6.Color=color;if(lineWidth)_value6.LineWidth=lineWidth;this.OutVarTable.push(_value6);}else if(upDownDot&&_varName3)//彩色点
|
|
@@ -12588,16 +12623,16 @@ else if(_value4.indexOf("FONTSIZE")==0){var strFontSize=_value4.replace("FONTSIZ
|
|
|
12588
12623
|
{var _outVar12=this.VarTable.get(_varName3);var _value10={Name:_varName3,Data:_outVar12,Type:6};if(color)_value10.Color=color;if(upColor)_value10.UpColor=upColor;if(downColor)_value10.DownColor=downColor;if(lineWidth)_value10.LineWidth=lineWidth;if(IFrameSplitOperator.IsNumber(stickType))_value10.StickType=stickType;this.OutVarTable.push(_value10);}else if(lineArea&&_varName3)//LINEAREA 面积
|
|
12589
12624
|
{var _outVar13=this.VarTable.get(_varName3);var _value11={Name:_varName3,Data:_outVar13,Type:9};if(color)_value11.Color=color;if(upColor)_value11.UpColor=upColor;if(downColor)_value11.DownColor=downColor;if(lineWidth)_value11.LineWidth=lineWidth;this.OutVarTable.push(_value11);}else if(colorStick&&_varName3)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
|
|
12590
12625
|
{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)//画图函数
|
|
12591
|
-
{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();//执行脚本
|
|
12626
|
+
{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(font)outVar.Font=font;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();//执行脚本
|
|
12592
12627
|
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模式
|
|
12593
|
-
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
|
|
12628
|
+
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 _i124 in node.Expression){var _item17=node.Expression[_i124];this.VisitNode(_item17);}};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);//周期
|
|
12594
12629
|
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;};//函数调用
|
|
12595
12630
|
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个条件参数
|
|
12596
12631
|
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表达式.
|
|
12597
12632
|
var bResult=this.Algorithm.IFC(args[0]);var item=bResult?node.Arguments[1]:node.Arguments[2];var value;if(item.Type==Syntax.BinaryExpression||item.Type==Syntax.LogicalExpression)value=this.VisitBinaryExpression(item);else if(item.Type==Syntax.CallExpression)value=this.VisitCallExpression(item);else value=this.GetNodeValue(item);node.Out=value;if(item.Draw)node.Draw=item.Draw;return node.Out;}//JSConsole.Complier.Log('[JSExecute::VisitCallExpression]' , funcName, '(', args.toString() ,')');
|
|
12598
12633
|
if(g_JSComplierResource.IsCustomFunction(funcName)){var data=this.Algorithm.CallCustomFunction(funcName,args,this.SymbolData,node);node.Out=[];node.Draw=null;if(data){if(data.Out)node.Out=data.Out;if(data.Draw)node.Draw=data.Draw;}return node.Out;}if(g_JSComplierResource.IsCustomDataFunction(funcName)){var functionInfo=g_JSComplierResource.CustomDataFunction.Data.get(funcName);node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:functionInfo.ArgCount,Node:node});node.Draw=null;return node.Out;}switch(funcName){case'DYNAINFO'://行情最新数据
|
|
12599
12634
|
node.Out=this.SymbolData.GetLatestCacheData(args[0]);break;case'STICKLINE':node.Draw=this.Draw.STICKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT':node.Draw=this.Draw.DRAWTEXT(args[0],args[1],args[2]);node.Out=[];break;case'DRAWTEXT_FIX':node.Draw=this.Draw.DRAWTEXT_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWFLAGTEXT":node.Draw=this.Draw.DRAWFLAGTEXT(args[0],args[1],args[2]);node.Out=[];break;case'SUPERDRAWTEXT':node.Draw=this.Draw.SUPERDRAWTEXT(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWICON':node.Draw=this.Draw.DRAWICON(args[0],args[1],args[2]);node.Out=[];break;case"ICON":node.Draw=this.Draw.ICON(args[0],args[1]);node.Out=[];break;case"TIPICON":node.Draw=this.Draw.TIPICON(args[0],args[1],args[2],args[3]);node.Out=[];break;case"BACKGROUND":node.Draw=this.Draw.BACKGROUND(args[0],args[1],args[2],args[3],args[4],args[5]);node.Out=[];break;case"CKLINE":node.Draw=this.Draw.CKLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWLINE':node.Draw=this.Draw.DRAWLINE(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData;break;case'DRAWBAND':node.Draw=this.Draw.DRAWBAND(args[0],args[1],args[2],args[3]);node.Out=[];break;case"FILLRGN":if(args.length>=4)node.Draw=this.Draw.FILLRGN2(args);else node.Draw=this.Draw.FILLRGN(args[0],args[1],args[2]);node.Out=[];break;case"FLOATRGN":node.Draw=this.Draw.FLOATRGN(args);node.Out=[];break;case"FILLTOPRGN":node.Draw=this.Draw.FILLBGRGN(1,args);node.Out=[];break;case"FILLBOTTOMRGN":node.Draw=this.Draw.FILLBGRGN(0,args);node.Out=[];break;case"FILLVERTICALRGN":node.Draw=this.Draw.FILLVERTICALRGN(args);node.Out=[];break;case'DRAWKLINE':case"DRAWKLINE1":node.Draw=this.Draw.DRAWKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWKLINE_IF':node.Draw=this.Draw.DRAWKLINE_IF(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"KLINETYPE"://K线类型 和DRAWKLINE连用
|
|
12600
|
-
node.Out=this.Draw.KLINETYPE(args[0]);break;case"DRAWOVERLAYKLINE":node.Draw=this.Draw.DRAWOVERLAYKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWCOLORKLINE":node.Draw=this.Draw.DRAWCOLORKLINE(args[0],args[1],args[2]);node.Out=[];break;case'PLOYLINE':case'POLYLINE':node.Draw=this.Draw.POLYLINE(args[0],args[1]);node.Out=node.Draw.DrawData;break;case'DRAWNUMBER':node.Draw=this.Draw.DRAWNUMBER(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Value;break;case"DRAWNUMBER_FIX":node.Draw=this.Draw.DRAWNUMBER_FIX(args[0],args[1],args[2],args[3],args[4]);node.Out=node.Draw.DrawData.Value;break;case"DRAWCHANNEL":node.Draw=this.Draw.DRAWCHANNEL(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'RGB':node.Out=this.Draw.RGB(args[0],args[1],args[2]);break;case"RGBA":node.Out=this.Draw.RGBA(args[0],args[1],args[2],args[3]);break;case"UPCOLOR":node.Out=this.Draw.UPCOLOR(args[0]);break;case"DOWNCOLOR":node.Out=this.Draw.DOWNCOLOR(args[0]);break;case"STICKTYPE"://柱子类型
|
|
12635
|
+
node.Out=this.Draw.KLINETYPE(args[0]);break;case"DRAWOVERLAYKLINE":node.Draw=this.Draw.DRAWOVERLAYKLINE(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWCOLORKLINE":node.Draw=this.Draw.DRAWCOLORKLINE(args[0],args[1],args[2]);node.Out=[];break;case'PLOYLINE':case'POLYLINE':node.Draw=this.Draw.POLYLINE(args[0],args[1]);node.Out=node.Draw.DrawData;break;case'DRAWNUMBER':node.Draw=this.Draw.DRAWNUMBER(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Value;break;case"DRAWNUMBER_FIX":node.Draw=this.Draw.DRAWNUMBER_FIX(args[0],args[1],args[2],args[3],args[4],args[5]);node.Out=node.Draw.DrawData.Value;break;case"DRAWCHANNEL":node.Draw=this.Draw.DRAWCHANNEL(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'RGB':node.Out=this.Draw.RGB(args[0],args[1],args[2]);break;case"RGBA":node.Out=this.Draw.RGBA(args[0],args[1],args[2],args[3]);break;case"UPCOLOR":node.Out=this.Draw.UPCOLOR(args[0]);break;case"DOWNCOLOR":node.Out=this.Draw.DOWNCOLOR(args[0]);break;case"CSSFONT":node.Out=this.Draw.CSSFONT(args[0]);break;case"STICKTYPE"://柱子类型
|
|
12601
12636
|
node.Out=this.Draw.STICKTYPE(args[0]);break;case"XMOVE":node.Out=this.Draw.XMOVE(args[0]);break;case"YMOVE":node.Out=this.Draw.YMOVE(args[0]);break;case"LINEDASH":node.Out=this.Draw.LINEDASH(args);break;case"FIRSTDRAW":node.Out=this.Draw.FIRSTDRAW(args[0]);break;case'PARTLINE':node.Draw=this.Draw.PARTLINE(args);node.Out=[];break;case'DRAWGBK':node.Draw=this.Draw.DRAWGBK(args[0],args[1],args[2],args[3]);node.Out=[];break;case'DRAWGBK2':node.Draw=this.Draw.DRAWGBK2(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWGBK_DIV":node.Draw=this.Draw.DRAWGBK_DIV(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case'DRAWTEXT_LINE':node.Draw=this.Draw.DRAWTEXT_LINE(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);node.Out=[];break;case'DRAWRECTREL':node.Draw=this.Draw.DRAWRECTREL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"DRAWTEXTREL":node.Draw=this.Draw.DRAWTEXTREL(args[0],args[1],args[2]);node.Out=[];break;case"DRAWTEXTABS":node.Draw=this.Draw.DRAWTEXTABS(args[0],args[1],args[2]);node.Out=[];break;case"DRAWOVERLAYLINE":node.Draw=this.Draw.DRAWOVERLAYLINE(args[0],args[1],args[2]);node.Out=node.Draw.DrawData.Data;break;case"DRAWSL":node.Draw=this.Draw.DRAWSL(args[0],args[1],args[2],args[3],args[4]);node.Out=[];break;case"VERTLINE":node.Draw=this.Draw.VERTLINE(args[0],args[1]);node.Out=node.Draw.DrawData.Data;break;case"HORLINE":node.Draw=this.Draw.HORLINE(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;case"DRAWLASTBARICON":node.Draw=this.Draw.DRAWLASTBARICON(args[0],args[1]);node.Out=[];break;case"DRAWLASTBARNUMBER":node.Draw=this.Draw.DRAWLASTBARNUMBER(args[0],args[1],args[2],args[3]);node.Out=[];break;case"DRAWLASTBARTEXT":node.Draw=this.Draw.DRAWLASTBARTEXT(args[0],args[1]);node.Out=[];break;case'CODELIKE':node.Out=this.SymbolData.CODELIKE(args[0]);break;case'NAMELIKE':case"NAMEINCLUDE":node.Out=this.SymbolData.NAMELIKE(args[1]);break;case'REFDATE':node.Out=this.SymbolData.REFDATE(args[0],args[1]);break;case'FINANCE':node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:1,Node:node});break;case"FINONE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"GPJYVALUE":case"SCJYVALUE":case"BKJYVALUE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:3,Node:node});break;case"GPJYONE":case"SCJYONE":case"BKJYONE":node.Out=this.SymbolData.GetStockCacheData({FunctionName:funcName,Args:args,ArgCount:4,Node:node});break;case"MARGIN":node.Out=this.SymbolData.GetMarginCacheData(args[0],node);break;case"HK2SHSZ":node.Out=this.SymbolData.GetHKToSHSZCacheData(args[0],node);break;case"NEWS":node.Out=this.SymbolData.GetNewsAnalysisCacheData(args[0],node);break;case'UPCOUNT':case'DOWNCOUNT':node.Out=this.SymbolData.GetIndexIncreaseCacheData(funcName,args[0],node);break;case'SF':node.Out=this.SymbolData.GetSectionFinanceCacheData(args[0],args[1],args[2],node);break;case'LOADAPIDATA':node.Out=this.SymbolData.GetCustomApiData(args);break;case"STKINDI":case"CALCSTOCKINDEX":node.Out=this.SymbolData.GetScriptIndexOutData(args,node,funcName);break;case"SOUND":node.Draw=this.Draw.SOUND(args[0]);node.Out=[];break;case"PLAYSOUND":node.Draw=this.Draw.PLAYSOUND(args[0],args[1]);node.Out=[];break;case'CLOSE':case'C':case'VOL':case'V':case'OPEN':case'O':case'HIGH':case'H':case'LOW':case'L':case'AMOUNT':case'AMO':node.Out=this.SymbolData.GetOtherSymolCacheData({FunctionName:funcName,Args:args});break;case"INBLOCK":node.Out=this.SymbolData.IsInBlock(args[0],node);break;case'COVER_C':case'COVER_O':case'COVER_H':case'COVER_L':case'COVER_A':case'COVER_V':if(args.length==2)return this.SymbolData.GetSymbolPeriodCacheData2(JSComplierHelper.GetConvertValueName(funcName),args[0],args[1]);return this.SymbolData.GetSymbolPeriodCacheData(JSComplierHelper.GetConvertValueName(funcName),args[0]);case"SYSPARAM":node.Out=this.SymbolData.SysParam(args[0],this);break;case"TESTSKIP":var bExit=this.Algorithm.TESTSKIP(args[0],node);node.Out=null;if(bExit){this.Interrupt.Exit=true;if(node&&node.Marker){var marker=node.Marker;this.Interrupt.Line=marker.Line;this.Interrupt.Index=marker.Index;this.Interrupt.Column=marker.Column;}}break;//交易函数
|
|
12602
12637
|
case"BUY":node.Draw=this.Draw.BUY(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;case"SELL":node.Draw=this.Draw.SELL(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;case"SELLSHORT":node.Draw=this.Draw.SELLSHORT(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;case"BUYSHORT":node.Draw=this.Draw.BUYSHORT(args[0],args[1],args[2],args[3]);node.Out=node.Draw.DrawData.Data;break;//表格函数
|
|
12603
12638
|
case"TABLE_CELL":node.Out=this.Draw.TABLE_CELL(args[0],args[1],args[2],args[3]);break;case"TABLE_ROW":node.Out=this.Draw.TABLE_ROW(args);break;case"DRAWTABLE":node.Draw=this.Draw.DRAWTABLE(args);node.Out=[];break;//饼图
|
|
@@ -12631,8 +12666,8 @@ this.ConstVarTable=new _map2.default([//个股数据
|
|
|
12631
12666
|
['HYBLOCK',"所属行业"],//所属行业板块
|
|
12632
12667
|
['DYBLOCK',"所属地域"],//所属地域板块
|
|
12633
12668
|
['GNBLOCK',"所属概念"],//所属概念
|
|
12634
|
-
["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
|
|
12635
|
-
{var
|
|
12669
|
+
["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 _i125 in this.Arguments)//预定义的变量
|
|
12670
|
+
{var _item18=this.Arguments[_i125];this.VarTable.set(_item18.Name,_item18.Value);}var data=this.RunAST();//执行脚本
|
|
12636
12671
|
JSConsole.Complier.Log('[JSExplainer.Run] explain finish',data);if(this.UpdateUICallback)//回调发送结果, 可以支持异步
|
|
12637
12672
|
{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}`);
|
|
12638
12673
|
var item=this.AST.Body[i];this.VisitNode(item);//输出变量
|
|
@@ -12643,20 +12678,20 @@ if(item.Type==Syntax.ExpressionStatement&&item.Expression){if(item.Expression.Ty
|
|
|
12643
12678
|
{var varName="__temp_l_"+i+"__";var argument=item.Expression.Argument;var _outVar25=null;if(argument.Type==Syntax.Literal){_outVar25=argument.Value;}else if(argument.Type==Syntax.Identifier){var _varName7=argument.Name;_outVar25=this.ReadVariable(_varName7,item.Expression);}else if(argument.Type==Syntax.BinaryExpression){_outVar25=argument.Out;}if(item.Expression.Operator=='-'){_outVar25='-'+_outVar25;}this.OutVarTable.push({Name:varName,Data:'\u8F93\u51FA: '+_outVar25,Type:0,NoneName:true});}else if(item.Expression.Type==Syntax.SequenceExpression){var _varName8=void 0;var _drawName=void 0;var draw=void 0;var color=void 0;var lineWidth=void 0;var colorStick=false;var pointDot=false;var circleDot=false;var lineStick=false;var stick=false;var volStick=false;var isShow=true;var isExData=false;var isDotLine=false;var isOverlayLine=false;//叠加线
|
|
12644
12679
|
var isNoneName=false;var fontSize=-1;var drawAlign=-1,drawVAlign=-1;//显示在位置之上,对于DRAWTEXT和DRAWNUMBER等函数有用,放在语句的最后面(不能与LINETHICK等函数共用),比如:
|
|
12645
12680
|
//DRAWNUMBER(CLOSE>OPEN,HIGH,CLOSE),DRAWABOVE;
|
|
12646
|
-
var isDrawAbove=false;for(var
|
|
12681
|
+
var isDrawAbove=false;for(var _j11 in item.Expression.Expression){var itemExpression=item.Expression.Expression[_j11];if(itemExpression.Type==Syntax.AssignmentExpression&&itemExpression.Operator==':'&&itemExpression.Left){_varName8=itemExpression.Left.Name;var _varValue4=this.VarTable.get(_varName8);this.VarTable.set(_varName8,this.ConvertToShortValue(_varValue4));//把常量放到变量表里
|
|
12647
12682
|
}else if(itemExpression.Type==Syntax.Identifier){var _value16=itemExpression.Name;if(_value16==='COLORSTICK')colorStick=true;else if(_value16==='POINTDOT')pointDot=true;else if(_value16==='CIRCLEDOT')circleDot=true;else if(_value16==='DOTLINE')isDotLine=true;else if(_value16==='LINESTICK')lineStick=true;else if(_value16==='STICK')stick=true;else if(_value16==='VOLSTICK')volStick=true;else if(_value16==="DRAWABOVE")isDrawAbove=true;else if(_value16.indexOf('COLOR')==0)color=_value16;else if(_value16.indexOf('LINETHICK')==0)lineWidth=_value16;else if(_value16=="ALIGN0")drawAlign=0;else if(_value16=="ALIGN1")drawAlign=1;else if(_value16=="ALIGN2")drawAlign=2;else if(_value16=="VALIGN0")drawVAlign=0;else if(_value16=="VALIGN1")drawVAlign=1;else if(_value16=="VALIGN2")drawVAlign=2;else if(_value16.indexOf('NODRAW')==0)isShow=false;else if(_value16.indexOf('EXDATA')==0)isExData=true;//扩展数据, 不显示再图形里面
|
|
12648
12683
|
else if(_value16.indexOf('LINEOVERLAY')==0)isOverlayLine=true;else if(_value16.indexOf("FONTSIZE")==0){var strFontSize=_value16.replace("FONTSIZE","");fontSize=parseInt(strFontSize);}else{_varName8=itemExpression.Name;var _varValue5=this.ReadVariable(_varName8,itemExpression);_varName8="__temp_si_"+i+"__";isNoneName=true;this.VarTable.set(_varName8,this.ConvertToShortValue(_varValue5));//放到变量表里
|
|
12649
12684
|
}}else if(itemExpression.Type==Syntax.Literal)//常量
|
|
12650
12685
|
{var aryValue=itemExpression.Value;_varName8=itemExpression.Value.toString();isNoneName=true;this.VarTable.set(_varName8,aryValue);//把常量放到变量表里
|
|
12651
|
-
}else if(itemExpression.Type==Syntax.CallExpression){if(
|
|
12686
|
+
}else if(itemExpression.Type==Syntax.CallExpression){if(_j11==0){if(this.IsDrawFunction(itemExpression.Callee.Name)){draw=itemExpression.Out;_drawName=itemExpression.Callee.Name;}else{var _varValue6=itemExpression.Out;_varName8='__temp_sc_'+itemExpression.Callee.Name+'_'+i+'__';isNoneName=true;this.VarTable.set(_varName8,_varValue6);}}}else if(itemExpression.Type==Syntax.BinaryExpression){_varName8="__temp_sb_"+i+"__";var _aryValue2=itemExpression.Out;isNoneName=true;this.VarTable.set(_varName8,_aryValue2);}else if(itemExpression.Type==Syntax.UnaryExpression){_varName8="__temp_sb_"+i+"__";var argument=itemExpression.Argument;var _aryValue3=null;if(argument.Type==Syntax.Literal){_aryValue3=argument.Value;}else if(argument.Type==Syntax.Identifier){var _varName9=argument.Name;_aryValue3=this.ReadVariable(_varName9,item.Expression);}else if(argument.Type==Syntax.BinaryExpression){_aryValue3=argument.Out;}if(itemExpression.Operator=='-'){_aryValue3='-'+_aryValue3;}isNoneName=true;this.VarTable.set(_varName8,_aryValue3);}}var outValue;if(draw)outValue='\u8F93\u51FA: '+draw;else if(isNoneName)outValue='\u8F93\u51FA: '+this.VarTable.get(_varName8);else outValue='\u8F93\u51FA'+_varName8+': '+this.VarTable.get(_varName8);if(color)outValue+=',\u989C\u8272'+this.GetColorExplain(color);if(lineWidth)outValue+=',\u7EBF\u6BB5\u7C97\u7EC6'+this.GetLineWidthExplain(lineWidth);if(isShow==false)outValue+=",不显示";if(isDotLine==true)outValue+=",画虚线";if(isDrawAbove==true)outValue+=',显示在位置之上';if(pointDot&&_varName8)//圆点
|
|
12652
12687
|
{outValue+=",画小圆点线";var _value17={Name:_varName8,Draw:outValue,Radius:g_JSChartResource.POINTDOT.Radius,Type:3};this.OutVarTable.push(_value17);}else if(circleDot&&_varName8)//圆点
|
|
12653
12688
|
{outValue+=",画小圆圈线";var _value18={Name:_varName8,Draw:outValue,Radius:g_JSChartResource.CIRCLEDOT.Radius,Type:3};this.OutVarTable.push(_value18);}else if(lineStick&&_varName8)//LINESTICK 同时画出柱状线和指标线
|
|
12654
12689
|
{outValue+=",画出柱状线和指标线";var _value19={Name:_varName8,Draw:outValue,Type:4};this.OutVarTable.push(_value19);}else if(stick&&_varName8)//STICK 画柱状线
|
|
12655
12690
|
{outValue+=",画柱状线";var _value20={Name:_varName8,Draw:outValue,Type:5};this.OutVarTable.push(_value20);}else if(volStick&&_varName8)//VOLSTICK 画彩色柱状线
|
|
12656
12691
|
{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)//画图函数
|
|
12657
12692
|
{var outVar={Name:_drawName,Draw:outValue,Type:1};this.OutVarTable.push(outVar);}else if(colorStick&&_varName8)//CYW: SUM(VAR4,10)/10000, COLORSTICK; 画上下柱子
|
|
12658
|
-
{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
|
|
12659
|
-
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';}}],//字符串函数
|
|
12693
|
+
{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 _i126 in node.Expression){var _item19=node.Expression[_i126];this.VisitNode(_item19);}};this.VisitUnaryExpression=function(node){if(node.Operator=='-'){var _value25=this.GetNodeValueEx(node.Argument);return'-'+_value25;}return node.Argument.Value;};//函数调用
|
|
12694
|
+
this.VisitCallExpression=function(node){var funcName=node.Callee.Name;var args=[];for(var _i127 in node.Arguments){var _item20=node.Arguments[_i127];var _value26=void 0;if(_item20.Type==Syntax.BinaryExpression||_item20.Type==Syntax.LogicalExpression)_value26=this.VisitBinaryExpression(_item20);else if(_item20.Type==Syntax.CallExpression)_value26=this.VisitCallExpression(_item20);else _value26=this.GetNodeValue(_item20);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';}}],//字符串函数
|
|
12660
12695
|
["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';}}],["MAX6",{Name:"MAX6",Param:{Dynamic:true},ToString:function ToString(args){return"较大值";}}],["MIN6",{Name:"MIN6",Param:{Dynamic:true},ToString:function ToString(args){return"较小值";}}]]);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)//动态参数
|
|
12661
12696
|
{}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);//绘图函数
|
|
12662
12697
|
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 自定义色
|
|
@@ -12802,9 +12837,10 @@ this.CreateDrawNumber=function(hqChart,windowIndex,varItem,id){var chartText=new
|
|
|
12802
12837
|
if(varItem.Draw.FixedPosition==="TOP")chartText.FixedPosition=1;else if(varItem.Draw.FixedPosition==="BOTTOM")chartText.FixedPosition=2;if(varItem.DrawVAlign>=0){if(varItem.DrawVAlign==0)chartText.TextBaseline='top';else if(varItem.DrawVAlign==1)chartText.TextBaseline='middle';else if(varItem.DrawVAlign==2)chartText.TextBaseline='bottom';}if(varItem.DrawAlign>=0){if(varItem.DrawAlign==0)chartText.TextAlign="left";else if(varItem.DrawAlign==1)chartText.TextAlign="center";else if(varItem.DrawAlign==2)chartText.TextAlign='right';}if(varItem.DrawFontSize>0)chartText.FixedFontSize=varItem.DrawFontSize;if(varItem.Background)chartText.TextBG=varItem.Background;if(varItem.VerticalLine)chartText.VerticalLine=varItem.VerticalLine;var titleIndex=windowIndex+1;//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
|
|
12803
12838
|
hqChart.ChartPaint.push(chartText);};//DRAWTEXT
|
|
12804
12839
|
this.CreateDrawTextV2=function(hqChart,windowIndex,varItem,id){var chartText=new ChartDrawText();chartText.Canvas=hqChart.Canvas;chartText.Name=varItem.Name;chartText.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chartText.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chartText.ReloadResource();if(varItem.Color)chartText.Color=this.GetColor(varItem.Color);else chartText.Color=this.GetDefaultColor(id);if(varItem.IsDrawCenter===true)chartText.TextAlign='center';if(varItem.IsDrawAbove===true)chartText.TextBaseline='bottom';if(varItem.IsDrawBelow===true)chartText.TextBaseline='top';if(varItem.Draw.DrawData)chartText.Data.Data=varItem.Draw.DrawData;chartText.Text=varItem.Draw.Text;if(varItem.Draw.Direction>0)chartText.Direction=varItem.Draw.Direction;if(varItem.Draw.YOffset>0)chartText.YOffset=varItem.Draw.YOffset;if(varItem.Draw.TextAlign)chartText.TextAlign=varItem.Draw.TextAlign;//指定输出位置
|
|
12805
|
-
if(varItem.Draw.FixedPosition==="TOP")chartText.FixedPosition=1;else if(varItem.Draw.FixedPosition==="BOTTOM")chartText.FixedPosition=2;if(varItem.DrawVAlign>=0){if(varItem.DrawVAlign==0)chartText.TextBaseline='top';else if(varItem.DrawVAlign==1)chartText.TextBaseline='middle';else if(varItem.DrawVAlign==2)chartText.TextBaseline='bottom';}if(varItem.DrawAlign>=0){if(varItem.DrawAlign==0)chartText.TextAlign="left";else if(varItem.DrawAlign==1)chartText.TextAlign="center";else if(varItem.DrawAlign==2)chartText.TextAlign='right';}if(varItem.DrawFontSize>0)chartText.FixedFontSize=varItem.DrawFontSize;if(varItem.Background)chartText.TextBG=varItem.Background;if(varItem.VerticalLine)chartText.VerticalLine=varItem.VerticalLine;if(IFrameSplitOperator.IsNumber(varItem.YOffset))chartText.ShowOffset.Y=varItem.YOffset;if(IFrameSplitOperator.IsNumber(varItem.XOffset))chartText.ShowOffset.X=varItem.XOffset;var titleIndex=windowIndex+1;//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
|
|
12840
|
+
if(varItem.Draw.FixedPosition==="TOP")chartText.FixedPosition=1;else if(varItem.Draw.FixedPosition==="BOTTOM")chartText.FixedPosition=2;if(varItem.DrawVAlign>=0){if(varItem.DrawVAlign==0)chartText.TextBaseline='top';else if(varItem.DrawVAlign==1)chartText.TextBaseline='middle';else if(varItem.DrawVAlign==2)chartText.TextBaseline='bottom';}if(varItem.DrawAlign>=0){if(varItem.DrawAlign==0)chartText.TextAlign="left";else if(varItem.DrawAlign==1)chartText.TextAlign="center";else if(varItem.DrawAlign==2)chartText.TextAlign='right';}if(varItem.DrawFontSize>0)chartText.FixedFontSize=varItem.DrawFontSize;if(varItem.Font)chartText.Font=varItem.Font;if(varItem.Background)chartText.TextBG=varItem.Background;if(varItem.VerticalLine)chartText.VerticalLine=varItem.VerticalLine;if(IFrameSplitOperator.IsNumber(varItem.YOffset))chartText.ShowOffset.Y=varItem.YOffset;if(IFrameSplitOperator.IsNumber(varItem.XOffset))chartText.ShowOffset.X=varItem.XOffset;var titleIndex=windowIndex+1;//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
|
|
12806
12841
|
this.SetChartIndexName(chartText);hqChart.ChartPaint.push(chartText);};this.CreateDrawFlagText=function(hqChart,windowIndex,varItem,id){var chart=new ChartDrawFlagText();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(chart.ReloadResource)chart.ReloadResource();chart.Data=hqChart.GetKData();if(varItem.Draw.DrawData)chart.AryData=varItem.Draw.DrawData;chart.BuildCacheData();hqChart.ChartPaint.push(chart);};//COLORSTICK
|
|
12807
|
-
this.CreateMACD=function(hqChart,windowIndex,varItem,id){var chartMACD=new ChartMACD();chartMACD.Canvas=hqChart.Canvas;chartMACD.Identify=this.Guid;chartMACD.Name=varItem.Name;chartMACD.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chartMACD.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chartMACD.LineWidth=width;}var titleIndex=windowIndex+1;chartMACD.Data.Data=varItem.Data;var clrTitle=this.GetDefaultColor(id);if(varItem.Color)clrTitle=this.GetColor(varItem.Color);if(varItem.UpColor)chartMACD.UpColor=varItem.UpColor;if(varItem.DownColor)chartMACD.DownColor=varItem.DownColor;this.ReloadChartResource(hqChart,windowIndex,chartMACD);hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(chartMACD.Data,varItem.Name,clrTitle);this.SetChartIndexName(chartMACD);hqChart.ChartPaint.push(chartMACD);};this.CreatePointDot=function(hqChart,windowIndex,varItem,id,hisData){var pointDot=new ChartPointDot();pointDot.Canvas=hqChart.Canvas;pointDot.Name=varItem.Name;pointDot.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;pointDot.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)pointDot.Color=this.GetColor(varItem.Color);else pointDot.Color=this.GetDefaultColor(id);if(varItem.Radius)pointDot.Radius=varItem.Radius;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)pointDot.Radius=width;}if(IFrameSplitOperator.IsBool(varItem.UpDownDot)){pointDot.EnableUpDownColor=varItem.UpDownDot;pointDot.HistoryData=hisData;}var titleIndex=windowIndex+1;pointDot.Data.Data=varItem.Data;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(pointDot.Data,varItem.Name,pointDot.Color);this.SetChartIndexName(pointDot);hqChart.ChartPaint.push(pointDot);};this.CreateStick=function(hqChart,windowIndex,varItem,id){var chart=new ChartStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;this.ReloadChartResource(hqChart,windowIndex,chart);hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateLineStick=function(hqChart,windowIndex,varItem,id){var chart=new ChartLineStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);hqChart.ChartPaint.push(chart);};this.CreateStraightLine=function(hqChart,windowIndex,varItem,id){var line=new ChartLine();line.DrawType=1;line.Canvas=hqChart.Canvas;line.Name=varItem.Name;line.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;line.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)line.Color=this.GetColor(varItem.Color);else line.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)line.LineWidth=width;}
|
|
12842
|
+
this.CreateMACD=function(hqChart,windowIndex,varItem,id){var chartMACD=new ChartMACD();chartMACD.Canvas=hqChart.Canvas;chartMACD.Identify=this.Guid;chartMACD.Name=varItem.Name;chartMACD.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chartMACD.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chartMACD.LineWidth=width;}var titleIndex=windowIndex+1;chartMACD.Data.Data=varItem.Data;var clrTitle=this.GetDefaultColor(id);if(varItem.Color)clrTitle=this.GetColor(varItem.Color);if(varItem.UpColor)chartMACD.UpColor=varItem.UpColor;if(varItem.DownColor)chartMACD.DownColor=varItem.DownColor;this.ReloadChartResource(hqChart,windowIndex,chartMACD);hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(chartMACD.Data,varItem.Name,clrTitle);this.SetChartIndexName(chartMACD);hqChart.ChartPaint.push(chartMACD);};this.CreatePointDot=function(hqChart,windowIndex,varItem,id,hisData){var pointDot=new ChartPointDot();pointDot.Canvas=hqChart.Canvas;pointDot.Name=varItem.Name;pointDot.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;pointDot.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)pointDot.Color=this.GetColor(varItem.Color);else pointDot.Color=this.GetDefaultColor(id);if(varItem.Radius)pointDot.Radius=varItem.Radius;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)pointDot.Radius=width;}if(IFrameSplitOperator.IsBool(varItem.UpDownDot)){pointDot.EnableUpDownColor=varItem.UpDownDot;pointDot.HistoryData=hisData;}var titleIndex=windowIndex+1;pointDot.Data.Data=varItem.Data;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(pointDot.Data,varItem.Name,pointDot.Color);this.SetChartIndexName(pointDot);hqChart.ChartPaint.push(pointDot);};this.CreateStick=function(hqChart,windowIndex,varItem,id){var chart=new ChartStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;this.ReloadChartResource(hqChart,windowIndex,chart);hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);this.SetChartIndexName(chart);hqChart.ChartPaint.push(chart);};this.CreateLineStick=function(hqChart,windowIndex,varItem,id){var chart=new ChartLineStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);hqChart.ChartPaint.push(chart);};this.CreateStraightLine=function(hqChart,windowIndex,varItem,id){var line=new ChartLine();line.DrawType=1;line.Canvas=hqChart.Canvas;line.Name=varItem.Name;line.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;line.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Color)line.Color=this.GetColor(varItem.Color);else line.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)line.LineWidth=width;}if(varItem.IsDotLine){line.IsDotLine=true;//虚线
|
|
12843
|
+
line.LineDash=g_JSChartResource.DOTLINE.LineDash.slice();}var titleIndex=windowIndex+1;line.Data.Data=varItem.Draw.DrawData;if(varItem.Name=="DRAWLINE")hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,null,line.Color);//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,varItem.Name,line.Color);
|
|
12808
12844
|
hqChart.ChartPaint.push(line);};this.CreateVolStick=function(hqChart,windowIndex,varItem,id,hisData){var chart=new ChartVolStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chart.KLineDrawType=hqChart.KLineDrawType;//设置K线显示类型
|
|
12809
12845
|
chart.Identify=this.Guid;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.UpColor)chart.UpColor=varItem.UpColor;if(varItem.DownColor)chart.DownColor=varItem.DownColor;if(IFrameSplitOperator.IsNumber(varItem.StickType))chart.BarType=varItem.StickType;if(IFrameSplitOperator.IsNumber(varItem.BarColorType))chart.BarColorType=varItem.BarColorType;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(IFrameSplitOperator.IsPlusNumber(width))chart.BarWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;chart.HistoryData=hisData;this.ReloadChartResource(hqChart,windowIndex,chart);if(varItem.IsShowTitle===false)//NOTEXT 不绘制标题
|
|
12810
12846
|
{}else if(IFrameSplitOperator.IsString(varItem.Name)&&varItem.Name.indexOf("NOTEXT")==0)//标题中包含NOTEXT不绘制标题
|
|
@@ -12823,7 +12859,21 @@ if(varItem.Color&&IFrameSplitOperator.IsNonEmptyArray(chart.AryIcon)){for(var i=
|
|
|
12823
12859
|
if(varItem.DrawFontSize>0)chart.SVG.Size=varItem.DrawFontSize*GetDevicePixelRatio();//图标大小
|
|
12824
12860
|
hqChart.ChartPaint.push(chart);};this.CreateTextLine=function(hqChart,windowIndex,varItem,id){var chart=new ChartTextLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chart.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(varItem.Draw&&varItem.Draw.DrawData){var drawData=varItem.Draw.DrawData;chart.Text=drawData.Text;chart.Line=drawData.Line;chart.Price=drawData.Price;}hqChart.ChartPaint.push(chart);};this.CreateNumberText=function(hqChart,windowIndex,varItem,id){var chartText=new ChartSingleText();chartText.Canvas=hqChart.Canvas;chartText.Name=varItem.Name;chartText.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chartText.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chartText.ReloadResource();chartText.TextAlign="center";if(varItem.Color)chartText.Color=this.GetColor(varItem.Color);else chartText.Color=this.GetDefaultColor(id);if(varItem.IsDrawAbove)chartText.Direction=1;else chartText.Direction=2;if(varItem.Draw.Position)chartText.Position=varItem.Draw.Position;//赋值坐标
|
|
12825
12861
|
var titleIndex=windowIndex+1;chartText.Data.Data=varItem.Draw.DrawData.Value;chartText.Text=varItem.Draw.DrawData.Text;//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
|
|
12826
|
-
this.SetChartIndexName(chartText);hqChart.ChartPaint.push(chartText);};this.
|
|
12862
|
+
this.SetChartIndexName(chartText);hqChart.ChartPaint.push(chartText);};this.CreateDrawText_Fix=function(hqChart,windowIndex,varItem,id){var chartText=new ChartDrawText_Fix();chartText.Canvas=hqChart.Canvas;chartText.Name=varItem.Name;chartText.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chartText.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chartText.ReloadResource();chartText.HQChart=hqChart;if(varItem.Draw.Position){var item=varItem.Draw.Position;chartText.PtPercentage={X:item.X,Y:item.Y};//坐标
|
|
12863
|
+
// TYPE:0为左对齐,1为右对齐 2=居中
|
|
12864
|
+
if(item.Type===0)chartText.TextAlign="left";else if(item.Type===1)chartText.TextAlign="right";else if(item.Type===2)chartText.TextAlign="center";}//字体
|
|
12865
|
+
if(varItem.DrawFontSize>0)chartText.TextFont=varItem.DrawFontSize*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1';//临时用下吧
|
|
12866
|
+
if(varItem.Font)chartText.TextFont=varItem.Font;//颜色
|
|
12867
|
+
if(varItem.Color)chartText.Color=this.GetColor(varItem.Color);else chartText.Color=this.GetDefaultColor(id);if(varItem.DrawVAlign>=0)//上下对齐
|
|
12868
|
+
{if(varItem.DrawVAlign==0)chartText.TextBaseline='top';else if(varItem.DrawVAlign==1)chartText.TextBaseline='middle';else if(varItem.DrawVAlign==2)chartText.TextBaseline='bottom';}if(varItem.DrawAlign>=0)// 左右对齐
|
|
12869
|
+
{if(varItem.DrawAlign==0)chartText.TextAlign="left";else if(varItem.DrawAlign==1)chartText.TextAlign="center";else if(varItem.DrawAlign==2)chartText.TextAlign='right';}chartText.BuildCacheData(hqChart.GetKData(),varItem.Draw.DrawData);this.SetChartIndexName(chartText);hqChart.ChartPaint.push(chartText);};this.CreateDrawNumber_Fix=function(hqChart,windowIndex,varItem,id){var chartText=new ChartDrawNumber_Fix();chartText.Canvas=hqChart.Canvas;chartText.Name=varItem.Name;chartText.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chartText.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chartText.ReloadResource();chartText.HQChart=hqChart;if(varItem.Draw.Position){var item=varItem.Draw.Position;chartText.PtPercentage={X:item.X,Y:item.Y};//坐标
|
|
12870
|
+
// TYPE:0为左对齐,1为右对齐 2=居中
|
|
12871
|
+
if(item.Type===0)chartText.TextAlign="left";else if(item.Type===1)chartText.TextAlign="right";else if(item.Type===2)chartText.TextAlign="center";}//字体
|
|
12872
|
+
if(varItem.DrawFontSize>0)chartText.TextFont=varItem.DrawFontSize*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1';//临时用下吧
|
|
12873
|
+
if(varItem.Font)chartText.TextFont=varItem.Font;//颜色
|
|
12874
|
+
if(varItem.Color)chartText.Color=this.GetColor(varItem.Color);else chartText.Color=this.GetDefaultColor(id);if(varItem.DrawVAlign>=0)//上下对齐
|
|
12875
|
+
{if(varItem.DrawVAlign==0)chartText.TextBaseline='top';else if(varItem.DrawVAlign==1)chartText.TextBaseline='middle';else if(varItem.DrawVAlign==2)chartText.TextBaseline='bottom';}if(varItem.DrawAlign>=0)// 左右对齐
|
|
12876
|
+
{if(varItem.DrawAlign==0)chartText.TextAlign="left";else if(varItem.DrawAlign==1)chartText.TextAlign="center";else if(varItem.DrawAlign==2)chartText.TextAlign='right';}chartText.BuildCacheData(hqChart.GetKData(),varItem.Draw.DrawData);this.SetChartIndexName(chartText);hqChart.ChartPaint.push(chartText);};this.CreateDrawText=function(hqChart,windowIndex,varItem,id){var chartText=new ChartSingleText();chartText.Canvas=hqChart.Canvas;chartText.Name=varItem.Name;chartText.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chartText.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chartText.ReloadResource();if(varItem.Color)chartText.Color=this.GetColor(varItem.Color);else chartText.Color=this.GetDefaultColor(id);if(varItem.IsDrawAbove)chartText.Direction=1;else chartText.Direction=0;if(varItem.DrawFontSize>0)chartText.TextFont=varItem.DrawFontSize*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1';//临时用下吧
|
|
12827
12877
|
if(varItem.Font)chartText.TextFont=varItem.Font;if(varItem.DrawVAlign>=0){if(varItem.DrawVAlign==0)chartText.Direction=1;else if(varItem.DrawVAlign==1)chartText.Direction=0;else if(varItem.DrawVAlign==2)chartText.Direction=2;}if(varItem.DrawAlign>=0){if(varItem.DrawAlign==0)chartText.TextAlign="left";else if(varItem.DrawAlign==1)chartText.TextAlign="center";else if(varItem.DrawAlign==2)chartText.TextAlign='right';}var titleIndex=windowIndex+1;chartText.DrawData=varItem.Draw.DrawData;//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
|
|
12828
12878
|
this.SetChartIndexName(chartText);hqChart.ChartPaint.push(chartText);};//创建图标
|
|
12829
12879
|
this.CreateIcon=function(hqChart,windowIndex,varItem,id){var chartText=new ChartSingleText();chartText.Canvas=hqChart.Canvas;chartText.TextAlign='center';chartText.Name=varItem.Name;chartText.ChartBorder=hqChart.Frame.SubFrame[windowIndex].Frame.ChartBorder;chartText.ChartFrame=hqChart.Frame.SubFrame[windowIndex].Frame;chartText.Direction=2;if(varItem.IsDrawAbove)chartText.Direction=1;if(varItem.DrawVAlign>=0){if(varItem.DrawVAlign==0)chartText.Direction=1;else if(varItem.DrawVAlign==1)chartText.Direction=0;else if(varItem.DrawVAlign==2)chartText.Direction=2;}if(varItem.DrawAlign>=0){if(varItem.DrawAlign==0)chartText.TextAlign="left";else if(varItem.DrawAlign==1)chartText.TextAlign="center";else if(varItem.DrawAlign==2)chartText.TextAlign='right';}var titleIndex=windowIndex+1;chartText.Data.Data=varItem.Draw.DrawData;var icon=varItem.Draw.Icon;if(icon.IconFont==true){chartText.IconFont={Family:icon.Family,Text:icon.Symbol,Color:icon.Color};if(varItem.Color)chartText.IconFont.Color=this.GetColor(varItem.Color);}else{chartText.Text=icon.Symbol;if(varItem.Color)chartText.Color=this.GetColor(varItem.Color);else if(icon.Color)chartText.Color=icon.Color;else chartText.Color='rgb(0,0,0)';}if(varItem.DrawFontSize>0)chartText.FixedFontSize=varItem.DrawFontSize;if(IFrameSplitOperator.IsNumber(varItem.XOffset))chartText.ShowOffset.X=varItem.XOffset;if(IFrameSplitOperator.IsNumber(varItem.YOffset))chartText.ShowOffset.Y=varItem.YOffset;//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
|
|
@@ -12848,11 +12898,11 @@ chart.KLineColor=varItem.Draw.DrawData.KLine;if(varItem.Color)chart.Color=varIte
|
|
|
12848
12898
|
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线
|
|
12849
12899
|
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)//绑定指示指标
|
|
12850
12900
|
{if(this.OutVar==null||this.OutVar.length<0)return;//参数
|
|
12851
|
-
var indexParam='';for(var
|
|
12901
|
+
var indexParam='';for(var _i128 in this.Arguments){var _item21=this.Arguments[_i128];if(indexParam.length>0)indexParam+=',';indexParam+=_item21.Value.toString();}if(indexParam.length>0)indexParam='('+indexParam+')';if(this.InstructionType==2)//五彩K线
|
|
12852
12902
|
{var varItem=this.OutVar[this.OutVar.length-1];//取最后一组数据作为指示数据
|
|
12853
12903
|
hqChart.SetInstructionData(this.InstructionType,{Data:varItem.Data,Name:this.Name,Param:indexParam,ID:this.ID});//设置指示数据
|
|
12854
12904
|
return true;}else if(this.InstructionType==1)//交易系统
|
|
12855
|
-
{var buyData,sellData;for(var i in this.OutVar){var
|
|
12905
|
+
{var buyData,sellData;for(var i in this.OutVar){var _item22=this.OutVar[i];if(_item22.Name=='ENTERLONG')buyData=_item22.Data;else if(_item22.Name=='EXITLONG')sellData=_item22.Data;}hqChart.SetInstructionData(this.InstructionType,{Buy:buyData,Sell:sellData,Name:this.Name,Param:indexParam,ID:this.ID});//设置指示数据
|
|
12856
12906
|
return true;}};this.BindData=function(hqChart,windowIndex,hisData){if(windowIndex==0&&this.InstructionType){this.BindInstructionData(hqChart,windowIndex,hisData);return;}//清空主指标图形
|
|
12857
12907
|
hqChart.DeleteIndexPaint(windowIndex);if(windowIndex==0)hqChart.ShowKLine(true);if(this.OutVar==null||this.OutVar.length<0)return;//叠加一个K线背景
|
|
12858
12908
|
if(this.KLineType!=null){if(this.KLineType===0||this.KLineType===1||this.KLineType===2)this.CreateSelfKLine(hqChart,windowIndex,hisData);else if(this.KLineType===-1&&windowIndex==0)hqChart.ShowKLine(false);}if(windowIndex>=1&&hqChart.Frame){//Y轴刻度格式 默认跟标题栏一致
|
|
@@ -12866,12 +12916,12 @@ if(this.YSplitScale)hqChart.Frame.SubFrame[windowIndex].Frame.YSplitScale=this.Y
|
|
|
12866
12916
|
var testData={ Name:'MULTI_LINE', Type:1,Draw:{ DrawType:'MULTI_LINE', DrawData:[point1,point2] } };
|
|
12867
12917
|
this.OutVar.push(testData);
|
|
12868
12918
|
}
|
|
12869
|
-
*/for(var
|
|
12870
|
-
if(
|
|
12871
|
-
if(
|
|
12872
|
-
if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,
|
|
12873
|
-
{if(this.StringFormat>0)titlePaint.Data[
|
|
12874
|
-
titlePaint.ArgumentsText=null;titlePaint.Script=this;titlePaint.IsShowMainIndexTitle=this.IsShowIndexTitle;if(!this.IsShortTitle){var indexParam='';for(var
|
|
12919
|
+
*/for(var _i129=0;_i129<this.OutVar.length;++_i129){var _item23=this.OutVar[_i129];if(_item23.IsExData===true)continue;//扩展数据不显示图形
|
|
12920
|
+
if(_item23.Type==1000||_item23.Type==1001)continue;//数据集合, 字符串
|
|
12921
|
+
if(_item23.Type==0){if(_item23.IsOverlayLine)this.CreateOverlayLine(hqChart,windowIndex,_item23,_i129,_item23.Type);else if(_item23.IsSingleLine)this.CreateSingleLine(hqChart,windowIndex,_item23,_i129,_item23.Type);else this.CreateLine(hqChart,windowIndex,_item23,_i129,_item23.Type);}else if(_item23.Type==1){switch(_item23.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item23,_i129);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item23,_i129);break;case"DRAWFLAGTEXT":this.CreateDrawFlagText(hqChart,windowIndex,_item23,_i129);break;case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item23,_i129);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item23,_i129);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item23,_i129);break;case"FILLRGN":this.CreateFillRGN(hqChart,windowIndex,_item23,_i129);break;case"FILLRGN2":this.CreateFillRGN2(hqChart,windowIndex,_item23,_i129);break;case"FILLTOPRGN":case"FILLBOTTOMRGN":case"FILLVERTICALRGN":this.CreateFillBGRGN(hqChart,windowIndex,_item23,_i129);break;case"FLOATRGN":this.CreateFLOATRGN(hqChart,windowIndex,_item23,_i129);break;case'DRAWKLINE':case"DRAWKLINE1":this.CreateKLine(hqChart,windowIndex,_item23,_i129);break;case"DRAWOVERLAYKLINE":this.CreateOverlayKLine(hqChart,windowIndex,_item23,_i129);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item23,_i129);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item23,_i129);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item23,_i129);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item23,_i129);break;case"DRAWGBK_DIV":this.CreateBackgroundDiv(hqChart,windowIndex,_item23,_i129);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item23,_i129);break;case'DRAWNUMBER':this.CreateDrawNumber(hqChart,windowIndex,_item23,_i129);break;case"DRAWNUMBER_FIX":this.CreateDrawNumber_Fix(hqChart,windowIndex,_item23,_i129);break;case'DRAWTEXT_FIX':this.CreateDrawText_Fix(hqChart,windowIndex,_item23,_i129);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item23,_i129);break;case"ICON":this.CreateIcon(hqChart,windowIndex,_item23,_i129);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item23,_i129);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item23,_i129);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item23,_i129);break;case'DRAWRECTREL':this.CreateRectangle(hqChart,windowIndex,_item23,_i129);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item23,_i129);break;case"DRAWOVERLAYLINE":this.CreateScriptOverlayLine(hqChart,windowIndex,_item23,_i129);break;case"DRAWSL":this.CreateChartSlopeLine(hqChart,windowIndex,_item23,_i129);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item23,_i129);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item23,_i129);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item23,_i129);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item23,_i129);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item23,_i129);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item23,_i129);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item23,_i129);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item23,_i129);break;case"DRAWTITLE":this.CreateTitle(hqChart,windowIndex,_item23,_i129);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item23,_i129);break;case"COLOR_KLINE":this.CreateColorKLine(hqChart,windowIndex,_item23,_i129);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item23,_i129);break;case"MULTI_POINT_LINE":this.CreateLineMultiData(hqChart,windowIndex,_item23,_i129);break;case"DRAW_SIMPLE_TABLE":this.CreateSimpleTable(hqChart,windowIndex,_item23,_i129);break;case"DRAW_SIMPLE_PIE":this.CreateSimplePie(hqChart,windowIndex,_item23,_i129);break;case"DRAW_SIMPLE_RADAR":this.CreateSimpleRadar(hqChart,windowIndex,_item23,_i129);break;case"DRAW_SIMPLE_DOUGHNUT":this.CreateSimpleDoughnut(hqChart,windowIndex,_item23,_i129);break;case"BUY":case"SELL":case"SELLSHORT":case"BUYSHORT":this.CreateTradeIcon(hqChart,windowIndex,_item23,_i129);break;case"DRAWLASTBARICON":case"DRAWLASTBARNUMBER":case"DRAWLASTBARTEXT":this.CreateDrawLastBarText(hqChart,windowIndex,_item23,_i129);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item23,_i129);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item23,_i129);break;case SCRIPT_CHART_NAME.SCATTER_PLOT:this.CreateScatterPlot(hqChart,windowIndex,_item23,_i129);break;case SCRIPT_CHART_NAME.SCATTER_PLOT_V2:this.CreateScatterPlotV2(hqChart,windowIndex,_item23,_i129);break;case SCRIPT_CHART_NAME.CLIP_COLOR_STICK:this.CreateClipColorStick(hqChart,windowIndex,_item23,_i129);break;case SCRIPT_CHART_NAME.BASELINE_BAR:this.CreateBaseLineBar(hqChart,windowIndex,_item23,_i129);break;default:{var find=g_ScriptIndexChartFactory.Get(_item23.Draw.DrawType);//外部挂接
|
|
12922
|
+
if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item23,_i129,this);}break;}}else if(_item23.Type==2){this.CreateMACD(hqChart,windowIndex,_item23,_i129);}else if(_item23.Type==3){this.CreatePointDot(hqChart,windowIndex,_item23,_i129,hisData);}else if(_item23.Type==4){this.CreateLineStick(hqChart,windowIndex,_item23,_i129);}else if(_item23.Type==5){this.CreateStick(hqChart,windowIndex,_item23,_i129);}else if(_item23.Type==6){this.CreateVolStick(hqChart,windowIndex,_item23,_i129,hisData);}else if(_item23.Type==7){this.CreateLine(hqChart,windowIndex,_item23,_i129,_item23.Type);}else if(_item23.Type==8){this.CreateLine(hqChart,windowIndex,_item23,_i129,_item23.Type);}else if(_item23.Type==9){this.CreateArea(hqChart,windowIndex,_item23,_i129);}var titlePaint=hqChart.TitlePaint[windowIndex+1];if(titlePaint&&titlePaint.Data&&_i129<titlePaint.Data.length)//设置标题数值 小数位数和格式
|
|
12923
|
+
{if(this.StringFormat>0)titlePaint.Data[_i129].StringFormat=this.StringFormat;if(this.FloatPrecision>=0)titlePaint.Data[_i129].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
|
|
12924
|
+
titlePaint.ArgumentsText=null;titlePaint.Script=this;titlePaint.IsShowMainIndexTitle=this.IsShowIndexTitle;if(!this.IsShortTitle){var indexParam='';for(var _i130=0;_i130<this.Arguments.length;++_i130){var _item24=this.Arguments[_i130];if(indexParam.length>0)indexParam+=',';indexParam+=_item24.Value.toString();}if(indexParam.length>0)titlePaint.ArgumentsText='('+indexParam+')';}if(this.TitleFont)titlePaint.Font=this.TitleFont;return true;};//给一个默认的颜色
|
|
12875
12925
|
this.GetDefaultColor=function(id){var COLOR_ARRAY=null;//使用全局线段配置
|
|
12876
12926
|
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)];};//获取颜色
|
|
12877
12927
|
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)';/*
|
|
@@ -12908,11 +12958,11 @@ this.OverlayIndex=null;// { IsOverlay:true, Identify:overlayFrame.Identify, Wind
|
|
|
12908
12958
|
//显示指标不符合条件
|
|
12909
12959
|
this.ShowConditionError=function(param,msg){var hqChart=param.HQChart;var windowIndex=param.WindowIndex;var message='指标不支持当前品种或周期';if(msg)message=msg;var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;frame.ChartPaint=[];var chart=new ChartLine();chart.Canvas=hqChart.Canvas;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.NotSupportMessage=message;frame.ChartPaint.push(chart);hqChart.Draw();};this.BindData=function(hqChart,windowIndex,hisData){if(!this.OverlayIndex||this.OverlayIndex.IsOverlay!=true)return;this.OverlayIndex.Frame.ChartPaint=[];if(!IFrameSplitOperator.IsNonEmptyArray(this.OutVar))return;//修改Y轴分割方式
|
|
12910
12960
|
var ySpliter=this.OverlayIndex.Frame.Frame.YSplitOperator;if(ySpliter){ySpliter.Reset();ySpliter.FloatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(this.YSplitType))ySpliter.SplitType=this.YSplitType;if(this.YAxis)ySpliter.SetOption(this.YAxis);}//指标名字
|
|
12911
|
-
var titleInfo={Data:[],Title:this.Name,Frame:this.OverlayIndex.Frame.Frame,Script:this,IsShowIndexTitle:this.IsShowIndexTitle};var indexParam='';for(var i in this.Arguments){var
|
|
12961
|
+
var titleInfo={Data:[],Title:this.Name,Frame:this.OverlayIndex.Frame.Frame,Script:this,IsShowIndexTitle:this.IsShowIndexTitle};var indexParam='';for(var i in this.Arguments){var _item25=this.Arguments[i];if(indexParam.length>0)indexParam+=',';indexParam+=_item25.Value.toString();}if(indexParam.length>0)titleInfo.Title=this.Name+'('+indexParam+')';var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.OverlayIndex.set(this.OverlayIndex.Identify,titleInfo);if(this.OutName&&this.OutName.length>0&&this.Arguments&&this.Arguments.length>0){titlePaint.SetDynamicTitle(this.OutName,this.Arguments,this.OverlayIndex.Identify);}this.OverlayIndex.Frame.Frame.Title=this.Name;//给子框架设置标题
|
|
12912
12962
|
if(hqChart.Frame.SubFrame[windowIndex]){var mainFrame=hqChart.Frame.SubFrame[windowIndex].Frame;if(mainFrame)this.OverlayIndex.Frame.Frame.XPointCount=mainFrame.XPointCount;//跟主窗口同步下页面显示数据个数
|
|
12913
|
-
}for(var i=0;i<this.OutVar.length;++i){var
|
|
12914
|
-
if(
|
|
12915
|
-
if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,
|
|
12963
|
+
}for(var i=0;i<this.OutVar.length;++i){var _item26=this.OutVar[i];if(_item26.IsExData===true)continue;//扩展数据不显示图形
|
|
12964
|
+
if(_item26.Type==0){this.CreateLine(hqChart,windowIndex,_item26,i,_item26.Type);}else if(_item26.Type==1){switch(_item26.Draw.DrawType){case'STICKLINE':this.CreateBar(hqChart,windowIndex,_item26,i);break;case'DRAWTEXT':this.CreateDrawTextV2(hqChart,windowIndex,_item26,i);break;case"DRAWFLAGTEXT":this.CreateDrawFlagText(hqChart,windowIndex,_item26,i);case'SUPERDRAWTEXT':this.CreateText(hqChart,windowIndex,_item26,i);break;case'DRAWLINE':this.CreateStraightLine(hqChart,windowIndex,_item26,i);break;case'DRAWBAND':this.CreateBand(hqChart,windowIndex,_item26,i);break;case'DRAWKLINE':this.CreateKLine(hqChart,windowIndex,_item26,i);break;case'DRAWKLINE_IF':this.CreateKLine(hqChart,windowIndex,_item26,i);break;case'POLYLINE':this.CreatePolyLine(hqChart,windowIndex,_item26,i);break;case'DRAWGBK':case"DRAWGBK2":this.CreateBackgroud(hqChart,windowIndex,_item26,i);break;case'DRAWNUMBER':this.CreateNumberText(hqChart,windowIndex,_item26,i);break;case"DRAWNUMBER_FIX":this.CreateDrawNumber_Fix(hqChart,windowIndex,_item26,i);break;case'DRAWTEXT_FIX':this.CreateDrawText_Fix(hqChart,windowIndex,_item26,i);break;case'DRAWICON':this.CreateIcon(hqChart,windowIndex,_item26,i);break;case"TIPICON":this.CreateTipIcon(hqChart,windowIndex,_item26,i);break;case'DRAWCHANNEL':this.CreateChannel(hqChart,windowIndex,_item26,i);break;case'DRAWTEXT_LINE':this.CreateTextLine(hqChart,windowIndex,_item26,i);break;case"VERTLINE":this.CreateChartVericaltLine(hqChart,windowIndex,_item26,i);break;case"HORLINE":this.CreateChartHorizontalLine(hqChart,windowIndex,_item26,i);break;case'MULTI_LINE':this.CreateMultiLine(hqChart,windowIndex,_item26,i);break;case"MULTI_POINT":this.CreateMultiPoint(hqChart,windowIndex,_item26,i);break;case'MULTI_BAR':this.CreateMultiBar(hqChart,windowIndex,_item26,i);break;case'MULTI_TEXT':this.CreateMultiText(hqChart,windowIndex,_item26,i);break;case'MULTI_SVGICON':this.CreateMultiSVGIcon(hqChart,windowIndex,_item26,i);break;case"DRAWSVG":this.CreateChartDrawSVG(hqChart,windowIndex,_item26,i);break;case"DRAWTITLE":this.CreateTitle(hqChart,windowIndex,_item26,i);break;case"MULTI_HTMLDOM":this.CreateMulitHtmlDom(hqChart,windowIndex,_item26,i);break;case"DRAW_SIMPLE_TABLE":this.CreateSimpleTable(hqChart,windowIndex,_item26,i);break;case"DRAW_SIMPLE_PIE":this.CreateSimplePie(hqChart,windowIndex,_item26,i);break;case"DRAW_SIMPLE_DOUGHNUT":this.CreateSimpleDoughnut(hqChart,windowIndex,_item26,i);break;case"DRAW_SIMPLE_RADAR":this.CreateSimpleRadar(hqChart,windowIndex,_item26,i);break;case"KLINE_BG":this.CreateBackgroud(hqChart,windowIndex,_item26,i);break;case'PARTLINE':this.CreatePartLine(hqChart,windowIndex,_item26,i);break;case"DRAWTEXTABS":case"DRAWTEXTREL":this.CreateDrawText(hqChart,windowIndex,_item26,i);break;case SCRIPT_CHART_NAME.OVERLAY_BARS:this.CreateStackedBar(hqChart,windowIndex,_item26,i);break;case SCRIPT_CHART_NAME.BASELINE_BAR:this.CreateBaseLineBar(hqChart,windowIndex,_item26,i);break;case SCRIPT_CHART_NAME.KLINE_TABLE:this.CreateKLineTable(hqChart,windowIndex,_item26,i);break;case"DRAWCOLORKLINE":this.CreateDrawColorKLine(hqChart,windowIndex,_item26,i);break;default:{var find=g_ScriptIndexChartFactory.Get(_item26.Draw.DrawType);//外部挂接
|
|
12965
|
+
if(find&&find.CreateChartCallback)find.CreateChartCallback(hqChart,windowIndex,_item26,i,this);}break;}}else if(_item26.Type==2){this.CreateMACD(hqChart,windowIndex,_item26,i);}else if(_item26.Type==3){this.CreatePointDot(hqChart,windowIndex,_item26,i,hisData);}else if(_item26.Type==4){this.CreateLineStick(hqChart,windowIndex,_item26,i);}else if(_item26.Type==5){this.CreateStick(hqChart,windowIndex,_item26,i);}else if(_item26.Type==6){this.CreateVolStick(hqChart,windowIndex,_item26,i,hisData);}else if(_item26.Type==7){this.CreateLine(hqChart,windowIndex,_item26,i,_item26.Type);}else if(_item26.Type==8){this.CreateLine(hqChart,windowIndex,_item26,i,_item26.Type);}var titleData=titleInfo.Data[i];if(titleData){if(this.FloatPrecision>=0)titleData.FloatPrecision=this.FloatPrecision;if(IFrameSplitOperator.IsNumber(this.StringFormat))titleData.StringFormat=this.StringFormat;}}/*
|
|
12916
12966
|
hqChart.TitlePaint[titleIndex].Title=this.Name;
|
|
12917
12967
|
|
|
12918
12968
|
let indexParam='';
|
|
@@ -12941,19 +12991,34 @@ this.CreateBar=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.Ov
|
|
|
12941
12991
|
this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateDrawText=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartSingleText();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.ReloadResource();if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.IsDrawAbove)chart.Direction=1;else chart.Direction=0;chart.DrawData=varItem.Draw.DrawData;if(varItem.DrawFontSize>0)chart.TextFont=varItem.DrawFontSize*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1';//临时用下吧
|
|
12942
12992
|
frame.ChartPaint.push(chart);};//DRAWTEXT
|
|
12943
12993
|
this.CreateDrawTextV2=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chartText=new ChartDrawText();chartText.Canvas=hqChart.Canvas;chartText.Name=varItem.Name;chartText.ChartBorder=frame.Frame.ChartBorder;chartText.ChartFrame=frame.Frame;chartText.Identify=overlayIndex.Identify;chartText.ReloadResource();if(varItem.Color)chartText.Color=this.GetColor(varItem.Color);else chartText.Color=this.GetDefaultColor(id);if(varItem.IsDrawCenter===true)chartText.TextAlign='center';if(varItem.IsDrawAbove===true)chartText.TextBaseline='bottom';if(varItem.IsDrawBelow===true)chartText.TextBaseline='top';if(varItem.Draw.DrawData)chartText.Data.Data=varItem.Draw.DrawData;chartText.Text=varItem.Draw.Text;if(varItem.Draw.Direction>0)chartText.Direction=varItem.Draw.Direction;if(varItem.Draw.YOffset>0)chartText.YOffset=varItem.Draw.YOffset;if(varItem.Draw.TextAlign)chartText.TextAlign=varItem.Draw.TextAlign;//指定输出位置
|
|
12944
|
-
if(varItem.Draw.FixedPosition==="TOP")chartText.FixedPosition=1;else if(varItem.Draw.FixedPosition==="BOTTOM")chartText.FixedPosition=2;if(varItem.DrawVAlign>=0){if(varItem.DrawVAlign==0)chartText.TextBaseline='top';else if(varItem.DrawVAlign==1)chartText.TextBaseline='middle';else if(varItem.DrawVAlign==2)chartText.TextBaseline='bottom';}if(varItem.DrawAlign>=0){if(varItem.DrawAlign==0)chartText.TextAlign="left";else if(varItem.DrawAlign==1)chartText.TextAlign="center";else if(varItem.DrawAlign==2)chartText.TextAlign='right';}if(varItem.DrawFontSize>0)chartText.FixedFontSize=varItem.DrawFontSize;if(varItem.Background)chartText.TextBG=varItem.Background;if(varItem.VerticalLine)chartText.VerticalLine=varItem.VerticalLine;if(IFrameSplitOperator.IsNumber(varItem.XOffset))chartText.ShowOffset.X=varItem.XOffset;if(IFrameSplitOperator.IsNumber(varItem.YOffset))chartText.ShowOffset.Y=varItem.YOffset;//let titleIndex=windowIndex+1;
|
|
12994
|
+
if(varItem.Draw.FixedPosition==="TOP")chartText.FixedPosition=1;else if(varItem.Draw.FixedPosition==="BOTTOM")chartText.FixedPosition=2;if(varItem.DrawVAlign>=0){if(varItem.DrawVAlign==0)chartText.TextBaseline='top';else if(varItem.DrawVAlign==1)chartText.TextBaseline='middle';else if(varItem.DrawVAlign==2)chartText.TextBaseline='bottom';}if(varItem.DrawAlign>=0){if(varItem.DrawAlign==0)chartText.TextAlign="left";else if(varItem.DrawAlign==1)chartText.TextAlign="center";else if(varItem.DrawAlign==2)chartText.TextAlign='right';}if(varItem.DrawFontSize>0)chartText.FixedFontSize=varItem.DrawFontSize;if(varItem.Font)chartText.Font=varItem.Font;if(varItem.Background)chartText.TextBG=varItem.Background;if(varItem.VerticalLine)chartText.VerticalLine=varItem.VerticalLine;if(IFrameSplitOperator.IsNumber(varItem.XOffset))chartText.ShowOffset.X=varItem.XOffset;if(IFrameSplitOperator.IsNumber(varItem.YOffset))chartText.ShowOffset.Y=varItem.YOffset;//let titleIndex=windowIndex+1;
|
|
12945
12995
|
frame.ChartPaint.push(chartText);};this.CreateDrawFlagText=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartDrawFlagText();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(chart.ReloadResource)chart.ReloadResource();chart.Data=hqChart.GetKData();if(varItem.Draw.DrawData)chart.AryData=varItem.Draw.DrawData;chart.BuildCacheData();frame.ChartPaint.push(chart);};//创建文本
|
|
12946
12996
|
this.CreateText=function(hqChart,windowIndex,varItem,id,drawName){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartSingleText();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.ReloadResource();if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);var titleIndex=windowIndex+1;if(varItem.Draw.Position)chart.Position=varItem.Draw.Position;//赋值坐标
|
|
12947
12997
|
if(varItem.Draw.DrawData)chart.Data.Data=varItem.Draw.DrawData;chart.Text=varItem.Draw.Text;if(varItem.Draw.Direction>0)chart.Direction=varItem.Draw.Direction;if(varItem.Draw.YOffset>0)chart.YOffset=varItem.Draw.YOffset;if(varItem.Draw.TextAlign)chart.TextAlign=varItem.Draw.TextAlign;//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
|
|
12948
12998
|
frame.ChartPaint.push(chart);};//COLORSTICK
|
|
12949
|
-
this.CreateMACD=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMACD();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;var titlePaint=hqChart.TitlePaint[titleIndex];var clrTitle=this.GetDefaultColor(id);if(varItem.Color)clrTitle=this.GetColor(varItem.Color);if(varItem.UpColor)chart.UpColor=varItem.UpColor;if(varItem.DownColor)chart.DownColor=varItem.DownColor;this.ReloadChartResource(hqChart,windowIndex,chart);titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(chart.Data,varItem.Name,clrTitle);this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreatePointDot=function(hqChart,windowIndex,varItem,id,hisData){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartPointDot();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.Radius)chart.Radius=varItem.Radius;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.Radius=width;}if(IFrameSplitOperator.IsBool(varItem.UpDownDot)){chart.EnableUpDownColor=varItem.UpDownDot;chart.HistoryData=hisData;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateStick=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;this.ReloadChartResource(hqChart,windowIndex,chart);var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);frame.ChartPaint.push(chart);};this.CreateLineStick=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartLineStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);frame.ChartPaint.push(chart);};this.CreateStraightLine=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartLine();chart.DrawType=1;chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}
|
|
12999
|
+
this.CreateMACD=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartMACD();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;var titlePaint=hqChart.TitlePaint[titleIndex];var clrTitle=this.GetDefaultColor(id);if(varItem.Color)clrTitle=this.GetColor(varItem.Color);if(varItem.UpColor)chart.UpColor=varItem.UpColor;if(varItem.DownColor)chart.DownColor=varItem.DownColor;this.ReloadChartResource(hqChart,windowIndex,chart);titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(chart.Data,varItem.Name,clrTitle);this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreatePointDot=function(hqChart,windowIndex,varItem,id,hisData){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartPointDot();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.Radius)chart.Radius=varItem.Radius;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.Radius=width;}if(IFrameSplitOperator.IsBool(varItem.UpDownDot)){chart.EnableUpDownColor=varItem.UpDownDot;chart.HistoryData=hisData;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateStick=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;this.ReloadChartResource(hqChart,windowIndex,chart);var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);frame.ChartPaint.push(chart);};this.CreateLineStick=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartLineStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);frame.ChartPaint.push(chart);};this.CreateStraightLine=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartLine();chart.DrawType=1;chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}if(varItem.IsDotLine){chart.IsDotLine=true;//虚线
|
|
13000
|
+
chart.LineDash=g_JSChartResource.DOTLINE.LineDash.slice();}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Draw.DrawData;//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(line.Data,varItem.Name,line.Color);
|
|
12950
13001
|
frame.ChartPaint.push(chart);};this.CreateVolStick=function(hqChart,windowIndex,varItem,id,hisData){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartVolStick();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.KLineDrawType=hqChart.KLineDrawType;//设置K线显示类型
|
|
12951
13002
|
if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.UpColor)chart.UpColor=varItem.UpColor;if(varItem.DownColor)chart.DownColor=varItem.DownColor;if(IFrameSplitOperator.IsNumber(varItem.StickType))chart.BarType=varItem.StickType;if(IFrameSplitOperator.IsNumber(varItem.BarColorType))chart.BarColorType=varItem.BarColorType;if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(IFrameSplitOperator.IsPlusNumber(width))chart.BarWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Data;chart.HistoryData=hisData;this.ReloadChartResource(hqChart,windowIndex,chart);var titlePaint=hqChart.TitlePaint[titleIndex];var titleData=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;this.SetTitleData(titleData,chart);this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateBand=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartBand();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.FirstColor=varItem.Draw.Color[0];chart.SecondColor=varItem.Draw.Color[1];chart.Data.Data=varItem.Draw.DrawData;if(IFrameSplitOperator.IsBool(varItem.IsFirstDraw))chart.IsDrawFirst=varItem.IsFirstDraw;this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};//创建K线图
|
|
12952
13003
|
this.CreateKLine=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartKLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data.Data=varItem.Draw.DrawData;chart.IsShowMaxMinPrice=false;chart.IsShowKTooltip=false;if(varItem.Color)//如果设置了颜色,使用外面设置的颜色
|
|
12953
13004
|
chart.UnchagneColor=chart.DownColor=chart.UpColor=this.GetColor(varItem.Color);if(varItem.Draw.Config){var config=varItem.Draw.Config;if(IFrameSplitOperator.IsBool(config.IsShowMaxMinPrice))chart.IsShowMaxMinPrice=config.IsShowMaxMinPrice;if(IFrameSplitOperator.IsBool(config.IsShowKTooltip))chart.IsShowKTooltip=config.IsShowKTooltip;if(config.Symbol)chart.Symbol=config.Symbol;if(config.Name)chart.Title=config.Name;}var bShowTitle=false;if(IFrameSplitOperator.IsBool(varItem.IsShowTitle))bShowTitle=varItem.IsShowTitle;if(bShowTitle){var titleIndex=windowIndex+1;chart.Data.Data=varItem.Draw.DrawData;var titlePaint=hqChart.TitlePaint[titleIndex];var titleData=new DynamicTitleData(chart.Data,varItem.Name,chart.Color);titleData.DataType="DRAWKLINE";titleData.Symbol=chart.Symbol;titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;}frame.ChartPaint.push(chart);};this.CreatePolyLine=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.LineWidth){var width=parseInt(varItem.LineWidth.replace("LINETHICK",""));if(!isNaN(width)&&width>0)chart.LineWidth=width;}var titleIndex=windowIndex+1;chart.Data.Data=varItem.Draw.DrawData;var titlePaint=hqChart.TitlePaint[titleIndex];titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=new DynamicTitleData(line.Data,' ',line.Color);//给一个空的标题
|
|
12954
13005
|
frame.ChartPaint.push(chart);};this.CreateNumberText=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartSingleText();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.ReloadResource();chart.TextAlign="center";if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.IsDrawAbove)chart.Direction=1;else chart.Direction=2;if(varItem.Draw.Position)chart.Position=varItem.Draw.Position;//赋值坐标
|
|
12955
13006
|
var titleIndex=windowIndex+1;chart.Data.Data=varItem.Draw.DrawData.Value;chart.Text=varItem.Draw.DrawData.Text;//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
|
|
12956
|
-
this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.
|
|
13007
|
+
this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateDrawText_Fix=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartDrawText_Fix();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.ReloadResource();chart.HQChart=hqChart;if(varItem.Draw.Position){var item=varItem.Draw.Position;chart.PtPercentage={X:item.X,Y:item.Y};//坐标
|
|
13008
|
+
// TYPE:0为左对齐,1为右对齐 2=居中
|
|
13009
|
+
if(item.Type===0)chart.TextAlign="left";else if(item.Type===1)chart.TextAlign="right";else if(item.Type===2)chart.TextAlign="center";}//字体
|
|
13010
|
+
if(varItem.DrawFontSize>0)chart.TextFont=varItem.DrawFontSize*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1';//临时用下吧
|
|
13011
|
+
if(varItem.Font)chart.TextFont=varItem.Font;//颜色
|
|
13012
|
+
if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.DrawVAlign>=0)//上下对齐
|
|
13013
|
+
{if(varItem.DrawVAlign==0)chart.TextBaseline='top';else if(varItem.DrawVAlign==1)chart.TextBaseline='middle';else if(varItem.DrawVAlign==2)chart.TextBaseline='bottom';}if(varItem.DrawAlign>=0)// 左右对齐
|
|
13014
|
+
{if(varItem.DrawAlign==0)chart.TextAlign="left";else if(varItem.DrawAlign==1)chart.TextAlign="center";else if(varItem.DrawAlign==2)chart.TextAlign='right';}chart.BuildCacheData(hqChart.GetKData(),varItem.Draw.DrawData);this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateDrawNumber_Fix=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartDrawNumber_Fix();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.ReloadResource();chart.HQChart=hqChart;if(varItem.Draw.Position){var item=varItem.Draw.Position;chart.PtPercentage={X:item.X,Y:item.Y};//坐标
|
|
13015
|
+
// TYPE:0为左对齐,1为右对齐 2=居中
|
|
13016
|
+
if(item.Type===0)chart.TextAlign="left";else if(item.Type===1)chart.TextAlign="right";else if(item.Type===2)chart.TextAlign="center";}//字体
|
|
13017
|
+
if(varItem.DrawFontSize>0)chart.TextFont=varItem.DrawFontSize*GetDevicePixelRatio()+'px \u5FAE\u8F6F\u96C5\u9ED1';//临时用下吧
|
|
13018
|
+
if(varItem.Font)chart.TextFont=varItem.Font;//颜色
|
|
13019
|
+
if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);if(varItem.DrawVAlign>=0)//上下对齐
|
|
13020
|
+
{if(varItem.DrawVAlign==0)chart.TextBaseline='top';else if(varItem.DrawVAlign==1)chart.TextBaseline='middle';else if(varItem.DrawVAlign==2)chart.TextBaseline='bottom';}if(varItem.DrawAlign>=0)// 左右对齐
|
|
13021
|
+
{if(varItem.DrawAlign==0)chart.TextAlign="left";else if(varItem.DrawAlign==1)chart.TextAlign="center";else if(varItem.DrawAlign==2)chart.TextAlign='right';}chart.BuildCacheData(hqChart.GetKData(),varItem.Draw.DrawData);this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateTextLine=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartTextLine();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.Draw&&varItem.Draw.DrawData){var drawData=varItem.Draw.DrawData;chart.Text=drawData.Text;chart.Line=drawData.Line;chart.Price=drawData.Price;}frame.ChartPaint.push(chart);};this.CreateTitle=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartIndexTitle();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data=hqChart.GetKData();//绑定K线
|
|
12957
13022
|
if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else chart.Color=this.GetDefaultColor(id);chart.AryTitle=varItem.Draw.DrawData.AryTitle;chart.BuildCacheData();var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];var titleData=new DynamicTitleData(chart.Data,chart.Name,chart.Color);titleData.DataType="ChartIndexTitle";titleData.Chart=chart;titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;this.SetChartIndexName(chart);frame.ChartPaint.push(chart);};this.CreateStackedBar=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartStackedBar();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.BarColor))chart.BarColor=varItem.Draw.BarColor;if(IFrameSplitOperator.IsNonEmptyArray(varItem.Draw.BarName))chart.BarName=varItem.Draw.BarName;if(IFrameSplitOperator.IsNumber(varItem.Draw.LineWidth))chart.LineWidth=varItem.Draw.LineWidth;if(IFrameSplitOperator.IsNumber(varItem.Draw.BarType))chart.BarType=varItem.Draw.BarType;chart.Data.Data=varItem.Draw.DrawData;var titleIndex=windowIndex+1;var titlePaint=hqChart.TitlePaint[titleIndex];var titleData=new DynamicTitleData(chart.Data,chart.BarName,chart.BarColor);titleData.DataType="ChartStackedBar";titlePaint.OverlayIndex.get(overlayIndex.Identify).Data[id]=titleData;frame.ChartPaint.push(chart);};this.CreateDrawColorKLine=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartColorKline();chart.Canvas=hqChart.Canvas;chart.Name=varItem.Name;chart.DrawName="DRAWCOLORKLINE";chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;chart.Data.Data=varItem.Draw.DrawData;if(IFrameSplitOperator.IsBool(varItem.Draw.IsEmptyBar))chart.IsEmptyBar=varItem.Draw.IsEmptyBar;if(varItem.Draw.Color)chart.Color=varItem.Draw.Color;frame.ChartPaint.push(chart);};//创建图标
|
|
12958
13023
|
this.CreateIcon=function(hqChart,windowIndex,varItem,id){var overlayIndex=this.OverlayIndex;var frame=overlayIndex.Frame;var chart=new ChartSingleText();chart.Canvas=hqChart.Canvas;chart.TextAlign='center';chart.Name=varItem.Name;chart.ChartBorder=frame.Frame.ChartBorder;chart.ChartFrame=frame.Frame;chart.Identify=overlayIndex.Identify;if(varItem.DrawVAlign>=0){if(varItem.DrawVAlign==0)chart.Direction=1;else if(varItem.DrawVAlign==1)chart.Direction=0;else if(varItem.DrawVAlign==2)chart.Direction=2;}if(varItem.DrawAlign>=0){if(varItem.DrawAlign==0)chart.TextAlign="left";else if(varItem.DrawAlign==1)chart.TextAlign="center";else if(varItem.DrawAlign==2)chart.TextAlign='right';}if(IFrameSplitOperator.IsNumber(varItem.XOffset))chart.ShowOffset.X=varItem.XOffset;if(IFrameSplitOperator.IsNumber(varItem.YOffset))chart.ShowOffset.Y=varItem.YOffset;chart.Data.Data=varItem.Draw.DrawData;var icon=varItem.Draw.Icon;if(icon.IconFont==true){chart.IconFont={Family:icon.Family,Text:icon.Symbol,Color:icon.Color};}else{chart.Text=icon.Symbol;if(varItem.Color)chart.Color=this.GetColor(varItem.Color);else if(icon.Color)chart.Color=icon.Color;else chart.Color='rgb(0,0,0)';}//var titleIndex=windowIndex+1;
|
|
12959
13024
|
//hqChart.TitlePaint[titleIndex].Data[id]=new DynamicTitleData(bar.Data,varItem.Name,bar.Color);
|
|
@@ -15646,7 +15711,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
15646
15711
|
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);};}/********************************************************************************
|
|
15647
15712
|
* 版本信息输出
|
|
15648
15713
|
*
|
|
15649
|
-
*/var HQCHART_VERSION="1.1.
|
|
15714
|
+
*/var HQCHART_VERSION="1.1.15291";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();//把给外界调用的方法暴露出来
|
|
15650
15715
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
15651
15716
|
// BaseIndex:BaseIndex,
|
|
15652
15717
|
// ChartLine:ChartLine,
|