hqchart 1.1.12472 → 1.1.12480
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 +34 -28
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +63 -14
- package/src/jscommon/umychart.js +40 -10
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +104 -25
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +104 -25
package/lib/umychart.vue.js
CHANGED
|
@@ -1353,7 +1353,7 @@ var scriptData=new JSIndexScript();if(option.ColorIndex)//五彩K线
|
|
|
1353
1353
|
}else if(item.JsonData){chart.WindowIndex[i]=new JsonDataIndex(item.Name,item.Script,item.Args,item);//脚本执行
|
|
1354
1354
|
}else if(item.Local&&item.Local.Data){chart.WindowIndex[i]=new LocalJsonDataIndex(item.Local.Name,item.Local.Args,{JsonData:item.Local.Data});}else if(item.API)//使用API挂接指标数据 API:{ Name:指标名字, Script:指标脚本可以为空, Args:参数可以为空, Url:指标执行地址 }
|
|
1355
1355
|
{var apiItem=item.API;chart.WindowIndex[i]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[i]=indexItem.Create(item.Option);if(chart.WindowIndex[i].SetArgs)chart.WindowIndex[i].SetArgs(item.Args);chart.CreateWindowIndex(i);}else{var _indexInfo2=scriptData.Get(item.Index);if(!_indexInfo2)continue;if(item.Lock)_indexInfo2.Lock=item.Lock;_indexInfo2.ID=item.Index;var args=_indexInfo2.Args;if(item.Args)args=item.Args;if(item.IsShortTitle)_indexInfo2.IsShortTitle=item.IsShortTitle;if(item.TitleFont)_indexInfo2.TitleFont=item.TitleFont;if(IFrameSplitOperator.IsBool(item.IsSync))_indexInfo2.IsSync=item.IsSync;chart.WindowIndex[i]=new ScriptIndex(_indexInfo2.Name,_indexInfo2.Script,args,_indexInfo2);//脚本执行
|
|
1356
|
-
if(item.StringFormat>0)chart.WindowIndex[i].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;}}var frame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsBool(item.Modify))frame.ModifyIndex=item.Modify;if(IFrameSplitOperator.IsBool(item.Change))frame.ChangeIndex=item.Change;if(IFrameSplitOperator.IsBool(item.Close))frame.CloseIndex=item.Close;if(IFrameSplitOperator.IsBool(item.Overlay))frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))chart.Frame.SubFrame[i].Frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))chart.Frame.SubFrame[i].Frame.TitleWindow=item.TitleWindow;if(item.IsDrawTitleBG==true)chart.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;else item.TitleHeight=chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;if(item.
|
|
1356
|
+
if(item.StringFormat>0)chart.WindowIndex[i].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[i].FloatPrecision=item.FloatPrecision;}}var frame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsBool(item.Modify))frame.ModifyIndex=item.Modify;if(IFrameSplitOperator.IsBool(item.Change))frame.ChangeIndex=item.Change;if(IFrameSplitOperator.IsBool(item.Close))frame.CloseIndex=item.Close;if(IFrameSplitOperator.IsBool(item.Overlay))frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))chart.Frame.SubFrame[i].Frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))chart.Frame.SubFrame[i].Frame.TitleWindow=item.TitleWindow;if(item.IsDrawTitleBG==true)chart.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;else item.TitleHeight=chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsNumber(item.IsShowTitleArrow))chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))chart.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))chart.Frame.SubFrame[i].Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))chart.Frame.SubFrame[i].Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}}//叠加指标宽度
|
|
1357
1357
|
if(option.OverlayIndexFrameWidth>40)chart.OverlayIndexFrameWidth=option.OverlayIndexFrameWidth;//叠加指标
|
|
1358
1358
|
if(IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex)){for(var i=0;i<option.OverlayIndex.length;++i){var item=option.OverlayIndex[i];if(item.Windows>=chart.Frame.SubFrame.length)continue;var itemString=(0,_stringify2.default)(item);var obj=JSON.parse(itemString);if(item.Index)obj.IndexName=item.Index;if(item.Windows>=0)obj.WindowIndex=item.Windows;chart.CreateOverlayWindowsIndex(obj);}}this.AdjustTitleHeight(chart);return chart;};//自定义指数历史K线图
|
|
1359
1359
|
this.CreateCustomKLineChartContainer=function(option){var chart=new CustomKLineChartContainer(this.CanvasElement);//创建改参数div
|
|
@@ -1385,7 +1385,7 @@ if(IFrameSplitOperator.IsNonEmptyArray(option.Windows)){var scriptData=new JSInd
|
|
|
1385
1385
|
}else if(item.API)//使用API挂接指标数据 API:{ Name:指标名字, Script:指标脚本可以为空, Args:参数可以为空, Url:指标执行地址 }
|
|
1386
1386
|
{var apiItem=item.API;chart.WindowIndex[index]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);}else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[index]=indexItem.Create();//创建子窗口的指标
|
|
1387
1387
|
chart.CreateWindowIndex(index);}else{var indexInfo=scriptData.Get(item.Index);if(!indexInfo)continue;indexInfo.ID=item.Index;var args=indexInfo.Args;if(item.Args)args=item.Args;if(item.IsShortTitle)indexInfo.IsShortTitle=item.IsShortTitle;if(item.TitleFont)indexInfo.TitleFont=item.TitleFont;if(IFrameSplitOperator.IsBool(item.IsSync))indexInfo.IsSync=item.IsSync;chart.WindowIndex[index]=new ScriptIndex(indexInfo.Name,indexInfo.Script,args,indexInfo);//脚本执行
|
|
1388
|
-
if(item.StringFormat>0)chart.WindowIndex[index].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[index].FloatPrecision=item.FloatPrecision;}}var frame=chart.Frame.SubFrame[index].Frame;if(IFrameSplitOperator.IsBool(item.Modify))frame.ModifyIndex=item.Modify;if(IFrameSplitOperator.IsBool(item.Change))frame.ChangeIndex=item.Change;if(IFrameSplitOperator.IsBool(item.Close))frame.CloseIndex=item.Close;if(IFrameSplitOperator.IsBool(item.Overlay))frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))frame.TitleWindow=item.TitleWindow;if(IFrameSplitOperator.IsNumber(item.YSplitType))chart.Frame.SubFrame[index].Frame.YSplitOperator.SplitType=item.YSplitType;if(!isNaN(item.TitleHeight))chart.Frame.SubFrame[index].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(IFrameSplitOperator.IsBool(item.IsDrawTitleBG))chart.Frame.SubFrame[index].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[
|
|
1388
|
+
if(item.StringFormat>0)chart.WindowIndex[index].StringFormat=item.StringFormat;if(item.FloatPrecision>=0)chart.WindowIndex[index].FloatPrecision=item.FloatPrecision;}}var frame=chart.Frame.SubFrame[index].Frame;if(IFrameSplitOperator.IsBool(item.Modify))frame.ModifyIndex=item.Modify;if(IFrameSplitOperator.IsBool(item.Change))frame.ChangeIndex=item.Change;if(IFrameSplitOperator.IsBool(item.Close))frame.CloseIndex=item.Close;if(IFrameSplitOperator.IsBool(item.Overlay))frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))frame.TitleWindow=item.TitleWindow;if(IFrameSplitOperator.IsNumber(item.YSplitType))chart.Frame.SubFrame[index].Frame.YSplitOperator.SplitType=item.YSplitType;if(!isNaN(item.TitleHeight))chart.Frame.SubFrame[index].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(IFrameSplitOperator.IsBool(item.IsDrawTitleBG))chart.Frame.SubFrame[index].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[index].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsBool(item.IsShowTitleArrow))chart.Frame.SubFrame[index].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)chart.Frame.SubFrame[index].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[index].Frame.IsShowOverlayIndexName=false;}}this.AdjustTitleHeight(chart);//叠加指标
|
|
1389
1389
|
if(IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex)){for(var i=0;i<option.OverlayIndex.length;++i){var item=option.OverlayIndex[i];if(item.Windows>=chart.Frame.SubFrame.length)continue;var itemString=(0,_stringify2.default)(item);var obj=JSON.parse(itemString);if(item.Index)obj.IndexName=item.Index;if(item.Windows>=0)obj.WindowIndex=item.Windows;chart.CreateOverlayWindowsIndex(obj);}}return chart;};this.CreateMinMinuteChartContainer=function(option){var chart=null;if(option.Type==="迷你分钟走势图横屏")chart=new MinuteChartHScreenContainer(this.CanvasElement);else chart=new MinuteChartContainer(this.CanvasElement);if(option.NetworkFilter)chart.NetworkFilter=option.NetworkFilter;var windowsCount=2;if(option.BeforeOpen)//集合竞价
|
|
1390
1390
|
{var item=option.BeforeOpen;if(IFrameSplitOperator.IsBool(item.IsShow))chart.IsShowBeforeData=item.IsShow;if(IFrameSplitOperator.IsNumber(item.Width))chart.ExtendWidth.Left=item.Width;if(IFrameSplitOperator.IsBool(item.IsShowMultiDay))chart.IsShowMultiDayBeforeData=item.IsShowMultiDay;if(IFrameSplitOperator.IsNumber(item.MulitiDayWidth))chart.MultiDayExtendWidth.Left=item.MulitiDayWidth;}if(option.AfterClose)//收盘集合竞价
|
|
1391
1391
|
{var item=option.AfterClose;if(IFrameSplitOperator.IsBool(item.IsShow))chart.IsShowAfterData=item.IsShow;if(IFrameSplitOperator.IsNumber(item.ShareVol))chart.ShareAfterVol=item.ShareVol;if(IFrameSplitOperator.IsNumber(item.Width))chart.ExtendWidth.Right=item.Width;if(IFrameSplitOperator.IsBool(item.IsShowMultiDay))chart.IsShowMultiDayAfterData=item.IsShowMultiDay;if(IFrameSplitOperator.IsNumber(item.MulitiDayWidth))chart.MultiDayExtendWidth.Right=item.MulitiDayWidth;}if(!option.Listener)option.Listener={KeyDown:false,Wheel:false};chart.Create(windowsCount,option.Listener);//创建子窗口
|
|
@@ -1419,7 +1419,7 @@ if(item.IsShowRightText==false)chart.Frame.SubFrame[i].Frame.YSplitOperator.IsSh
|
|
|
1419
1419
|
{for(var i=0;i<option.Overlay.length;++i){var item=option.Overlay[i];chart.OverlaySymbol(item.Symbol,item);}}if(option.ExtendChart){for(var i=0;i<option.ExtendChart.length;++i){var item=option.ExtendChart[i];chart.CreateExtendChart(item.Name,item);}}if(IFrameSplitOperator.IsNonEmptyArray(option.Windows)){//创建子窗口的指标
|
|
1420
1420
|
var scriptData=new JSIndexScript();for(var i=0;i<option.Windows.length;++i){var item=option.Windows[i];if(item.Script){chart.WindowIndex[i]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
|
|
1421
1421
|
}else{var indexItem=JSIndexMap.Get(item.Index);if(indexItem){chart.WindowIndex[i]=indexItem.Create();chart.CreateWindowIndex(i);}else{var indexInfo=scriptData.Get(item.Index);if(!indexInfo)continue;if(item.Lock)indexInfo.Lock=item.Lock;chart.WindowIndex[i]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo);//脚本执行
|
|
1422
|
-
}}if(item.Modify!=null)chart.Frame.SubFrame[i].Frame.ModifyIndex=item.Modify;if(item.Change!=null)chart.Frame.SubFrame[i].Frame.ChangeIndex=item.Change;if(item.Close!=null)chart.Frame.SubFrame[i].Frame.CloseIndex=item.Close;if(item.Overlay!=null)frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))chart.Frame.SubFrame[i].Frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))chart.Frame.SubFrame[i].Frame.TitleWindow=item.TitleWindow;if(IFrameSplitOperator.IsBool(item.IsDrawTitleBG))chart.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(item.
|
|
1422
|
+
}}if(item.Modify!=null)chart.Frame.SubFrame[i].Frame.ModifyIndex=item.Modify;if(item.Change!=null)chart.Frame.SubFrame[i].Frame.ChangeIndex=item.Change;if(item.Close!=null)chart.Frame.SubFrame[i].Frame.CloseIndex=item.Close;if(item.Overlay!=null)frame.OverlayIndex=item.Overlay;if(IFrameSplitOperator.IsBool(item.Export))frame.ExportData=item.Export;if(IFrameSplitOperator.IsBool(item.MaxMin))chart.Frame.SubFrame[i].Frame.MaxMinWindow=item.MaxMin;if(IFrameSplitOperator.IsBool(item.TitleWindow))chart.Frame.SubFrame[i].Frame.TitleWindow=item.TitleWindow;if(IFrameSplitOperator.IsBool(item.IsDrawTitleBG))chart.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))chart.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(IFrameSplitOperator.IsBool(item.IsShowTitleArrow))chart.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)chart.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))chart.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))chart.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;}}this.AdjustTitleHeight(chart);return chart;};//深度图
|
|
1423
1423
|
this.CreateDepthChartContainer=function(option){var chart=null;chart=new DepthChartContainer(this.CanvasElement);if(option.NetworkFilter)chart.NetworkFilter=option.NetworkFilter;if(option.EnableScrollUpDown==true)chart.EnableScrollUpDown=option.EnableScrollUpDown;if(IFrameSplitOperator.IsPlusNumber(option.MaxVolRate))chart.MaxVolRate=option.MaxVolRate;if(option.ZoomStepPixel>0)chart.ZoomStepPixel=option.ZoomStepPixel;if(IFrameSplitOperator.IsString(option.SplashTitle))chart.LoadDataSplashTitle=option.SplashTitle;if(IFrameSplitOperator.IsBool(option.EnableVerifyRecvData))chart.EnableVerifyRecvData=option.EnableVerifyRecvData;if(option.Language){var value=g_JSChartLocalization.GetLanguageID(option.Language);if(IFrameSplitOperator.IsNumber(value))chart.LanguageID=value;}chart.Create(option.Listener);if(option.Border){if(IFrameSplitOperator.IsNumber(option.Border.Left))chart.Frame.ChartBorder.Left=option.Border.Left;else option.Border.Left=chart.Frame.ChartBorder.Left;if(IFrameSplitOperator.IsNumber(option.Border.Right))chart.Frame.ChartBorder.Right=option.Border.Right;else option.Border.Right=chart.Frame.ChartBorder.Right;if(IFrameSplitOperator.IsNumber(option.Border.Top))chart.Frame.ChartBorder.Top=option.Border.Top;else option.Border.Top=chart.Frame.ChartBorder.Top;if(IFrameSplitOperator.IsNumber(option.Border.Bottom))chart.Frame.ChartBorder.Bottom=option.Border.Bottom;else option.Border.Bottom=chart.Frame.ChartBorder.Bottom;}this.AdjustChartBorder(chart);if(option.CorssCursorTouchEnd===true)chart.CorssCursorTouchEnd=option.CorssCursorTouchEnd;if(option.CorssCursorInfo){var item=option.CorssCursorInfo;if(IFrameSplitOperator.IsNumber(item.HPenType))chart.ChartCorssCursor.HPenType=item.HPenType;if(IFrameSplitOperator.IsNumber(item.VPenType))chart.ChartCorssCursor.VPenType=item.VPenType;if(IFrameSplitOperator.IsBool(item.IsShowTooltip))chart.ChartCorssCursor.IsShowTooltip=item.IsShowTooltip;}if(option.Frame){var item=option.Frame;if(item.SplitCount)chart.Frame.YSplitOperator.SplitCount=item.SplitCount;if(IFrameSplitOperator.IsNumber(item.SplitType))chart.Frame.YSplitOperator.SplitType=item.SplitType;if(IFrameSplitOperator.IsNumber(item.Height))chart.Frame.Height=item.Height;if(IFrameSplitOperator.IsNumber(item.YLineType))chart.Frame.YSplitOperator.LineType=item.YLineType;if(IFrameSplitOperator.IsNumber(item.XLineType))chart.Frame.XSplitOperator.LineType=item.XLineType;if(Array.isArray(item.IgnoreYValue))chart.Frame.YSplitOperator.IgnoreYValue=item.IgnoreYValue;if(item.IsShowLeftText===false||item.IsShowLeftText===true){chart.Frame.IsShowYText[0]=item.IsShowLeftText;chart.Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
|
|
1424
1424
|
}if(item.IsShowRightText===false||item.IsShowRightText===true){chart.Frame.IsShowYText[1]=item.IsShowRightText;chart.Frame.YSplitOperator.IsShowRightText=item.IsShowRightText;//显示右边刻度
|
|
1425
1425
|
}if(item.IsShowXLine==false)chart.Frame.IsShowXLine=item.IsShowXLine;if(item.IsShowYLine==false)chart.Frame.IsShowYLine=item.IsShowYLine;if(IFrameSplitOperator.IsNumber(item.XSplitCount))chart.Frame.XSplitOperator.SplitCount=item.XSplitCount;//X轴刻度个数 半边的
|
|
@@ -2000,9 +2000,9 @@ this.GetExtendChartByClassNameV2=function(name){var aryChart=[];for(var i=0;i<th
|
|
|
2000
2000
|
{var width=0;for(var i=0;i<this.ExtendChartPaint.length;++i){var item=this.ExtendChartPaint[i];if(!item)continue;if(item.ClassName=="StockChip"||item.ClassName=="DrawToolsButton"){if(IFrameSplitOperator.IsNumber(item.Width))width+=item.Width;}}return width;};//删除扩展画法
|
|
2001
2001
|
this.DeleteExtendChart=function(data){if(data.Index>=this.ExtendChartPaint.length)return;if(this.ExtendChartPaint[data.Index]!=data.Chart)return;if(typeof data.Chart.Clear=='function')data.Chart.Clear();this.ExtendChartPaint.splice(data.Index,1);};//全屏提示信息 { Title:提示信息, Draw:false/true 是否立即重绘, }
|
|
2002
2002
|
this.EnableSplashScreen=function(option){if(!this.ChartSplashPaint)return;if(!option)return;if(IFrameSplitOperator.IsString(option.Title))this.ChartSplashPaint.SetTitle(option.Title);this.ChartSplashPaint.EnableSplash(true);if(option.Draw===false)return;this.Draw();};//设置指标窗口属性 windowItem=SetOption.Windows[i], frameItem=SetOption.Frames[i];
|
|
2003
|
-
this.SetSubFrameAttribute=function(subFrame,windowItem,frameItem){if(!subFrame||!subFrame.Frame)return;var frame=subFrame.Frame;if(windowItem){if(IFrameSplitOperator.IsBool(windowItem.Modify))frame.ModifyIndex=windowItem.Modify;if(IFrameSplitOperator.IsBool(windowItem.Change))frame.ChangeIndex=windowItem.Change;if(IFrameSplitOperator.IsBool(windowItem.Close))frame.CloseIndex=windowItem.Close;if(IFrameSplitOperator.IsBool(windowItem.Overlay))frame.OverlayIndex=windowItem.Overlay;if(IFrameSplitOperator.IsBool(windowItem.IsDrawTitleBG))frame.IsDrawTitleBG=windowItem.IsDrawTitleBG;if(IFrameSplitOperator.IsNumber(windowItem.TitleHeight))frame.ChartBorder.TitleHeight=windowItem.TitleHeight;else windowItem.TitleHeight=frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsBool(windowItem.
|
|
2003
|
+
this.SetSubFrameAttribute=function(subFrame,windowItem,frameItem){if(!subFrame||!subFrame.Frame)return;var frame=subFrame.Frame;if(windowItem){if(IFrameSplitOperator.IsBool(windowItem.Modify))frame.ModifyIndex=windowItem.Modify;if(IFrameSplitOperator.IsBool(windowItem.Change))frame.ChangeIndex=windowItem.Change;if(IFrameSplitOperator.IsBool(windowItem.Close))frame.CloseIndex=windowItem.Close;if(IFrameSplitOperator.IsBool(windowItem.Overlay))frame.OverlayIndex=windowItem.Overlay;if(IFrameSplitOperator.IsBool(windowItem.IsDrawTitleBG))frame.IsDrawTitleBG=windowItem.IsDrawTitleBG;if(IFrameSplitOperator.IsNumber(windowItem.TitleHeight))frame.ChartBorder.TitleHeight=windowItem.TitleHeight;else windowItem.TitleHeight=frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsBool(windowItem.IsShowTitleArrow))frame.IsShowTitleArrow=windowItem.IsShowTitleArrow;if(IFrameSplitOperator.IsBool(windowItem.IsShowIndexName))frame.IsShowIndexName=windowItem.IsShowIndexName;if(IFrameSplitOperator.IsNumber(windowItem.IndexParamSpace))frame.IndexParamSpace=windowItem.IndexParamSpace;if(IFrameSplitOperator.IsNumber(windowItem.IndexTitleSpace))frame.IndexTitleSpace=windowItem.IndexTitleSpace;}if(frameItem){if(frameItem.SplitCount)frame.YSplitOperator.SplitCount=frameItem.SplitCount;if(IFrameSplitOperator.IsBool(frameItem.IsShowXLine))frame.IsShowXLine=frameItem.IsShowXLine;if(IFrameSplitOperator.IsBool(frameItem.IsShowYLine))frame.IsShowYLine=frameItem.IsShowYLine;if(IFrameSplitOperator.IsBool(frameItem.IsShowLeftText)){frame.IsShowYText[0]=frameItem.IsShowLeftText;frame.YSplitOperator.IsShowLeftText=frameItem.IsShowLeftText;//显示左边刻度
|
|
2004
2004
|
}if(IFrameSplitOperator.IsBool(frameItem.IsShowRightText)){frame.IsShowYText[1]=frameItem.IsShowRightText;frame.YSplitOperator.IsShowRightText=frameItem.IsShowRightText;//显示右边刻度
|
|
2005
|
-
}if(IFrameSplitOperator.IsNumber(frameItem.Height)&&frameItem.Height>=0)subFrame.Height=frameItem.Height;}};this.SetSubFrameOption=function(subFrame,option){if(!option)return;if(option.Window){var item=option.Window;if(item.Modify!=null)subFrame.Frame.ModifyIndex=item.Modify;if(item.Change!=null)subFrame.Frame.ChangeIndex=item.Change;if(item.Close!=null)subFrame.Frame.CloseIndex=item.Close;if(item.Overlay!=null)subFrame.Frame.OverlayIndex=item.Overlay;if(item.IsDrawTitleBG==true)subFrame.Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))subFrame.Frame.IsShowNameArrow=item.IsShowNameArrow;if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))subFrame.Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))subFrame.Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}}if(IFrameSplitOperator.IsNumber(option.SplitCount))subFrame.Frame.YSplitOperator.SplitCount=option.SplitCount;if(IFrameSplitOperator.IsNumber(option.TitleHeight))subFrame.Frame.ChartBorder.TitleHeight=option.TitleHeight;if(IFrameSplitOperator.IsBool(option.
|
|
2005
|
+
}if(IFrameSplitOperator.IsNumber(frameItem.Height)&&frameItem.Height>=0)subFrame.Height=frameItem.Height;}};this.SetSubFrameOption=function(subFrame,option){if(!option)return;if(option.Window){var item=option.Window;if(item.Modify!=null)subFrame.Frame.ModifyIndex=item.Modify;if(item.Change!=null)subFrame.Frame.ChangeIndex=item.Change;if(item.Close!=null)subFrame.Frame.CloseIndex=item.Close;if(item.Overlay!=null)subFrame.Frame.OverlayIndex=item.Overlay;if(item.IsDrawTitleBG==true)subFrame.Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))subFrame.Frame.IsShowNameArrow=item.IsShowNameArrow;if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))subFrame.Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))subFrame.Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}}if(IFrameSplitOperator.IsNumber(option.SplitCount))subFrame.Frame.YSplitOperator.SplitCount=option.SplitCount;if(IFrameSplitOperator.IsNumber(option.TitleHeight))subFrame.Frame.ChartBorder.TitleHeight=option.TitleHeight;if(IFrameSplitOperator.IsBool(option.IsShowTitleArrow))subFrame.Frame.IsShowTitleArrow=option.IsShowTitleArrow;if(IFrameSplitOperator.IsBool(option.IsShowIndexName))subFrame.Frame.IsShowIndexName=option.IsShowIndexName;if(IFrameSplitOperator.IsBool(option.IsShowOverlayIndexName))subFrame.Frame.IsShowOverlayIndexName=option.IsShowOverlayIndexName;if(IFrameSplitOperator.IsNumber(option.IndexParamSpace))subFrame.Frame.IndexParamSpace=option.IndexParamSpace;if(IFrameSplitOperator.IsBool(option.IsShowXLine))subFrame.Frame.IsShowXLine=option.IsShowXLine;if(IFrameSplitOperator.IsBool(option.IsShowYLine))subFrame.Frame.IsShowYLine=option.IsShowYLine;if(IFrameSplitOperator.IsBool(option.IsShowIndexTitle))subFrame.Frame.IsShowIndexTitle=option.IsShowIndexTitle;if(IFrameSplitOperator.IsBool(option.IsShowLeftText)){subFrame.Frame.IsShowYText[0]=option.IsShowLeftText;subFrame.Frame.YSplitOperator.IsShowLeftText=option.IsShowLeftText;//显示左边刻度
|
|
2006
2006
|
}if(IFrameSplitOperator.IsBool(option.IsShowRightText)){subFrame.Frame.IsShowYText[1]=option.IsShowRightText;subFrame.Frame.YSplitOperator.IsShowRightText=option.IsShowRightText;//显示右边刻度
|
|
2007
2007
|
}};this.AddNewSubFrame=function(option){var _this12=this;var index=this.Frame.SubFrame.length;var subFrame=this.CreateSubFrameItem(index);var pixelRatio=GetDevicePixelRatio();subFrame.Frame.ChartBorder.TitleHeight*=pixelRatio;this.Frame.SubFrame[index]=subFrame;var titlePaint=new DynamicChartTitlePainting();titlePaint.Frame=this.Frame.SubFrame[index].Frame;titlePaint.Canvas=this.Canvas;titlePaint.LanguageID=this.LanguageID;titlePaint.GetEventCallback=function(id){return _this12.GetEventCallback(id);};this.TitlePaint[index+1]=titlePaint;this.SetSubFrameOption(subFrame,option);//最后一个显示X轴坐标
|
|
2008
2008
|
for(var i=0;i<this.Frame.SubFrame.length;++i){var item=this.Frame.SubFrame[i].Frame;if(i==this.Frame.SubFrame.length-1)item.XSplitOperator.ShowText=true;else item.XSplitOperator.ShowText=false;}this.UpdataDataoffset();//更新数据偏移
|
|
@@ -2137,7 +2137,7 @@ this.Data;//主数据
|
|
|
2137
2137
|
this.IsLocked=false;//是否上锁
|
|
2138
2138
|
this.LockPaint=null;this.YSpecificMaxMin=null;//指定Y轴最大最小值
|
|
2139
2139
|
this.IsShowBorder=true;//是否显示边框
|
|
2140
|
-
this.
|
|
2140
|
+
this.IsShowTitleArrow=true;//是否显示指标信息上涨下跌箭头
|
|
2141
2141
|
this.IsShowIndexName=true;//是否显示指标名字
|
|
2142
2142
|
this.IsShowOverlayIndexName=true;//是否显示叠加指标名字
|
|
2143
2143
|
//this.OverlayIndexType= { Position:0, LineSpace:5 };
|
|
@@ -3841,13 +3841,15 @@ this.KLineDrawType=0;this.ClassName='ChartVolStick';this.PtInChart=this.PtInBar;
|
|
|
3841
3841
|
y=yBottom-height;if(this.KLineDrawType==6)//完全空心柱
|
|
3842
3842
|
{this.Canvas.strokeStyle=barColor.Color;this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(left),ToFixedPoint(y),ToFixedRect(dataWidth),height);this.Canvas.stroke();}else if(bUp&&(this.KLineDrawType==1||this.KLineDrawType==2||this.KLineDrawType==3))//空心柱子
|
|
3843
3843
|
{this.Canvas.strokeStyle=this.UpColor;this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(left),ToFixedPoint(y),ToFixedRect(dataWidth),height);this.Canvas.stroke();}else{this.Canvas.fillRect(ToFixedRect(left),y,ToFixedRect(dataWidth),height);}}}else//太细了直接话线
|
|
3844
|
-
{for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];var kItem=this.HistoryData.Data[i];if(value==null||kItem==null)continue;var y=this.ChartFrame.GetYFromData(value);if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;var x=left+(right-left)/2;}if(x>chartright)break;var barColor=this.
|
|
3845
|
-
this.
|
|
3844
|
+
{var preKItem=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];var kItem=this.HistoryData.Data[i];if(value==null||kItem==null)continue;var y=this.ChartFrame.GetYFromData(value);if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;var x=left+(right-left)/2;}if(x>chartright)break;if(isMinute){var barColor=this.GetMinuteBarColor(kItem,preKItem);//分时图颜色单独计算
|
|
3845
|
+
}else{var barColor=this.GetBarColor(kItem);}this.Canvas.strokeStyle=barColor.Color;//var x=this.ChartFrame.GetXFromIndex(j);
|
|
3846
|
+
this.Canvas.beginPath();this.Canvas.moveTo(ToFixedPoint(x),y);this.Canvas.lineTo(ToFixedPoint(x),yBottom);this.Canvas.stroke();preKItem=kItem;}}};this.HScreenDraw=function()//横屏画法
|
|
3846
3847
|
{var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartBottom=border.BottomEx;var xPointCount=this.ChartFrame.XPointCount;var lockRect=this.GetLockRect();if(lockRect)chartBottom=lockRect.Top;var yBottom=this.ChartFrame.GetYFromData(0);if(dataWidth>=4){yBottom=ToFixedRect(yBottom);for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];var kItem=this.HistoryData.Data[i];if(value==null||kItem==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartBottom)break;var y=this.ChartFrame.GetYFromData(value);var barColor=this.GetBarColor(kItem);var bUp=barColor.IsUp;this.Canvas.fillStyle=barColor.Color;var height=ToFixedRect(y-yBottom);//高度调整为整数
|
|
3847
3848
|
if(bUp&&(this.KLineDrawType==1||this.KLineDrawType==2||this.KLineDrawType==3))//空心柱子
|
|
3848
3849
|
{this.Canvas.strokeStyle=this.UpColor;this.Canvas.beginPath();this.Canvas.rect(ToFixedPoint(yBottom),ToFixedPoint(left),height,ToFixedRect(dataWidth));this.Canvas.stroke();}else{this.Canvas.fillRect(yBottom,ToFixedRect(left),height,ToFixedRect(dataWidth));}}}else//太细了直接话线
|
|
3849
3850
|
{for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];var kItem=this.HistoryData.Data[i];if(value==null||kItem==null)continue;var y=this.ChartFrame.GetYFromData(value);var x=this.ChartFrame.GetXFromIndex(j);if(x>chartBottom)break;var barColor=this.GetBarColor(kItem);var bUp=barColor.IsUp;this.Canvas.strokeStyle=barColor.Color;//var x=this.ChartFrame.GetXFromIndex(j);
|
|
3850
3851
|
this.Canvas.beginPath();this.Canvas.moveTo(y,ToFixedPoint(x));this.Canvas.lineTo(yBottom,ToFixedPoint(x));this.Canvas.stroke();}}};this.GetMaxMin=function(){var xPointCount=this.ChartFrame.XPointCount;var range={};range.Min=null;range.Max=null;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(!IFrameSplitOperator.IsNumber(range.Max)||range.Max<value)range.Max=value;if(!IFrameSplitOperator.IsNumber(range.Min)||range.Min>value)range.Min=value;}if(range.Max>0&&range.Min>0)range.Min=0;else if(range.Max<0&&range.Min<0)range.Max=0;return range;};this.GetBarColor=function(kItem){if(kItem.Close>=kItem.Open)return{Color:this.UpColor,IsUp:true};//颜色, 是否是上涨
|
|
3852
|
+
else return{Color:this.DownColor,IsUp:false};};this.GetMinuteBarColor=function(kItem,preItem){var prePrice=kItem.YClose;if(preItem)prePrice=preItem.Close;if(kItem.Close>=prePrice)return{Color:this.UpColor,IsUp:true};//颜色, 是否是上涨
|
|
3851
3853
|
else return{Color:this.DownColor,IsUp:false};};this.GetItemData=function(indexData){if(!indexData)return null;if(!IFrameSplitOperator.IsNumber(indexData.Index))return null;if(!this.HistoryData||!IFrameSplitOperator.IsNonEmptyArray(this.HistoryData.Data))return null;if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return null;var index=indexData.Index;if(index<0||index>=this.Data.Data.length||index>=this.HistoryData.Data.length)return null;var item=this.Data.Data[index];var kItem=this.HistoryData.Data[index];return[{Value:item,Color:this.GetBarColor(kItem).Color,Name:this.Name}];};}// VERTLINE(HIGH>=HHV(HIGH,20),1)表示在创20天新高画垂直虚线。
|
|
3852
3854
|
// 支持横屏
|
|
3853
3855
|
function ChartVericaltLine(){this.newMethod=IChartPainting;//派生
|
|
@@ -4910,7 +4912,8 @@ IFrameSplitOperator.IsPlusNumber=function(value){if(value==null)return false;if(
|
|
|
4910
4912
|
IFrameSplitOperator.IsInteger=function(x){return typeof x==='number'&&x%1===0;};//判断字段是否存在
|
|
4911
4913
|
IFrameSplitOperator.IsObjectExist=function(obj){if(obj===undefined)return false;if(obj==null)return false;return true;};//是否时bool
|
|
4912
4914
|
IFrameSplitOperator.IsBool=function(value){if(value===true||value===false)return true;return false;};IFrameSplitOperator.IsString=function(value){var type=typeof value==='undefined'?'undefined':(0,_typeof3.default)(value);if(type=='string')return true;return false;};//是否是非空的数组
|
|
4913
|
-
IFrameSplitOperator.IsNonEmptyArray=function(ary){if(!ary)return false;if(!Array.isArray(ary))return false;return ary.length>0;};IFrameSplitOperator.IsFloat=function(value){if(value===undefined)return false;if(value==null)return false;if(isNaN(value))return false;return value!=parseInt(value);}
|
|
4915
|
+
IFrameSplitOperator.IsNonEmptyArray=function(ary){if(!ary)return false;if(!Array.isArray(ary))return false;return ary.length>0;};IFrameSplitOperator.IsFloat=function(value){if(value===undefined)return false;if(value==null)return false;if(isNaN(value))return false;return value!=parseInt(value);};//是否有效
|
|
4916
|
+
IFrameSplitOperator.IsVaild=function(value){if(isNaN(value))return false;if(value==null)return false;if(value===undefined)return false;return true;};IFrameSplitOperator.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;};function FrameSplitKLinePriceY(){this.newMethod=IFrameSplitOperator;//派生
|
|
4914
4917
|
this.newMethod();delete this.newMethod;this.CoordinateType=0;//坐标类型 0=普通坐标 1=百分比坐标 (右边坐标刻度) 2=对数对标 3=等比坐标 4=等分坐标 5=黄金分割
|
|
4915
4918
|
this.Symbol;this.Data;//K线数据 (计算百分比坐标)
|
|
4916
4919
|
this.FrameSplitData2;//坐标轴分割方法(计算百分比刻度)
|
|
@@ -5508,7 +5511,7 @@ this.DynamicTitle={OutName:null,OutValue:null};this.OverlayDynamicTitle=new _map
|
|
|
5508
5511
|
this.ReloadResource=function(){this.Font=g_JSChartResource.TitleFont;this.TitleColor=g_JSChartResource.DefaultTextColor;this.OverlayIndexType.BGColor=g_JSChartResource.OverlayIndexTitleBGColor;};this.SetDynamicTitleData=function(outName,args,data){if(!data.OutName)data.OutName=new _map2.default();else data.OutName.clear();if(!data.OutValue)data.OutValue=new _map2.default();else data.OutValue.clear();var mapArgs=new _map2.default();for(var i in args){var item=args[i];mapArgs.set('{'+item.Name+'}',item);}for(var i in outName){var item=outName[i];if(item.DynamicName){var aryFond=item.DynamicName.match(/{\w*}/i);if(!aryFond||aryFond.length<=0){data.OutName.set(item.Name,item.DynamicName);}else{var dyName=item.DynamicName;var bFind=true;for(var j=0;j<aryFond.length;++j){var findItem=aryFond[j];if(mapArgs.has(findItem)){var value=mapArgs.get(findItem).Value;dyName=dyName.replace(findItem,value.toString());}else{bFind=false;break;}}if(bFind)data.OutName.set(item.Name,dyName);}}if(item.DynamicValue){data.OutValue.set(item.Name,item.DynamicValue);}}};this.SetDynamicTitle=function(outName,args,overlayID){if(IFrameSplitOperator.IsString(overlayID)){var dynamicTitle=null;if(this.OverlayDynamicTitle.has(overlayID)){dynamicTitle=this.OverlayDynamicTitle.get(overlayID);}else{dynamicTitle={OutName:null,OutValue:null};this.OverlayDynamicTitle.set(overlayID,dynamicTitle);}this.SetDynamicTitleData(outName,args,dynamicTitle);}else{this.SetDynamicTitleData(outName,args,this.DynamicTitle);}};this.GetDynamicOutName=function(key,overlayID){if(IFrameSplitOperator.IsString(overlayID)){if(!this.OverlayDynamicTitle.has(overlayID))return null;var dynamicTitle=this.OverlayDynamicTitle.get(overlayID);var outName=dynamicTitle.OutName;}else{var outName=this.DynamicTitle.OutName;}if(!outName||outName.size<=0)return null;if(!outName.has(key))return null;return outName.get(key);};this.GetDynamicOutValue=function(key,value){var outValue=this.DynamicTitle.OutValue;if(!outValue||outValue.size<=0)return null;if(!outValue.has(key))return null;var strFormat=outValue.get(key);strFormat=strFormat.replace('{Value}',value);return strFormat;};this.IsClickTitle=function(x,y)//是否点击了指标标题
|
|
5509
5512
|
{if(!this.TitleRect)return false;if(x>this.TitleRect.Left&&x<this.TitleRect.Left+this.TitleRect.Width&&y>this.TitleRect.Top&&y<this.TitleRect.Top+this.TitleRect.Height){return true;}return false;};this.FormatValue=function(value,item){if(item.StringFormat==STRING_FORMAT_TYPE.DEFAULT)return IFrameSplitOperator.FormatValueString(value,item.FloatPrecision,this.LanguageID);else if(item.StringFormat==STRING_FORMAT_TYPE.THOUSANDS)return IFrameSplitOperator.FormatValueThousandsString(value,item.FloatPrecision);else if(item.StringFormat==STRING_FORMAT_TYPE.ORIGINAL)return value.toFixed(item.FloatPrecision).toString();else if(item.StringFormat==STRING_FORMAT_TYPE.INTEGER)return IFrameSplitOperator.FromatIntegerString(value,item.FloatPrecision,this.LanguageID);};this.FormatMultiReport=function(data,format){var text="";for(var i in data){var item=data[i];var quarter=item.Quarter;var year=item.Year;var value=item.Value;if(text.length>0)text+=',';text+=year.toString();switch(quarter){case 1:text+='一季报 ';break;case 2:text+='半年报 ';break;case 3:text+='三季报 ';break;case 4:text+='年报 ';break;}text+=this.FormatValue(value,format);}return text;};this.FromatMultiDataLine=function(value,dataInfo){var text="";if(Array.isArray(value)){for(var i=0;i<value.length;++i){var item=value[i];if(item.Type==0)continue;if(!IFrameSplitOperator.IsNumber(item.Value))continue;var strValue=this.FormatValue(item.Value,dataInfo);if(text.length>0)text+=',';text+=strValue;}}else{if(value.Type!=0&&IFrameSplitOperator.IsNumber(value.Value)){text=this.FormatValue(value.Value,dataInfo);}}if(text.length<=0)return null;return text;};//多变量输出
|
|
5510
5513
|
this.FromatStackedBarTitle=function(aryBar,dataInfo){if(!IFrameSplitOperator.IsNonEmptyArray(aryBar))return null;if(!IFrameSplitOperator.IsNonEmptyArray(dataInfo.Color))return null;var aryText=[];for(var i=0;i<aryBar.length;++i){var value=aryBar[i];if(!IFrameSplitOperator.IsNumber(value))continue;var item={Text:value.toFixed(2)};if(dataInfo.Name&&dataInfo.Name[i])item.Name=dataInfo.Name[i];item.Color=dataInfo.Color[i];aryText.push(item);}if(aryText.length<=0)return null;return aryText;};this.ForamtMultiLineTitle=function(dataIndex,dataInfo){if(!IFrameSplitOperator.IsNonEmptyArray(dataInfo.Lines))return null;var aryText=[];for(var i=0;i<dataInfo.Lines.length;++i){var line=dataInfo.Lines[i];for(var j=0;j<line.Point.length;++j){var item=line.Point[j];if(item.Index==dataIndex){var item={Text:item.Value.toFixed(2)};if(aryText.length==0)item.Name=dataInfo.Name;item.Color=line.Color;aryText.push(item);break;}}}if(!IFrameSplitOperator.IsNonEmptyArray(aryText))return null;return aryText;};this.ForamtMultiPointTitle=function(dataIndex,dataInfo){if(!IFrameSplitOperator.IsNonEmptyArray(dataInfo.PointGroup))return null;var aryText=[];for(var i=0;i<dataInfo.PointGroup.length;++i){var groupItem=dataInfo.PointGroup[i];for(var j=0;j<groupItem.Point.length;++j){var item=groupItem.Point[j];if(item.Index==dataIndex){var item={Text:item.Value.toFixed(2)};if(aryText.length==0)item.Name=dataInfo.Name;item.Color=groupItem.BGColor;aryText.push(item);break;}}}if(!IFrameSplitOperator.IsNonEmptyArray(aryText))return null;return aryText;};this.FormatVPVRTitle=function(pt,dataInfo){var chart=dataInfo.Chart;var aryText=[];if(chart.VolType==0){var item={Text:" Up/Down ",Color:this.TitleColor};aryText.push(item);}else{var item={Text:" Total ",Color:this.TitleColor};aryText.push(item);}if(!IFrameSplitOperator.IsNumber(pt.Y))return aryText;var top=this.Frame.ChartBorder.GetTopEx();var bottom=this.Frame.ChartBorder.GetBottomEx();if(pt.Y<top||pt.Y>bottom)return aryText;var yPrice=this.Frame.GetYData(pt.Y);var find=null;for(var i=0;i<dataInfo.Data.Data.length;++i){var item=dataInfo.Data.Data[i];if(yPrice>=item.Price-dataInfo.Data.PriceOffset/2&&yPrice<item.Price+dataInfo.Data.PriceOffset/2){find=item;break;}}if(!find)return null;if(chart.VolType==0){var total=0;for(var i=0;i<find.Vol.length;++i){var volItem=find.Vol[i];if(!IFrameSplitOperator.IsNumber(volItem.Value))continue;var item={Text:IFrameSplitOperator.FormatVolString(volItem.Value,this.LanguageID)};total+=volItem.Value;if(IFrameSplitOperator.IsNumber(volItem.ColorID))item.Color=chart.BarColor[volItem.ColorID];else if(volItem.Color)item.Color=volItem.Color;aryText.push(item);}var item={Text:IFrameSplitOperator.FormatVolString(total,this.LanguageID),Color:this.TitleColor};aryText.push(item);}else{if(find.TotalVol&&IFrameSplitOperator.IsNumber(find.TotalVol.Value)){var item={Text:IFrameSplitOperator.FormatVolString(find.TotalVol.Value,this.LanguageID)};if(IFrameSplitOperator.IsNumber(find.TotalVol.ColorID))item.Color=chart.BarColor[find.TotalVol.ColorID];else if(find.TotalVol.Color)item.Color=find.TotalVol.Color;aryText.push(item);}}return aryText;};this.IsShowLastData=function(){var isShowLastData=false;if(this.DrawStatus&&this.DrawStatus.IsTitleShowLatestData){var status=this.DrawStatus;if(!IFrameSplitOperator.IsNumber(status.FrameID)||status.FrameID<0)isShowLastData=true;else if(status.CorssCursorTouchEnd&&status.IsOnTouch==false)isShowLastData=true;}else if(this.GlobalOption&&this.GlobalOption.IsDisplayLatest){isShowLastData=true;}return isShowLastData;};this.OnDrawTitleEvent=function(){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_INDEXTITLE_DRAW);if(!event)return;var data={Index:null,Data:this.Data,Title:this.Title,Script:this.Script,FrameID:this.Frame.Identify,OverlayIndex:this.OverlayIndex,IsShowTitleOnly:false};if(this.ArgumentsText)data.ArgumentsText=this.ArgumentsText;if(this.Frame&&this.Frame.ChartBorder)data.IsShowTitleOnly=this.Frame.ChartBorder.IsShowTitleOnly;if(IFrameSplitOperator.IsNumber(this.CursorIndex)){var index=Math.abs(this.CursorIndex);index=parseInt(index.toFixed(0));data.Index=index;//当前屏数据索引
|
|
5511
|
-
}var pixelTatio=GetDevicePixelRatio();var border=this.Frame.GetBorder();data.Left=border.LeftEx/pixelTatio;data.Top=border.Top/pixelTatio;data.Right=border.RightEx/pixelTatio;event.Callback(event,data,this);};this.IsSelectedChart=function(id){if(!id)return false;if(!this.SelectedChart)return false;if(!this.SelectedChart.Selected)return false;return this.SelectedChart.Selected.Identify==id;};this.Draw=function(moveonPoint,mouseStatus){this.Buttons=[];if(this.Frame.IsMinSize)return;this.IsKLineFrame=this.Frame.ClassName=='KLineFrame'||this.Frame.ClassName=='KLineHScreenFrame';this.IsDrawTitleBG=this.Frame.IsDrawTitleBG;this.IsShowNameArrow=this.Frame.IsShowNameArrow;this.IsShowUpDownArrow=this.Frame.
|
|
5514
|
+
}var pixelTatio=GetDevicePixelRatio();var border=this.Frame.GetBorder();data.Left=border.LeftEx/pixelTatio;data.Top=border.Top/pixelTatio;data.Right=border.RightEx/pixelTatio;event.Callback(event,data,this);};this.IsSelectedChart=function(id){if(!id)return false;if(!this.SelectedChart)return false;if(!this.SelectedChart.Selected)return false;return this.SelectedChart.Selected.Identify==id;};this.Draw=function(moveonPoint,mouseStatus){this.Buttons=[];if(this.Frame.IsMinSize)return;this.IsKLineFrame=this.Frame.ClassName=='KLineFrame'||this.Frame.ClassName=='KLineHScreenFrame';this.IsDrawTitleBG=this.Frame.IsDrawTitleBG;this.IsShowNameArrow=this.Frame.IsShowNameArrow;this.IsShowUpDownArrow=this.Frame.IsShowTitleArrow;this.IsShowIndexName=this.Frame.IsShowIndexName;this.IsShowOverlayIndexName=this.Frame.IsShowOverlayIndexName;this.OverlayIndexType.Position=this.Frame.OverlayIndexType.Position;this.OverlayIndexType.LineSpace=this.Frame.OverlayIndexType.LineSpace;this.ParamSpace=this.Frame.IndexParamSpace;this.TitleSpace=this.Frame.IndexTitleSpace;this.TitleRect=null;this.GlobalOption=this.Frame.GlobalOption;this.OnDrawTitleEvent();if(this.Frame.IsShowIndexTitle==false)return;if(g_JSChartResource.IsDOMFrameTitle===true)return;if(!this.Data)return;if(this.Frame.ChartBorder.TitleHeight<5)return;if(this.CursorIndex==null&&!(this.GlobalOption&&this.GlobalOption.IsDisplayLatest))return;if(this.Frame.IsHScreen===true){this.Canvas.save();this.HScreenDraw();this.Canvas.restore();/* 测试用
|
|
5512
5515
|
if (this.TitleRect)
|
|
5513
5516
|
{
|
|
5514
5517
|
this.Canvas.strokeStyle='rgba(200,0,50,0.5)';
|
|
@@ -7003,7 +7006,7 @@ var indexName=[{Index:"RSI"},{Index:"MACD"},{Index:"VOL"},{Index:"UOS"},{Index:"
|
|
|
7003
7006
|
if(option&&option.Windows.length>0)indexName=option.Windows;//外部设置增加窗口的默认指标
|
|
7004
7007
|
var scriptData=new JSIndexScript();for(var i=currentLength;i<count;++i){var item=indexName[i%indexName.length];var name=item.Index;var indexInfo=scriptData.Get(name);var args=indexInfo.Args;if(item.Args)args=item.Args;var indexData={Name:indexInfo.Name,Script:indexInfo.Script,Args:args,ID:item.Index,//扩展属性 可以是空
|
|
7005
7008
|
KLineType:indexInfo.KLineType,YSpecificMaxMin:indexInfo.YSpecificMaxMin,YSplitScale:indexInfo.YSplitScale,FloatPrecision:indexInfo.FloatPrecision,Condition:indexInfo.Condition,OutName:indexInfo.OutName};this.WindowIndex[i]=new ScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData);//脚本执行
|
|
7006
|
-
var subFrame=this.Frame.SubFrame[i];if(item.Modify!=null)this.Frame.SubFrame[i].Frame.ModifyIndex=item.Modify;if(item.Change!=null)this.Frame.SubFrame[i].Frame.ChangeIndex=item.Change;if(item.Close!=null)this.Frame.SubFrame[i].Frame.CloseIndex=item.Close;if(item.Overlay!=null)chart.Frame.SubFrame[i].Frame.OverlayIndex=item.Overlay;if(item.IsDrawTitleBG==true)this.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))this.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;else item.TitleHeight=this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;if(item.
|
|
7009
|
+
var subFrame=this.Frame.SubFrame[i];if(item.Modify!=null)this.Frame.SubFrame[i].Frame.ModifyIndex=item.Modify;if(item.Change!=null)this.Frame.SubFrame[i].Frame.ChangeIndex=item.Change;if(item.Close!=null)this.Frame.SubFrame[i].Frame.CloseIndex=item.Close;if(item.Overlay!=null)chart.Frame.SubFrame[i].Frame.OverlayIndex=item.Overlay;if(item.IsDrawTitleBG==true)this.Frame.SubFrame[i].Frame.IsDrawTitleBG=item.IsDrawTitleBG;if(IFrameSplitOperator.IsBool(item.IsShowNameArrow))this.Frame.SubFrame[i].Frame.IsShowNameArrow=item.IsShowNameArrow;if(IFrameSplitOperator.IsNumber(item.TitleHeight))this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;else item.TitleHeight=this.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight;if(IFrameSplitOperator.IsNumber(item.IsShowTitleArrow))this.Frame.SubFrame[i].Frame.IsShowTitleArrow=item.IsShowTitleArrow;if(item.IsShowIndexName==false)this.Frame.SubFrame[i].Frame.IsShowIndexName=false;if(item.IsShowOverlayIndexName==false)this.Frame.SubFrame[i].Frame.IsShowOverlayIndexName=false;if(IFrameSplitOperator.IsNumber(item.IndexParamSpace))this.Frame.SubFrame[i].Frame.IndexParamSpace=item.IndexParamSpace;if(IFrameSplitOperator.IsNumber(item.IndexTitleSpace))this.Frame.SubFrame[i].Frame.IndexTitleSpace=item.IndexTitleSpace;if(item.IsShowXLine==false)this.Frame.SubFrame[i].Frame.IsShowXLine=false;if(item.IsShowYLine==false)this.Frame.SubFrame[i].Frame.IsShowYLine=false;if(IFrameSplitOperator.IsBool(item.IsShowIndexTitle))this.Frame.SubFrame[i].Frame.IsShowIndexTitle=item.IsShowIndexTitle;if(IFrameSplitOperator.IsBool(item.IsShowLeftText)){subFrame.Frame.IsShowYText[0]=item.IsShowLeftText;subFrame.Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
|
|
7007
7010
|
}if(IFrameSplitOperator.IsBool(item.IsShowRightText)){subFrame.Frame.IsShowYText[1]=item.IsShowRightText;subFrame.Frame.YSplitOperator.IsShowRightText=item.IsShowRightText;//显示右边刻度
|
|
7008
7011
|
}if(item.OverlayIndexType){if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.Position))subFrame.Frame.OverlayIndexType.Position=item.OverlayIndexType.Position;if(IFrameSplitOperator.IsNumber(item.OverlayIndexType.LineSpace))subFrame.Frame.OverlayIndexType.LineSpace=item.OverlayIndexType.LineSpace;}var bindData=this.ChartPaint[0].Data;this.BindIndexData(i,bindData);//执行脚本
|
|
7009
7012
|
}//this.UpdataDataoffset(); //更新数据偏移
|
|
@@ -9381,27 +9384,27 @@ if(_i53<data.length&&_i53<data2.length){if(this.IsNumber(data[_i53])&&this.IsDiv
|
|
|
9381
9384
|
this.GT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9382
9385
|
if(isNumber&&isNumber2)return data>data2?1:0;//都是数组比较
|
|
9383
9386
|
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i56=0;_i56<count;++_i56){result[_i56]=null;//初始化
|
|
9384
|
-
if(_i56<data.length&&_i56<data2.length){if(!isNaN(data[_i56])&&!isNaN(data2[_i56]))result[_i56]=data[_i56]>data2[_i56]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9385
|
-
{for(var _i57 in data2){result[_i57]=null;if(!isNaN(data)&&!isNaN(data2[_i57]))result[_i57]=data>data2[_i57]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9386
|
-
{for(var _i58 in data){result[_i58]=null;if(!isNaN(data[_i58])&&!isNaN(data2))result[_i58]=data[_i58]>data2?1:0;}}return result;};//大于等于
|
|
9387
|
+
if(_i56<data.length&&_i56<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i56]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i56]))continue;if(!isNaN(data[_i56])&&!isNaN(data2[_i56]))result[_i56]=data[_i56]>data2[_i56]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9388
|
+
{for(var _i57 in data2){result[_i57]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i57]))continue;if(!isNaN(data)&&!isNaN(data2[_i57]))result[_i57]=data>data2[_i57]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9389
|
+
{for(var _i58 in data){result[_i58]=null;if(!IFrameSplitOperator.IsVaild(data[_i58]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;if(!isNaN(data[_i58])&&!isNaN(data2))result[_i58]=data[_i58]>data2?1:0;}}return result;};//大于等于
|
|
9387
9390
|
this.GTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9388
9391
|
if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
|
|
9389
9392
|
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i59=0;_i59<count;++_i59){result[_i59]=null;//初始化
|
|
9390
|
-
if(_i59<data.length&&_i59<data2.length){if(!
|
|
9391
|
-
{for(var _i60 in data2){result[_i60]=null;if(!
|
|
9392
|
-
{for(var _i61 in data){result[_i61]=null;if(!
|
|
9393
|
+
if(_i59<data.length&&_i59<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i59]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i59]))continue;result[_i59]=data[_i59]>=data2[_i59]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9394
|
+
{for(var _i60 in data2){result[_i60]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i60]))continue;result[_i60]=data>=data2[_i60]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9395
|
+
{for(var _i61 in data){result[_i61]=null;if(!IFrameSplitOperator.IsVaild(data[_i61]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i61]=data[_i61]>=data2?1:0;}}return result;};//小于
|
|
9393
9396
|
this.LT=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9394
9397
|
if(isNumber&&isNumber2)return data<data2?1:0;//都是数组比较
|
|
9395
9398
|
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i62=0;_i62<count;++_i62){result[_i62]=null;//初始化
|
|
9396
|
-
if(_i62<data.length&&_i62<data2.length){if(!
|
|
9397
|
-
{for(var _i63 in data2){result[_i63]=null;if(!
|
|
9398
|
-
{for(var _i64 in data){result[_i64]=null;if(!
|
|
9399
|
+
if(_i62<data.length&&_i62<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i62]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i62]))continue;result[_i62]=data[_i62]<data2[_i62]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9400
|
+
{for(var _i63 in data2){result[_i63]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i63]))continue;result[_i63]=data<data2[_i63]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9401
|
+
{for(var _i64 in data){result[_i64]=null;if(!IFrameSplitOperator.IsVaild(data[_i64]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i64]=data[_i64]<data2?1:0;}}return result;};//小于等于
|
|
9399
9402
|
this.LTE=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9400
9403
|
if(isNumber&&isNumber2)return data>=data2?1:0;//都是数组比较
|
|
9401
9404
|
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i65=0;_i65<count;++_i65){result[_i65]=null;//初始化
|
|
9402
|
-
if(_i65<data.length&&_i65<data2.length){if(!
|
|
9403
|
-
{for(var _i66 in data2){result[_i66]=null;if(!
|
|
9404
|
-
{for(var _i67 in data){result[_i67]=null;if(!
|
|
9405
|
+
if(_i65<data.length&&_i65<data2.length){if(!IFrameSplitOperator.IsVaild(data[_i65]))continue;if(!IFrameSplitOperator.IsVaild(data2[_i65]))continue;result[_i65]=data[_i65]<=data2[_i65]?1:0;}}return result;}if(isNumber&&Array.isArray(data2))//单数据-数组
|
|
9406
|
+
{for(var _i66 in data2){result[_i66]=null;if(!IFrameSplitOperator.IsVaild(data))continue;if(!IFrameSplitOperator.IsVaild(data2[_i66]))continue;result[_i66]=data<=data2[_i66]?1:0;}}else if(isNumber2&&Array.isArray(data))//数组-单数据
|
|
9407
|
+
{for(var _i67 in data){result[_i67]=null;if(!IFrameSplitOperator.IsVaild(data[_i67]))continue;if(!IFrameSplitOperator.IsVaild(data2))continue;result[_i67]=data[_i67]<=data2?1:0;}}return result;};//等于
|
|
9405
9408
|
this.EQ=function(data,data2){var isNumber=IFrameSplitOperator.IsNumber(data);var isNumber2=IFrameSplitOperator.IsNumber(data2);//单数值比较
|
|
9406
9409
|
if(isNumber&&isNumber2)return data==data2?1:0;//都是数组比较
|
|
9407
9410
|
var result=[];if(Array.isArray(data)&&Array.isArray(data2)){var count=Math.max(data.length,data2.length);for(var _i68=0;_i68<count;++_i68){result[_i68]=null;//初始化
|
|
@@ -9512,7 +9515,8 @@ this.EXPMEMA=function(data,dayCount){var result=[];if(dayCount>=data.length)retu
|
|
|
9512
9515
|
用法:COUNT(X, N), 统计N周期中满足X条件的周期数, 若N<0则从第一个有效值开始.
|
|
9513
9516
|
例如 :COUNT(CLOSE>OPEN, 20)表示统计20周期内收阳的周期数
|
|
9514
9517
|
N 支持数组
|
|
9515
|
-
*/this.COUNT=function(data,n){if(Array.isArray(n)){var start=null;var dataCount=data.length;for(var i=0;i<dataCount;++i){if(this.IsNumber(data[i])){start=i;break;}}if(start==null)return[];var result=[];var count=0;for(var i=0;i<n.length;++i){var period=n[i];if(!IFrameSplitOperator.IsNumber(period))
|
|
9518
|
+
*/this.COUNT=function(data,n){if(Array.isArray(n)){var start=null;var dataCount=data.length;for(var i=0;i<dataCount;++i){if(this.IsNumber(data[i])){start=i;break;}}if(start==null)return[];var result=[];var count=0;for(var i=0;i<n.length;++i){var period=n[i];if(period==0){result[i]=0;continue;}if(!IFrameSplitOperator.IsNumber(period))period=i+1;//无效周期 第一个有效值开始.
|
|
9519
|
+
else if(period<0)period=i+1;count=0;for(var j=i,k=0;j>=0&&k<period;--j,++k)//当前往前period天 统计
|
|
9516
9520
|
{if(data[j])++count;}result[i]=count;}return result;}else{var period=n;var dataCount=data.length;var period=period<1?dataCount:period;var i=0,j=0;for(;i<dataCount;++i)// 取第1个有效数据
|
|
9517
9521
|
{if(this.IsNumber(data[i]))break;}var result=[];var days=0;for(;i<dataCount&&j<period;++i,++j){days=data[i]?days+1:days;result[i]=days;}for(;i<dataCount;++i){if(data[i-period]&&days)days--;days=data[i]?days+1:days;result[i]=days;}return result;}};/*
|
|
9518
9522
|
HHV 最高值
|
|
@@ -9580,8 +9584,9 @@ this.CROSS=function(data,data2){var result=[];if(Array.isArray(data)&&Array.isAr
|
|
|
9580
9584
|
CROSSUP(MA5,MA10),ICON(1,'ICO4');//MA5上穿MA10,标注红箭头。
|
|
9581
9585
|
//CROSSUP(MA5,MA10),ICON(1,'ICO4'); 与 CROSSUP(MA5,MA10)=1,ICON(1,'ICO4');表达同等意义
|
|
9582
9586
|
*/this.CROSSUP=function(data,data2){return this.CROSS(data,data2);};//累乘
|
|
9583
|
-
this.MULAR=function(data,n){var result=[];if(!Array.isArray(n)){if(data.length<n)return result;if(n==0){var index=n;for(;index<data.length;++index){if(this.IsNumber(data[index])){result[index]=data[index];break;}}for(++index;index<data.length;++index){result[index]=result[index-1]*data[index];}}else{for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]*=data[k+j];}}}}else{for(var i=0;i<data.length;++i){result[i]=null;var totalCount=n[i];if(!this.IsNumber(totalCount))continue;totalCount=parseInt(totalCount);if(totalCount<0)continue;for(var j=i,k=0;j>=0&&k<totalCount;--j,++k){if(k==0)result[i]=data[j];else result[i]*=data[j];}}}return result;};this.SUM=function(data,n){var result=[];if(!Array.isArray(n)){if(n
|
|
9584
|
-
{if(IFrameSplitOperator.IsNumber(data[i])){start=i;break;}}if(start<0)return result;result[start]=data[start];for(var i=start+1;i<data.length;++i){result[i]=result[i-1]+data[i];}}else{
|
|
9587
|
+
this.MULAR=function(data,n){var result=[];if(!Array.isArray(n)){if(data.length<n)return result;if(n==0){var index=n;for(;index<data.length;++index){if(this.IsNumber(data[index])){result[index]=data[index];break;}}for(++index;index<data.length;++index){result[index]=result[index-1]*data[index];}}else{for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]*=data[k+j];}}}}else{for(var i=0;i<data.length;++i){result[i]=null;var totalCount=n[i];if(!this.IsNumber(totalCount))continue;totalCount=parseInt(totalCount);if(totalCount<0)continue;for(var j=i,k=0;j>=0&&k<totalCount;--j,++k){if(k==0)result[i]=data[j];else result[i]*=data[j];}}}return result;};this.SUM=function(data,n){var result=[];if(!Array.isArray(n)){if(n<=0){var start=-1;for(var i=0;i<data.length;++i)//取第1个有效数
|
|
9588
|
+
{if(IFrameSplitOperator.IsNumber(data[i])){start=i;break;}}if(start<0)return result;result[start]=data[start];for(var i=start+1;i<data.length;++i){result[i]=result[i-1]+data[i];}}else{result[0]=data[0];for(var i=1;i<n&&i<data.length;++i)//前面小于N周期的累加
|
|
9589
|
+
{result[i]=result[i-1]+data[i];}for(var i=n-1,j=0;i<data.length;++i,++j){for(var k=0;k<n;++k){if(k==0)result[i]=data[k+j];else result[i]+=data[k+j];}}}}else{for(var i=0;i<data.length;++i){result[i]=null;var totalCount=n[i];if(!(totalCount>0))continue;for(var j=i,k=0;j>=0&&k<totalCount;--j,++k){if(k==0)result[i]=data[j];else result[i]+=data[j];}}}return result;};/*
|
|
9585
9590
|
BARSCOUNT 有效数据周期数
|
|
9586
9591
|
求总的周期数。
|
|
9587
9592
|
用法: BARSCOUNT(X) 第一个有效数据到当前的天数。
|
|
@@ -10499,7 +10504,8 @@ if(bindData.Period>0)//周期数据
|
|
|
10499
10504
|
{var periodData=this.Data.GetPeriodData(this.Period);this.Data.Data=periodData;}}this.Data.Right=this.Right;this.Data.Period=this.Period;this.Name=data.name;};this.RecvMinuteHistroyData=function(data){JSConsole.Complier.Log('[JSSymbolData::RecvMinuteHistroyData] recv data',data);var hisData=this.JsonDataToMinuteHistoryData(data);this.Data=new ChartData();this.Data.DataType=1;/*分钟线数据 */this.Data.Data=hisData;this.SourceData=new ChartData();this.SourceData.Data=hisData;if(this.IsApiPeriod)//后台周期 前端不处理
|
|
10500
10505
|
{}else{if(ChartData.IsMinutePeriod(this.Period,false))//周期数据
|
|
10501
10506
|
{var periodData=this.Data.GetPeriodData(this.Period);this.Data.Data=periodData;}}this.Data.Period=this.Period;this.Name=data.name;};//最新的分钟数据走势图
|
|
10502
|
-
this.RecvMinuteData=function(data){JSConsole.Complier.Log('[JSSymbolData::RecvMinuteData] recv data',data);var aryMinuteData=this.JsonDataToMinuteData(data);this.Data=new ChartData();this.Data.DataType=2;/*分钟走势图数据 */this.Data.Data=aryMinuteData;this.Name=data.stock[0].name;};this.RecvMultiDayMinuteData=function(data){var aryMinuteData=this.JsonDataToMultiDayMinuteData(data);this.Data=new ChartData();this.Data.DataType=2;/*分钟走势图数据 */this.Data.Data=aryMinuteData;this.Name=data.name;};this.GetSymbolCacheData=function(dataName){if(!this.Data)return new Array();var upperSymbol=this.Symbol.toUpperCase();switch(dataName){case'CLOSE':case'C':return this.Data.GetClose();case'VOL':case'V':if(MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol)
|
|
10507
|
+
this.RecvMinuteData=function(data){JSConsole.Complier.Log('[JSSymbolData::RecvMinuteData] recv data',data);var aryMinuteData=this.JsonDataToMinuteData(data);this.Data=new ChartData();this.Data.DataType=2;/*分钟走势图数据 */this.Data.Data=aryMinuteData;this.Name=data.stock[0].name;};this.RecvMultiDayMinuteData=function(data){var aryMinuteData=this.JsonDataToMultiDayMinuteData(data);this.Data=new ChartData();this.Data.DataType=2;/*分钟走势图数据 */this.Data.Data=aryMinuteData;this.Name=data.name;};this.GetSymbolCacheData=function(dataName){if(!this.Data)return new Array();var upperSymbol=this.Symbol.toUpperCase();switch(dataName){case'CLOSE':case'C':return this.Data.GetClose();case'VOL':case'V':if(MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol)&&this.DataType==HQ_DATA_TYPE.KLINE_ID)//!! A股K线量单位时股,分时图单位还是手
|
|
10508
|
+
return this.Data.GetVol(100);//A股的 把股转成手
|
|
10503
10509
|
return this.Data.GetVol();case'OPEN':case'O':return this.Data.GetOpen();case'HIGH':case'H':return this.Data.GetHigh();case'LOW':case'L':return this.Data.GetLow();case'AMOUNT':case'AMO':return this.Data.GetAmount();case"OPI"://文华 持仓量
|
|
10504
10510
|
case'VOLINSTK'://通达信 持仓量
|
|
10505
10511
|
return this.Data.GetPosition();case"ZSTJJ"://均价
|
|
@@ -12484,7 +12490,7 @@ function HQChartScriptWorker(){this.Create=function(){var _this60=this;addEventL
|
|
|
12484
12490
|
hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,Stock:{Symbol:message.Symbol},Request:{MaxDataCount:500,MaxMinuteDayCount:5},Period:message.Period,Right:message.Right,Data:hisData};if(IFrameSplitOperator.IsNumber(message.HQDataType))stockObj.HQDataType=message.HQDataType;indexConsole.ExecuteScript(stockObj);};this.OnRecvMessage=function(message){var data=message.data;if(!data)return;if(data.ID==JSCHART_WORKER_MESSAGE_ID.EXECUTE_SCRIPT){if(!IFrameSplitOperator.IsNonEmptyArray(data.AryIndex))return;for(var i=0;i<data.AryIndex.length;++i){var item=data.AryIndex[i];this.ExecuteScript(item,data);}}};this.OnExecuteFinish=function(data,indexInfo,jsExectute){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT};postMessage(message);};this.OnExecuteError=function(error,indexInfo){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
|
|
12485
12491
|
* 版本信息输出
|
|
12486
12492
|
*
|
|
12487
|
-
*/var HQCHART_VERSION="1.1.
|
|
12493
|
+
*/var HQCHART_VERSION="1.1.12479";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
|
|
12488
12494
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12489
12495
|
// BaseIndex:BaseIndex,
|
|
12490
12496
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -2428,6 +2428,9 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2428
2428
|
|
|
2429
2429
|
if (i<data.length && i<data2.length)
|
|
2430
2430
|
{
|
|
2431
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2432
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2433
|
+
|
|
2431
2434
|
if ( !isNaN(data[i]) && !isNaN(data2[i]) ) result[i]=(data[i]>data2[i] ? 1:0);
|
|
2432
2435
|
}
|
|
2433
2436
|
}
|
|
@@ -2440,6 +2443,9 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2440
2443
|
for(let i in data2)
|
|
2441
2444
|
{
|
|
2442
2445
|
result[i]=null;
|
|
2446
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
2447
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2448
|
+
|
|
2443
2449
|
if ( !isNaN(data) && !isNaN(data2[i]) ) result[i]=(data>data2[i] ? 1 : 0);
|
|
2444
2450
|
}
|
|
2445
2451
|
}
|
|
@@ -2448,6 +2454,9 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2448
2454
|
for(let i in data)
|
|
2449
2455
|
{
|
|
2450
2456
|
result[i]=null;
|
|
2457
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2458
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
2459
|
+
|
|
2451
2460
|
if ( !isNaN(data[i]) && !isNaN(data2) ) result[i]=(data[i]>data2 ? 1 : 0);
|
|
2452
2461
|
}
|
|
2453
2462
|
}
|
|
@@ -2475,7 +2484,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2475
2484
|
|
|
2476
2485
|
if (i<data.length && i<data2.length)
|
|
2477
2486
|
{
|
|
2478
|
-
if (
|
|
2487
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2488
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2489
|
+
|
|
2490
|
+
result[i]=(data[i]>=data2[i] ? 1:0);
|
|
2479
2491
|
}
|
|
2480
2492
|
}
|
|
2481
2493
|
|
|
@@ -2487,7 +2499,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2487
2499
|
for(let i in data2)
|
|
2488
2500
|
{
|
|
2489
2501
|
result[i]=null;
|
|
2490
|
-
if (
|
|
2502
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
2503
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2504
|
+
|
|
2505
|
+
result[i]=(data>=data2[i] ? 1 : 0);
|
|
2491
2506
|
}
|
|
2492
2507
|
}
|
|
2493
2508
|
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
@@ -2495,7 +2510,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2495
2510
|
for(let i in data)
|
|
2496
2511
|
{
|
|
2497
2512
|
result[i]=null;
|
|
2498
|
-
if (
|
|
2513
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2514
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
2515
|
+
|
|
2516
|
+
result[i]=(data[i]>=data2 ? 1 : 0);
|
|
2499
2517
|
}
|
|
2500
2518
|
}
|
|
2501
2519
|
|
|
@@ -2522,7 +2540,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2522
2540
|
|
|
2523
2541
|
if (i<data.length && i<data2.length)
|
|
2524
2542
|
{
|
|
2525
|
-
if (
|
|
2543
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2544
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2545
|
+
|
|
2546
|
+
result[i]=(data[i]<data2[i] ? 1:0);
|
|
2526
2547
|
}
|
|
2527
2548
|
}
|
|
2528
2549
|
|
|
@@ -2534,7 +2555,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2534
2555
|
for(let i in data2)
|
|
2535
2556
|
{
|
|
2536
2557
|
result[i]=null;
|
|
2537
|
-
if (
|
|
2558
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
2559
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2560
|
+
|
|
2561
|
+
result[i]=(data<data2[i] ? 1 : 0);
|
|
2538
2562
|
}
|
|
2539
2563
|
}
|
|
2540
2564
|
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
@@ -2542,7 +2566,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2542
2566
|
for(let i in data)
|
|
2543
2567
|
{
|
|
2544
2568
|
result[i]=null;
|
|
2545
|
-
if (
|
|
2569
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2570
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
2571
|
+
|
|
2572
|
+
result[i]=(data[i]<data2 ? 1 : 0);
|
|
2546
2573
|
}
|
|
2547
2574
|
}
|
|
2548
2575
|
|
|
@@ -2569,7 +2596,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2569
2596
|
|
|
2570
2597
|
if (i<data.length && i<data2.length)
|
|
2571
2598
|
{
|
|
2572
|
-
if (
|
|
2599
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2600
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2601
|
+
|
|
2602
|
+
result[i]=(data[i]<=data2[i] ? 1:0);
|
|
2573
2603
|
}
|
|
2574
2604
|
}
|
|
2575
2605
|
|
|
@@ -2581,7 +2611,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2581
2611
|
for(let i in data2)
|
|
2582
2612
|
{
|
|
2583
2613
|
result[i]=null;
|
|
2584
|
-
if (
|
|
2614
|
+
if (!IFrameSplitOperator.IsVaild(data)) continue;
|
|
2615
|
+
if (!IFrameSplitOperator.IsVaild(data2[i])) continue;
|
|
2616
|
+
|
|
2617
|
+
result[i]=(data<=data2[i] ? 1 : 0);
|
|
2585
2618
|
}
|
|
2586
2619
|
}
|
|
2587
2620
|
else if (isNumber2 && Array.isArray(data)) //数组-单数据
|
|
@@ -2589,7 +2622,10 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
2589
2622
|
for(let i in data)
|
|
2590
2623
|
{
|
|
2591
2624
|
result[i]=null;
|
|
2592
|
-
if (
|
|
2625
|
+
if (!IFrameSplitOperator.IsVaild(data[i])) continue;
|
|
2626
|
+
if (!IFrameSplitOperator.IsVaild(data2)) continue;
|
|
2627
|
+
|
|
2628
|
+
result[i]=(data[i]<=data2 ? 1 : 0);
|
|
2593
2629
|
}
|
|
2594
2630
|
}
|
|
2595
2631
|
|
|
@@ -3676,9 +3712,16 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
3676
3712
|
for(var i=0;i<n.length;++i)
|
|
3677
3713
|
{
|
|
3678
3714
|
var period=n[i];
|
|
3679
|
-
|
|
3680
|
-
|
|
3681
|
-
|
|
3715
|
+
|
|
3716
|
+
if (period==0)
|
|
3717
|
+
{
|
|
3718
|
+
result[i]=0;
|
|
3719
|
+
continue;
|
|
3720
|
+
}
|
|
3721
|
+
|
|
3722
|
+
if (!IFrameSplitOperator.IsNumber(period) ) period=i+1; //无效周期 第一个有效值开始.
|
|
3723
|
+
else if (period<0) period=i+1;
|
|
3724
|
+
|
|
3682
3725
|
count=0;
|
|
3683
3726
|
for(var j=i, k=0 ;j>=0 && k<period ;--j,++k) //当前往前period天 统计
|
|
3684
3727
|
{
|
|
@@ -4142,7 +4185,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
4142
4185
|
|
|
4143
4186
|
if (!Array.isArray(n))
|
|
4144
4187
|
{
|
|
4145
|
-
if (n
|
|
4188
|
+
if (n<=0)
|
|
4146
4189
|
{
|
|
4147
4190
|
var start=-1;
|
|
4148
4191
|
for(var i=0; i<data.length; ++i) //取第1个有效数
|
|
@@ -4165,6 +4208,12 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
4165
4208
|
}
|
|
4166
4209
|
else
|
|
4167
4210
|
{
|
|
4211
|
+
result[0]=data[0];
|
|
4212
|
+
for(var i=1;i<n && i<data.length;++i) //前面小于N周期的累加
|
|
4213
|
+
{
|
|
4214
|
+
result[i] = result[i-1]+data[i];
|
|
4215
|
+
}
|
|
4216
|
+
|
|
4168
4217
|
for(var i=n-1,j=0;i<data.length;++i,++j)
|
|
4169
4218
|
{
|
|
4170
4219
|
for(var k=0;k<n;++k)
|
|
@@ -12587,7 +12636,7 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
12587
12636
|
return this.Data.GetClose();
|
|
12588
12637
|
case 'VOL':
|
|
12589
12638
|
case 'V':
|
|
12590
|
-
if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol))
|
|
12639
|
+
if (MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol) && this.DataType==HQ_DATA_TYPE.KLINE_ID) //!! A股K线量单位时股,分时图单位还是手
|
|
12591
12640
|
return this.Data.GetVol(100); //A股的 把股转成手
|
|
12592
12641
|
return this.Data.GetVol();
|
|
12593
12642
|
case 'OPEN':
|