hqchart 1.1.13468 → 1.1.13485
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.NetworkFilterTest.vue.js +5 -2
- package/lib/umychart.vue.js +13 -10
- package/package.json +1 -1
- package/src/jscommon/umychart.NetworkFilterTest.js +106 -21
- package/src/jscommon/umychart.complier.js +1 -1
- package/src/jscommon/umychart.js +17 -6
- package/src/jscommon/umychart.testdata/000001.sh.day.kline.js +21 -0
- package/src/jscommon/umychart.testdata/000001.sz.minute.kline.js +23 -1
- package/src/jscommon/umychart.testdata/399001.sz.day.kline.js +21 -0
- package/src/jscommon/umychart.testdata.js +106 -21
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +19 -8
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.NetworkFilterTest.vue.js +106 -21
- package/src/jscommon/umychart.vue/umychart.vue.js +19 -8
|
@@ -21,8 +21,11 @@ console.log("[HQData::RequestMinuteDaysData] Symbol="+symbol);var hqchartData={c
|
|
|
21
21
|
[915,item.yclose,0,0],[916,item.yclose+0.01,0,0],[917,item.yclose+0.03,0,0],[918,item.yclose+0.02,0,0],[919,item.yclose+0.02,0,0],[920,item.yclose+0.01,0,0],[921,item.yclose,0,0],[922,item.yclose-0.02,0,0],[923,item.yclose-0.03,0,0],[924,item.yclose,0,0],[925,item.yclose,0,0]];var beforeinfo={totalcount:11,ver:1.0};dayItem.before=before;dayItem.beforeinfo=beforeinfo;}hqchartData.data.push(dayItem);}callback(hqchartData);};HQData.RequestHistoryData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol;//请求的股票代码
|
|
22
22
|
console.log("[HQData::RequestMinuteDaysData] Symbol="+symbol);var hqchartData=KLINE_DAY_DATA;hqchartData.symbol=symbol;hqchartData.name=symbol;callback(hqchartData);};HQData.RequestFlowCapitalData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol;//请求的股票代码
|
|
23
23
|
console.log("[HQData::RequestFlowCapitalData] Symbol="+symbol);var hqchartData=KLINE_CAPITAL_DATA;callback(hqchartData);};HQData.RequestRealtimeData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol[0];//请求的股票代码
|
|
24
|
-
|
|
24
|
+
if(data.Request.Data.symbol.length>1)//叠加股票
|
|
25
|
+
{var hqchartData={stock:[],code:0};var arySymbol=data.Request.Data.symbol;for(var i=0;i<arySymbol.length;++i){var symbol=arySymbol[i];if(i==0){var stock=KLINE_1DAY_DATA.stock[0];stock.name=symbol;stock.symbol=symbol;hqchartData.stock.push(stock);}else{if(symbol=="399001.sz"){var stock=KLINE_1DAY_OVERLAY_DATA2.stock[0];stock.name=symbol;stock.symbol=symbol;hqchartData.stock.push(stock);}else{var stock=KLINE_1DAY_OVERLAY_DATA.stock[0];stock.name=symbol;stock.symbol=symbol;hqchartData.stock.push(stock);}}}callback(hqchartData);}else{console.log("[HQData::RequestRealtimeData] Symbol="+symbol);var hqchartData=KLINE_1DAY_DATA;hqchartData.stock[0].name=symbol;hqchartData.stock[0].symbol=symbol;callback(hqchartData);}};HQData.RequestHistoryMinuteData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol;//请求的股票代码
|
|
25
26
|
console.log("[HQData::RequestHistoryMinuteData] Symbol="+symbol);var hqchartData=KLINE_MINUTE_DATA;hqchartData.name=symbol;hqchartData.symbol=symbol;callback(hqchartData);};HQData.RequestMinuteRealtimeData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol[0];//请求的股票代码
|
|
26
|
-
|
|
27
|
+
if(data.Request.Data.symbol.length>1)//叠加股票
|
|
28
|
+
{var hqchartData=JSON.parse((0,_stringify2.default)(KLINE_1MINUTE_DATA));hqchartData.overlay=[];//叠加数据
|
|
29
|
+
var arySymbol=data.Request.Data.symbol;for(var i=0;i<arySymbol.length;++i){var symbol=arySymbol[i];if(i==0){var kItem=hqchartData.data[0];var price=kItem[5];var value=Math.ceil(Math.random()*10)/1000*price;var bUp=Math.ceil(Math.random()*10)>=5;if(bUp)price+=value;else price-=value;kItem[5]=price;kItem[3]=Math.max(price,kItem[3]);kItem[4]=Math.min(price,kItem[4]);hqchartData.name=symbol;hqchartData.symbol=symbol;}else{var testData=JSON.parse((0,_stringify2.default)(KLINE_1MINUTE_DATA2));var kItem=testData.data[0];var price=kItem[5];var value=Math.ceil(Math.random()*10)/1000*price;var bUp=Math.ceil(Math.random()*10)>=5;if(bUp)price+=value;else price-=value;kItem[5]=price;kItem[3]=Math.max(price,kItem[3]);kItem[4]=Math.min(price,kItem[4]);var stock={data:testData.data,symbol:symbol,name:symbol};hqchartData.overlay.push(stock);}}callback(hqchartData);}else{console.log("[HQData::RequestMinuteRealtimeData] Symbol="+symbol);var hqchartData=JSON.parse((0,_stringify2.default)(KLINE_1MINUTE_DATA));var kItem=hqchartData.data[0];var price=kItem[5];var value=Math.ceil(Math.random()*10)/1000*price;var bUp=Math.ceil(Math.random()*10)>=5;if(bUp)price+=value;else price-=value;kItem[5]=price;kItem[3]=Math.max(price,kItem[3]);kItem[4]=Math.min(price,kItem[4]);hqchartData.name=symbol;hqchartData.symbol=symbol;callback(hqchartData);}};HQData.RequestIndexVariantData=function(data,callback){var varName=data.Request.Data.VariantName;//变量名称
|
|
27
30
|
if(varName=="FROMOPEN"){var hqchartData={};//单数据
|
|
28
31
|
hqchartData.Data={Date:20230707,Value:240};hqchartData.DataType=1;callback(hqchartData);}};HQData.RequestOtherSymbolData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol;var period=data.Request.Data.period;var right=data.Request.Data.right;var hqchartData=null;if(ChartData.IsDayPeriod(period,true))hqchartData=KLINE_DAY_DATA2;else if(ChartData.IsMinutePeriod(period,true))hqchartData=KLINE_MINUTE_DATA2;hqchartData.name=symbol;hqchartData.symbol=symbol;callback(hqchartData);};HQData.AnnouncementInfo_RequestData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Symbol;var hqchartData={symbol:symbol,report:[]};var kData=data.HQChart.ChartPaint[0].Data;for(var i=0,j=1;i<kData.Data.length;++i){var kItem=kData.Data[i];if(i%10!=4)continue;var itemReport={releasedate:kItem.Date,time:kItem.Time,title:"\u516C\u544A("+j+") xxxx"};hqchartData.report.push(itemReport);++j;}callback(hqchartData);};HQData.PforecastInfo_RequestData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Symbol;var hqchartData={symbol:symbol,report:[]};var kData=data.HQChart.ChartPaint[0].Data;for(var i=0,j=1;i<kData.Data.length;++i){var kItem=kData.Data[i];if(i%10!=4)continue;var itemReport={date:kItem.Date,time:kItem.Time,title:"\u516C\u544A("+j+") xxxx"};hqchartData.report.push(itemReport);++j;}callback(hqchartData);};HQData.InvestorInfo_RequestData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Symbol;callback(TEST_NEWSINTERACT_DATA);};HQData.BlockTrading_RequestData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Symbol;callback(TEST_BLOCK_TRADING_DATA);};HQData.TradeDetail_RequestData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Symbol;callback(TEST_TRADE_DETAL_DATA);};HQData.RequestLatestData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol[0];var id=data.Args[0];var value=1;switch(id){case 3:value=KLINE_1DAY_DATA.stock[0].yclose;break;case 4:value=KLINE_1DAY_DATA.stock[0].open;break;case 5:value=KLINE_1DAY_DATA.stock[0].high;break;case 6:value=KLINE_1DAY_DATA.stock[0].low;break;case 7:value=KLINE_1DAY_DATA.stock[0].price;break;case 8:value=KLINE_1DAY_DATA.stock[0].vol;break;}var hqchartData={symbol:symbol,ver:2.0,data:[{id:id,value:value}]};callback(hqchartData);};HQData.RequestOverlayHistoryData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol;var hqchartData={symbol:symbol,name:symbol};if(symbol=="399001.sz")hqchartData.data=KLINE_DAY_OVERLAY_DATA2.data;else hqchartData.data=KLINE_DAY_OVERLAY_DATA.data;callback(hqchartData);};HQData.RequestOverlayHistoryMinuteData=function(data,callback){data.PreventDefault=true;var symbol=data.Request.Data.symbol;var hqchartData={symbol:symbol,name:symbol};hqchartData.data=KLINE_MINUTE_DATA2.data;callback(hqchartData);};/*暴露外部用的方法*/exports.default={HQData:HQData};
|
package/lib/umychart.vue.js
CHANGED
|
@@ -1215,7 +1215,7 @@ if(option.CorssCursorInfo){var item=option.CorssCursorInfo;if(!isNaN(option.Cors
|
|
|
1215
1215
|
if(IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime))chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;if(item.RightButton){if(IFrameSplitOperator.IsBool(item.RightButton.Enable))chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;}if(IFrameSplitOperator.IsNumber(item.PriceFormatType))chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;if(IFrameSplitOperator.IsNumber(item.DataFormatType))chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;if(IFrameSplitOperator.IsNumber(item.HPenType))chart.ChartCorssCursor.HPenType=item.HPenType;if(IFrameSplitOperator.IsNumber(item.VPenType))chart.ChartCorssCursor.VPenType=item.VPenType;}if(option.MinuteInfo)chart.CreateMinuteInfo(option.MinuteInfo);if(IFrameSplitOperator.IsBool(option.IsShowRightMenu))chart.IsShowRightMenu=option.IsShowRightMenu;if(IFrameSplitOperator.IsNumber(option.DayCount))chart.DayCount=option.DayCount;this.SetChartBorder(chart,option);if(option.SplashTitle)chart.ChartSplashPaint.SplashTitle=option.SplashTitle;if(IFrameSplitOperator.IsBool(option.EnableBorderDrag)){chart.EnableBorderDrag=option.EnableBorderDrag;}this.AdjustChartBorder(chart);if(option.Frame){for(var i=0;i<option.Frame.length;++i){var item=option.Frame[i];if(!chart.Frame.SubFrame[i])continue;var subFrame=chart.Frame.SubFrame[i].Frame;if(IFrameSplitOperator.IsNumber(item.SplitCount))chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitCount=item.SplitCount;if(item.StringFormat)chart.Frame.SubFrame[i].Frame.YSplitOperator.StringFormat=item.StringFormat;if(IFrameSplitOperator.IsNumber(item.SplitType)){chart.Frame.SubFrame[i].Frame.YSplitOperator.SplitType=item.SplitType;chart.Frame.SubFrame[i].Frame.YSplitOperator.DefaultSplitType=item.SplitType;}if(IFrameSplitOperator.IsNumber(item.FilterType))subFrame.YSplitOperator.FilterType=item.FilterType;if(item.IsShowLeftText==false){chart.Frame.SubFrame[i].Frame.IsShowYText[0]=item.IsShowLeftText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowLeftText=item.IsShowLeftText;//显示左边刻度
|
|
1216
1216
|
}if(item.IsShowRightText==false){chart.Frame.SubFrame[i].Frame.IsShowYText[1]=item.IsShowRightText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowRightText=item.IsShowRightText;//显示右边刻度
|
|
1217
1217
|
}if(item.Height>=0)chart.Frame.SubFrame[i].Height=item.Height;if(item.Custom)chart.Frame.SubFrame[i].Frame.YSplitOperator.Custom=item.Custom;if(item.RightTextFormat>0)chart.Frame.SubFrame[i].Frame.YSplitOperator.RightTextFormat=item.RightTextFormat;if(IFrameSplitOperator.IsNumber(item.TitleHeight))chart.Frame.SubFrame[i].Frame.ChartBorder.TitleHeight=item.TitleHeight;if(IFrameSplitOperator.IsNumber(item.BorderLine))chart.Frame.SubFrame[i].Frame.BorderLine=item.BorderLine;if(IFrameSplitOperator.IsBool(item.EnableRemoveZero))chart.Frame.SubFrame[i].Frame.YSplitOperator.EnableRemoveZero=item.EnableRemoveZero;if(IFrameSplitOperator.IsNumber(item.FloatPrecision))chart.Frame.SubFrame[i].Frame.YSplitOperator.FloatPrecision=item.FloatPrecision;if(IFrameSplitOperator.IsBool(item.IsShowXLine))chart.Frame.SubFrame[i].Frame.IsShowXLine=item.IsShowXLine;if(IFrameSplitOperator.IsBool(item.IsShowYLine))chart.Frame.SubFrame[i].Frame.IsShowYLine=item.IsShowYLine;if(IFrameSplitOperator.IsNumber(item.YTextBaseline))chart.Frame.SubFrame[i].Frame.YTextBaseline=item.YTextBaseline;if(IFrameSplitOperator.IsBool(item.IsShowIndexTitle))chart.Frame.SubFrame[i].Frame.IsShowIndexTitle=item.IsShowIndexTitle;if(item.TopSpace>=0)chart.Frame.SubFrame[i].Frame.ChartBorder.TopSpace=item.TopSpace*pixelRatio;if(item.BottomSpace>=0)chart.Frame.SubFrame[i].Frame.ChartBorder.BottomSpace=item.BottomSpace*pixelRatio;//是否显示关闭集合竞价按钮
|
|
1218
|
-
if(IFrameSplitOperator.IsNumber(item.CloseBeforeButton))chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;if(item.ClientBGColor)subFrame.ClientBGColor=item.ClientBGColor;}chart.UpdateXShowText();}if(option.ExtendChart){for(var i=0;i<option.ExtendChart.length;++i){var item=option.ExtendChart[i];chart.CreateExtendChart(item.Name,item);}}//叠加股票
|
|
1218
|
+
if(IFrameSplitOperator.IsNumber(item.CloseBeforeButton))chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;if(item.ClientBGColor)subFrame.ClientBGColor=item.ClientBGColor;if(!IFrameSplitOperator.IsUndefined(item.HorizontalReserved))subFrame.HorizontalReserved=item.HorizontalReserved;}chart.UpdateXShowText();}if(option.ExtendChart){for(var i=0;i<option.ExtendChart.length;++i){var item=option.ExtendChart[i];chart.CreateExtendChart(item.Name,item);}}//叠加股票
|
|
1219
1219
|
if(option.Overlay){for(var i=0;i<option.Overlay.length;++i){var item=option.Overlay[i];chart.OverlaySymbol(item.Symbol,item);}}if(option.MinuteLine){if(option.MinuteLine.IsDrawAreaPrice==false)chart.ChartPaint[0].IsDrawArea=false;if(option.MinuteLine.IsShowLead==false)chart.IsShowLead=false;if(option.MinuteLine.IsShowAveragePrice==false){chart.ChartPaint[1].IsShow=false;chart.TitlePaint[0].IsShowAveragePrice=false;//标题栏均线也不显示
|
|
1220
1220
|
for(var i=0;i<chart.ExtendChartPaint.length;++i){var item=chart.ExtendChartPaint[i];if(item.ClassName=="MinuteTooltipPaint")item.IsShowAveragePrice=false;}}if(option.MinuteLine.SplitType>0)chart.Frame.SubFrame[0].Frame.YSplitOperator.SplitType=option.MinuteLine.SplitType;}if(option.MinuteVol){var item=option.MinuteVol;if(IFrameSplitOperator.IsNumber(item.BarColorType))chart.ChartPaint[2].BarColorType=item.BarColorType;}if(option.MinuteTitle){var item=option.MinuteTitle;if(IFrameSplitOperator.IsBool(item.IsShowName))chart.TitlePaint[0].IsShowName=item.IsShowName;if(IFrameSplitOperator.IsBool(item.IsShowDate))chart.TitlePaint[0].IsShowDate=item.IsShowDate;if(IFrameSplitOperator.IsBool(item.IsShowTime))chart.TitlePaint[0].IsShowTime=item.IsShowTime;if(IFrameSplitOperator.IsBool(item.IsTitleShowLatestData))chart.IsTitleShowLatestData=item.IsTitleShowLatestData;if(IFrameSplitOperator.IsBool(item.IsAlwaysShowLastData))chart.TitlePaint[0].IsAlwaysShowLastData=item.IsAlwaysShowLastData;if(IFrameSplitOperator.IsNumber(item.ShowLastDataFormat))chart.TitlePaint[0].ShowLastDataFormat=item.ShowLastDataFormat;if(IFrameSplitOperator.IsNumber(item.TitleBaseLine))chart.TitlePaint[0].TitleBaseLine=item.TitleBaseLine;if(item.TimeFormat)chart.TitlePaint[0].TimeFormat=item.TimeFormat;}if(IFrameSplitOperator.IsBool(option.CorssCursorTouchEnd))chart.CorssCursorTouchEnd=option.CorssCursorTouchEnd;if(IFrameSplitOperator.IsBool(option.IsClickShowCorssCursor))chart.IsClickShowCorssCursor=option.IsClickShowCorssCursor;if(option.IsShowBeforeData===true)chart.IsShowBeforeData=option.IsShowBeforeData;//分钟数据指标从第3个指标窗口设置
|
|
1221
1221
|
if(IFrameSplitOperator.IsNonEmptyArray(option.Windows)){var scriptData=new JSIndexScript();for(var i=0;i<option.Windows.length;++i){var index=2+i;var item=option.Windows[i];if(item.Script){chart.WindowIndex[index]=new ScriptIndex(item.Name,item.Script,item.Args,item);//脚本执行
|
|
@@ -2216,7 +2216,7 @@ var leftExtendText=null;//左侧文字设置
|
|
|
2216
2216
|
if(IFrameSplitOperator.IsNonEmptyArray(this.YTextExtend)){leftExtendText=this.YTextExtend[0];rightExtendText=this.YTextExtend[1];}var yPrev=null;//上一个坐标y的值
|
|
2217
2217
|
var pixelRatio=GetDevicePixelRatio();var itemHeight=(border.BottomEx-border.TopEx)/this.HorizontalInfo.length;var aryMultiText=[];var rtPreRight,rtRight,rtLeft,rtPreLeft;var textBaseline=0;//0=上 1=中 2=下
|
|
2218
2218
|
for(var i=this.HorizontalInfo.length-1;i>=0;--i)//从上往下画分割线
|
|
2219
|
-
{var item=this.HorizontalInfo[i];var y=this.GetYFromData(item.Value);if(y!=null&&yPrev!=null&&Math.abs(y-yPrev)<this.MinYDistance)continue;//两个坐标在近了 就不画了
|
|
2219
|
+
{var item=this.HorizontalInfo[i];if(!IFrameSplitOperator.IsNumber(item.Value))continue;if(item.Value>this.HorizontalMax||item.Value<this.HorizontalMin)continue;var y=this.GetYFromData(item.Value);if(y!=null&&yPrev!=null&&Math.abs(y-yPrev)<this.MinYDistance)continue;//两个坐标在近了 就不画了
|
|
2220
2220
|
var yFixed=ToFixedPoint(y);//绘制刻度线
|
|
2221
2221
|
if(y!=bottom&&this.IsShowYLine){var bChangeLineWidth=false;if(IFrameSplitOperator.IsPlusNumber(item.LineWidth))//刻度线宽度
|
|
2222
2222
|
{this.Canvas.lineWidth=item.LineWidth*pixelRatio;bChangeLineWidth=true;}this.Canvas.strokeStyle=item.LineColor;if(item.LineType==2){this.Canvas.save();if(item.LineDash)this.Canvas.setLineDash(item.LineDash);else this.Canvas.setLineDash([5*pixelRatio,5*pixelRatio]);//虚线
|
|
@@ -2249,7 +2249,7 @@ if(this.IsMinSize)return;if(this.ChartBorder.IsShowTitleOnly)return;if(this.IsSh
|
|
|
2249
2249
|
var yInsideText=null;for(var i=this.HorizontalInfo.length-1;i>=0;--i)//从上往下画分割线
|
|
2250
2250
|
{var item=this.HorizontalInfo[i];var y=this.GetYFromData(item.Value);if(y!=null&&yPrev!=null&&Math.abs(y-yPrev)<this.MinYDistance)continue;//两个坐标在近了 就不画了
|
|
2251
2251
|
//坐标信息 左边 间距小于10 画在内部
|
|
2252
|
-
if(item.Message[0]!=null&&isDrawLeft){if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.fillStyle=item.TextColor;this.Canvas.textAlign="left";var yText=y;if(y>=bottom-2){this.Canvas.textBaseline='bottom';}else if(y<=top
|
|
2252
|
+
if(item.Message[0]!=null&&isDrawLeft){if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.fillStyle=item.TextColor;this.Canvas.textAlign="left";var textHeight=this.Canvas.measureText("擎").width;var yText=y;if(y>=bottom-2){this.Canvas.textBaseline='bottom';}else if(y-textHeight/2<=top){this.Canvas.textBaseline='top';yText+=this.YTextTopOffset;}else{if(this.YTextBaseline==1)this.Canvas.textBaseline="bottom";else this.Canvas.textBaseline="middle";}var textObj={X:left,Y:yText,Text:{BaseLine:this.Canvas.textBaseline,TextAlign:this.Canvas.textAlign,Font:this.Canvas.font,Value:item.Message[0]}};if(!this.IsOverlayMaxMin||!this.IsOverlayMaxMin(textObj)){this.Canvas.fillText(item.Message[0],left+1*pixelTatio,yText);if(yInsideText==null||yInsideText>yText){this.YInsideOffset=this.Canvas.measureText(item.Message[0]).width+4*GetDevicePixelRatio();yInsideText=yText;}}}if(item.Message[1]!=null&&isDrawRight){if(item.Font!=null)this.Canvas.font=item.Font;this.Canvas.fillStyle=item.TextColor;this.Canvas.textAlign="right";var textHeight=this.Canvas.measureText("擎").width;var yText=y;if(y>=bottom-2){this.Canvas.textBaseline='bottom';}else if(y-textHeight/2<=top){this.Canvas.textBaseline='top';yText+=this.YTextTopOffset;}else{if(this.YTextBaseline==1)this.Canvas.textBaseline="bottom";else this.Canvas.textBaseline="middle";}if(Array.isArray(item.Message[1]))var text=item.Message[1][0];else var text=item.Message[1];var textWidth=this.Canvas.measureText(text).width;var textObj={X:right-textWidth,Y:yText,Text:{BaseLine:this.Canvas.textBaseline,TextAlign:this.Canvas.textAlign,Font:this.Canvas.font,Value:item.Message[1]}};if(!this.IsOverlayMaxMin||!this.IsOverlayMaxMin(textObj))this.Canvas.fillText(text,right-1*pixelTatio,yText);}yPrev=y;}}};this.GetXFromIndex=function(index){var count=this.XPointCount;if(count==1){if(index==0)return this.ChartBorder.GetLeft();else return this.ChartBorder.GetRight();}else if(count<=0){return this.ChartBorder.GetLeft();}else if(index>=count){return this.ChartBorder.GetRight();}else{var offset=this.ChartBorder.GetLeft()+this.ChartBorder.GetWidth()*index/count;return offset;}};//画X轴
|
|
2253
2253
|
this.DrawVertical=function(){var border=this.GetBorder();var top=border.TopTitle;var bottom=border.Bottom;var right=border.RightEx;var pixelRatio=GetDevicePixelRatio();//获取设备的分辨率
|
|
2254
2254
|
//JSConsole.Chart.Log('[AverageWidthFrame.DrawVertical] bottom',bottom);
|
|
2255
2255
|
//if (this.ChartBorder.Bottom<=5*GetDevicePixelRatio()) return; //高度不够 不显示
|
|
@@ -5084,7 +5084,8 @@ this.OverlayChartPaint;this.SplitCount=7;this.Symbol;this.SplitType=0;//0=默认
|
|
|
5084
5084
|
this.DefaultSplitType=0;this.LimitPrice;//{Max: Min:} 涨跌停价
|
|
5085
5085
|
this.Custom;this.RightTextFormat=0;//右边刻度显示模式 0=百分比 1=价格
|
|
5086
5086
|
this.BeforeOpenData;this.IsBeforeData=false;this.AfterCloseData;this.IsAfterData=false;this.MultiDayBeforeOpenData;this.MultiDayAfterCloseData;this.DayOffset;this.AverageData;//均线
|
|
5087
|
-
this.DayCount=1;this.GlobalOption;this.HQChart;this.IsEnableDragY=function(){return false;};this.Operator=function(){this.Frame.HorizontalInfo=[];this.Frame.CustomHorizontalInfo=[];if(!this.Data)return;var range=this.GetMaxMin();if(this.Symbol&&MARKET_SUFFIX_NAME.IsUSA(this.Symbol.toUpperCase())){this.USASplit(range);}else if(this.SplitType==2){this.USASplit(range);}else{this.DefaultSplit(range);}this.CustomCoordinate();
|
|
5087
|
+
this.DayCount=1;this.GlobalOption;this.HQChart;this.IsEnableDragY=function(){return false;};this.Operator=function(){this.Frame.HorizontalInfo=[];this.Frame.CustomHorizontalInfo=[];if(!this.Data)return;var range=this.GetMaxMin();if(this.Symbol&&MARKET_SUFFIX_NAME.IsUSA(this.Symbol.toUpperCase())){this.USASplit(range);}else if(this.SplitType==2){this.USASplit(range);}else{this.DefaultSplit(range);}this.CustomCoordinate();this.ReservedHeight({Max:this.Frame.HorizontalMax,Min:this.Frame.HorizontalMin});//预留高度
|
|
5088
|
+
if(this.GetEventCallback){var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);if(event&&event.Callback){var data={ID:this.Frame.Identify,Frame:this.Frame};event.Callback(event,data,this);}}};this.CustomCoordinate=function()//自定义刻度
|
|
5088
5089
|
{var data=this.InvokeCustomYCoordinateCallback();if(data&&data.PreventDefault==true)return;if(!this.Custom)return;var defaultfloatPrecision=GetfloatPrecision(this.Symbol);for(var i in this.Custom){var item=this.Custom[i];if(item.Type==1)this.CustomFixedCoordinate(item);else if(item.Type==0){var latestItem=this.GetLatestPrice(defaultfloatPrecision,item);if(latestItem)this.Frame.CustomHorizontalInfo.push(latestItem);}}};this.GetLatestPrice=function(floatPrecision,option){if(!this.Data||!this.Data.Data)return null;if(this.Data.Data.length<=0)return null;var price=this.Data.Data[this.Data.Data.length-1];if(!IFrameSplitOperator.IsNumber(price)||!IFrameSplitOperator.IsNumber(this.YClose))return null;var info=new CoordinateInfo();info.Type=0;info.Value=price;info.TextColor=g_JSChartResource.FrameLatestPrice.TextColor;info.LineType=2;//虚线
|
|
5089
5090
|
var strPrice=price.toFixed(floatPrecision);if(option.DateTime=='HH:MM'){var latestItem=this.Frame.Data.Data[this.Frame.Data.Data.length-1];var strTime=IFrameSplitOperator.FormatTimeString(latestItem.Time,option.DateTime);var aryText=[{Text:strPrice},{Text:strTime}];if(option.Position=='left')info.Message[0]=aryText;else info.Message[1]=aryText;}else{if(option.Position=='left')info.Message[0]=strPrice;else info.Message[1]=strPrice;}if(price>this.YClose)info.LineColor=g_JSChartResource.FrameLatestPrice.UpBarColor;else if(price<this.YClose)info.LineColor=g_JSChartResource.FrameLatestPrice.DownBarColor;else info.LineColor=g_JSChartResource.FrameLatestPrice.UnchagneBarColor;if(IFrameSplitOperator.IsNumber(option.LineType))info.LineType=option.LineType;if(IFrameSplitOperator.IsPlusNumber(option.LineWidth))info.LineWidth=option.LineWidth;if(option.LineDash)info.LineDash=option.LineDash;if(option.IsShowLine==false)info.LineType=-1;if(option.PositionEx===1)info.ExtendData={Custom:{Position:1}};//强制画在内部
|
|
5090
5091
|
return info;};this.CustomFixedCoordinate=function(option)//固定坐标刻度
|
|
@@ -7107,7 +7108,8 @@ var bindData=new ChartData();bindData.Data=this.SourceData.Data;bindData.Period=
|
|
|
7107
7108
|
{var rightData=bindData.GetRightData(bindData.Right,{AlgorithmType:this.RightFormula});bindData.Data=rightData;}if((ChartData.IsDayPeriod(bindData.Period,false)||ChartData.IsMinutePeriod(bindData.Period,false))&&!this.IsApiPeriod)//周期数据 (0= 日线,4=1分钟线 不需要处理)
|
|
7108
7109
|
{var periodData=bindData.GetPeriodData(bindData.Period);bindData.Data=periodData;}var kLineCalculate=this.GetKLineCalulate();if(kLineCalculate)//额外的K线图形计算
|
|
7109
7110
|
{var newBindData=kLineCalculate.RecvHistoryData(bindData,{Symbol:this.Symbol,Function:"RecvMinuteRealtimeDataV2"});bindData=newBindData;this.FlowCapitalReady=true;}//绑定数据
|
|
7110
|
-
this.UpdateMainData(bindData,lastDataCount);this.
|
|
7111
|
+
this.UpdateMainData(bindData,lastDataCount);this.UpdateOverlayMinuteRealtimeData(data);//更新叠加股票数据
|
|
7112
|
+
this.BindInstructionIndexData(bindData);//执行指示脚本
|
|
7111
7113
|
for(var i=0;i<this.Frame.SubFrame.length;++i){this.BindIndexData(i,bindData);}this.BindAllOverlayIndexData(bindData,{CheckRunCount:true,SyncExecute:true});//同步模式叠加指标
|
|
7112
7114
|
//刷新画图
|
|
7113
7115
|
this.UpdataDataoffset();//更新数据偏移
|
|
@@ -7637,7 +7639,7 @@ if(!IFrameSplitOperator.IsNumber(item.Open))item.Open=null;if(!IFrameSplitOperat
|
|
|
7637
7639
|
if(IFrameSplitOperator.IsNumber(jsData.price))preClose=jsData.price;aryMinuteData[i]=item;}return aryMinuteData;};//分钟K线叠加数据增量更新v2版本
|
|
7638
7640
|
KLineChartContainer.JsonDataToMinuteRealtimeDataV2=function(data,symbol){if(!data||!data.overlay||!symbol)return null;var overlayData=null;for(var i=0;i<data.overlay.length;++i)//overlay={ symbol:, name:, data:[] }
|
|
7639
7641
|
{var item=data.overlay[i];if(item.symbol==symbol){overlayData=item;break;}}if(!overlayData)return null;var upperSymbol=symbol.toUpperCase();var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);//是否是期货
|
|
7640
|
-
var date=0,yclose=1,open=2,high=3,low=4,close=5,vol=6,amount=7,time=8,position=9;var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;var yClose=null;for(var i=0;i<overlayData.data.length;++i){var item=new HistoryData();var jsData=overlayData.data[i];item.Date=jsData[date];item.Open=jsData[open];item.YClose=jsData[yclose];item.Close=jsData[close];item.High=jsData[high];item.Low=jsData[low];item.Vol=jsData[vol];//股
|
|
7642
|
+
var date=0,yclose=1,open=2,high=3,low=4,close=5,vol=6,amount=7,time=8,position=9;var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;var yClose=null;var aryMinuteData=[];for(var i=0;i<overlayData.data.length;++i){var item=new HistoryData();var jsData=overlayData.data[i];item.Date=jsData[date];item.Open=jsData[open];item.YClose=jsData[yclose];item.Close=jsData[close];item.High=jsData[high];item.Low=jsData[low];item.Vol=jsData[vol];//股
|
|
7641
7643
|
item.Amount=jsData[amount];item.Time=jsData[time];if(IFrameSplitOperator.IsNumber(jsData[position]))item.Position=jsData[position];//期货持仓
|
|
7642
7644
|
if(!IFrameSplitOperator.IsNumber(item.YClose)){if(IFrameSplitOperator.IsNumber(yClose))item.YClose=yClose;}if(IFrameSplitOperator.IsNumber(item.Close))yClose=item.Close;if(jsData[orderFlow])item.OrderFlow=jsData[orderFlow];aryMinuteData.push(item);}return aryMinuteData;};//API 返回数据 转化为array[]
|
|
7643
7645
|
KLineChartContainer.JsonDataToMinuteHistoryData=function(data){var upperSymbol=null;if(data.symbol)upperSymbol=data.symbol.toUpperCase();var isSHSZ=false;if(upperSymbol)isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);var isFutures=false;//是否是期货
|
|
@@ -8858,6 +8860,7 @@ FHK:'.FHK',//港股期货
|
|
|
8858
8860
|
SHFE:'.SHF',//上期所 (Shanghai Futures Exchange) | 上期所-能源
|
|
8859
8861
|
SHFE2:'.SHFE',//上期所 (Shanghai Futures Exchange) | 上期所-能源
|
|
8860
8862
|
CFFEX:'.CFE',//中期所 (China Financial Futures Exchange)
|
|
8863
|
+
CFFEX2:'.CFFEX',//中期所 (China Financial Futures Exchange)
|
|
8861
8864
|
DCE:'.DCE',//大连商品交易所(Dalian Commodity Exchange)
|
|
8862
8865
|
CZCE:'.CZC',//郑州期货交易所
|
|
8863
8866
|
GZFE:".GZFE",//广州期货交易所
|
|
@@ -8884,7 +8887,7 @@ IsET:function IsET(upperSymbol){if(!upperSymbol)return false;return upperSymbol.
|
|
|
8884
8887
|
{return false;},IsHSX:function IsHSX(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.HSX)>0;},IsHNX:function IsHNX(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.HNX)>0;},IsUPCOM:function IsUPCOM(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.UPCOM)>0;},IsNYMEX:function IsNYMEX(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.NYMEX)>0;},IsCOMEX:function IsCOMEX(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.COMEX)>0;},IsNYBOT:function IsNYBOT(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.NYBOT)>0;},IsCBOT:function IsCBOT(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.CBOT)>0;},IsLME:function IsLME(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.LME)>0;},IsTOCOM:function IsTOCOM(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.TOCOM)>0;},IsIPE:function IsIPE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.IPE)>0;},IsForeignExchange:function IsForeignExchange(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.FOREX)>0;},IsFTSE:function IsFTSE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.FTSE)>0;},IsFHK:function IsFHK(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.FHK)>0;},IsBIT:function IsBIT(upperSymbol){if(!upperSymbol)return false;if(upperSymbol.indexOf(this.BIT)>0)return true;if(upperSymbol.indexOf(this.BIZ)>0)return true;return false;},IsUSA:function IsUSA(upperSymbol)//是否是美股
|
|
8885
8888
|
{if(!upperSymbol)return false;return upperSymbol.indexOf(this.USA)>0;},IsSH:function IsSH(upperSymbol){//需要精确匹配最后3位
|
|
8886
8889
|
var pos=upperSymbol.length-this.SH.length;var find=upperSymbol.indexOf(this.SH);return find==pos;},IsSZ:function IsSZ(upperSymbol){var pos=upperSymbol.length-this.SZ.length;var find=upperSymbol.indexOf(this.SZ);return find==pos;},IsBJ:function IsBJ(upperSymbol){var pos=upperSymbol.length-this.BJ.length;var find=upperSymbol.indexOf(this.BJ);return find==pos;},//自定义指数
|
|
8887
|
-
IsSHSZCustomIndex:function IsSHSZCustomIndex(upperSymbol){var pos=upperSymbol.length-this.SHSZ_C_Index.length;var find=upperSymbol.indexOf(this.SHSZ_C_Index);return find==pos;},IsSHO:function IsSHO(upperSymbol){var pos=upperSymbol.length-this.SHO.length;var find=upperSymbol.indexOf(this.SHO);return find==pos;},IsSZO:function IsSZO(upperSymbol){var pos=upperSymbol.length-this.SZO.length;var find=upperSymbol.indexOf(this.SZO);return find==pos;},IsHK:function IsHK(upperSymbol){var pos=upperSymbol.length-this.HK.length;var find=upperSymbol.indexOf(this.HK);return find==pos;},IsTW:function IsTW(upperSymbol){var pos=upperSymbol.length-this.TW.length;var find=upperSymbol.indexOf(this.TW);return find==pos;},IsJP:function IsJP(upperSymbol){var pos=upperSymbol.length-this.JP.length;var find=upperSymbol.indexOf(this.JP);return find==pos;},IsSHFE:function IsSHFE(upperSymbol){if(!upperSymbol)return false;if(upperSymbol.indexOf(this.SHFE)>0)return true;if(upperSymbol.indexOf(this.SHFE2)>0)return true;return false;},IsCFFEX:function IsCFFEX(upperSymbol){if(!upperSymbol)return false;if(upperSymbol.indexOf(this.CFFEX)>0)return true;return false;},IsDCE:function IsDCE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.DCE)>0;},IsCZCE:function IsCZCE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.CZCE)>0;},IsGZFE:function IsGZFE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.GZFE)>0;},IsChinaFutures:function IsChinaFutures(upperSymbol)//是否是国内期货 /期权
|
|
8890
|
+
IsSHSZCustomIndex:function IsSHSZCustomIndex(upperSymbol){var pos=upperSymbol.length-this.SHSZ_C_Index.length;var find=upperSymbol.indexOf(this.SHSZ_C_Index);return find==pos;},IsSHO:function IsSHO(upperSymbol){var pos=upperSymbol.length-this.SHO.length;var find=upperSymbol.indexOf(this.SHO);return find==pos;},IsSZO:function IsSZO(upperSymbol){var pos=upperSymbol.length-this.SZO.length;var find=upperSymbol.indexOf(this.SZO);return find==pos;},IsHK:function IsHK(upperSymbol){var pos=upperSymbol.length-this.HK.length;var find=upperSymbol.indexOf(this.HK);return find==pos;},IsTW:function IsTW(upperSymbol){var pos=upperSymbol.length-this.TW.length;var find=upperSymbol.indexOf(this.TW);return find==pos;},IsJP:function IsJP(upperSymbol){var pos=upperSymbol.length-this.JP.length;var find=upperSymbol.indexOf(this.JP);return find==pos;},IsSHFE:function IsSHFE(upperSymbol){if(!upperSymbol)return false;if(upperSymbol.indexOf(this.SHFE)>0)return true;if(upperSymbol.indexOf(this.SHFE2)>0)return true;return false;},IsCFFEX:function IsCFFEX(upperSymbol){if(!upperSymbol)return false;if(upperSymbol.indexOf(this.CFFEX)>0)return true;if(upperSymbol.indexOf(this.CFFEX2)>0)return true;return false;},IsDCE:function IsDCE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.DCE)>0;},IsCZCE:function IsCZCE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.CZCE)>0;},IsGZFE:function IsGZFE(upperSymbol){if(!upperSymbol)return false;return upperSymbol.indexOf(this.GZFE)>0;},IsChinaFutures:function IsChinaFutures(upperSymbol)//是否是国内期货 /期权
|
|
8888
8891
|
{return this.IsSHO(upperSymbol)||this.IsSZO(upperSymbol)||this.IsGZFE(upperSymbol)||this.IsCFFEX(upperSymbol)||this.IsCZCE(upperSymbol)||this.IsDCE(upperSymbol)||this.IsSHFE(upperSymbol);},IsFutures:function IsFutures(upperSymbol)//是否是期货 包含国外的
|
|
8889
8892
|
{if(!upperSymbol)return false;return this.IsChinaFutures(upperSymbol)||this.IsNYMEX(upperSymbol)||this.IsCOMEX(upperSymbol)||this.IsNYBOT(upperSymbol)||this.IsCBOT(upperSymbol)||this.IsLME(upperSymbol)||this.IsTOCOM(upperSymbol);},IsSHSZ:function IsSHSZ(upperSymbol)//是否是沪深的股票
|
|
8890
8893
|
{return this.IsSZ(upperSymbol)||this.IsSH(upperSymbol)||this.IsSHSZCustomIndex(upperSymbol);},IsSHSZFund:function IsSHSZFund(upperSymbol)//是否是交易所基金
|
|
@@ -9074,7 +9077,7 @@ function FuturesTimeData(){this.TIME_SPLIT=[//ID=0 9:00-10:15,10:31-11:30,13:31-
|
|
|
9074
9077
|
{Name:'9:00-10:15,10:31-11:30,13:31-15:00',Data:[//9:00-10:15,10:30-11:30,13:30-15:00
|
|
9075
9078
|
{Start:900,End:1015},{Start:1031,End:1130},{Start:1331,End:1500}],Coordinate:{Full://完整模式
|
|
9076
9079
|
[{Value:900,Text:'9:00'},{Value:930,Text:'9:30'},{Value:1000,Text:'10:00'},{Value:1030,Text:'10:30'},{Value:1100,Text:'11:00'},{Value:1330,Text:'13:30'},{Value:1400,Text:'14:00'},{Value:1430,Text:'14:30'},{Value:1500,Text:'15:00'}],Simple://简洁模式
|
|
9077
|
-
[{Value:900,Text:'9:00'},{Value:1000,Text:'10:00'},{Value:
|
|
9080
|
+
[{Value:900,Text:'9:00'},{Value:1000,Text:'10:00'},{Value:1100,Text:'11:00'},{Value:1400,Text:'14:00'},{Value:1500,Text:'15:00'}],Min://最小模式
|
|
9078
9081
|
[{Value:900,Text:'9:00'},{Value:1330,Text:'13:30'},{Value:1500,Text:'15:00'}]}},//ID=1 9:30-11:30,13:01-15:15
|
|
9079
9082
|
{Name:'9:30-11:30,13:01-15:15',Data:[{Start:930,End:1130},{Start:1301,End:1515}],Coordinate:{Full://完整模式
|
|
9080
9083
|
[{Value:930,Text:'9:30'},{Value:1000,Text:'10:00'},{Value:1030,Text:'10:30'},{Value:1100,Text:'11:00'},{Value:1300,Text:'13:00'},{Value:1330,Text:'13:30'},{Value:1400,Text:'14:00'},{Value:1430,Text:'14:30'},{Value:1515,Text:'15:15'}],Simple://简洁模式
|
|
@@ -9706,7 +9709,7 @@ for(;offset<data.length;++offset){if(data[offset]!=null&&!isNaN(data[offset]))br
|
|
|
9706
9709
|
SMA 移动平均
|
|
9707
9710
|
返回移动平均。
|
|
9708
9711
|
用法: SMA(X,N,M) X的N日移动平均,M为权重,如Y=(X*M+Y'*(N-M))/N
|
|
9709
|
-
*/this.SMA=function(data,n,m){var result=[];if(Array.isArray(n)){for(var i=0;i<n.length;++i){var period=n[i];if(!this.IsNumber(period))continue;period=parseInt(period);if(period<=0)continue;if(period>i+1)period=i+1;var lastSMA=null;var sma=null;for(var j=0;j<period;++j){var index=i-(period-j-1);var item=data[index];if(!this.IsNumber(item))continue;if(lastSMA==null){lastSMA=item;sma=item;}else{sma=(m*item+(period-m)*lastSMA)/period;lastSMA=sma;}}result[i]=sma;}}else{var i=
|
|
9712
|
+
*/this.SMA=function(data,n,m){var result=[];if(Array.isArray(n)){for(var i=0;i<n.length;++i){var period=n[i];if(!this.IsNumber(period))continue;period=parseInt(period);if(period<=0)continue;if(period>i+1)period=i+1;var lastSMA=null;var sma=null;for(var j=0;j<period;++j){var index=i-(period-j-1);var item=data[index];if(!this.IsNumber(item))continue;if(lastSMA==null){lastSMA=item;sma=item;}else{sma=(m*item+(period-m)*lastSMA)/period;lastSMA=sma;}}result[i]=sma;}}else{var i=n;var lastData=null;for(;i<data.length;++i){if(data[i]==null||isNaN(data[i]))continue;lastData=data[i];result[i]=lastData;//第一天的数据
|
|
9710
9713
|
break;}for(++i;i<data.length;++i){result[i]=(m*data[i]+(n-m)*lastData)/n;lastData=result[i];}}return result;};/*
|
|
9711
9714
|
求动态移动平均.
|
|
9712
9715
|
用法: DMA(X,A),求X的动态移动平均.
|
|
@@ -13206,7 +13209,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
13206
13209
|
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);};}/********************************************************************************
|
|
13207
13210
|
* 版本信息输出
|
|
13208
13211
|
*
|
|
13209
|
-
*/var HQCHART_VERSION="1.1.
|
|
13212
|
+
*/var HQCHART_VERSION="1.1.13484";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();//把给外界调用的方法暴露出来
|
|
13210
13213
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
13211
13214
|
// BaseIndex:BaseIndex,
|
|
13212
13215
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -48874,17 +48874,55 @@ HQData.RequestFlowCapitalData=function(data,callback)
|
|
|
48874
48874
|
callback(hqchartData);
|
|
48875
48875
|
}
|
|
48876
48876
|
|
|
48877
|
-
HQData.RequestRealtimeData=function(data,callback)
|
|
48877
|
+
HQData.RequestRealtimeData=function(data, callback)
|
|
48878
48878
|
{
|
|
48879
48879
|
data.PreventDefault=true;
|
|
48880
48880
|
var symbol=data.Request.Data.symbol[0]; //请求的股票代码
|
|
48881
48881
|
|
|
48882
|
-
|
|
48882
|
+
if (data.Request.Data.symbol.length>1) //叠加股票
|
|
48883
|
+
{
|
|
48884
|
+
var hqchartData={ stock:[], code:0 };
|
|
48885
|
+
var arySymbol=data.Request.Data.symbol;
|
|
48886
|
+
for(var i=0;i<arySymbol.length;++i)
|
|
48887
|
+
{
|
|
48888
|
+
var symbol=arySymbol[i];
|
|
48889
|
+
if (i==0)
|
|
48890
|
+
{
|
|
48891
|
+
var stock=KLINE_1DAY_DATA.stock[0];
|
|
48892
|
+
stock.name=symbol;
|
|
48893
|
+
stock.symbol=symbol;
|
|
48894
|
+
hqchartData.stock.push(stock);
|
|
48895
|
+
}
|
|
48896
|
+
else
|
|
48897
|
+
{
|
|
48898
|
+
if (symbol=="399001.sz")
|
|
48899
|
+
{
|
|
48900
|
+
var stock=KLINE_1DAY_OVERLAY_DATA2.stock[0];
|
|
48901
|
+
stock.name=symbol;
|
|
48902
|
+
stock.symbol=symbol;
|
|
48903
|
+
hqchartData.stock.push(stock);
|
|
48904
|
+
}
|
|
48905
|
+
else
|
|
48906
|
+
{
|
|
48907
|
+
var stock=KLINE_1DAY_OVERLAY_DATA.stock[0];
|
|
48908
|
+
stock.name=symbol;
|
|
48909
|
+
stock.symbol=symbol;
|
|
48910
|
+
hqchartData.stock.push(stock);
|
|
48911
|
+
}
|
|
48912
|
+
|
|
48913
|
+
}
|
|
48914
|
+
}
|
|
48883
48915
|
|
|
48884
|
-
|
|
48885
|
-
|
|
48886
|
-
|
|
48887
|
-
|
|
48916
|
+
callback(hqchartData);
|
|
48917
|
+
}
|
|
48918
|
+
else
|
|
48919
|
+
{
|
|
48920
|
+
console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`);
|
|
48921
|
+
var hqchartData=KLINE_1DAY_DATA;
|
|
48922
|
+
hqchartData.stock[0].name=symbol;
|
|
48923
|
+
hqchartData.stock[0].symbol=symbol;
|
|
48924
|
+
callback(hqchartData);
|
|
48925
|
+
}
|
|
48888
48926
|
}
|
|
48889
48927
|
|
|
48890
48928
|
|
|
@@ -48908,24 +48946,71 @@ HQData.RequestMinuteRealtimeData=function(data,callback)
|
|
|
48908
48946
|
data.PreventDefault=true;
|
|
48909
48947
|
var symbol=data.Request.Data.symbol[0]; //请求的股票代码
|
|
48910
48948
|
|
|
48911
|
-
|
|
48949
|
+
if (data.Request.Data.symbol.length>1) //叠加股票
|
|
48950
|
+
{
|
|
48951
|
+
var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
|
|
48952
|
+
hqchartData.overlay=[]; //叠加数据
|
|
48953
|
+
var arySymbol=data.Request.Data.symbol;
|
|
48954
|
+
for(var i=0;i<arySymbol.length;++i)
|
|
48955
|
+
{
|
|
48956
|
+
var symbol=arySymbol[i];
|
|
48957
|
+
if (i==0)
|
|
48958
|
+
{
|
|
48959
|
+
var kItem=hqchartData.data[0];
|
|
48960
|
+
var price=kItem[5];
|
|
48961
|
+
var value=Math.ceil(Math.random()*10)/1000*price;
|
|
48962
|
+
var bUp=Math.ceil(Math.random()*10)>=5;
|
|
48963
|
+
|
|
48964
|
+
if (bUp) price+=value;
|
|
48965
|
+
else price-=value;
|
|
48966
|
+
kItem[5]=price;
|
|
48967
|
+
kItem[3]=Math.max(price, kItem[3]);
|
|
48968
|
+
kItem[4]=Math.min(price, kItem[4]);
|
|
48912
48969
|
|
|
48913
|
-
|
|
48970
|
+
hqchartData.name=symbol;
|
|
48971
|
+
hqchartData.symbol=symbol;
|
|
48972
|
+
}
|
|
48973
|
+
else
|
|
48974
|
+
{
|
|
48975
|
+
var testData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA2));
|
|
48976
|
+
var kItem=testData.data[0];
|
|
48977
|
+
var price=kItem[5];
|
|
48978
|
+
var value=Math.ceil(Math.random()*10)/1000*price;
|
|
48979
|
+
var bUp=Math.ceil(Math.random()*10)>=5;
|
|
48980
|
+
|
|
48981
|
+
if (bUp) price+=value;
|
|
48982
|
+
else price-=value;
|
|
48983
|
+
kItem[5]=price;
|
|
48984
|
+
kItem[3]=Math.max(price, kItem[3]);
|
|
48985
|
+
kItem[4]=Math.min(price, kItem[4]);
|
|
48986
|
+
var stock={ data:testData.data, symbol:symbol, name:symbol };
|
|
48987
|
+
hqchartData.overlay.push(stock);
|
|
48988
|
+
}
|
|
48989
|
+
}
|
|
48914
48990
|
|
|
48915
|
-
|
|
48916
|
-
|
|
48917
|
-
|
|
48918
|
-
|
|
48919
|
-
|
|
48920
|
-
|
|
48921
|
-
|
|
48922
|
-
kItem[5]=price;
|
|
48923
|
-
kItem[3]=Math.max(price, kItem[3]);
|
|
48924
|
-
kItem[4]=Math.min(price, kItem[4]);
|
|
48991
|
+
callback(hqchartData);
|
|
48992
|
+
}
|
|
48993
|
+
else
|
|
48994
|
+
{
|
|
48995
|
+
console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`);
|
|
48996
|
+
|
|
48997
|
+
var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
|
|
48925
48998
|
|
|
48926
|
-
|
|
48927
|
-
|
|
48928
|
-
|
|
48999
|
+
var kItem=hqchartData.data[0];
|
|
49000
|
+
var price=kItem[5];
|
|
49001
|
+
var value=Math.ceil(Math.random()*10)/1000*price;
|
|
49002
|
+
var bUp=Math.ceil(Math.random()*10)>=5;
|
|
49003
|
+
|
|
49004
|
+
if (bUp) price+=value;
|
|
49005
|
+
else price-=value;
|
|
49006
|
+
kItem[5]=price;
|
|
49007
|
+
kItem[3]=Math.max(price, kItem[3]);
|
|
49008
|
+
kItem[4]=Math.min(price, kItem[4]);
|
|
49009
|
+
|
|
49010
|
+
hqchartData.name=symbol;
|
|
49011
|
+
hqchartData.symbol=symbol;
|
|
49012
|
+
callback(hqchartData);
|
|
49013
|
+
}
|
|
48929
49014
|
}
|
|
48930
49015
|
|
|
48931
49016
|
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -1039,6 +1039,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1039
1039
|
if (IFrameSplitOperator.IsNumber(item.CloseBeforeButton)) chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;
|
|
1040
1040
|
|
|
1041
1041
|
if (item.ClientBGColor) subFrame.ClientBGColor=item.ClientBGColor;
|
|
1042
|
+
if (!IFrameSplitOperator.IsUndefined(item.HorizontalReserved)) subFrame.HorizontalReserved=item.HorizontalReserved;
|
|
1042
1043
|
}
|
|
1043
1044
|
|
|
1044
1045
|
chart.UpdateXShowText();
|
|
@@ -11026,6 +11027,9 @@ function AverageWidthFrame()
|
|
|
11026
11027
|
for(var i=this.HorizontalInfo.length-1; i>=0; --i) //从上往下画分割线
|
|
11027
11028
|
{
|
|
11028
11029
|
var item=this.HorizontalInfo[i];
|
|
11030
|
+
if (!IFrameSplitOperator.IsNumber(item.Value)) continue;
|
|
11031
|
+
if (item.Value>this.HorizontalMax || item.Value<this.HorizontalMin) continue;
|
|
11032
|
+
|
|
11029
11033
|
var y=this.GetYFromData(item.Value);
|
|
11030
11034
|
if (y!=null && yPrev!=null && Math.abs(y-yPrev)<this.MinYDistance) continue; //两个坐标在近了 就不画了
|
|
11031
11035
|
|
|
@@ -11568,12 +11572,13 @@ function AverageWidthFrame()
|
|
|
11568
11572
|
if (item.Font != null) this.Canvas.font = item.Font;
|
|
11569
11573
|
this.Canvas.fillStyle = item.TextColor;
|
|
11570
11574
|
this.Canvas.textAlign = "left";
|
|
11575
|
+
var textHeight=this.Canvas.measureText("擎").width;
|
|
11571
11576
|
var yText=y;
|
|
11572
11577
|
if (y >= bottom - 2)
|
|
11573
11578
|
{
|
|
11574
11579
|
this.Canvas.textBaseline = 'bottom';
|
|
11575
11580
|
}
|
|
11576
|
-
else if (y
|
|
11581
|
+
else if ((y-textHeight/2)<=top)
|
|
11577
11582
|
{
|
|
11578
11583
|
this.Canvas.textBaseline = 'top';
|
|
11579
11584
|
yText+=this.YTextTopOffset;
|
|
@@ -11602,12 +11607,13 @@ function AverageWidthFrame()
|
|
|
11602
11607
|
if (item.Font != null) this.Canvas.font = item.Font;
|
|
11603
11608
|
this.Canvas.fillStyle = item.TextColor;
|
|
11604
11609
|
this.Canvas.textAlign = "right";
|
|
11610
|
+
var textHeight=this.Canvas.measureText("擎").width;
|
|
11605
11611
|
var yText=y;
|
|
11606
11612
|
if (y >= bottom - 2)
|
|
11607
11613
|
{
|
|
11608
11614
|
this.Canvas.textBaseline = 'bottom';
|
|
11609
11615
|
}
|
|
11610
|
-
else if (y <= top
|
|
11616
|
+
else if (y-textHeight/2 <= top)
|
|
11611
11617
|
{
|
|
11612
11618
|
this.Canvas.textBaseline = 'top';
|
|
11613
11619
|
yText+=this.YTextTopOffset;
|
|
@@ -48067,6 +48073,8 @@ function FrameSplitMinutePriceY()
|
|
|
48067
48073
|
|
|
48068
48074
|
this.CustomCoordinate();
|
|
48069
48075
|
|
|
48076
|
+
this.ReservedHeight({ Max:this.Frame.HorizontalMax, Min:this.Frame.HorizontalMin }); //预留高度
|
|
48077
|
+
|
|
48070
48078
|
if (this.GetEventCallback)
|
|
48071
48079
|
{
|
|
48072
48080
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);
|
|
@@ -71928,7 +71936,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
71928
71936
|
|
|
71929
71937
|
//绑定数据
|
|
71930
71938
|
this.UpdateMainData(bindData,lastDataCount);
|
|
71931
|
-
this.
|
|
71939
|
+
this.UpdateOverlayMinuteRealtimeData(data); //更新叠加股票数据
|
|
71940
|
+
this.BindInstructionIndexData(bindData); //执行指示脚本
|
|
71932
71941
|
|
|
71933
71942
|
for(var i=0; i<this.Frame.SubFrame.length; ++i)
|
|
71934
71943
|
{
|
|
@@ -76699,7 +76708,7 @@ KLineChartContainer.JsonDataToMinuteRealtimeDataV2=function(data,symbol)
|
|
|
76699
76708
|
var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7, time = 8, position=9;
|
|
76700
76709
|
var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;
|
|
76701
76710
|
var yClose=null;
|
|
76702
|
-
|
|
76711
|
+
var aryMinuteData=[];
|
|
76703
76712
|
for (var i = 0; i < overlayData.data.length; ++i)
|
|
76704
76713
|
{
|
|
76705
76714
|
var item = new HistoryData();
|
|
@@ -88947,6 +88956,7 @@ var MARKET_SUFFIX_NAME=
|
|
|
88947
88956
|
SHFE: '.SHF', //上期所 (Shanghai Futures Exchange) | 上期所-能源
|
|
88948
88957
|
SHFE2:'.SHFE', //上期所 (Shanghai Futures Exchange) | 上期所-能源
|
|
88949
88958
|
CFFEX: '.CFE', //中期所 (China Financial Futures Exchange)
|
|
88959
|
+
CFFEX2:'.CFFEX', //中期所 (China Financial Futures Exchange)
|
|
88950
88960
|
DCE: '.DCE', //大连商品交易所(Dalian Commodity Exchange)
|
|
88951
88961
|
CZCE: '.CZC', //郑州期货交易所
|
|
88952
88962
|
GZFE:".GZFE", //广州期货交易所
|
|
@@ -89158,6 +89168,7 @@ var MARKET_SUFFIX_NAME=
|
|
|
89158
89168
|
{
|
|
89159
89169
|
if (!upperSymbol) return false;
|
|
89160
89170
|
if (upperSymbol.indexOf(this.CFFEX) > 0) return true;
|
|
89171
|
+
if (upperSymbol.indexOf(this.CFFEX2) > 0) return true;
|
|
89161
89172
|
|
|
89162
89173
|
return false;
|
|
89163
89174
|
},
|
|
@@ -90674,8 +90685,8 @@ function FuturesTimeData()
|
|
|
90674
90685
|
[
|
|
90675
90686
|
{ Value: 900, Text: '9:00' },
|
|
90676
90687
|
{ Value: 1000, Text: '10:00' },
|
|
90677
|
-
{ Value:
|
|
90678
|
-
{ Value:
|
|
90688
|
+
{ Value: 1100, Text: '11:00' },
|
|
90689
|
+
{ Value: 1400, Text: '14:00' },
|
|
90679
90690
|
{ Value: 1500, Text: '15:00' },
|
|
90680
90691
|
],
|
|
90681
90692
|
Min: //最小模式
|
|
@@ -79863,4 +79863,25 @@ var KLINE_DAY_OVERLAY_DATA={
|
|
|
79863
79863
|
317757173399.7
|
|
79864
79864
|
]
|
|
79865
79865
|
]
|
|
79866
|
+
}
|
|
79867
|
+
|
|
79868
|
+
|
|
79869
|
+
var KLINE_1DAY_OVERLAY_DATA=
|
|
79870
|
+
{
|
|
79871
|
+
"stock":
|
|
79872
|
+
[
|
|
79873
|
+
{
|
|
79874
|
+
"time": 150002,
|
|
79875
|
+
"date": 20230825,
|
|
79876
|
+
"price": 3074.0747,
|
|
79877
|
+
"open": 3068.615,
|
|
79878
|
+
"yclose": 3082.2439,
|
|
79879
|
+
"high": 3095.047,
|
|
79880
|
+
"low": 3053.0373,
|
|
79881
|
+
"vol": 293357686,
|
|
79882
|
+
"amount": 317757373399.7,
|
|
79883
|
+
"symbol": "000001.sh",
|
|
79884
|
+
"name": "000001.sh"
|
|
79885
|
+
}
|
|
79886
|
+
],
|
|
79866
79887
|
}
|
|
@@ -2678,4 +2678,26 @@ var KLINE_MINUTE_DATA2 = {
|
|
|
2678
2678
|
"name": "平安银行",
|
|
2679
2679
|
"count": 7646,
|
|
2680
2680
|
"code": 0
|
|
2681
|
-
}
|
|
2681
|
+
}
|
|
2682
|
+
|
|
2683
|
+
|
|
2684
|
+
var KLINE_1MINUTE_DATA2=
|
|
2685
|
+
{
|
|
2686
|
+
code:0,
|
|
2687
|
+
data:
|
|
2688
|
+
[
|
|
2689
|
+
[
|
|
2690
|
+
20230829,
|
|
2691
|
+
12.65,
|
|
2692
|
+
12.65,
|
|
2693
|
+
12.65,
|
|
2694
|
+
12.65,
|
|
2695
|
+
12.65,
|
|
2696
|
+
1246339,
|
|
2697
|
+
15766208,
|
|
2698
|
+
1500
|
|
2699
|
+
]
|
|
2700
|
+
],
|
|
2701
|
+
symbol:"xxx",
|
|
2702
|
+
name:"xxxx",
|
|
2703
|
+
}
|
|
@@ -78512,4 +78512,25 @@ var KLINE_DAY_OVERLAY_DATA2 =
|
|
|
78512
78512
|
171136489266.51
|
|
78513
78513
|
]
|
|
78514
78514
|
]
|
|
78515
|
+
}
|
|
78516
|
+
|
|
78517
|
+
|
|
78518
|
+
var KLINE_1DAY_OVERLAY_DATA2=
|
|
78519
|
+
{
|
|
78520
|
+
"stock":
|
|
78521
|
+
[
|
|
78522
|
+
{
|
|
78523
|
+
"time": 150002,
|
|
78524
|
+
"date": 20230825,
|
|
78525
|
+
"price": 10180.4711,
|
|
78526
|
+
"open": 10197.9573,
|
|
78527
|
+
"yclose": 10256.1896,
|
|
78528
|
+
"high": 10212.6467,
|
|
78529
|
+
"low": 10091.8625,
|
|
78530
|
+
"vol": 10428916190,
|
|
78531
|
+
"amount": 171138489266.7,
|
|
78532
|
+
"symbol": "",
|
|
78533
|
+
"name": ""
|
|
78534
|
+
}
|
|
78535
|
+
],
|
|
78515
78536
|
}
|
|
@@ -199,17 +199,55 @@ HQData.RequestFlowCapitalData=function(data,callback)
|
|
|
199
199
|
callback(hqchartData);
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
-
HQData.RequestRealtimeData=function(data,callback)
|
|
202
|
+
HQData.RequestRealtimeData=function(data, callback)
|
|
203
203
|
{
|
|
204
204
|
data.PreventDefault=true;
|
|
205
205
|
var symbol=data.Request.Data.symbol[0]; //请求的股票代码
|
|
206
206
|
|
|
207
|
-
|
|
207
|
+
if (data.Request.Data.symbol.length>1) //叠加股票
|
|
208
|
+
{
|
|
209
|
+
var hqchartData={ stock:[], code:0 };
|
|
210
|
+
var arySymbol=data.Request.Data.symbol;
|
|
211
|
+
for(var i=0;i<arySymbol.length;++i)
|
|
212
|
+
{
|
|
213
|
+
var symbol=arySymbol[i];
|
|
214
|
+
if (i==0)
|
|
215
|
+
{
|
|
216
|
+
var stock=KLINE_1DAY_DATA.stock[0];
|
|
217
|
+
stock.name=symbol;
|
|
218
|
+
stock.symbol=symbol;
|
|
219
|
+
hqchartData.stock.push(stock);
|
|
220
|
+
}
|
|
221
|
+
else
|
|
222
|
+
{
|
|
223
|
+
if (symbol=="399001.sz")
|
|
224
|
+
{
|
|
225
|
+
var stock=KLINE_1DAY_OVERLAY_DATA2.stock[0];
|
|
226
|
+
stock.name=symbol;
|
|
227
|
+
stock.symbol=symbol;
|
|
228
|
+
hqchartData.stock.push(stock);
|
|
229
|
+
}
|
|
230
|
+
else
|
|
231
|
+
{
|
|
232
|
+
var stock=KLINE_1DAY_OVERLAY_DATA.stock[0];
|
|
233
|
+
stock.name=symbol;
|
|
234
|
+
stock.symbol=symbol;
|
|
235
|
+
hqchartData.stock.push(stock);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
}
|
|
239
|
+
}
|
|
208
240
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
241
|
+
callback(hqchartData);
|
|
242
|
+
}
|
|
243
|
+
else
|
|
244
|
+
{
|
|
245
|
+
console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`);
|
|
246
|
+
var hqchartData=KLINE_1DAY_DATA;
|
|
247
|
+
hqchartData.stock[0].name=symbol;
|
|
248
|
+
hqchartData.stock[0].symbol=symbol;
|
|
249
|
+
callback(hqchartData);
|
|
250
|
+
}
|
|
213
251
|
}
|
|
214
252
|
|
|
215
253
|
|
|
@@ -233,24 +271,71 @@ HQData.RequestMinuteRealtimeData=function(data,callback)
|
|
|
233
271
|
data.PreventDefault=true;
|
|
234
272
|
var symbol=data.Request.Data.symbol[0]; //请求的股票代码
|
|
235
273
|
|
|
236
|
-
|
|
274
|
+
if (data.Request.Data.symbol.length>1) //叠加股票
|
|
275
|
+
{
|
|
276
|
+
var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
|
|
277
|
+
hqchartData.overlay=[]; //叠加数据
|
|
278
|
+
var arySymbol=data.Request.Data.symbol;
|
|
279
|
+
for(var i=0;i<arySymbol.length;++i)
|
|
280
|
+
{
|
|
281
|
+
var symbol=arySymbol[i];
|
|
282
|
+
if (i==0)
|
|
283
|
+
{
|
|
284
|
+
var kItem=hqchartData.data[0];
|
|
285
|
+
var price=kItem[5];
|
|
286
|
+
var value=Math.ceil(Math.random()*10)/1000*price;
|
|
287
|
+
var bUp=Math.ceil(Math.random()*10)>=5;
|
|
288
|
+
|
|
289
|
+
if (bUp) price+=value;
|
|
290
|
+
else price-=value;
|
|
291
|
+
kItem[5]=price;
|
|
292
|
+
kItem[3]=Math.max(price, kItem[3]);
|
|
293
|
+
kItem[4]=Math.min(price, kItem[4]);
|
|
294
|
+
|
|
295
|
+
hqchartData.name=symbol;
|
|
296
|
+
hqchartData.symbol=symbol;
|
|
297
|
+
}
|
|
298
|
+
else
|
|
299
|
+
{
|
|
300
|
+
var testData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA2));
|
|
301
|
+
var kItem=testData.data[0];
|
|
302
|
+
var price=kItem[5];
|
|
303
|
+
var value=Math.ceil(Math.random()*10)/1000*price;
|
|
304
|
+
var bUp=Math.ceil(Math.random()*10)>=5;
|
|
305
|
+
|
|
306
|
+
if (bUp) price+=value;
|
|
307
|
+
else price-=value;
|
|
308
|
+
kItem[5]=price;
|
|
309
|
+
kItem[3]=Math.max(price, kItem[3]);
|
|
310
|
+
kItem[4]=Math.min(price, kItem[4]);
|
|
311
|
+
var stock={ data:testData.data, symbol:symbol, name:symbol };
|
|
312
|
+
hqchartData.overlay.push(stock);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
237
315
|
|
|
238
|
-
|
|
316
|
+
callback(hqchartData);
|
|
317
|
+
}
|
|
318
|
+
else
|
|
319
|
+
{
|
|
320
|
+
console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`);
|
|
239
321
|
|
|
240
|
-
|
|
241
|
-
var price=kItem[5];
|
|
242
|
-
var value=Math.ceil(Math.random()*10)/1000*price;
|
|
243
|
-
var bUp=Math.ceil(Math.random()*10)>=5;
|
|
322
|
+
var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
|
|
244
323
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
324
|
+
var kItem=hqchartData.data[0];
|
|
325
|
+
var price=kItem[5];
|
|
326
|
+
var value=Math.ceil(Math.random()*10)/1000*price;
|
|
327
|
+
var bUp=Math.ceil(Math.random()*10)>=5;
|
|
328
|
+
|
|
329
|
+
if (bUp) price+=value;
|
|
330
|
+
else price-=value;
|
|
331
|
+
kItem[5]=price;
|
|
332
|
+
kItem[3]=Math.max(price, kItem[3]);
|
|
333
|
+
kItem[4]=Math.min(price, kItem[4]);
|
|
334
|
+
|
|
335
|
+
hqchartData.name=symbol;
|
|
336
|
+
hqchartData.symbol=symbol;
|
|
337
|
+
callback(hqchartData);
|
|
338
|
+
}
|
|
254
339
|
}
|
|
255
340
|
|
|
256
341
|
|
|
@@ -4964,6 +4964,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4964
4964
|
if (IFrameSplitOperator.IsNumber(item.CloseBeforeButton)) chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;
|
|
4965
4965
|
|
|
4966
4966
|
if (item.ClientBGColor) subFrame.ClientBGColor=item.ClientBGColor;
|
|
4967
|
+
if (!IFrameSplitOperator.IsUndefined(item.HorizontalReserved)) subFrame.HorizontalReserved=item.HorizontalReserved;
|
|
4967
4968
|
}
|
|
4968
4969
|
|
|
4969
4970
|
chart.UpdateXShowText();
|
|
@@ -14951,6 +14952,9 @@ function AverageWidthFrame()
|
|
|
14951
14952
|
for(var i=this.HorizontalInfo.length-1; i>=0; --i) //从上往下画分割线
|
|
14952
14953
|
{
|
|
14953
14954
|
var item=this.HorizontalInfo[i];
|
|
14955
|
+
if (!IFrameSplitOperator.IsNumber(item.Value)) continue;
|
|
14956
|
+
if (item.Value>this.HorizontalMax || item.Value<this.HorizontalMin) continue;
|
|
14957
|
+
|
|
14954
14958
|
var y=this.GetYFromData(item.Value);
|
|
14955
14959
|
if (y!=null && yPrev!=null && Math.abs(y-yPrev)<this.MinYDistance) continue; //两个坐标在近了 就不画了
|
|
14956
14960
|
|
|
@@ -15493,12 +15497,13 @@ function AverageWidthFrame()
|
|
|
15493
15497
|
if (item.Font != null) this.Canvas.font = item.Font;
|
|
15494
15498
|
this.Canvas.fillStyle = item.TextColor;
|
|
15495
15499
|
this.Canvas.textAlign = "left";
|
|
15500
|
+
var textHeight=this.Canvas.measureText("擎").width;
|
|
15496
15501
|
var yText=y;
|
|
15497
15502
|
if (y >= bottom - 2)
|
|
15498
15503
|
{
|
|
15499
15504
|
this.Canvas.textBaseline = 'bottom';
|
|
15500
15505
|
}
|
|
15501
|
-
else if (y
|
|
15506
|
+
else if ((y-textHeight/2)<=top)
|
|
15502
15507
|
{
|
|
15503
15508
|
this.Canvas.textBaseline = 'top';
|
|
15504
15509
|
yText+=this.YTextTopOffset;
|
|
@@ -15527,12 +15532,13 @@ function AverageWidthFrame()
|
|
|
15527
15532
|
if (item.Font != null) this.Canvas.font = item.Font;
|
|
15528
15533
|
this.Canvas.fillStyle = item.TextColor;
|
|
15529
15534
|
this.Canvas.textAlign = "right";
|
|
15535
|
+
var textHeight=this.Canvas.measureText("擎").width;
|
|
15530
15536
|
var yText=y;
|
|
15531
15537
|
if (y >= bottom - 2)
|
|
15532
15538
|
{
|
|
15533
15539
|
this.Canvas.textBaseline = 'bottom';
|
|
15534
15540
|
}
|
|
15535
|
-
else if (y <= top
|
|
15541
|
+
else if (y-textHeight/2 <= top)
|
|
15536
15542
|
{
|
|
15537
15543
|
this.Canvas.textBaseline = 'top';
|
|
15538
15544
|
yText+=this.YTextTopOffset;
|
|
@@ -51992,6 +51998,8 @@ function FrameSplitMinutePriceY()
|
|
|
51992
51998
|
|
|
51993
51999
|
this.CustomCoordinate();
|
|
51994
52000
|
|
|
52001
|
+
this.ReservedHeight({ Max:this.Frame.HorizontalMax, Min:this.Frame.HorizontalMin }); //预留高度
|
|
52002
|
+
|
|
51995
52003
|
if (this.GetEventCallback)
|
|
51996
52004
|
{
|
|
51997
52005
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);
|
|
@@ -75853,7 +75861,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
75853
75861
|
|
|
75854
75862
|
//绑定数据
|
|
75855
75863
|
this.UpdateMainData(bindData,lastDataCount);
|
|
75856
|
-
this.
|
|
75864
|
+
this.UpdateOverlayMinuteRealtimeData(data); //更新叠加股票数据
|
|
75865
|
+
this.BindInstructionIndexData(bindData); //执行指示脚本
|
|
75857
75866
|
|
|
75858
75867
|
for(var i=0; i<this.Frame.SubFrame.length; ++i)
|
|
75859
75868
|
{
|
|
@@ -80624,7 +80633,7 @@ KLineChartContainer.JsonDataToMinuteRealtimeDataV2=function(data,symbol)
|
|
|
80624
80633
|
var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7, time = 8, position=9;
|
|
80625
80634
|
var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;
|
|
80626
80635
|
var yClose=null;
|
|
80627
|
-
|
|
80636
|
+
var aryMinuteData=[];
|
|
80628
80637
|
for (var i = 0; i < overlayData.data.length; ++i)
|
|
80629
80638
|
{
|
|
80630
80639
|
var item = new HistoryData();
|
|
@@ -92872,6 +92881,7 @@ var MARKET_SUFFIX_NAME=
|
|
|
92872
92881
|
SHFE: '.SHF', //上期所 (Shanghai Futures Exchange) | 上期所-能源
|
|
92873
92882
|
SHFE2:'.SHFE', //上期所 (Shanghai Futures Exchange) | 上期所-能源
|
|
92874
92883
|
CFFEX: '.CFE', //中期所 (China Financial Futures Exchange)
|
|
92884
|
+
CFFEX2:'.CFFEX', //中期所 (China Financial Futures Exchange)
|
|
92875
92885
|
DCE: '.DCE', //大连商品交易所(Dalian Commodity Exchange)
|
|
92876
92886
|
CZCE: '.CZC', //郑州期货交易所
|
|
92877
92887
|
GZFE:".GZFE", //广州期货交易所
|
|
@@ -93083,6 +93093,7 @@ var MARKET_SUFFIX_NAME=
|
|
|
93083
93093
|
{
|
|
93084
93094
|
if (!upperSymbol) return false;
|
|
93085
93095
|
if (upperSymbol.indexOf(this.CFFEX) > 0) return true;
|
|
93096
|
+
if (upperSymbol.indexOf(this.CFFEX2) > 0) return true;
|
|
93086
93097
|
|
|
93087
93098
|
return false;
|
|
93088
93099
|
},
|
|
@@ -94599,8 +94610,8 @@ function FuturesTimeData()
|
|
|
94599
94610
|
[
|
|
94600
94611
|
{ Value: 900, Text: '9:00' },
|
|
94601
94612
|
{ Value: 1000, Text: '10:00' },
|
|
94602
|
-
{ Value:
|
|
94603
|
-
{ Value:
|
|
94613
|
+
{ Value: 1100, Text: '11:00' },
|
|
94614
|
+
{ Value: 1400, Text: '14:00' },
|
|
94604
94615
|
{ Value: 1500, Text: '15:00' },
|
|
94605
94616
|
],
|
|
94606
94617
|
Min: //最小模式
|
|
@@ -100195,7 +100206,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
100195
100206
|
}
|
|
100196
100207
|
else
|
|
100197
100208
|
{
|
|
100198
|
-
var i=
|
|
100209
|
+
var i=n;
|
|
100199
100210
|
var lastData=null;
|
|
100200
100211
|
for(;i<data.length; ++i)
|
|
100201
100212
|
{
|
|
@@ -134341,7 +134352,7 @@ function ScrollBarBGChart()
|
|
|
134341
134352
|
|
|
134342
134353
|
|
|
134343
134354
|
|
|
134344
|
-
var HQCHART_VERSION="1.1.
|
|
134355
|
+
var HQCHART_VERSION="1.1.13484";
|
|
134345
134356
|
|
|
134346
134357
|
function PrintHQChartVersion()
|
|
134347
134358
|
{
|
|
@@ -48874,17 +48874,55 @@ HQData.RequestFlowCapitalData=function(data,callback)
|
|
|
48874
48874
|
callback(hqchartData);
|
|
48875
48875
|
}
|
|
48876
48876
|
|
|
48877
|
-
HQData.RequestRealtimeData=function(data,callback)
|
|
48877
|
+
HQData.RequestRealtimeData=function(data, callback)
|
|
48878
48878
|
{
|
|
48879
48879
|
data.PreventDefault=true;
|
|
48880
48880
|
var symbol=data.Request.Data.symbol[0]; //请求的股票代码
|
|
48881
48881
|
|
|
48882
|
-
|
|
48882
|
+
if (data.Request.Data.symbol.length>1) //叠加股票
|
|
48883
|
+
{
|
|
48884
|
+
var hqchartData={ stock:[], code:0 };
|
|
48885
|
+
var arySymbol=data.Request.Data.symbol;
|
|
48886
|
+
for(var i=0;i<arySymbol.length;++i)
|
|
48887
|
+
{
|
|
48888
|
+
var symbol=arySymbol[i];
|
|
48889
|
+
if (i==0)
|
|
48890
|
+
{
|
|
48891
|
+
var stock=KLINE_1DAY_DATA.stock[0];
|
|
48892
|
+
stock.name=symbol;
|
|
48893
|
+
stock.symbol=symbol;
|
|
48894
|
+
hqchartData.stock.push(stock);
|
|
48895
|
+
}
|
|
48896
|
+
else
|
|
48897
|
+
{
|
|
48898
|
+
if (symbol=="399001.sz")
|
|
48899
|
+
{
|
|
48900
|
+
var stock=KLINE_1DAY_OVERLAY_DATA2.stock[0];
|
|
48901
|
+
stock.name=symbol;
|
|
48902
|
+
stock.symbol=symbol;
|
|
48903
|
+
hqchartData.stock.push(stock);
|
|
48904
|
+
}
|
|
48905
|
+
else
|
|
48906
|
+
{
|
|
48907
|
+
var stock=KLINE_1DAY_OVERLAY_DATA.stock[0];
|
|
48908
|
+
stock.name=symbol;
|
|
48909
|
+
stock.symbol=symbol;
|
|
48910
|
+
hqchartData.stock.push(stock);
|
|
48911
|
+
}
|
|
48912
|
+
|
|
48913
|
+
}
|
|
48914
|
+
}
|
|
48883
48915
|
|
|
48884
|
-
|
|
48885
|
-
|
|
48886
|
-
|
|
48887
|
-
|
|
48916
|
+
callback(hqchartData);
|
|
48917
|
+
}
|
|
48918
|
+
else
|
|
48919
|
+
{
|
|
48920
|
+
console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`);
|
|
48921
|
+
var hqchartData=KLINE_1DAY_DATA;
|
|
48922
|
+
hqchartData.stock[0].name=symbol;
|
|
48923
|
+
hqchartData.stock[0].symbol=symbol;
|
|
48924
|
+
callback(hqchartData);
|
|
48925
|
+
}
|
|
48888
48926
|
}
|
|
48889
48927
|
|
|
48890
48928
|
|
|
@@ -48908,24 +48946,71 @@ HQData.RequestMinuteRealtimeData=function(data,callback)
|
|
|
48908
48946
|
data.PreventDefault=true;
|
|
48909
48947
|
var symbol=data.Request.Data.symbol[0]; //请求的股票代码
|
|
48910
48948
|
|
|
48911
|
-
|
|
48949
|
+
if (data.Request.Data.symbol.length>1) //叠加股票
|
|
48950
|
+
{
|
|
48951
|
+
var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
|
|
48952
|
+
hqchartData.overlay=[]; //叠加数据
|
|
48953
|
+
var arySymbol=data.Request.Data.symbol;
|
|
48954
|
+
for(var i=0;i<arySymbol.length;++i)
|
|
48955
|
+
{
|
|
48956
|
+
var symbol=arySymbol[i];
|
|
48957
|
+
if (i==0)
|
|
48958
|
+
{
|
|
48959
|
+
var kItem=hqchartData.data[0];
|
|
48960
|
+
var price=kItem[5];
|
|
48961
|
+
var value=Math.ceil(Math.random()*10)/1000*price;
|
|
48962
|
+
var bUp=Math.ceil(Math.random()*10)>=5;
|
|
48963
|
+
|
|
48964
|
+
if (bUp) price+=value;
|
|
48965
|
+
else price-=value;
|
|
48966
|
+
kItem[5]=price;
|
|
48967
|
+
kItem[3]=Math.max(price, kItem[3]);
|
|
48968
|
+
kItem[4]=Math.min(price, kItem[4]);
|
|
48912
48969
|
|
|
48913
|
-
|
|
48970
|
+
hqchartData.name=symbol;
|
|
48971
|
+
hqchartData.symbol=symbol;
|
|
48972
|
+
}
|
|
48973
|
+
else
|
|
48974
|
+
{
|
|
48975
|
+
var testData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA2));
|
|
48976
|
+
var kItem=testData.data[0];
|
|
48977
|
+
var price=kItem[5];
|
|
48978
|
+
var value=Math.ceil(Math.random()*10)/1000*price;
|
|
48979
|
+
var bUp=Math.ceil(Math.random()*10)>=5;
|
|
48980
|
+
|
|
48981
|
+
if (bUp) price+=value;
|
|
48982
|
+
else price-=value;
|
|
48983
|
+
kItem[5]=price;
|
|
48984
|
+
kItem[3]=Math.max(price, kItem[3]);
|
|
48985
|
+
kItem[4]=Math.min(price, kItem[4]);
|
|
48986
|
+
var stock={ data:testData.data, symbol:symbol, name:symbol };
|
|
48987
|
+
hqchartData.overlay.push(stock);
|
|
48988
|
+
}
|
|
48989
|
+
}
|
|
48914
48990
|
|
|
48915
|
-
|
|
48916
|
-
|
|
48917
|
-
|
|
48918
|
-
|
|
48919
|
-
|
|
48920
|
-
|
|
48921
|
-
|
|
48922
|
-
kItem[5]=price;
|
|
48923
|
-
kItem[3]=Math.max(price, kItem[3]);
|
|
48924
|
-
kItem[4]=Math.min(price, kItem[4]);
|
|
48991
|
+
callback(hqchartData);
|
|
48992
|
+
}
|
|
48993
|
+
else
|
|
48994
|
+
{
|
|
48995
|
+
console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`);
|
|
48996
|
+
|
|
48997
|
+
var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
|
|
48925
48998
|
|
|
48926
|
-
|
|
48927
|
-
|
|
48928
|
-
|
|
48999
|
+
var kItem=hqchartData.data[0];
|
|
49000
|
+
var price=kItem[5];
|
|
49001
|
+
var value=Math.ceil(Math.random()*10)/1000*price;
|
|
49002
|
+
var bUp=Math.ceil(Math.random()*10)>=5;
|
|
49003
|
+
|
|
49004
|
+
if (bUp) price+=value;
|
|
49005
|
+
else price-=value;
|
|
49006
|
+
kItem[5]=price;
|
|
49007
|
+
kItem[3]=Math.max(price, kItem[3]);
|
|
49008
|
+
kItem[4]=Math.min(price, kItem[4]);
|
|
49009
|
+
|
|
49010
|
+
hqchartData.name=symbol;
|
|
49011
|
+
hqchartData.symbol=symbol;
|
|
49012
|
+
callback(hqchartData);
|
|
49013
|
+
}
|
|
48929
49014
|
}
|
|
48930
49015
|
|
|
48931
49016
|
|
|
@@ -5008,6 +5008,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5008
5008
|
if (IFrameSplitOperator.IsNumber(item.CloseBeforeButton)) chart.Frame.SubFrame[i].Frame.IsShowCloseButton=item.CloseBeforeButton;
|
|
5009
5009
|
|
|
5010
5010
|
if (item.ClientBGColor) subFrame.ClientBGColor=item.ClientBGColor;
|
|
5011
|
+
if (!IFrameSplitOperator.IsUndefined(item.HorizontalReserved)) subFrame.HorizontalReserved=item.HorizontalReserved;
|
|
5011
5012
|
}
|
|
5012
5013
|
|
|
5013
5014
|
chart.UpdateXShowText();
|
|
@@ -14995,6 +14996,9 @@ function AverageWidthFrame()
|
|
|
14995
14996
|
for(var i=this.HorizontalInfo.length-1; i>=0; --i) //从上往下画分割线
|
|
14996
14997
|
{
|
|
14997
14998
|
var item=this.HorizontalInfo[i];
|
|
14999
|
+
if (!IFrameSplitOperator.IsNumber(item.Value)) continue;
|
|
15000
|
+
if (item.Value>this.HorizontalMax || item.Value<this.HorizontalMin) continue;
|
|
15001
|
+
|
|
14998
15002
|
var y=this.GetYFromData(item.Value);
|
|
14999
15003
|
if (y!=null && yPrev!=null && Math.abs(y-yPrev)<this.MinYDistance) continue; //两个坐标在近了 就不画了
|
|
15000
15004
|
|
|
@@ -15537,12 +15541,13 @@ function AverageWidthFrame()
|
|
|
15537
15541
|
if (item.Font != null) this.Canvas.font = item.Font;
|
|
15538
15542
|
this.Canvas.fillStyle = item.TextColor;
|
|
15539
15543
|
this.Canvas.textAlign = "left";
|
|
15544
|
+
var textHeight=this.Canvas.measureText("擎").width;
|
|
15540
15545
|
var yText=y;
|
|
15541
15546
|
if (y >= bottom - 2)
|
|
15542
15547
|
{
|
|
15543
15548
|
this.Canvas.textBaseline = 'bottom';
|
|
15544
15549
|
}
|
|
15545
|
-
else if (y
|
|
15550
|
+
else if ((y-textHeight/2)<=top)
|
|
15546
15551
|
{
|
|
15547
15552
|
this.Canvas.textBaseline = 'top';
|
|
15548
15553
|
yText+=this.YTextTopOffset;
|
|
@@ -15571,12 +15576,13 @@ function AverageWidthFrame()
|
|
|
15571
15576
|
if (item.Font != null) this.Canvas.font = item.Font;
|
|
15572
15577
|
this.Canvas.fillStyle = item.TextColor;
|
|
15573
15578
|
this.Canvas.textAlign = "right";
|
|
15579
|
+
var textHeight=this.Canvas.measureText("擎").width;
|
|
15574
15580
|
var yText=y;
|
|
15575
15581
|
if (y >= bottom - 2)
|
|
15576
15582
|
{
|
|
15577
15583
|
this.Canvas.textBaseline = 'bottom';
|
|
15578
15584
|
}
|
|
15579
|
-
else if (y <= top
|
|
15585
|
+
else if (y-textHeight/2 <= top)
|
|
15580
15586
|
{
|
|
15581
15587
|
this.Canvas.textBaseline = 'top';
|
|
15582
15588
|
yText+=this.YTextTopOffset;
|
|
@@ -52036,6 +52042,8 @@ function FrameSplitMinutePriceY()
|
|
|
52036
52042
|
|
|
52037
52043
|
this.CustomCoordinate();
|
|
52038
52044
|
|
|
52045
|
+
this.ReservedHeight({ Max:this.Frame.HorizontalMax, Min:this.Frame.HorizontalMin }); //预留高度
|
|
52046
|
+
|
|
52039
52047
|
if (this.GetEventCallback)
|
|
52040
52048
|
{
|
|
52041
52049
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_SPLIT_YCOORDINATE);
|
|
@@ -75897,7 +75905,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
75897
75905
|
|
|
75898
75906
|
//绑定数据
|
|
75899
75907
|
this.UpdateMainData(bindData,lastDataCount);
|
|
75900
|
-
this.
|
|
75908
|
+
this.UpdateOverlayMinuteRealtimeData(data); //更新叠加股票数据
|
|
75909
|
+
this.BindInstructionIndexData(bindData); //执行指示脚本
|
|
75901
75910
|
|
|
75902
75911
|
for(var i=0; i<this.Frame.SubFrame.length; ++i)
|
|
75903
75912
|
{
|
|
@@ -80668,7 +80677,7 @@ KLineChartContainer.JsonDataToMinuteRealtimeDataV2=function(data,symbol)
|
|
|
80668
80677
|
var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7, time = 8, position=9;
|
|
80669
80678
|
var orderFlow=JSCHART_DATA_FIELD_ID.KLINE_ORDERFLOW;
|
|
80670
80679
|
var yClose=null;
|
|
80671
|
-
|
|
80680
|
+
var aryMinuteData=[];
|
|
80672
80681
|
for (var i = 0; i < overlayData.data.length; ++i)
|
|
80673
80682
|
{
|
|
80674
80683
|
var item = new HistoryData();
|
|
@@ -92916,6 +92925,7 @@ var MARKET_SUFFIX_NAME=
|
|
|
92916
92925
|
SHFE: '.SHF', //上期所 (Shanghai Futures Exchange) | 上期所-能源
|
|
92917
92926
|
SHFE2:'.SHFE', //上期所 (Shanghai Futures Exchange) | 上期所-能源
|
|
92918
92927
|
CFFEX: '.CFE', //中期所 (China Financial Futures Exchange)
|
|
92928
|
+
CFFEX2:'.CFFEX', //中期所 (China Financial Futures Exchange)
|
|
92919
92929
|
DCE: '.DCE', //大连商品交易所(Dalian Commodity Exchange)
|
|
92920
92930
|
CZCE: '.CZC', //郑州期货交易所
|
|
92921
92931
|
GZFE:".GZFE", //广州期货交易所
|
|
@@ -93127,6 +93137,7 @@ var MARKET_SUFFIX_NAME=
|
|
|
93127
93137
|
{
|
|
93128
93138
|
if (!upperSymbol) return false;
|
|
93129
93139
|
if (upperSymbol.indexOf(this.CFFEX) > 0) return true;
|
|
93140
|
+
if (upperSymbol.indexOf(this.CFFEX2) > 0) return true;
|
|
93130
93141
|
|
|
93131
93142
|
return false;
|
|
93132
93143
|
},
|
|
@@ -94643,8 +94654,8 @@ function FuturesTimeData()
|
|
|
94643
94654
|
[
|
|
94644
94655
|
{ Value: 900, Text: '9:00' },
|
|
94645
94656
|
{ Value: 1000, Text: '10:00' },
|
|
94646
|
-
{ Value:
|
|
94647
|
-
{ Value:
|
|
94657
|
+
{ Value: 1100, Text: '11:00' },
|
|
94658
|
+
{ Value: 1400, Text: '14:00' },
|
|
94648
94659
|
{ Value: 1500, Text: '15:00' },
|
|
94649
94660
|
],
|
|
94650
94661
|
Min: //最小模式
|
|
@@ -100239,7 +100250,7 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
100239
100250
|
}
|
|
100240
100251
|
else
|
|
100241
100252
|
{
|
|
100242
|
-
var i=
|
|
100253
|
+
var i=n;
|
|
100243
100254
|
var lastData=null;
|
|
100244
100255
|
for(;i<data.length; ++i)
|
|
100245
100256
|
{
|
|
@@ -138282,7 +138293,7 @@ function HQChartScriptWorker()
|
|
|
138282
138293
|
|
|
138283
138294
|
|
|
138284
138295
|
|
|
138285
|
-
var HQCHART_VERSION="1.1.
|
|
138296
|
+
var HQCHART_VERSION="1.1.13484";
|
|
138286
138297
|
|
|
138287
138298
|
function PrintHQChartVersion()
|
|
138288
138299
|
{
|