hqchart 1.1.12655 → 1.1.12674
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 +42 -8
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +46 -0
- package/src/jscommon/umychart.index.data.js +64 -0
- package/src/jscommon/umychart.js +113 -39
- package/src/jscommon/umychart.resource/js/codemirror/javascript.js +6 -2
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +224 -40
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +224 -40
- package/src/jscommon/umychart.wechat/umychart.chartpaint.wechat.js +10 -0
- package/src/jscommon/umychart.wechat/umychart.complier.wechat.js +44 -0
- package/src/jscommon/umychart.wechat/umychart.element.wechart.js +1 -1
- package/src/jscommon/umychart.wechat/umychart.framesplit.wechat.js +2 -0
- package/src/jscommon/umychart.wechat/umychart.version.wechat.js +1 -1
- package/src/jscommon/umychart.wechat/umychart.wechat.3.0.js +1 -0
package/lib/umychart.vue.js
CHANGED
|
@@ -58,7 +58,7 @@ HISTORY_MINUTE_ID:103,//历史分钟 走势图
|
|
|
58
58
|
KLINE_DAY_ID:0,KLINE_WEEK_ID:1,KLINE_TWOWEEK_ID:21,KLINE_MONTH_ID:2,KLINE_QUARTER_ID:9,KLINE_YEAR_ID:3,KLINE_MINUTE_ID:4,KLINE_5_MINUTE_ID:5,KLINE_15_MINUTE_ID:6,KLINE_30_MINUTE_ID:7,KLINE_60_MINUTE_ID:8};//自定义的指标脚本
|
|
59
59
|
function CustomIndexScript(){this.DataMap=new _map2.default();//key=指标id, value=data {ID:, Name:指标名字, Description:指标描述信息 Args:参数 ......}
|
|
60
60
|
this.Get=function(id){if(!this.DataMap.has(id))return null;return this.DataMap.get(id);};this.Add=function(data){this.DataMap.set(data.ID,data);};}var g_CustomIndex=new CustomIndexScript();function JSIndexScript(){this.DataMap=new _map2.default([['MA',this.MA],['均线',this.MA],["MA4",this.MA4],["MA5",this.MA5],["MA6",this.MA6],["MA7",this.MA7],["MA8",this.MA8],['BOLL',this.BOLL],['BOLL副图',this.BOLL2],['BBI',this.BBI],['DKX',this.DKX],['MIKE',this.MIKE],['PBX',this.PBX],['ENE',this.ENE],['MACD',this.MACD],['KDJ',this.KDJ],["MACD2",this.MACD2],['VOL',this.VOL],["VOL_OVERLAY",this.VOL_OVERLAY],['RSI',this.RSI],['BRAR',this.BRAR],['WR',this.WR],['BIAS',this.BIAS],['OBV',this.OBV],['DMI',this.DMI],['CR',this.CR],['PSY',this.PSY],['CCI',this.CCI],['DMA',this.DMA],['TRIX',this.TRIX],['VR',this.VR],['EMV',this.EMV],['ROC',this.ROC],['MTM',this.MTM],['FSL',this.FSL],['CYR',this.CYR],['MASS',this.MASS],['WAD',this.WAD],['CHO',this.CHO],['ADTM',this.ADTM],['HSL',this.HSL],['BIAS36',this.BIAS36],['BIAS_QL',this.BIAS_QL],['DPO',this.DPO],['OSC',this.OSC],['ATR',this.ATR],['NVI',this.NVI],['PVI',this.PVI],['UOS',this.UOS],['CYW',this.CYW],['LON',this.LON],['NDB',this.NDB],['SKDJ',this.SKDJ],['KD',this.KD],['FKX',this.FKX],['DKCOL',this.DKCOL],['UDL',this.UDL],['MFI',this.MFI],['LWR',this.LWR],['MARSI',this.MARSI],['CYD',this.CYD],['CYF',this.CYF],['TAPI',this.TAPI],['VMACD',this.VMACD],['QACD',this.QACD],['VPT',this.VPT],['WVAD',this.WVAD],['DBQR',this.DBQR],['JS',this.JS],['CYE',this.CYE],['QR',this.QR],['GDX',this.GDX],['JLHB',this.JLHB],['PCNT',this.PCNT],['BTX',this.BTX],['AMO',this.AMO],['VRSI',this.VRSI],['HSCOL',this.HSCOL],['DBQRV',this.DBQRV],['DBLB',this.DBLB],['ACD',this.ACD],['EXPMA',this.EXPMA],['EXPMA_S',this.EXPMA_S],['HMA',this.HMA],['LMA',this.LMA],['VMA',this.VMA],['AMV',this.AMV],['BBIBOLL',this.BBIBOLL],['ALLIGAT',this.ALLIGAT],['ZX',this.ZX],['XS',this.XS],['XS2',this.XS2],['SG-XDT',this.SG_XDT],['SG-SMX',this.SG_SMX],['SG-LB',this.SG_LB],['SG-PF',this.SG_PF],['RAD',this.RAD],['SHT',this.SHT],['ZLJC',this.ZLJC],['ZLMM',this.ZLMM],['SLZT',this.SLZT],['ADVOL',this.ADVOL],['CYC',this.CYC],['CYS',this.CYS],['CYQKL',this.CYQKL],['SCR',this.SCR],['ASR',this.ASR],['SAR',this.SAR],['TJCJL',this.TJCJL],['量比',this.VOLRate],['平均K线',this.HeikinAshi],["ADL",this.ADL],["SQJZ",this.SQJZ],["XT",this.XT],["CFJT",this.CFJT],["CYX",this.CYX],["WAVE",this.WAVE],['VOL-TDX',this.VOL_TDX],['EMPTY',this.EMPTY],//什么都不显示的指标
|
|
61
|
-
['神奇九转',this.NineTurns],['EMA',this.EMA3],['EMA4',this.EMA4],['EMA5',this.EMA5],['EMA6',this.EMA6],//通达信特色指标
|
|
61
|
+
['神奇九转',this.NineTurns],['EMA',this.EMA3],['EMA4',this.EMA4],['EMA5',this.EMA5],['EMA6',this.EMA6],["ICHIMOKU",this.ICHIMOKU],["CDP-STD",this.CDP_STD],["TBP-STD",this.TBP_STD],//通达信特色指标
|
|
62
62
|
["散户线",this.ShareholderCount],["NXTS",this.NXTS],["FKX",this.FKX],["两融资金",this.Margin4],["ZSDB",this.ZSDB],['CJL2',this.CJL],//期货持仓量
|
|
63
63
|
['ASI',this.ASI],['DC',this.DC],['DEMA',this.DEMA],["VWAP",this.VWAP],['飞龙四式',this.Dragon4_Main],['飞龙四式-附图',this.Dragon4_Fig],['资金分析',this.FundsAnalysis],['融资占比',this.MarginProportion],['负面新闻',this.NewsNegative],['涨跌趋势',this.UpDownAnalyze],['北上资金',this.HK2SHSZ],['股东人数',this.ShareHolder],["两融余额",this.Margin2],["两融余额2",this.Margin3],['Zealink-资金吸筹',this.Zealink_Index1],['Zealink-牛熊区间',this.Zealink_Index2],['Zealink-持仓信号',this.Zealink_Index3],['Zealink-增减持',this.Zealink_Index4],['Zealink-大宗交易',this.Zealink_Index5],['Zealink-信托持股',this.Zealink_Index6],['Zealink-官网新闻',this.Zealink_Index7],['Zealink-高管要闻',this.Zealink_Index8],['Zealink-股权质押',this.Zealink_Index9],['Zealink-操盘BS点',this.Zealink_Index10],['Zealink-操盘BS点2',this.Zealink_Index11],//外包指标
|
|
64
64
|
['放心股-操盘BS点',this.FXG_BSPoint],['放心股-涨停多空线',this.FXG_INDEX],['放心股-涨停吸筹区',this.FXG_INDEX2],['放心股-量能黄金点',this.FXG_INDEX3],//五彩K线(函数COLOR_开头)
|
|
@@ -1292,7 +1292,37 @@ DRAWTEXT(D5,H*1.010,'5'),COLORBLUE;\n\
|
|
|
1292
1292
|
DRAWTEXT(D6,H*1.010,'6'),COLORBLUE;\n\
|
|
1293
1293
|
DRAWTEXT(D7,H*1.010,'7'),COLORBLUE;\n\
|
|
1294
1294
|
DRAWTEXT(D8,H*1.010,'8'),COLORBLUE;\n\
|
|
1295
|
-
DRAWTEXT(D9,H*1.010,'9'),COLORGREEN;"};return data;};JSIndexScript.prototype.
|
|
1295
|
+
DRAWTEXT(D9,H*1.010,'9'),COLORGREEN;"};return data;};JSIndexScript.prototype.ICHIMOKU=function(){var data={Name:'ICHIMOKU',Description:'一目均衡图',IsMainIndex:true,Args:[{Name:'SHORT',Value:7},{Name:'MID',Value:22},{Name:'LONG',Value:44}],Script://脚本
|
|
1296
|
+
"转换线:(HHV(H,SHORT)+LLV(L,SHORT))/2,COLORRED,LINETHICK2;\n\
|
|
1297
|
+
基准线:(HHV(H,MID)+LLV(L,MID))/2,COLORFF8040,LINETHICK2;\n\
|
|
1298
|
+
迟行带:REFXV(C,MID),COLORGRAY,LINETHICK2;\n\
|
|
1299
|
+
A:=REF((转换线+基准线)/2,MID);\n\
|
|
1300
|
+
B:=REF((HHV(H,LONG)+LLV(L,LONG))/2,MID);\n\
|
|
1301
|
+
STICKLINE(A<B,A,B,2,1),COLOR339933;\n\
|
|
1302
|
+
STICKLINE(A>=B,A,B,2,1),COLOR0033CC;\n\
|
|
1303
|
+
先行带A:PLOYLINE(1,A),COLORBROWN;\n\
|
|
1304
|
+
先行带B:PLOYLINE(1,B),COLORLIGREEN;"};return data;};JSIndexScript.prototype.CDP_STD=function(){var data={Name:'CDP-STD',Description:'逆势操作',IsMainIndex:true,Script://脚本
|
|
1305
|
+
"CH:=REF(H,1);\n\
|
|
1306
|
+
CL:=REF(L,1);\n\
|
|
1307
|
+
CC:=REF(C,1);\n\
|
|
1308
|
+
CDP:(CH+CL+CC)/3;\n\
|
|
1309
|
+
AH:2*CDP+CH-2*CL;\n\
|
|
1310
|
+
NH:CDP+CDP-CL;\n\
|
|
1311
|
+
NL:CDP+CDP-CH;\n\
|
|
1312
|
+
AL:2*CDP-2*CH+CL;"};return data;};JSIndexScript.prototype.TBP_STD=function(){var data={Name:'TBP-STD',Description:'趋势平衡点',IsMainIndex:true,Script://脚本
|
|
1313
|
+
"APX:=(H+L+C)/3;\n\
|
|
1314
|
+
TR0:=MAX(H-L,MAX(ABS(H-REF(C,1)),ABS(L-REF(C,1))));\n\
|
|
1315
|
+
MF0:=C-REF(C,2);\n\
|
|
1316
|
+
MF1:=REF(MF0,1);\n\
|
|
1317
|
+
MF2:=REF(MF0,2);\n\
|
|
1318
|
+
DIRECT1:=BARSLAST(MF0>MF1 AND MF0>MF2);\n\
|
|
1319
|
+
DIRECT2:=BARSLAST(MF0<MF1 AND MF0<MF2);\n\
|
|
1320
|
+
DIRECT0:=IF(DIRECT1<DIRECT2,100,-100);\n\
|
|
1321
|
+
TBP:REF(REF(C,1)+IF(DIRECT0>50,MIN(MF0,MF1),MAX(MF0,MF1)),1);\n\
|
|
1322
|
+
多头获利:REF(IF(DIRECT0>50,APX*2-L,DRAWNULL),1),NODRAW;\n\
|
|
1323
|
+
多头停损:REF(IF(DIRECT0>50,APX-TR0,DRAWNULL),1),NODRAW;\n\
|
|
1324
|
+
空头回补:REF(IF(DIRECT0<-50,APX*2-H,DRAWNULL),1),NODRAW;\n\
|
|
1325
|
+
空头停损:REF(IF(DIRECT0<-50,APX+TR0,DRAWNULL),1),NODRAW;"};return data;};JSIndexScript.prototype.TEST=function(){var data={Name:'TEST',Description:'测试脚本',IsMainIndex:false,Args:[{Name:'N',Value:10}],Script://脚本
|
|
1296
1326
|
"DRAWCHANNEL(OPEN>C,H,L, 'RGB(255,94,102)', 2 ,'5,5','RGBA(58,20,62,0.3)' );"};return data;};/*
|
|
1297
1327
|
Copyright (c) 2018 jones
|
|
1298
1328
|
|
|
@@ -1397,7 +1427,7 @@ chart.EnableBorderDrag=false;if(option.Frame){for(var i=0;i<option.Frame.length;
|
|
|
1397
1427
|
}if(IFrameSplitOperator.IsBool(item.IsShowRightText)){chart.Frame.SubFrame[i].Frame.IsShowYText[1]=item.IsShowRightText;chart.Frame.SubFrame[i].Frame.YSplitOperator.IsShowRightText=item.IsShowRightText;//显示右边刻度
|
|
1398
1428
|
}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;}}chart.UpdateXShowText();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;//标题栏均线也不显示
|
|
1399
1429
|
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;}this.AdjustTitleHeight(chart);if(option.DisableMouseEvent===true){//取消鼠标事件
|
|
1400
|
-
this.CanvasElement.onmousemove=function(e){};this.CanvasElement.oncontextmenu=function(e){};this.CanvasElement.ondblclick=function(e){};this.CanvasElement.onmousedown=function(e){};this.CanvasElement.onmouseout=function(e){};this.CanvasElement.onmouseleave=function(e){};}return chart;};//历史分钟走势图
|
|
1430
|
+
this.CanvasElement.onmousemove=function(e){};this.CanvasElement.oncontextmenu=function(e){};this.CanvasElement.ondblclick=function(e){};this.CanvasElement.onmousedown=function(e){};this.CanvasElement.onmouseout=function(e){};this.CanvasElement.onmouseleave=function(e){};}if(option.ExtendChart){for(var i=0;i<option.ExtendChart.length;++i){var item=option.ExtendChart[i];chart.CreateExtendChart(item.Name,item);}}return chart;};//历史分钟走势图
|
|
1401
1431
|
this.CreateHistoryMinuteChartContainer=function(option){var chart=new HistoryMinuteChartContainer(this.CanvasElement);var windowsCount=2;if(option.Windows&&option.Windows.length>0)windowsCount+=option.Windows.length;//指标窗口从第3个窗口开始
|
|
1402
1432
|
chart.Create(windowsCount);//创建子窗口
|
|
1403
1433
|
if(option.IsShowCorssCursorInfo==false)//取消显示十字光标刻度信息
|
|
@@ -3640,10 +3670,12 @@ this.DrawOrderFlow_Style4=function(){var isHScreen=this.ChartFrame.IsHScreen===t
|
|
|
3640
3670
|
var kBarWidth=this.OrderFlow_Style4.KBarWidth;if(dataWidth+distanceWidth<kBarWidth*3)kBarWidth=1;for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth,++this.ShowRange.DataCount){var data=this.Data.Data[i];this.ShowRange.End=i;if(data.Open==null||data.High==null||data.Low==null||data.Close==null)continue;var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;var yLow=this.GetYFromData(data.Low,false);var yHigh=this.GetYFromData(data.High,false);var yOpen=this.GetYFromData(data.Open,false);var yClose=this.GetYFromData(data.Close,false);var y=yHigh;this.DrawKRange.End=i;var barLeft=left+this.OrderFlow_Style4.LeftMargin;var barRight=right+distanceWidth-this.OrderFlow_Style4.RightMargin;if(this.OrderFlow_Style4.KBarType==1){var kbarTop=Math.min(yOpen,yClose);var kbarBottom=Math.max(yOpen,yClose);var kbarLeft=ToFixedRect(left)+this.OrderFlow_Style4.LeftMargin;var kbarRight=barLeft+kBarWidth;if(data.Open<data.Close)this.Canvas.fillStyle=upColor;else if(data.Open>data.Close)this.Canvas.fillStyle=downColor;else this.Canvas.fillStyle=unchagneColor;var cellHeight=0;if(data.OrderFlow&&IFrameSplitOperator.IsNumber(data.OrderFlow.PriceOffset))cellHeight=this.GetPriceYOffset(data.OrderFlow.PriceOffset);this.Canvas.fillRect(kbarLeft,ToFixedRect(kbarTop-cellHeight/2),kBarWidth,ToFixedRect(kbarBottom-kbarTop+cellHeight));barLeft=kbarRight+1;}var yKline={Low:yLow,High:yHigh,Open:yOpen,Close:yClose};var xKLine={Left:barLeft,Center:x,Right:barRight,DataWidth:barRight-barLeft};xKLine.Center=xKLine.Left+xKLine.DataWidth/2;this.DrawOrderFlowBar_Style4(data.OrderFlow,data,xKLine,yKline,isHScreen);}};this.DrawOrderFlowBar_Style4=function(orderFlow,kItem,xKLine,yKline,isHScreen){var top=Math.min(yKline.Open,yKline.Close);var bottom=Math.max(yKline.Open,yKline.Close);var barHeight=Math.abs(yKline.Open-yKline.Close);var cellHeight=0;if(orderFlow&&IFrameSplitOperator.IsNumber(orderFlow.PriceOffset))cellHeight=this.GetPriceYOffset(orderFlow.PriceOffset);var textFont=this.GetDynamicOrderFlowFont(cellHeight,xKLine.DataWidth/2);this.IsShowOrderText=cellHeight>5&&xKLine.DataWidth>10;if(this.OrderFlow.AlwaysShowOrderText)this.IsShowOrderText=true;this.Canvas.textBaseline='middle';this.Canvas.textAlign='left';this.Canvas.font=textFont;var volBarSpace=this.OrderFlow_Style4.VolBarSpace;if(cellHeight<=4)volBarSpace=0;//太细了 间距就不要了
|
|
3641
3671
|
if(orderFlow&&IFrameSplitOperator.IsNonEmptyArray(orderFlow.Order)){if(!orderFlow.Summary)orderFlow.Summary={};if(!orderFlow.Summary.VolMaxMin)//计算最大最小值
|
|
3642
3672
|
{var volMaxMin={Max:null,Min:null};for(var i=0;i<orderFlow.Order.length;++i){var item=orderFlow.Order.length[i];if(volMaxMin.Max==null||volMaxMin.Max<item.Vol.Value)volMaxMin.Max=item.Vol.Value;if(volMaxMin.Min==null||volMaxMin.Min>item.Vol.Value)volMaxMin.Min=item.Vol.Value;}orderFlow.Summary.VolMaxMin=volMaxMin;}var preItem=null;//上一个矩形框
|
|
3643
|
-
var max=orderFlow.Summary.VolMaxMin.Max,min=orderFlow.Summary.VolMaxMin.Min;for(var i=0;i<orderFlow.Order.length;++i){var item=orderFlow.Order[i];var yPrice=this.GetYFromData(item.Price,false);if(!item.Vol)continue;if(
|
|
3673
|
+
var max=orderFlow.Summary.VolMaxMin.Max,min=orderFlow.Summary.VolMaxMin.Min;for(var i=0;i<orderFlow.Order.length;++i){var item=orderFlow.Order[i];var yPrice=this.GetYFromData(item.Price,false);if(!item.Vol)continue;if(IFrameSplitOperator.IsNonEmptyArray(item.AryVol)){var barWidth=xKLine.Right-xKLine.Left;var xVolLeft=xKLine.Left;var xVolRight=xVolLeft;var totalVol=0;var rtDraw={Bottom:yPrice+cellHeight/2,Top:yPrice-cellHeight/2};for(var j=0;j<item.AryVol.length;++j){var itemVol=item.AryVol[j];if(!IFrameSplitOperator.IsNumber(itemVol.Value))continue;totalVol+=itemVol.Value;xVolRight=barWidth*(totalVol-min)/(max-min)+xKLine.Left;var rtBar={Left:xVolLeft,Right:xVolRight,Bottom:yPrice+cellHeight/2,Top:yPrice-cellHeight/2};if(preItem&&item.Price>preItem.Price){rtBar.Bottom=preItem.Rect.Top-volBarSpace;}rtBar.Width=rtBar.Right-rtBar.Left;rtBar.Height=rtBar.Bottom-rtBar.Top;rtDraw={Left:ToFixedRect(rtBar.Left),Top:ToFixedRect(rtBar.Top),Width:ToFixedRect(rtBar.Width),Height:ToFixedRect(rtBar.Height)};rtDraw.Bottom=rtDraw.Top+rtDraw.Height;rtDraw.Right=rtDraw.Left+rtDraw.Width;if(rtDraw.Width<1)rtDraw.Width=1;if(itemVol.BG)//背景色
|
|
3674
|
+
{this.Canvas.fillStyle=itemVol.BG;this.Canvas.fillRect(rtDraw.Left,rtDraw.Top,rtDraw.Width,rtDraw.Height);}xVolLeft=rtDraw.Right;}rtDraw.Left=xKLine.Left;rtDraw.Width=rtDraw.Right-rtDraw.Left;if(item.Vol.Text&&this.IsShowOrderText)//文字
|
|
3675
|
+
{this.Canvas.fillStyle=item.Vol.Color;if(item.Vol.Font){var itemFont=this.GetDynamicOrderFlowFont(cellHeight,barWidth/2,item.Vol.Font);this.Canvas.font=itemFont;this.Canvas.fillText(text,xKLine.Center+textXOffset,yPrice);this.Canvas.font=textFont;}else{this.Canvas.fillText(item.Vol.Text,rtDraw.Left+2,yPrice);}}preItem={Price:item.Price,Rect:rtDraw};}else if(IFrameSplitOperator.IsNumber(item.Vol.Value)){var barWidth=xKLine.Right-xKLine.Left;var volWidth=barWidth*(item.Vol.Value-min)/(max-min);var rect={Left:xKLine.Left,Right:xKLine.Right,Bottom:yPrice+cellHeight/2,Top:yPrice-cellHeight/2};rect.Right=rect.Left+volWidth;if(preItem&&item.Price>preItem.Price){rect.Bottom=preItem.Rect.Top-volBarSpace;}rect.Width=rect.Right-rect.Left;rect.Height=rect.Bottom-rect.Top;var rtDraw={Left:ToFixedRect(rect.Left),Top:ToFixedRect(rect.Top),Width:ToFixedRect(rect.Width),Height:ToFixedRect(rect.Height)};rtDraw.Bottom=rtDraw.Top+rtDraw.Height;rtDraw.Right=rtDraw.Left+rtDraw.Width;if(rtDraw.Width<1)rtDraw.Width=1;if(item.Vol.BG)//背景色
|
|
3644
3676
|
{this.Canvas.fillStyle=item.Vol.BG;this.Canvas.fillRect(rtDraw.Left,rtDraw.Top,rtDraw.Width,rtDraw.Height);}if(item.Vol.BorderColor)//边框
|
|
3645
3677
|
{this.Canvas.strokeStyle=item.Vol.BorderColor;this.Canvas.strokeRect(ToFixedPoint(rtDraw.Left),ToFixedPoint(rtDraw.Top),rtDraw.Width,rtDraw.Height);}if(item.Vol.Text&&this.IsShowOrderText)//文字
|
|
3646
|
-
{this.Canvas.fillStyle=item.Vol.Color;if(item.Vol.Font){var itemFont=this.GetDynamicOrderFlowFont(cellHeight,barWidth/2,item.Vol.Font);this.Canvas.font=itemFont;this.Canvas.fillText(text,xKLine.Center+textXOffset,yPrice);this.Canvas.font=textFont;}else{this.Canvas.fillText(item.Vol.Text,rtDraw.Left+2,yPrice);}}preItem={Price:item.Price,Rect:rtDraw};}}};//////////////////////////////////////////////////////////////
|
|
3678
|
+
{this.Canvas.fillStyle=item.Vol.Color;if(item.Vol.Font){var itemFont=this.GetDynamicOrderFlowFont(cellHeight,barWidth/2,item.Vol.Font);this.Canvas.font=itemFont;this.Canvas.fillText(text,xKLine.Center+textXOffset,yPrice);this.Canvas.font=textFont;}else{this.Canvas.fillText(item.Vol.Text,rtDraw.Left+2,yPrice);}}preItem={Price:item.Price,Rect:rtDraw};}else{continue;}}}};//////////////////////////////////////////////////////////////
|
|
3647
3679
|
// high low bar
|
|
3648
3680
|
//
|
|
3649
3681
|
///////////////////////////////////////////////////////////////
|
|
@@ -9834,7 +9866,9 @@ else if(period<0)period=i+1;count=0;for(var j=i,k=0;j>=0&&k<period;--j,++k)//当
|
|
|
9834
9866
|
ZL:VALUEWHEN(DATE<>REF(DATE,1),LV(L,N));//在分钟周期上,求昨天最低价。
|
|
9835
9867
|
例3:
|
|
9836
9868
|
LV(L,5) 和 REF(LLV(L,5),1) 的结果是一样的,用LV编写更加方便。
|
|
9837
|
-
*/this.LV=function(data,n){var result=this.LLV(data,n);return this.REF(result,1);};this.STD=function(data,n){var result=[];if(!Array.isArray(data))return result;var nStart=this.GetFirstVaildIndex(data);if(!IFrameSplitOperator.IsNumber(n))return result;if(nStart+n>data.length||n<1)return result;var i=nStart,j=0,bFirst=true,dTotal=0,dAvg=0;for(i+=n-1;i<data.length;++i){dTotal=0;if(bFirst){bFirst=false;for(j=i-n+1;j<=i;++j){dAvg+=data[j];}dAvg/=n;}else{dAvg+=(data[i]-data[i-n])/n;}for(j=i-n+1;j<=i;++j){dTotal+=(data[j]-dAvg)*(data[j]-dAvg);}result[i]=Math.sqrt(dTotal/(n-1));}return result;}
|
|
9869
|
+
*/this.LV=function(data,n){var result=this.LLV(data,n);return this.REF(result,1);};this.STD=function(data,n){var result=[];if(!Array.isArray(data))return result;var nStart=this.GetFirstVaildIndex(data);if(!IFrameSplitOperator.IsNumber(n))return result;if(nStart+n>data.length||n<1)return result;var i=nStart,j=0,bFirst=true,dTotal=0,dAvg=0;for(i+=n-1;i<data.length;++i){dTotal=0;if(bFirst){bFirst=false;for(j=i-n+1;j<=i;++j){dAvg+=data[j];}dAvg/=n;}else{dAvg+=(data[i]-data[i-n])/n;}for(j=i-n+1;j<=i;++j){dTotal+=(data[j]-dAvg)*(data[j]-dAvg);}result[i]=Math.sqrt(dTotal/(n-1));}return result;};//STDDEV(X,N) 返回标准偏差
|
|
9870
|
+
//将标准差除以样本大小N的平方根即可得出标准误差。标准误差 = σ/sqrt(n)
|
|
9871
|
+
this.STDDEV=function(data,n){var result=[];if(!Array.isArray(data))return result;var nStart=this.GetFirstVaildIndex(data);if(!IFrameSplitOperator.IsNumber(n))return result;if(nStart+n>data.length||n<1)return result;var i=nStart,j=0,bFirst=true,dTotal=0,dAvg=0;for(i+=n-1;i<data.length;++i){dTotal=0;if(bFirst){bFirst=false;for(j=i-n+1;j<=i;++j){dAvg+=data[j];}dAvg/=n;}else{dAvg+=(data[i]-data[i-n])/n;}for(j=i-n+1;j<=i;++j){dTotal+=(data[j]-dAvg)*(data[j]-dAvg);}result[i]=Math.sqrt(dTotal/(n-1))/Math.sqrt(n);}return result;};//平均绝对方差
|
|
9838
9872
|
this.AVEDEV=function(data,n){var result=[];var total=0;var averageData=[];//平均值
|
|
9839
9873
|
for(var i=n-1;i<data.length;++i){total=0;for(var j=0;j<n;++j){total+=data[i-j];}averageData[i]=total/n;}for(var i=n-1;i<data.length;++i){total=0;for(var j=0;j<n;++j){total+=Math.abs(data[i-j]-averageData[i]);}result[i]=total/n;}return result;};//上穿
|
|
9840
9874
|
this.CROSS=function(data,data2){var result=[];if(Array.isArray(data)&&Array.isArray(data2)){if(data.length!=data2.length)return result=[];var index=0;for(;index<data.length;++index){if(this.IsNumber(data[index])&&this.IsNumber(data2[index]))break;}for(++index;index<data.length;++index){result[index]=data[index]>data2[index]&&data[index-1]<data2[index-1]?1:0;}}else if(Array.isArray(data)&&typeof data2=='number'){var index=0;for(;index<data.length;++index){if(this.IsNumber(data[index]))break;}for(++index;index<data.length;++index){result[index]=data[index]>data2&&data[index-1]<data2?1:0;}}else if(typeof data=='number'&&Array.isArray(data2)){var index=0;for(;index<data2.length;++index){if(this.IsNumber(data2[index]))break;}for(++index;index<data2.length;++index){result[index]=data2[index]<data&&data2[index-1]>data?1:0;}}return result;};/*
|
|
@@ -10405,7 +10439,7 @@ this.STRFORMAT=function(strFormat,args,node){var aryParam=strFormat.match(/{[0-9
|
|
|
10405
10439
|
var maxIndex=-1;for(var i=0;i<aryParam.length;++i){var item=aryParam[i];if(item.length<3)continue;var value=item.slice(1,item.length-1);var index=-1,decimal=-1;if(value.indexOf(":")>0){var aryTemp=value.split(":");if(aryTemp){if(aryTemp[0])index=parseInt(aryTemp[0]);if(aryTemp[1]){if(aryTemp[1].indexOf(".")>=0){var zeroCount=0;var strTemp=aryTemp[1];for(var j=strTemp.length-1;j>=0;--j){if(strTemp[j]=="0")++zeroCount;else break;}if(zeroCount>0)decimal=zeroCount;}else if(aryTemp[1]=="0"){decimal=0;}}}}else{index=parseInt(value);}if(index<0)continue;var paramItem={Src:item,Index:index,Text:null,Decimal:null};if(decimal>=0)paramItem.Decimal=decimal;if(maxIndex<index)maxIndex=index;mapParam.set(index,paramItem);}var isArray=false;//是否输出数组字符串
|
|
10406
10440
|
var maxCount=0;for(var i=1;i<args.length;++i){var item=args[i];if(Array.isArray(item)){isArray=true;if(maxCount<item.length)maxCount=item.length;}}if(isArray){var result=[];for(var i=0;i<maxCount;++i){var strItem=strFormat;var _iteratorNormalCompletion19=true;var _didIteratorError19=false;var _iteratorError19=undefined;try{for(var _iterator19=(0,_getIterator3.default)(mapParam),_step19;!(_iteratorNormalCompletion19=(_step19=_iterator19.next()).done);_iteratorNormalCompletion19=true){var item=_step19.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){if(Array.isArray(paramItem)){var value=paramItem[i];if(value){if(IFrameSplitOperator.IsNumber(paramInfo.Decimal))text=''+value.toFixed(paramInfo.Decimal);else text=''+value;}}else{text=''+paramItem;}}strItem=strItem.replace(paramInfo.Src,text);}}catch(err){_didIteratorError19=true;_iteratorError19=err;}finally{try{if(!_iteratorNormalCompletion19&&_iterator19.return){_iterator19.return();}}finally{if(_didIteratorError19){throw _iteratorError19;}}}result[i]=strItem;}return result;}else{var result=strFormat;var _iteratorNormalCompletion20=true;var _didIteratorError20=false;var _iteratorError20=undefined;try{for(var _iterator20=(0,_getIterator3.default)(mapParam),_step20;!(_iteratorNormalCompletion20=(_step20=_iterator20.next()).done);_iteratorNormalCompletion20=true){var item=_step20.value;var paramInfo=item[1];var paramItem=args[paramInfo.Index+1];var text="null";if(paramItem){text=''+paramItem;}result=result.replace(paramInfo.Src,text);}}catch(err){_didIteratorError20=true;_iteratorError20=err;}finally{try{if(!_iteratorNormalCompletion20&&_iterator20.return){_iterator20.return();}}finally{if(_didIteratorError20){throw _iteratorError20;}}}return result;}};//函数调用
|
|
10407
10441
|
this.CallFunction=function(name,args,node,symbolData){switch(name){case'MAX':case"MAX6":return this.MAX(args,node);case'MIN':case"MIN6":return this.MIN(args,node);case'REF':return this.REF(args[0],args[1]);case"REFV":return this.REFV(args[0],args[1]);case'REFX':return this.REFX(args[0],args[1]);case"REFXV":return this.REFXV(args[0],args[1]);case"REFX1"://文华函数
|
|
10408
|
-
return this.REFX(args[0],args[1]);case'ABS':return this.ABS(args[0]);case'MA':return this.MA(args[0],args[1]);case"EMA":return this.EMA(args[0],args[1]);case"SMA":return this.SMA(args[0],args[1],args[2]);case"DMA":return this.DMA(args[0],args[1]);case"XMA":return this.XMA(args[0],args[1]);case'EXPMA':return this.EXPMA(args[0],args[1]);case'EXPMEMA':return this.EXPMEMA(args[0],args[1]);case'COUNT':return this.COUNT(args[0],args[1]);case'LLV':return this.LLV(args[0],args[1]);case"LV":return this.LV(args[0],args[1]);case'LLVBARS':return this.LLVBARS(args[0],args[1]);case'HHV':return this.HHV(args[0],args[1]);case'HV':return this.HV(args[0],args[1]);case'HHVBARS':return this.HHVBARS(args[0],args[1]);case'MULAR':return this.MULAR(args[0],args[1]);case'CROSS':return this.CROSS(args[0],args[1]);case'LONGCROSS':return this.LONGCROSS(args[0],args[1],args[2]);case"ISVALID":return this.ISVALID(args[0]);case"CROSSDOWN":return this.CROSSDOWN(args[0],args[1]);case"CROSSUP":return this.CROSSUP(args[0],args[1]);case'AVEDEV':return this.AVEDEV(args[0],args[1]);case'STD':return this.STD(args[0],args[1]);case'IF':case'IFF':case"IFELSE":return this.IF(args[0],args[1],args[2]);case'IFN':return this.IFN(args[0],args[1],args[2]);case'NOT':return this.NOT(args[0]);case'SUM':return this.SUM(args[0],args[1]);case'RANGE':return this.RANGE(args[0],args[1],args[2]);case'EXIST':return this.EXIST(args[0],args[1]);case'EXISTR':return this.EXISTR(args[0],args[1],args[2]);case'FILTER':return this.FILTER(args[0],args[1]);case'TFILTER':return this.TFILTER(args[0],args[1],args[2]);case'SLOPE':return this.SLOPE(args[0],args[1]);case'BARSLAST':return this.BARSLAST(args[0]);case'BARSCOUNT':return this.BARSCOUNT(args[0]);case'BARSSINCEN':return this.BARSSINCEN(args[0],args[1]);case'BARSSINCE':return this.BARSSINCE(args[0]);case'LAST':return this.LAST(args[0],args[1],args[2]);case'EVERY':return this.EVERY(args[0],args[1]);case'DEVSQ':return this.DEVSQ(args[0],args[1]);case'ZIG':return this.ZIG(args[0],args[1]);case'TROUGHBARS':return this.TROUGHBARS(args[0],args[1],args[2]);case"TROUGH":return this.TROUGH(args[0],args[1],args[2]);case'PEAKBARS':return this.PEAKBARS(args[0],args[1],args[2]);case'PEAK':return this.PEAK(args[0],args[1],args[2]);case'COST':return this.COST(args[0]);case'WINNER':return this.WINNER(args[0],node);case'PPART':return this.PPART(args[0],node);case"COSTEX":return this.COSTEX(args[0],args[1],node);case"LWINNER":return this.LWINNER(args[0],args[1],node);case"PWINNER":return this.PWINNER(args[0],args[1],node);case'FORCAST':return this.FORCAST(args[0],args[1]);case"TSMA":return this.TSMA(args[0],args[1]);case'STDP':return this.STDP(args[0],args[1]);case'VAR':return this.VAR(args[0],args[1]);case'VARP':return this.VARP(args[0],args[1]);case'UPNDAY':return this.UPNDAY(args[0],args[1]);case'DOWNNDAY':return this.DOWNNDAY(args[0],args[1]);case'NDAY':return this.NDAY(args[0],args[1],args[2]);case'RELATE':return this.RELATE(args[0],args[1],args[2]);case'COVAR':return this.COVAR(args[0],args[1],args[2]);case'BETA':return this.BETA(args[0]);case'BETA2':return this.BETA2(args[0],args[1],args[2]);case'WMA':return this.WMA(args[0],args[1]);case'MEMA':return this.MEMA(args[0],args[1]);case'SUMBARS':return this.SUMBARS(args[0],args[1]);case'REVERSE':return this.REVERSE(args[0]);case'SAR':return this.SAR(args[0],args[1],args[2]);case'SARTURN':return this.SARTURN(args[0],args[1],args[2]);case'BACKSET':return this.BACKSET(args[0],args[1]);case'BETWEEN':return this.BETWEEN(args[0],args[1],args[2]);case'STRCAT':return this.STRCAT(args[0],args[1]);case'CON2STR':return this.CON2STR(args[0],args[1]);case"VAR2STR":return this.VAR2STR(args[0],args[1]);case"VARCAT":return this.VARCAT(args[0],args[1]);case"STRSPACE":return this.STRSPACE(args[0]);case"FINDSTR":return this.FINDSTR(args[0],args[1]);case"STRCMP":return this.STRCMP(args[0],args[1]);case"STRLEN":return this.STRLEN(args[0]);case"STRFORMAT":return this.STRFORMAT(args[0],args,node);case'DTPRICE':return this.DTPRICE(args[0],args[1]);case'ZTPRICE':return this.ZTPRICE(args[0],args[1]);case'MOD':return this.MOD(args[0],args[1]);case'POW':return this.POW(args[0],args[1]);case'CEILING':return this.CEILING(args[0]);case'FLOOR':return this.FLOOR(args[0]);case'FRACPART':return this.FRACPART(args[0]);case"SIGN":return this.SIGN(args[0]);case'BARSLASTCOUNT':return this.BARSLASTCOUNT(args[0]);case'INTPART':return this.INTPART(args[0]);case"CONST":return this.CONST(args[0]);case"TOPRANGE":return this.TOPRANGE(args[0]);case"LOWRANGE":return this.LOWRANGE(args[0]);case"FINDLOW":return this.FINDLOW(args[0],args[1],args[2],args[3]);case"FINDLOWBARS":return this.FINDLOWBARS(args[0],args[1],args[2],args[3]);case"FINDHIGH":return this.FINDHIGH(args[0],args[1],args[2],args[3]);case"FINDHIGHBARS":return this.FINDHIGHBARS(args[0],args[1],args[2],args[3]);case"BARSNEXT":return this.BARSNEXT(args[0]);case"HOD":return this.HOD(args[0],args[1]);case"LOD":return this.LOD(args[0],args[1]);case"AMA":return this.AMA(args[0],args[1]);case"TMA":return this.TMA(args[0],args[1],args[2]);case"ROUND":return this.ROUND(args[0]);case"ROUND2":return this.ROUND2(args[0],args[1]);case"TRMA":return this.TRMA(args[0],args[1]);case"VALUEWHEN":return this.VALUEWHEN(args[0],args[1]);case"HARMEAN":return this.HARMEAN(args[0],args[1]);case"DATETODAY":return this.DATETODAY(args[0]);case"DAYTODATE":return this.DAYTODATE(args[0]);case"TIMETOSEC":return this.TIMETOSEC(args[0]);case"SECTOTIME":return this.SECTOTIME(args[0]);case"ANY":return this.ANY(args[0],args[1]);case"ALL":return this.ALL(args[0],args[1]);case"TESTSKIP":return this.TESTSKIP(args[0],node);case"SUMBARS":return this.SUMBARS(args[0],args[1]);case"ALIGNRIGHT":return this.ALIGNRIGHT(args[0]);//三角函数
|
|
10442
|
+
return this.REFX(args[0],args[1]);case'ABS':return this.ABS(args[0]);case'MA':return this.MA(args[0],args[1]);case"EMA":return this.EMA(args[0],args[1]);case"SMA":return this.SMA(args[0],args[1],args[2]);case"DMA":return this.DMA(args[0],args[1]);case"XMA":return this.XMA(args[0],args[1]);case'EXPMA':return this.EXPMA(args[0],args[1]);case'EXPMEMA':return this.EXPMEMA(args[0],args[1]);case'COUNT':return this.COUNT(args[0],args[1]);case'LLV':return this.LLV(args[0],args[1]);case"LV":return this.LV(args[0],args[1]);case'LLVBARS':return this.LLVBARS(args[0],args[1]);case'HHV':return this.HHV(args[0],args[1]);case'HV':return this.HV(args[0],args[1]);case'HHVBARS':return this.HHVBARS(args[0],args[1]);case'MULAR':return this.MULAR(args[0],args[1]);case'CROSS':return this.CROSS(args[0],args[1]);case'LONGCROSS':return this.LONGCROSS(args[0],args[1],args[2]);case"ISVALID":return this.ISVALID(args[0]);case"CROSSDOWN":return this.CROSSDOWN(args[0],args[1]);case"CROSSUP":return this.CROSSUP(args[0],args[1]);case'AVEDEV':return this.AVEDEV(args[0],args[1]);case'STD':return this.STD(args[0],args[1]);case"STDDEV":return this.STDDEV(args[0],args[1]);case'IF':case'IFF':case"IFELSE":return this.IF(args[0],args[1],args[2]);case'IFN':return this.IFN(args[0],args[1],args[2]);case'NOT':return this.NOT(args[0]);case'SUM':return this.SUM(args[0],args[1]);case'RANGE':return this.RANGE(args[0],args[1],args[2]);case'EXIST':return this.EXIST(args[0],args[1]);case'EXISTR':return this.EXISTR(args[0],args[1],args[2]);case'FILTER':return this.FILTER(args[0],args[1]);case'TFILTER':return this.TFILTER(args[0],args[1],args[2]);case'SLOPE':return this.SLOPE(args[0],args[1]);case'BARSLAST':return this.BARSLAST(args[0]);case'BARSCOUNT':return this.BARSCOUNT(args[0]);case'BARSSINCEN':return this.BARSSINCEN(args[0],args[1]);case'BARSSINCE':return this.BARSSINCE(args[0]);case'LAST':return this.LAST(args[0],args[1],args[2]);case'EVERY':return this.EVERY(args[0],args[1]);case'DEVSQ':return this.DEVSQ(args[0],args[1]);case'ZIG':return this.ZIG(args[0],args[1]);case'TROUGHBARS':return this.TROUGHBARS(args[0],args[1],args[2]);case"TROUGH":return this.TROUGH(args[0],args[1],args[2]);case'PEAKBARS':return this.PEAKBARS(args[0],args[1],args[2]);case'PEAK':return this.PEAK(args[0],args[1],args[2]);case'COST':return this.COST(args[0]);case'WINNER':return this.WINNER(args[0],node);case'PPART':return this.PPART(args[0],node);case"COSTEX":return this.COSTEX(args[0],args[1],node);case"LWINNER":return this.LWINNER(args[0],args[1],node);case"PWINNER":return this.PWINNER(args[0],args[1],node);case'FORCAST':return this.FORCAST(args[0],args[1]);case"TSMA":return this.TSMA(args[0],args[1]);case'STDP':return this.STDP(args[0],args[1]);case'VAR':return this.VAR(args[0],args[1]);case'VARP':return this.VARP(args[0],args[1]);case'UPNDAY':return this.UPNDAY(args[0],args[1]);case'DOWNNDAY':return this.DOWNNDAY(args[0],args[1]);case'NDAY':return this.NDAY(args[0],args[1],args[2]);case'RELATE':return this.RELATE(args[0],args[1],args[2]);case'COVAR':return this.COVAR(args[0],args[1],args[2]);case'BETA':return this.BETA(args[0]);case'BETA2':return this.BETA2(args[0],args[1],args[2]);case'WMA':return this.WMA(args[0],args[1]);case'MEMA':return this.MEMA(args[0],args[1]);case'SUMBARS':return this.SUMBARS(args[0],args[1]);case'REVERSE':return this.REVERSE(args[0]);case'SAR':return this.SAR(args[0],args[1],args[2]);case'SARTURN':return this.SARTURN(args[0],args[1],args[2]);case'BACKSET':return this.BACKSET(args[0],args[1]);case'BETWEEN':return this.BETWEEN(args[0],args[1],args[2]);case'STRCAT':return this.STRCAT(args[0],args[1]);case'CON2STR':return this.CON2STR(args[0],args[1]);case"VAR2STR":return this.VAR2STR(args[0],args[1]);case"VARCAT":return this.VARCAT(args[0],args[1]);case"STRSPACE":return this.STRSPACE(args[0]);case"FINDSTR":return this.FINDSTR(args[0],args[1]);case"STRCMP":return this.STRCMP(args[0],args[1]);case"STRLEN":return this.STRLEN(args[0]);case"STRFORMAT":return this.STRFORMAT(args[0],args,node);case'DTPRICE':return this.DTPRICE(args[0],args[1]);case'ZTPRICE':return this.ZTPRICE(args[0],args[1]);case'MOD':return this.MOD(args[0],args[1]);case'POW':return this.POW(args[0],args[1]);case'CEILING':return this.CEILING(args[0]);case'FLOOR':return this.FLOOR(args[0]);case'FRACPART':return this.FRACPART(args[0]);case"SIGN":return this.SIGN(args[0]);case'BARSLASTCOUNT':return this.BARSLASTCOUNT(args[0]);case'INTPART':return this.INTPART(args[0]);case"CONST":return this.CONST(args[0]);case"TOPRANGE":return this.TOPRANGE(args[0]);case"LOWRANGE":return this.LOWRANGE(args[0]);case"FINDLOW":return this.FINDLOW(args[0],args[1],args[2],args[3]);case"FINDLOWBARS":return this.FINDLOWBARS(args[0],args[1],args[2],args[3]);case"FINDHIGH":return this.FINDHIGH(args[0],args[1],args[2],args[3]);case"FINDHIGHBARS":return this.FINDHIGHBARS(args[0],args[1],args[2],args[3]);case"BARSNEXT":return this.BARSNEXT(args[0]);case"HOD":return this.HOD(args[0],args[1]);case"LOD":return this.LOD(args[0],args[1]);case"AMA":return this.AMA(args[0],args[1]);case"TMA":return this.TMA(args[0],args[1],args[2]);case"ROUND":return this.ROUND(args[0]);case"ROUND2":return this.ROUND2(args[0],args[1]);case"TRMA":return this.TRMA(args[0],args[1]);case"VALUEWHEN":return this.VALUEWHEN(args[0],args[1]);case"HARMEAN":return this.HARMEAN(args[0],args[1]);case"DATETODAY":return this.DATETODAY(args[0]);case"DAYTODATE":return this.DAYTODATE(args[0]);case"TIMETOSEC":return this.TIMETOSEC(args[0]);case"SECTOTIME":return this.SECTOTIME(args[0]);case"ANY":return this.ANY(args[0],args[1]);case"ALL":return this.ALL(args[0],args[1]);case"TESTSKIP":return this.TESTSKIP(args[0],node);case"SUMBARS":return this.SUMBARS(args[0],args[1]);case"ALIGNRIGHT":return this.ALIGNRIGHT(args[0]);//三角函数
|
|
10409
10443
|
case'ATAN':return this.Trigonometric(args[0],Math.atan);case'ACOS':return this.ACOS(args[0]);case'ASIN':return this.ASIN(args[0]);case'COS':return this.Trigonometric(args[0],Math.cos);case'SIN':return this.Trigonometric(args[0],Math.sin);case'TAN':return this.Trigonometric(args[0],Math.tan);case'LN':return this.Trigonometric(args[0],Math.log);case'LOG':return this.Trigonometric(args[0],_log2.default);case'EXP':return this.Trigonometric(args[0],Math.exp);case'SQRT':return this.Trigonometric(args[0],Math.sqrt);case"RAND":return this.RAND(args[0]);default:this.ThrowUnexpectedNode(node,'函数'+name+'不存在',name);}};//调用自定义函数 返回数据格式{Out:输出数据, Draw:绘图数据(可选)}
|
|
10410
10444
|
this.CallCustomFunction=function(name,args,symbolData,node){var functionInfo=g_JSComplierResource.CustomFunction.Data.get(name);var dwonloadData=symbolData.GetStockCacheData({CustomName:name,Node:node});if(!functionInfo.Invoke)return{Out:dwonloadData};JSConsole.Complier.Log('[JSAlgorithm::CallCustomFunction] call custom function functionInfo=',functionInfo);var self=this;var obj={Name:name,Args:args,Symbol:symbolData.Symbol,Period:symbolData.Period,Right:symbolData.Right,KData:symbolData.Data,//K线数据
|
|
10411
10445
|
DownloadData:dwonloadData,ThrowError:function ThrowError(error){self.ThrowUnexpectedNode(node,error);}};return functionInfo.Invoke(obj);};this.ThrowUnexpectedNode=function(node,message,word){var marker=node.Marker;var msg=message||"执行异常";return this.ErrorHandler.ThrowError(marker.Index,marker.Line,marker.Column,msg,word);};}//是否有是有效的数字
|
|
@@ -12796,7 +12830,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
12796
12830
|
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);};}/********************************************************************************
|
|
12797
12831
|
* 版本信息输出
|
|
12798
12832
|
*
|
|
12799
|
-
*/var HQCHART_VERSION="1.1.
|
|
12833
|
+
*/var HQCHART_VERSION="1.1.12673";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();//把给外界调用的方法暴露出来
|
|
12800
12834
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
12801
12835
|
// BaseIndex:BaseIndex,
|
|
12802
12836
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -4003,6 +4003,50 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
4003
4003
|
return result;
|
|
4004
4004
|
}
|
|
4005
4005
|
|
|
4006
|
+
|
|
4007
|
+
|
|
4008
|
+
//STDDEV(X,N) 返回标准偏差
|
|
4009
|
+
//将标准差除以样本大小N的平方根即可得出标准误差。标准误差 = σ/sqrt(n)
|
|
4010
|
+
this.STDDEV=function(data,n)
|
|
4011
|
+
{
|
|
4012
|
+
var result=[];
|
|
4013
|
+
|
|
4014
|
+
if (!Array.isArray(data)) return result;
|
|
4015
|
+
var nStart=this.GetFirstVaildIndex(data);
|
|
4016
|
+
if (!IFrameSplitOperator.IsNumber(n)) return result;
|
|
4017
|
+
if(nStart+n>data.length || n<1) return result;
|
|
4018
|
+
|
|
4019
|
+
var i=nStart, j=0, bFirst=true, dTotal=0, dAvg=0;
|
|
4020
|
+
for(i+=n-1;i<data.length;++i)
|
|
4021
|
+
{
|
|
4022
|
+
dTotal = 0;
|
|
4023
|
+
if(bFirst)
|
|
4024
|
+
{
|
|
4025
|
+
bFirst = false;
|
|
4026
|
+
for(j=i-n+1;j<=i;++j)
|
|
4027
|
+
{
|
|
4028
|
+
dAvg += data[j];
|
|
4029
|
+
}
|
|
4030
|
+
|
|
4031
|
+
dAvg /= n;
|
|
4032
|
+
}
|
|
4033
|
+
else
|
|
4034
|
+
{
|
|
4035
|
+
dAvg += (data[i]-data[i-n])/n;
|
|
4036
|
+
}
|
|
4037
|
+
|
|
4038
|
+
for(j=i-n+1;j<=i;++j)
|
|
4039
|
+
{
|
|
4040
|
+
dTotal += (data[j]-dAvg)*(data[j]-dAvg);
|
|
4041
|
+
}
|
|
4042
|
+
|
|
4043
|
+
|
|
4044
|
+
result[i] = Math.sqrt(dTotal/(n-1))/Math.sqrt(n);
|
|
4045
|
+
}
|
|
4046
|
+
|
|
4047
|
+
return result;
|
|
4048
|
+
}
|
|
4049
|
+
|
|
4006
4050
|
//平均绝对方差
|
|
4007
4051
|
this.AVEDEV=function(data,n)
|
|
4008
4052
|
{
|
|
@@ -8814,6 +8858,8 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
8814
8858
|
return this.AVEDEV(args[0], args[1]);
|
|
8815
8859
|
case 'STD':
|
|
8816
8860
|
return this.STD(args[0], args[1]);
|
|
8861
|
+
case "STDDEV":
|
|
8862
|
+
return this.STDDEV(args[0], args[1]);
|
|
8817
8863
|
case 'IF':
|
|
8818
8864
|
case 'IFF':
|
|
8819
8865
|
case "IFELSE":
|
|
@@ -109,6 +109,7 @@ function JSIndexScript()
|
|
|
109
109
|
['EMPTY', this.EMPTY], //什么都不显示的指标
|
|
110
110
|
['神奇九转', this.NineTurns],
|
|
111
111
|
['EMA', this.EMA3], ['EMA4', this.EMA4], ['EMA5', this.EMA5],['EMA6', this.EMA6],
|
|
112
|
+
["ICHIMOKU",this.ICHIMOKU],["CDP-STD", this.CDP_STD],["TBP-STD",this.TBP_STD],
|
|
112
113
|
|
|
113
114
|
//通达信特色指标
|
|
114
115
|
["散户线", this.ShareholderCount],["NXTS", this.NXTS],["FKX", this.FKX],["两融资金", this.Margin4],
|
|
@@ -4049,6 +4050,69 @@ DRAWTEXT(D9,H*1.010,'9'),COLORGREEN;"
|
|
|
4049
4050
|
return data;
|
|
4050
4051
|
}
|
|
4051
4052
|
|
|
4053
|
+
JSIndexScript.prototype.ICHIMOKU=function()
|
|
4054
|
+
{
|
|
4055
|
+
let data =
|
|
4056
|
+
{
|
|
4057
|
+
Name: 'ICHIMOKU', Description: '一目均衡图', IsMainIndex: true,
|
|
4058
|
+
Args: [{ Name: 'SHORT', Value: 7 },{ Name: 'MID', Value: 22 },{ Name: 'LONG', Value: 44 }],
|
|
4059
|
+
Script: //脚本
|
|
4060
|
+
"转换线:(HHV(H,SHORT)+LLV(L,SHORT))/2,COLORRED,LINETHICK2;\n\
|
|
4061
|
+
基准线:(HHV(H,MID)+LLV(L,MID))/2,COLORFF8040,LINETHICK2;\n\
|
|
4062
|
+
迟行带:REFXV(C,MID),COLORGRAY,LINETHICK2;\n\
|
|
4063
|
+
A:=REF((转换线+基准线)/2,MID);\n\
|
|
4064
|
+
B:=REF((HHV(H,LONG)+LLV(L,LONG))/2,MID);\n\
|
|
4065
|
+
STICKLINE(A<B,A,B,2,1),COLOR339933;\n\
|
|
4066
|
+
STICKLINE(A>=B,A,B,2,1),COLOR0033CC;\n\
|
|
4067
|
+
先行带A:PLOYLINE(1,A),COLORBROWN;\n\
|
|
4068
|
+
先行带B:PLOYLINE(1,B),COLORLIGREEN;"
|
|
4069
|
+
};
|
|
4070
|
+
|
|
4071
|
+
return data;
|
|
4072
|
+
}
|
|
4073
|
+
|
|
4074
|
+
JSIndexScript.prototype.CDP_STD=function()
|
|
4075
|
+
{
|
|
4076
|
+
let data =
|
|
4077
|
+
{
|
|
4078
|
+
Name: 'CDP-STD', Description: '逆势操作', IsMainIndex: true,
|
|
4079
|
+
Script: //脚本
|
|
4080
|
+
"CH:=REF(H,1);\n\
|
|
4081
|
+
CL:=REF(L,1);\n\
|
|
4082
|
+
CC:=REF(C,1);\n\
|
|
4083
|
+
CDP:(CH+CL+CC)/3;\n\
|
|
4084
|
+
AH:2*CDP+CH-2*CL;\n\
|
|
4085
|
+
NH:CDP+CDP-CL;\n\
|
|
4086
|
+
NL:CDP+CDP-CH;\n\
|
|
4087
|
+
AL:2*CDP-2*CH+CL;"
|
|
4088
|
+
};
|
|
4089
|
+
|
|
4090
|
+
return data;
|
|
4091
|
+
}
|
|
4092
|
+
|
|
4093
|
+
JSIndexScript.prototype.TBP_STD=function()
|
|
4094
|
+
{
|
|
4095
|
+
let data =
|
|
4096
|
+
{
|
|
4097
|
+
Name: 'TBP-STD', Description: '趋势平衡点', IsMainIndex: true,
|
|
4098
|
+
Script: //脚本
|
|
4099
|
+
"APX:=(H+L+C)/3;\n\
|
|
4100
|
+
TR0:=MAX(H-L,MAX(ABS(H-REF(C,1)),ABS(L-REF(C,1))));\n\
|
|
4101
|
+
MF0:=C-REF(C,2);\n\
|
|
4102
|
+
MF1:=REF(MF0,1);\n\
|
|
4103
|
+
MF2:=REF(MF0,2);\n\
|
|
4104
|
+
DIRECT1:=BARSLAST(MF0>MF1 AND MF0>MF2);\n\
|
|
4105
|
+
DIRECT2:=BARSLAST(MF0<MF1 AND MF0<MF2);\n\
|
|
4106
|
+
DIRECT0:=IF(DIRECT1<DIRECT2,100,-100);\n\
|
|
4107
|
+
TBP:REF(REF(C,1)+IF(DIRECT0>50,MIN(MF0,MF1),MAX(MF0,MF1)),1);\n\
|
|
4108
|
+
多头获利:REF(IF(DIRECT0>50,APX*2-L,DRAWNULL),1),NODRAW;\n\
|
|
4109
|
+
多头停损:REF(IF(DIRECT0>50,APX-TR0,DRAWNULL),1),NODRAW;\n\
|
|
4110
|
+
空头回补:REF(IF(DIRECT0<-50,APX*2-H,DRAWNULL),1),NODRAW;\n\
|
|
4111
|
+
空头停损:REF(IF(DIRECT0<-50,APX+TR0,DRAWNULL),1),NODRAW;"
|
|
4112
|
+
};
|
|
4113
|
+
|
|
4114
|
+
return data;
|
|
4115
|
+
}
|
|
4052
4116
|
|
|
4053
4117
|
|
|
4054
4118
|
JSIndexScript.prototype.TEST = function ()
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -1230,6 +1230,15 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1230
1230
|
this.CanvasElement.onmouseleave=(e)=>{ }
|
|
1231
1231
|
}
|
|
1232
1232
|
|
|
1233
|
+
if (option.ExtendChart)
|
|
1234
|
+
{
|
|
1235
|
+
for(var i=0;i<option.ExtendChart.length;++i)
|
|
1236
|
+
{
|
|
1237
|
+
var item=option.ExtendChart[i];
|
|
1238
|
+
chart.CreateExtendChart(item.Name, item);
|
|
1239
|
+
}
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1233
1242
|
return chart;
|
|
1234
1243
|
|
|
1235
1244
|
}
|
|
@@ -25484,57 +25493,122 @@ function ChartKLine()
|
|
|
25484
25493
|
var item=orderFlow.Order[i];
|
|
25485
25494
|
var yPrice=this.GetYFromData(item.Price, false);
|
|
25486
25495
|
if (!item.Vol) continue;
|
|
25487
|
-
if (!IFrameSplitOperator.IsNumber(item.Vol.Value)) continue;
|
|
25488
|
-
|
|
25489
|
-
var barWidth=xKLine.Right-xKLine.Left;
|
|
25490
|
-
var volWidth=barWidth*(item.Vol.Value-min)/(max-min);
|
|
25491
|
-
var rect={ Left:xKLine.Left, Right:xKLine.Right, Bottom:yPrice+cellHeight/2, Top:yPrice-cellHeight/2 };
|
|
25492
|
-
rect.Right=rect.Left+volWidth;
|
|
25493
25496
|
|
|
25494
|
-
if (
|
|
25497
|
+
if (IFrameSplitOperator.IsNonEmptyArray(item.AryVol))
|
|
25495
25498
|
{
|
|
25496
|
-
|
|
25497
|
-
}
|
|
25499
|
+
var barWidth=xKLine.Right-xKLine.Left;
|
|
25498
25500
|
|
|
25499
|
-
|
|
25500
|
-
|
|
25501
|
-
|
|
25502
|
-
|
|
25503
|
-
|
|
25504
|
-
|
|
25505
|
-
|
|
25506
|
-
|
|
25501
|
+
var xVolLeft=xKLine.Left;
|
|
25502
|
+
var xVolRight=xVolLeft;
|
|
25503
|
+
var totalVol=0;
|
|
25504
|
+
var rtDraw={ Bottom:yPrice+cellHeight/2, Top:yPrice-cellHeight/2 };
|
|
25505
|
+
for(var j=0;j<item.AryVol.length;++j)
|
|
25506
|
+
{
|
|
25507
|
+
var itemVol=item.AryVol[j];
|
|
25508
|
+
if (!IFrameSplitOperator.IsNumber(itemVol.Value)) continue;
|
|
25509
|
+
totalVol+=itemVol.Value;
|
|
25510
|
+
xVolRight=barWidth*(totalVol-min)/(max-min)+xKLine.Left;
|
|
25511
|
+
var rtBar={ Left:xVolLeft, Right:xVolRight, Bottom:yPrice+cellHeight/2, Top:yPrice-cellHeight/2 };
|
|
25512
|
+
if (preItem && item.Price>preItem.Price)
|
|
25513
|
+
{
|
|
25514
|
+
rtBar.Bottom=preItem.Rect.Top-volBarSpace;
|
|
25515
|
+
}
|
|
25516
|
+
rtBar.Width=rtBar.Right-rtBar.Left;
|
|
25517
|
+
rtBar.Height=rtBar.Bottom-rtBar.Top;
|
|
25507
25518
|
|
|
25508
|
-
|
|
25509
|
-
|
|
25510
|
-
|
|
25511
|
-
|
|
25512
|
-
}
|
|
25519
|
+
rtDraw={ Left:ToFixedRect(rtBar.Left), Top:ToFixedRect(rtBar.Top), Width:ToFixedRect(rtBar.Width), Height:ToFixedRect(rtBar.Height) };
|
|
25520
|
+
rtDraw.Bottom=rtDraw.Top+rtDraw.Height;
|
|
25521
|
+
rtDraw.Right=rtDraw.Left+rtDraw.Width;
|
|
25522
|
+
if (rtDraw.Width<1) rtDraw.Width=1;
|
|
25513
25523
|
|
|
25514
|
-
|
|
25515
|
-
|
|
25516
|
-
|
|
25517
|
-
|
|
25518
|
-
|
|
25524
|
+
if (itemVol.BG) //背景色
|
|
25525
|
+
{
|
|
25526
|
+
this.Canvas.fillStyle=itemVol.BG;
|
|
25527
|
+
this.Canvas.fillRect(rtDraw.Left, rtDraw.Top, rtDraw.Width, rtDraw.Height);
|
|
25528
|
+
}
|
|
25519
25529
|
|
|
25520
|
-
|
|
25521
|
-
|
|
25522
|
-
this.Canvas.fillStyle=item.Vol.Color;
|
|
25530
|
+
xVolLeft=rtDraw.Right;
|
|
25531
|
+
}
|
|
25523
25532
|
|
|
25524
|
-
|
|
25533
|
+
rtDraw.Left=xKLine.Left;
|
|
25534
|
+
rtDraw.Width=rtDraw.Right-rtDraw.Left;
|
|
25535
|
+
if (item.Vol.Text && this.IsShowOrderText) //文字
|
|
25525
25536
|
{
|
|
25526
|
-
|
|
25527
|
-
|
|
25528
|
-
|
|
25529
|
-
|
|
25537
|
+
this.Canvas.fillStyle=item.Vol.Color;
|
|
25538
|
+
|
|
25539
|
+
if (item.Vol.Font)
|
|
25540
|
+
{
|
|
25541
|
+
var itemFont=this.GetDynamicOrderFlowFont(cellHeight, barWidth/2, item.Vol.Font);
|
|
25542
|
+
this.Canvas.font=itemFont;
|
|
25543
|
+
this.Canvas.fillText(text,xKLine.Center+textXOffset,yPrice);
|
|
25544
|
+
this.Canvas.font=textFont;
|
|
25545
|
+
}
|
|
25546
|
+
else
|
|
25547
|
+
{
|
|
25548
|
+
this.Canvas.fillText(item.Vol.Text,rtDraw.Left+2,yPrice);
|
|
25549
|
+
}
|
|
25530
25550
|
}
|
|
25531
|
-
|
|
25551
|
+
|
|
25552
|
+
preItem={ Price: item.Price, Rect:rtDraw };
|
|
25553
|
+
}
|
|
25554
|
+
else if (IFrameSplitOperator.IsNumber(item.Vol.Value))
|
|
25555
|
+
{
|
|
25556
|
+
var barWidth=xKLine.Right-xKLine.Left;
|
|
25557
|
+
var volWidth=barWidth*(item.Vol.Value-min)/(max-min);
|
|
25558
|
+
var rect={ Left:xKLine.Left, Right:xKLine.Right, Bottom:yPrice+cellHeight/2, Top:yPrice-cellHeight/2 };
|
|
25559
|
+
rect.Right=rect.Left+volWidth;
|
|
25560
|
+
|
|
25561
|
+
if (preItem && item.Price>preItem.Price)
|
|
25532
25562
|
{
|
|
25533
|
-
|
|
25563
|
+
rect.Bottom=preItem.Rect.Top-volBarSpace;
|
|
25534
25564
|
}
|
|
25565
|
+
|
|
25566
|
+
rect.Width=rect.Right-rect.Left;
|
|
25567
|
+
rect.Height=rect.Bottom-rect.Top;
|
|
25568
|
+
|
|
25569
|
+
|
|
25570
|
+
var rtDraw={ Left:ToFixedRect(rect.Left), Top:ToFixedRect(rect.Top), Width:ToFixedRect(rect.Width), Height:ToFixedRect(rect.Height) };
|
|
25571
|
+
rtDraw.Bottom=rtDraw.Top+rtDraw.Height;
|
|
25572
|
+
rtDraw.Right=rtDraw.Left+rtDraw.Width;
|
|
25573
|
+
if (rtDraw.Width<1) rtDraw.Width=1;
|
|
25574
|
+
|
|
25575
|
+
if (item.Vol.BG) //背景色
|
|
25576
|
+
{
|
|
25577
|
+
this.Canvas.fillStyle=item.Vol.BG;
|
|
25578
|
+
this.Canvas.fillRect(rtDraw.Left, rtDraw.Top, rtDraw.Width, rtDraw.Height);
|
|
25579
|
+
}
|
|
25580
|
+
|
|
25581
|
+
if (item.Vol.BorderColor) //边框
|
|
25582
|
+
{
|
|
25583
|
+
this.Canvas.strokeStyle = item.Vol.BorderColor;
|
|
25584
|
+
this.Canvas.strokeRect(ToFixedPoint(rtDraw.Left), ToFixedPoint(rtDraw.Top), rtDraw.Width, rtDraw.Height);
|
|
25585
|
+
}
|
|
25586
|
+
|
|
25587
|
+
if (item.Vol.Text && this.IsShowOrderText) //文字
|
|
25588
|
+
{
|
|
25589
|
+
this.Canvas.fillStyle=item.Vol.Color;
|
|
25590
|
+
|
|
25591
|
+
if (item.Vol.Font)
|
|
25592
|
+
{
|
|
25593
|
+
var itemFont=this.GetDynamicOrderFlowFont(cellHeight, barWidth/2, item.Vol.Font);
|
|
25594
|
+
this.Canvas.font=itemFont;
|
|
25595
|
+
this.Canvas.fillText(text,xKLine.Center+textXOffset,yPrice);
|
|
25596
|
+
this.Canvas.font=textFont;
|
|
25597
|
+
}
|
|
25598
|
+
else
|
|
25599
|
+
{
|
|
25600
|
+
this.Canvas.fillText(item.Vol.Text,rtDraw.Left+2,yPrice);
|
|
25601
|
+
}
|
|
25602
|
+
}
|
|
25603
|
+
|
|
25604
|
+
preItem={ Price: item.Price, Rect:rtDraw };
|
|
25535
25605
|
}
|
|
25536
|
-
|
|
25537
|
-
|
|
25606
|
+
else
|
|
25607
|
+
{
|
|
25608
|
+
continue;
|
|
25609
|
+
}
|
|
25610
|
+
|
|
25611
|
+
|
|
25538
25612
|
}
|
|
25539
25613
|
}
|
|
25540
25614
|
}
|
|
@@ -81,6 +81,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
|
|
81
81
|
'MEMA':FUNCTION_NAME,'WMA':FUNCTION_NAME,"STRLEN":FUNCTION_NAME,"TMA":FUNCTION_NAME,"HV":FUNCTION_NAME,"HOD":FUNCTION_NAME,"LV":FUNCTION_NAME,
|
|
82
82
|
"VALUEWHEN":FUNCTION_NAME,"TESTSKIP":FUNCTION_NAME,"IFC":FUNCTION_NAME,"IFN":FUNCTION_NAME,"RGB":FUNCTION_NAME,"RGBX":FUNCTION_NAME,
|
|
83
83
|
"SYSPARAM":FUNCTION_NAME,"CALCSTOCKINDEX":FUNCTION_NAME,"STKINDI":FUNCTION_NAME,"RGBA":FUNCTION_NAME,
|
|
84
|
+
"STDDEV":FUNCTION_NAME,"STD":FUNCTION_NAME,
|
|
84
85
|
|
|
85
86
|
"ISUP":DATA_NAME,"ISEQUAL":DATA_NAME,"ISDOWN":DATA_NAME,
|
|
86
87
|
|
|
@@ -108,6 +109,8 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
|
|
108
109
|
//绘图函数
|
|
109
110
|
'DRAWTEXT':FUNCTION_NAME,'STICKLINE':FUNCTION_NAME,'DRAWBAND':FUNCTION_NAME,'DRAWKLINE':FUNCTION_NAME,
|
|
110
111
|
'PLOYLINE':FUNCTION_NAME,'POLYLINE':FUNCTION_NAME,'DRAWNUMBER':FUNCTION_NAME,'DRAWICON':FUNCTION_NAME,'SUPERDRAWTEXT':FUNCTION_NAME,
|
|
112
|
+
"DRAWTEXTREL":FUNCTION_NAME,"DRAWTEXTABS":FUNCTION_NAME,"DRAWGBK":FUNCTION_NAME,"FILLRGN":FUNCTION_NAME,"FLOATRGN":FUNCTION_NAME,
|
|
113
|
+
"HORLINE":FUNCTION_NAME,
|
|
111
114
|
|
|
112
115
|
|
|
113
116
|
//个股行情数据
|
|
@@ -126,9 +129,10 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
|
|
|
126
129
|
'LINETHICK6':LINE_WIDTH_NAME,'LINETHICK7':LINE_WIDTH_NAME,'LINETHICK8':LINE_WIDTH_NAME,'LINETHICK9':LINE_WIDTH_NAME,'LINETHICK10':LINE_WIDTH_NAME,
|
|
127
130
|
|
|
128
131
|
//字体大小
|
|
129
|
-
"FONTSIZE10":LINE_WIDTH_NAME,"FONTSIZE11":LINE_WIDTH_NAME,"FONTSIZE12":LINE_WIDTH_NAME,"
|
|
130
|
-
"FONTSIZE16":LINE_WIDTH_NAME,"FONTSIZE17":LINE_WIDTH_NAME,"FONTSIZE18":LINE_WIDTH_NAME,"
|
|
132
|
+
"FONTSIZE10":LINE_WIDTH_NAME,"FONTSIZE11":LINE_WIDTH_NAME,"FONTSIZE12":LINE_WIDTH_NAME,"FONTSIZE14":LINE_WIDTH_NAME,"FONTSIZE15":LINE_WIDTH_NAME,
|
|
133
|
+
"FONTSIZE16":LINE_WIDTH_NAME,"FONTSIZE17":LINE_WIDTH_NAME,"FONTSIZE18":LINE_WIDTH_NAME,"FONTSIZE19":LINE_WIDTH_NAME,"FONTSIZE20":LINE_WIDTH_NAME,
|
|
131
134
|
"FONTSIZE21":LINE_WIDTH_NAME,"FONTSIZE22":LINE_WIDTH_NAME,"FONTSIZE23":LINE_WIDTH_NAME,"FONTSIZE24":LINE_WIDTH_NAME,"FONTSIZE25":LINE_WIDTH_NAME,
|
|
135
|
+
"FONTSIZE26":LINE_WIDTH_NAME,"FONTSIZE27":LINE_WIDTH_NAME,"FONTSIZE28":LINE_WIDTH_NAME,"FONTSIZE29":LINE_WIDTH_NAME,"FONTSIZE20":LINE_WIDTH_NAME,
|
|
132
136
|
|
|
133
137
|
"VALIGN0":LINE_WIDTH_NAME,"VALIGN1":LINE_WIDTH_NAME,"VALIGN2":LINE_WIDTH_NAME,
|
|
134
138
|
"ALIGN0":LINE_WIDTH_NAME,"ALIGN1":LINE_WIDTH_NAME,"ALIGN2":LINE_WIDTH_NAME,
|