hqchart 1.1.13142 → 1.1.13152
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/package.json
CHANGED
package/src/jscommon/umychart.js
CHANGED
|
@@ -18041,6 +18041,29 @@ function HQTradeFrame()
|
|
|
18041
18041
|
var firstOpenPrice=frame.YSplitOperator.GetFirstOpenPrice();
|
|
18042
18042
|
outObject.RightYValue=((yValue-firstOpenPrice)/firstOpenPrice*100).toFixed(2)+'%';
|
|
18043
18043
|
}
|
|
18044
|
+
|
|
18045
|
+
if (frame.GetMainOverlayFrame)
|
|
18046
|
+
{
|
|
18047
|
+
var aryOverlayFrame=frame.GetMainOverlayFrame();
|
|
18048
|
+
if (aryOverlayFrame)
|
|
18049
|
+
{
|
|
18050
|
+
if (aryOverlayFrame[0]) //左侧
|
|
18051
|
+
{
|
|
18052
|
+
var leftFrame=aryOverlayFrame[0];
|
|
18053
|
+
var value=leftFrame.GetYData(y);
|
|
18054
|
+
outObject.RightYValue=yValue;
|
|
18055
|
+
yValue=value;
|
|
18056
|
+
}
|
|
18057
|
+
|
|
18058
|
+
if (aryOverlayFrame[1]) //右侧
|
|
18059
|
+
{
|
|
18060
|
+
var rightFrame=aryOverlayFrame[1];
|
|
18061
|
+
var value=rightFrame.GetYData(y);
|
|
18062
|
+
outObject.RightYValue=value;
|
|
18063
|
+
}
|
|
18064
|
+
}
|
|
18065
|
+
}
|
|
18066
|
+
|
|
18044
18067
|
return yValue;
|
|
18045
18068
|
}
|
|
18046
18069
|
}
|
|
@@ -18567,7 +18590,34 @@ function HQTradeHScreenFrame()
|
|
|
18567
18590
|
}
|
|
18568
18591
|
}
|
|
18569
18592
|
|
|
18570
|
-
if (frame!=null)
|
|
18593
|
+
if (frame!=null)
|
|
18594
|
+
{
|
|
18595
|
+
var xValue= frame.GetYData(x);
|
|
18596
|
+
|
|
18597
|
+
if (frame.GetMainOverlayFrame)
|
|
18598
|
+
{
|
|
18599
|
+
var aryOverlayFrame=frame.GetMainOverlayFrame();
|
|
18600
|
+
if (aryOverlayFrame)
|
|
18601
|
+
{
|
|
18602
|
+
if (aryOverlayFrame[0]) //左侧
|
|
18603
|
+
{
|
|
18604
|
+
var leftFrame=aryOverlayFrame[0];
|
|
18605
|
+
var value=leftFrame.GetYData(x);
|
|
18606
|
+
outObject.RightYValue=xValue;
|
|
18607
|
+
xValue=value;
|
|
18608
|
+
}
|
|
18609
|
+
|
|
18610
|
+
if (aryOverlayFrame[1]) //右侧
|
|
18611
|
+
{
|
|
18612
|
+
var rightFrame=aryOverlayFrame[1];
|
|
18613
|
+
var value=rightFrame.GetYData(x);
|
|
18614
|
+
outObject.RightYValue=value;
|
|
18615
|
+
}
|
|
18616
|
+
}
|
|
18617
|
+
}
|
|
18618
|
+
|
|
18619
|
+
return xValue;
|
|
18620
|
+
}
|
|
18571
18621
|
}
|
|
18572
18622
|
}
|
|
18573
18623
|
|
|
@@ -24690,6 +24740,198 @@ function ChartKLine()
|
|
|
24690
24740
|
this.PtMin=ptMin;
|
|
24691
24741
|
}
|
|
24692
24742
|
|
|
24743
|
+
this.DrawKagi=function() //卡吉图
|
|
24744
|
+
{
|
|
24745
|
+
var isHScreen=(this.ChartFrame.IsHScreen===true);
|
|
24746
|
+
var dataWidth=this.ChartFrame.DataWidth;
|
|
24747
|
+
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
24748
|
+
var xPointCount=this.ChartFrame.XPointCount;
|
|
24749
|
+
|
|
24750
|
+
if (isHScreen)
|
|
24751
|
+
{
|
|
24752
|
+
var border=this.ChartBorder.GetHScreenBorder();
|
|
24753
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
24754
|
+
var chartright=border.BottomEx;
|
|
24755
|
+
var left=border.TopEx+g_JSChartResource.FrameLeftMargin;
|
|
24756
|
+
}
|
|
24757
|
+
else
|
|
24758
|
+
{
|
|
24759
|
+
var border=this.ChartBorder.GetBorder();
|
|
24760
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
24761
|
+
var chartright=border.RightEx;
|
|
24762
|
+
var left=border.Left+g_JSChartResource.FrameLeftMargin;
|
|
24763
|
+
}
|
|
24764
|
+
|
|
24765
|
+
var ptMax={X:null,Y:null,Value:null,Align:'left'};
|
|
24766
|
+
var ptMin={X:null,Y:null,Value:null,Align:'left'};
|
|
24767
|
+
this.ShowRange.Start=this.Data.DataOffset;
|
|
24768
|
+
this.ShowRange.End=this.ShowRange.Start;
|
|
24769
|
+
this.ShowRange.DataCount=0;
|
|
24770
|
+
this.ShowRange.ShowCount=xPointCount;
|
|
24771
|
+
this.DrawKRange.Start=this.Data.DataOffset;
|
|
24772
|
+
|
|
24773
|
+
var lineWidth=2*GetDevicePixelRatio();
|
|
24774
|
+
this.Canvas.lineWidth=lineWidth;
|
|
24775
|
+
var preItem={ Item:null, X:left, Y:null };
|
|
24776
|
+
var index=this.Data.DataOffset-1;
|
|
24777
|
+
if (index>=0 && index<this.Data.Data.length)
|
|
24778
|
+
{
|
|
24779
|
+
var item=this.Data.Data[index];
|
|
24780
|
+
preItem.Item=item;
|
|
24781
|
+
if (item.Direction==1) //上
|
|
24782
|
+
{
|
|
24783
|
+
preItem.Y=this.GetYFromData(item.High,false);
|
|
24784
|
+
}
|
|
24785
|
+
else if (item.Direction==2)
|
|
24786
|
+
{
|
|
24787
|
+
preItem.Y=this.GetYFromData(item.Low,false);
|
|
24788
|
+
}
|
|
24789
|
+
}
|
|
24790
|
+
|
|
24791
|
+
|
|
24792
|
+
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth),++this.ShowRange.DataCount)
|
|
24793
|
+
{
|
|
24794
|
+
var data=this.Data.Data[i];
|
|
24795
|
+
this.ShowRange.End=i;
|
|
24796
|
+
if (data.Open==null || data.High==null || data.Low==null || data.Close==null) continue;
|
|
24797
|
+
|
|
24798
|
+
var left=xOffset;
|
|
24799
|
+
var right=xOffset+dataWidth;
|
|
24800
|
+
if (right>chartright) break;
|
|
24801
|
+
var x=left+(right-left)/2;
|
|
24802
|
+
var yLow=this.GetYFromData(data.Low,false);
|
|
24803
|
+
var yHigh=this.GetYFromData(data.High,false);
|
|
24804
|
+
this.DrawKRange.End=i;
|
|
24805
|
+
|
|
24806
|
+
if (ptMax.Value==null || ptMax.Value<data.High) //求最大值
|
|
24807
|
+
{
|
|
24808
|
+
ptMax.X=x;
|
|
24809
|
+
ptMax.Y=yHigh;
|
|
24810
|
+
ptMax.Value=data.High;
|
|
24811
|
+
ptMax.Align=j<xPointCount/2?'left':'right';
|
|
24812
|
+
}
|
|
24813
|
+
|
|
24814
|
+
if (ptMin.Value==null || ptMin.Value>data.Low) //求最小值
|
|
24815
|
+
{
|
|
24816
|
+
ptMin.X=x;
|
|
24817
|
+
ptMin.Y=yLow;
|
|
24818
|
+
ptMin.Value=data.Low;
|
|
24819
|
+
ptMin.Align=j<xPointCount/2?'left':'right';
|
|
24820
|
+
}
|
|
24821
|
+
|
|
24822
|
+
var xFixed=ToFixedPoint2(lineWidth,x);
|
|
24823
|
+
|
|
24824
|
+
if (preItem.Item)
|
|
24825
|
+
{
|
|
24826
|
+
this.Canvas.beginPath();
|
|
24827
|
+
var yFixed=ToFixedPoint2(lineWidth,preItem.Y);
|
|
24828
|
+
|
|
24829
|
+
this.Canvas.moveTo(preItem.X, yFixed);
|
|
24830
|
+
this.Canvas.lineTo(xFixed, yFixed);
|
|
24831
|
+
var prePrice=null;
|
|
24832
|
+
if (preItem.Item.Direction==1) prePrice=preItem.Item.Low;
|
|
24833
|
+
else if (preItem.Item.Direction==2) prePrice=preItem.Item.High;
|
|
24834
|
+
|
|
24835
|
+
if (data.Direction==1)
|
|
24836
|
+
{
|
|
24837
|
+
if (data.High<prePrice)
|
|
24838
|
+
{
|
|
24839
|
+
this.Canvas.lineTo(xFixed, yHigh);
|
|
24840
|
+
this.Canvas.strokeStyle=this.DownColor;
|
|
24841
|
+
this.Canvas.stroke();
|
|
24842
|
+
}
|
|
24843
|
+
else
|
|
24844
|
+
{
|
|
24845
|
+
var yPrePrice=this.GetYFromData(prePrice,false);
|
|
24846
|
+
this.Canvas.lineTo(xFixed, yPrePrice);
|
|
24847
|
+
this.Canvas.strokeStyle=this.DownColor;
|
|
24848
|
+
this.Canvas.stroke();
|
|
24849
|
+
|
|
24850
|
+
this.Canvas.beginPath();
|
|
24851
|
+
this.Canvas.moveTo(xFixed, yPrePrice);
|
|
24852
|
+
this.Canvas.lineTo(xFixed, yHigh);
|
|
24853
|
+
this.Canvas.strokeStyle=this.UpColor;
|
|
24854
|
+
this.Canvas.stroke();
|
|
24855
|
+
}
|
|
24856
|
+
|
|
24857
|
+
}
|
|
24858
|
+
else if (data.Direction==2)
|
|
24859
|
+
{
|
|
24860
|
+
if (data.Low>prePrice)
|
|
24861
|
+
{
|
|
24862
|
+
this.Canvas.lineTo(xFixed, yLow);
|
|
24863
|
+
this.Canvas.strokeStyle=this.DownColor; //阳线
|
|
24864
|
+
this.Canvas.stroke();
|
|
24865
|
+
}
|
|
24866
|
+
else
|
|
24867
|
+
{
|
|
24868
|
+
var yPrePrice=this.GetYFromData(prePrice,false);
|
|
24869
|
+
this.Canvas.lineTo(xFixed, yPrePrice);
|
|
24870
|
+
this.Canvas.strokeStyle=this.DownColor; //阳线
|
|
24871
|
+
this.Canvas.stroke();
|
|
24872
|
+
|
|
24873
|
+
this.Canvas.beginPath();
|
|
24874
|
+
this.Canvas.moveTo(xFixed, yPrePrice);
|
|
24875
|
+
this.Canvas.lineTo(xFixed, yLow);
|
|
24876
|
+
this.Canvas.strokeStyle=this.UpColor;
|
|
24877
|
+
this.Canvas.stroke();
|
|
24878
|
+
}
|
|
24879
|
+
}
|
|
24880
|
+
|
|
24881
|
+
}
|
|
24882
|
+
else
|
|
24883
|
+
{
|
|
24884
|
+
this.Canvas.beginPath();
|
|
24885
|
+
if (data.Direction==1)
|
|
24886
|
+
{
|
|
24887
|
+
this.Canvas.moveTo(xFixed, yLow);
|
|
24888
|
+
this.Canvas.lineTo(xFixed, yHigh);
|
|
24889
|
+
}
|
|
24890
|
+
else if (data.Direction==2)
|
|
24891
|
+
{
|
|
24892
|
+
this.Canvas.moveTo(xFixed, yHigh);
|
|
24893
|
+
this.Canvas.lineTo(xFixed, yLow);
|
|
24894
|
+
}
|
|
24895
|
+
this.Canvas.stroke();
|
|
24896
|
+
}
|
|
24897
|
+
|
|
24898
|
+
/*
|
|
24899
|
+
if (data.YClose<data.Close)
|
|
24900
|
+
{
|
|
24901
|
+
this.Canvas.strokeStyle=this.UpColor; //阳线
|
|
24902
|
+
this.Canvas.fillStyle=this.UpColor;
|
|
24903
|
+
}
|
|
24904
|
+
else if (data.YClose>data.Close)
|
|
24905
|
+
{
|
|
24906
|
+
this.Canvas.strokeStyle=this.DownColor; //阴线
|
|
24907
|
+
this.Canvas.fillStyle=this.DownColor;
|
|
24908
|
+
}
|
|
24909
|
+
|
|
24910
|
+
this.Canvas.beginPath();
|
|
24911
|
+
if (isHScreen)
|
|
24912
|
+
{
|
|
24913
|
+
this.Canvas.moveTo(yHigh,ToFixedPoint(x));
|
|
24914
|
+
this.Canvas.lineTo(yLow,ToFixedPoint(x));
|
|
24915
|
+
}
|
|
24916
|
+
else
|
|
24917
|
+
{
|
|
24918
|
+
this.Canvas.moveTo(ToFixedPoint2(lineWidth,x),yHigh);
|
|
24919
|
+
this.Canvas.lineTo(ToFixedPoint2(lineWidth,x),yLow);
|
|
24920
|
+
}
|
|
24921
|
+
this.Canvas.stroke();
|
|
24922
|
+
*/
|
|
24923
|
+
|
|
24924
|
+
preItem.Item=data;
|
|
24925
|
+
preItem.X=x;
|
|
24926
|
+
|
|
24927
|
+
if (data.Direction==1) preItem.Y=yHigh; //上
|
|
24928
|
+
else if (data.Direction==2) preItem.Y=yLow //下
|
|
24929
|
+
}
|
|
24930
|
+
|
|
24931
|
+
this.PtMax=ptMax;
|
|
24932
|
+
this.PtMin=ptMin;
|
|
24933
|
+
}
|
|
24934
|
+
|
|
24693
24935
|
this.DrawTrade=function() //交易系统
|
|
24694
24936
|
{
|
|
24695
24937
|
if (!this.TradeData) return;
|
|
@@ -25197,6 +25439,10 @@ function ChartKLine()
|
|
|
25197
25439
|
{
|
|
25198
25440
|
this.DrawHLCArea();
|
|
25199
25441
|
}
|
|
25442
|
+
else if (this.DrawType==16)
|
|
25443
|
+
{
|
|
25444
|
+
this.DrawKagi();
|
|
25445
|
+
}
|
|
25200
25446
|
else if (this.DrawType==17)
|
|
25201
25447
|
{
|
|
25202
25448
|
this.DrawOrderFlow_Style4();
|
|
@@ -46038,7 +46284,7 @@ function FrameSplitY()
|
|
|
46038
46284
|
var item=this.Frame.HorizontalInfo[i];
|
|
46039
46285
|
var y=this.Frame.GetYFromData(item.Value);
|
|
46040
46286
|
var yValue=leftFrame.GetYData(y);
|
|
46041
|
-
if (ySplitOper && ySplitOper.FormatValueString) item.Message[
|
|
46287
|
+
if (ySplitOper && ySplitOper.FormatValueString) item.Message[0] = ySplitOper.FormatValueString(yValue);
|
|
46042
46288
|
else item.Message[0] = this.FormatValueString(yValue);
|
|
46043
46289
|
}
|
|
46044
46290
|
}
|
|
@@ -48296,6 +48542,7 @@ function ChartCorssCursor()
|
|
|
48296
48542
|
|
|
48297
48543
|
this.StringFormatY.Value=yValue;
|
|
48298
48544
|
this.StringFormatY.FrameID=yValueExtend.FrameID;
|
|
48545
|
+
this.StringFormatY.RValue=yValueExtend.RightYValue; //右侧子坐标
|
|
48299
48546
|
this.StringFormatY.Point={X:x, Y:y};
|
|
48300
48547
|
this.StringFormatY.ClientPos=this.ClientPos;
|
|
48301
48548
|
|
|
@@ -49100,6 +49347,7 @@ function HQPriceStringFormat()
|
|
|
49100
49347
|
{
|
|
49101
49348
|
if (this.DataFormatType==1) this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
49102
49349
|
else this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);
|
|
49350
|
+
if (IFrameSplitOperator.IsNumber(this.RValue)) this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);
|
|
49103
49351
|
}
|
|
49104
49352
|
|
|
49105
49353
|
if (this.GetEventCallback)
|
|
@@ -65737,20 +65985,24 @@ function RenkoCalculate()
|
|
|
65737
65985
|
//
|
|
65738
65986
|
function KagiCalculate()
|
|
65739
65987
|
{
|
|
65740
|
-
this.
|
|
65741
|
-
this.
|
|
65742
|
-
this.
|
|
65743
|
-
|
|
65988
|
+
this.newMethod=RenkoCalculate; //派生
|
|
65989
|
+
this.newMethod();
|
|
65990
|
+
delete this.newMethod;
|
|
65991
|
+
|
|
65992
|
+
this.ClassName="KagiCalculate";
|
|
65993
|
+
this.BrickSizeType=0;
|
|
65994
|
+
this.BrickSize=0.5; //固定大小
|
|
65744
65995
|
|
|
65745
65996
|
this.RecvHistoryData=function(sourceData, option) //历史日线数据
|
|
65746
65997
|
{
|
|
65747
65998
|
this.Symbol=option.Symbol;
|
|
65748
65999
|
this.SourceData=sourceData;
|
|
65749
66000
|
this.FloatPrecision=GetfloatPrecision(this.Symbol);
|
|
65750
|
-
|
|
66001
|
+
if (this.BrickSizeType==1) this.CalculateATR();
|
|
66002
|
+
return this.CalculateByClose(sourceData);
|
|
65751
66003
|
}
|
|
65752
66004
|
|
|
65753
|
-
this.
|
|
66005
|
+
this.CalculateByClose=function(sourceData)
|
|
65754
66006
|
{
|
|
65755
66007
|
var bindData=new ChartData();
|
|
65756
66008
|
bindData.Data=[]
|
|
@@ -65761,13 +66013,139 @@ function KagiCalculate()
|
|
|
65761
66013
|
|
|
65762
66014
|
if (!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data)) return bindData;
|
|
65763
66015
|
|
|
65764
|
-
var
|
|
66016
|
+
var brickSize=this.BrickSize;
|
|
66017
|
+
if (this.BrickSizeType==1) brickSize=this.ATR.BrickSize;
|
|
65765
66018
|
|
|
65766
66019
|
var kItem=sourceData.Data[0];
|
|
65767
|
-
|
|
65768
|
-
|
|
66020
|
+
var kagiItem=HistoryData.Copy(kItem);
|
|
66021
|
+
|
|
66022
|
+
kagiItem.High=kagiItem.Low=kItem.Close;
|
|
66023
|
+
kagiItem.StartItem=kItem;
|
|
66024
|
+
kagiItem.Direction=0; //1 上 2=下
|
|
66025
|
+
|
|
66026
|
+
var T_MergeKData=function(dest, src)
|
|
65769
66027
|
{
|
|
66028
|
+
dest.Vol+=src.Vol;
|
|
66029
|
+
dest.Amount+=src.Amount;
|
|
65770
66030
|
}
|
|
66031
|
+
|
|
66032
|
+
var index=1;
|
|
66033
|
+
for( ;index<sourceData.Data.length;++index) //确定好方向
|
|
66034
|
+
{
|
|
66035
|
+
var kItem=sourceData.Data[index];
|
|
66036
|
+
if (kItem.Close>kagiItem.Close)
|
|
66037
|
+
{
|
|
66038
|
+
kagiItem.Direction=1;
|
|
66039
|
+
kagiItem.Close=kItem.Close;
|
|
66040
|
+
kagiItem.EndItem=kItem;
|
|
66041
|
+
kagiItem.High=kItem.Close;
|
|
66042
|
+
break;
|
|
66043
|
+
}
|
|
66044
|
+
else if (kItem.Close<kagiItem.Close)
|
|
66045
|
+
{
|
|
66046
|
+
kagiItem.Direction=2;
|
|
66047
|
+
kagiItem.Close=kItem.Close;
|
|
66048
|
+
kagiItem.EndItem=kItem;
|
|
66049
|
+
kagiItem.Low=kItem.Close;
|
|
66050
|
+
break;
|
|
66051
|
+
}
|
|
66052
|
+
}
|
|
66053
|
+
|
|
66054
|
+
var changeItem=null;
|
|
66055
|
+
for(++index; index<sourceData.Data.length;++index )
|
|
66056
|
+
{
|
|
66057
|
+
var kItem=sourceData.Data[index];
|
|
66058
|
+
if (kagiItem.Direction==1) //上
|
|
66059
|
+
{
|
|
66060
|
+
if (kItem.Close>=kagiItem.High)
|
|
66061
|
+
{
|
|
66062
|
+
kagiItem.Close=kItem.Close;
|
|
66063
|
+
kagiItem.High=kItem.Close;
|
|
66064
|
+
kagiItem.EndItem=kItem;
|
|
66065
|
+
changeItem=null;
|
|
66066
|
+
}
|
|
66067
|
+
else
|
|
66068
|
+
{
|
|
66069
|
+
if (!changeItem)
|
|
66070
|
+
{
|
|
66071
|
+
changeItem=HistoryData.Copy(kItem);
|
|
66072
|
+
changeItem.High=changeItem.Low=kItem.Close;
|
|
66073
|
+
}
|
|
66074
|
+
else
|
|
66075
|
+
{
|
|
66076
|
+
changeItem.Close=kItem.Close;
|
|
66077
|
+
if (changeItem.Low>kItem.Close) changeItem.Low=kItem.Close;
|
|
66078
|
+
}
|
|
66079
|
+
|
|
66080
|
+
if (Math.abs(changeItem.Low-kagiItem.High)>brickSize) //达到变盘点
|
|
66081
|
+
{
|
|
66082
|
+
bindData.Data.push(kagiItem);
|
|
66083
|
+
|
|
66084
|
+
var newItem=HistoryData.Copy(kItem);
|
|
66085
|
+
newItem.High=kagiItem.High;
|
|
66086
|
+
newItem.Low=kItem.Close;
|
|
66087
|
+
newItem.Direction=2; //1 上 2=下
|
|
66088
|
+
newItem.StartItem=kItem;
|
|
66089
|
+
|
|
66090
|
+
kagiItem=newItem;
|
|
66091
|
+
changeItem=null;
|
|
66092
|
+
}
|
|
66093
|
+
}
|
|
66094
|
+
}
|
|
66095
|
+
else if (kagiItem.Direction==2) //下
|
|
66096
|
+
{
|
|
66097
|
+
if (kItem.Close<=kagiItem.Low)
|
|
66098
|
+
{
|
|
66099
|
+
kagiItem.Close=kItem.Close;
|
|
66100
|
+
kagiItem.Low=kItem.Close;
|
|
66101
|
+
kagiItem.EndItem=kItem;
|
|
66102
|
+
}
|
|
66103
|
+
else
|
|
66104
|
+
{
|
|
66105
|
+
if (!changeItem)
|
|
66106
|
+
{
|
|
66107
|
+
changeItem=HistoryData.Copy(kItem);
|
|
66108
|
+
changeItem.High=changeItem.Low=kItem.Close;
|
|
66109
|
+
}
|
|
66110
|
+
else
|
|
66111
|
+
{
|
|
66112
|
+
changeItem.Close=kItem.Close;
|
|
66113
|
+
if (changeItem.High<kItem.Close) changeItem.High=kItem.Close;
|
|
66114
|
+
}
|
|
66115
|
+
|
|
66116
|
+
if (Math.abs(changeItem.High-kagiItem.Low)>brickSize) //达到变盘点
|
|
66117
|
+
{
|
|
66118
|
+
bindData.Data.push(kagiItem);
|
|
66119
|
+
|
|
66120
|
+
var newItem=HistoryData.Copy(kItem);
|
|
66121
|
+
newItem.High=kItem.Close;
|
|
66122
|
+
newItem.Low=kagiItem.Low;
|
|
66123
|
+
newItem.Direction=1; //1 上 2=下
|
|
66124
|
+
newItem.StartItem=kItem;
|
|
66125
|
+
|
|
66126
|
+
kagiItem=newItem;
|
|
66127
|
+
changeItem=null;
|
|
66128
|
+
}
|
|
66129
|
+
}
|
|
66130
|
+
}
|
|
66131
|
+
}
|
|
66132
|
+
|
|
66133
|
+
return bindData;
|
|
66134
|
+
}
|
|
66135
|
+
|
|
66136
|
+
//获取配置信息
|
|
66137
|
+
this.GetTitle=function()
|
|
66138
|
+
{
|
|
66139
|
+
if (this.BrickSizeType==1)
|
|
66140
|
+
{
|
|
66141
|
+
var text=`Kagi [ATR(${this.ATR.Count}), ${this.ATR.BrickSize}]`;
|
|
66142
|
+
}
|
|
66143
|
+
else
|
|
66144
|
+
{
|
|
66145
|
+
var text=`Kagi [Traditional]`;
|
|
66146
|
+
}
|
|
66147
|
+
|
|
66148
|
+
return text;
|
|
65771
66149
|
}
|
|
65772
66150
|
}
|
|
65773
66151
|
|
|
@@ -69375,12 +69753,17 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
69375
69753
|
//删除某一个窗口的指标, bCallDestory=是否调用图形销毁函数
|
|
69376
69754
|
this.DeleteIndexPaint=function(windowIndex, bCallDestroy)
|
|
69377
69755
|
{
|
|
69378
|
-
|
|
69379
|
-
|
|
69756
|
+
if (!this.Frame.SubFrame[windowIndex]) return;
|
|
69757
|
+
var subFrame=this.Frame.SubFrame[windowIndex].Frame;
|
|
69758
|
+
if (!subFrame) return;
|
|
69759
|
+
|
|
69760
|
+
var paint=[]; //踢出当前窗口的指标画法
|
|
69761
|
+
for(var i=0;i<this.ChartPaint.length; ++i)
|
|
69380
69762
|
{
|
|
69381
|
-
|
|
69763
|
+
var item=this.ChartPaint[i];
|
|
69764
|
+
var bFind=(item.ChartFrame.Guid==subFrame.Guid || item.ChartFrame==subFrame);
|
|
69382
69765
|
|
|
69383
|
-
if (i==0 ||
|
|
69766
|
+
if (i==0 || !bFind)
|
|
69384
69767
|
{
|
|
69385
69768
|
paint.push(item);
|
|
69386
69769
|
}
|
|
@@ -69393,7 +69776,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
69393
69776
|
}
|
|
69394
69777
|
}
|
|
69395
69778
|
|
|
69396
|
-
|
|
69779
|
+
|
|
69397
69780
|
subFrame.YSpecificMaxMin=null; //清空指定最大最小值
|
|
69398
69781
|
subFrame.IsLocked=false; //解除上锁
|
|
69399
69782
|
subFrame.YSplitScale = null; //清空固定刻度
|
|
@@ -75127,6 +75510,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
75127
75510
|
}
|
|
75128
75511
|
|
|
75129
75512
|
var subFrame=new SubFrameItem();
|
|
75513
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
75130
75514
|
subFrame.Frame=frame;
|
|
75131
75515
|
if (i==0)
|
|
75132
75516
|
subFrame.Height=20;
|
|
@@ -75213,6 +75597,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
75213
75597
|
}
|
|
75214
75598
|
|
|
75215
75599
|
var subFrame=new SubFrameItem();
|
|
75600
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
75216
75601
|
subFrame.Frame=frame;
|
|
75217
75602
|
subFrame.Height=10;
|
|
75218
75603
|
|
|
@@ -75284,12 +75669,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
75284
75669
|
//删除某一个窗口的指标
|
|
75285
75670
|
this.DeleteIndexPaint=function(windowIndex,bCallDestroy)
|
|
75286
75671
|
{
|
|
75287
|
-
|
|
75288
|
-
|
|
75672
|
+
var subFrame=this.Frame.SubFrame[windowIndex].Frame;
|
|
75673
|
+
if (!subFrame) return;
|
|
75674
|
+
|
|
75675
|
+
var paint=[]; //踢出当前窗口的指标画法
|
|
75676
|
+
for(var i=0;i<this.ChartPaint.length;++i)
|
|
75289
75677
|
{
|
|
75290
|
-
|
|
75678
|
+
var item=this.ChartPaint[i];
|
|
75679
|
+
var bFind=(item.ChartFrame.Guid==subFrame.Guid || item.ChartFrame==subFrame);
|
|
75291
75680
|
|
|
75292
|
-
if (i==0 ||
|
|
75681
|
+
if (i==0 || !bFind)
|
|
75293
75682
|
{
|
|
75294
75683
|
paint.push(item);
|
|
75295
75684
|
}
|
|
@@ -75303,7 +75692,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
75303
75692
|
}
|
|
75304
75693
|
|
|
75305
75694
|
//清空指定最大最小值
|
|
75306
|
-
|
|
75695
|
+
|
|
75307
75696
|
subFrame.YSpecificMaxMin=null;
|
|
75308
75697
|
subFrame.IsLocked=false; //解除上锁
|
|
75309
75698
|
subFrame.YSplitOperator.SplitType=subFrame.YSplitOperator.DefaultSplitType; //还原Y坐标分割模式
|
|
@@ -80626,6 +81015,7 @@ function KLineChartHScreenContainer(uielement)
|
|
|
80626
81015
|
}
|
|
80627
81016
|
|
|
80628
81017
|
var subFrame=new SubFrameItem();
|
|
81018
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
80629
81019
|
subFrame.Frame=frame;
|
|
80630
81020
|
if (i==0)
|
|
80631
81021
|
subFrame.Height=20;
|
|
@@ -80770,6 +81160,7 @@ function MinuteChartHScreenContainer(uielement)
|
|
|
80770
81160
|
}
|
|
80771
81161
|
|
|
80772
81162
|
var subFrame=new SubFrameItem();
|
|
81163
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
80773
81164
|
subFrame.Frame=frame;
|
|
80774
81165
|
if (i==0)
|
|
80775
81166
|
subFrame.Height=20;
|