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.
|
@@ -21977,6 +21977,29 @@ function HQTradeFrame()
|
|
|
21977
21977
|
var firstOpenPrice=frame.YSplitOperator.GetFirstOpenPrice();
|
|
21978
21978
|
outObject.RightYValue=((yValue-firstOpenPrice)/firstOpenPrice*100).toFixed(2)+'%';
|
|
21979
21979
|
}
|
|
21980
|
+
|
|
21981
|
+
if (frame.GetMainOverlayFrame)
|
|
21982
|
+
{
|
|
21983
|
+
var aryOverlayFrame=frame.GetMainOverlayFrame();
|
|
21984
|
+
if (aryOverlayFrame)
|
|
21985
|
+
{
|
|
21986
|
+
if (aryOverlayFrame[0]) //左侧
|
|
21987
|
+
{
|
|
21988
|
+
var leftFrame=aryOverlayFrame[0];
|
|
21989
|
+
var value=leftFrame.GetYData(y);
|
|
21990
|
+
outObject.RightYValue=yValue;
|
|
21991
|
+
yValue=value;
|
|
21992
|
+
}
|
|
21993
|
+
|
|
21994
|
+
if (aryOverlayFrame[1]) //右侧
|
|
21995
|
+
{
|
|
21996
|
+
var rightFrame=aryOverlayFrame[1];
|
|
21997
|
+
var value=rightFrame.GetYData(y);
|
|
21998
|
+
outObject.RightYValue=value;
|
|
21999
|
+
}
|
|
22000
|
+
}
|
|
22001
|
+
}
|
|
22002
|
+
|
|
21980
22003
|
return yValue;
|
|
21981
22004
|
}
|
|
21982
22005
|
}
|
|
@@ -22503,7 +22526,34 @@ function HQTradeHScreenFrame()
|
|
|
22503
22526
|
}
|
|
22504
22527
|
}
|
|
22505
22528
|
|
|
22506
|
-
if (frame!=null)
|
|
22529
|
+
if (frame!=null)
|
|
22530
|
+
{
|
|
22531
|
+
var xValue= frame.GetYData(x);
|
|
22532
|
+
|
|
22533
|
+
if (frame.GetMainOverlayFrame)
|
|
22534
|
+
{
|
|
22535
|
+
var aryOverlayFrame=frame.GetMainOverlayFrame();
|
|
22536
|
+
if (aryOverlayFrame)
|
|
22537
|
+
{
|
|
22538
|
+
if (aryOverlayFrame[0]) //左侧
|
|
22539
|
+
{
|
|
22540
|
+
var leftFrame=aryOverlayFrame[0];
|
|
22541
|
+
var value=leftFrame.GetYData(x);
|
|
22542
|
+
outObject.RightYValue=xValue;
|
|
22543
|
+
xValue=value;
|
|
22544
|
+
}
|
|
22545
|
+
|
|
22546
|
+
if (aryOverlayFrame[1]) //右侧
|
|
22547
|
+
{
|
|
22548
|
+
var rightFrame=aryOverlayFrame[1];
|
|
22549
|
+
var value=rightFrame.GetYData(x);
|
|
22550
|
+
outObject.RightYValue=value;
|
|
22551
|
+
}
|
|
22552
|
+
}
|
|
22553
|
+
}
|
|
22554
|
+
|
|
22555
|
+
return xValue;
|
|
22556
|
+
}
|
|
22507
22557
|
}
|
|
22508
22558
|
}
|
|
22509
22559
|
|
|
@@ -28626,6 +28676,198 @@ function ChartKLine()
|
|
|
28626
28676
|
this.PtMin=ptMin;
|
|
28627
28677
|
}
|
|
28628
28678
|
|
|
28679
|
+
this.DrawKagi=function() //卡吉图
|
|
28680
|
+
{
|
|
28681
|
+
var isHScreen=(this.ChartFrame.IsHScreen===true);
|
|
28682
|
+
var dataWidth=this.ChartFrame.DataWidth;
|
|
28683
|
+
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
28684
|
+
var xPointCount=this.ChartFrame.XPointCount;
|
|
28685
|
+
|
|
28686
|
+
if (isHScreen)
|
|
28687
|
+
{
|
|
28688
|
+
var border=this.ChartBorder.GetHScreenBorder();
|
|
28689
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
28690
|
+
var chartright=border.BottomEx;
|
|
28691
|
+
var left=border.TopEx+g_JSChartResource.FrameLeftMargin;
|
|
28692
|
+
}
|
|
28693
|
+
else
|
|
28694
|
+
{
|
|
28695
|
+
var border=this.ChartBorder.GetBorder();
|
|
28696
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
28697
|
+
var chartright=border.RightEx;
|
|
28698
|
+
var left=border.Left+g_JSChartResource.FrameLeftMargin;
|
|
28699
|
+
}
|
|
28700
|
+
|
|
28701
|
+
var ptMax={X:null,Y:null,Value:null,Align:'left'};
|
|
28702
|
+
var ptMin={X:null,Y:null,Value:null,Align:'left'};
|
|
28703
|
+
this.ShowRange.Start=this.Data.DataOffset;
|
|
28704
|
+
this.ShowRange.End=this.ShowRange.Start;
|
|
28705
|
+
this.ShowRange.DataCount=0;
|
|
28706
|
+
this.ShowRange.ShowCount=xPointCount;
|
|
28707
|
+
this.DrawKRange.Start=this.Data.DataOffset;
|
|
28708
|
+
|
|
28709
|
+
var lineWidth=2*GetDevicePixelRatio();
|
|
28710
|
+
this.Canvas.lineWidth=lineWidth;
|
|
28711
|
+
var preItem={ Item:null, X:left, Y:null };
|
|
28712
|
+
var index=this.Data.DataOffset-1;
|
|
28713
|
+
if (index>=0 && index<this.Data.Data.length)
|
|
28714
|
+
{
|
|
28715
|
+
var item=this.Data.Data[index];
|
|
28716
|
+
preItem.Item=item;
|
|
28717
|
+
if (item.Direction==1) //上
|
|
28718
|
+
{
|
|
28719
|
+
preItem.Y=this.GetYFromData(item.High,false);
|
|
28720
|
+
}
|
|
28721
|
+
else if (item.Direction==2)
|
|
28722
|
+
{
|
|
28723
|
+
preItem.Y=this.GetYFromData(item.Low,false);
|
|
28724
|
+
}
|
|
28725
|
+
}
|
|
28726
|
+
|
|
28727
|
+
|
|
28728
|
+
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth),++this.ShowRange.DataCount)
|
|
28729
|
+
{
|
|
28730
|
+
var data=this.Data.Data[i];
|
|
28731
|
+
this.ShowRange.End=i;
|
|
28732
|
+
if (data.Open==null || data.High==null || data.Low==null || data.Close==null) continue;
|
|
28733
|
+
|
|
28734
|
+
var left=xOffset;
|
|
28735
|
+
var right=xOffset+dataWidth;
|
|
28736
|
+
if (right>chartright) break;
|
|
28737
|
+
var x=left+(right-left)/2;
|
|
28738
|
+
var yLow=this.GetYFromData(data.Low,false);
|
|
28739
|
+
var yHigh=this.GetYFromData(data.High,false);
|
|
28740
|
+
this.DrawKRange.End=i;
|
|
28741
|
+
|
|
28742
|
+
if (ptMax.Value==null || ptMax.Value<data.High) //求最大值
|
|
28743
|
+
{
|
|
28744
|
+
ptMax.X=x;
|
|
28745
|
+
ptMax.Y=yHigh;
|
|
28746
|
+
ptMax.Value=data.High;
|
|
28747
|
+
ptMax.Align=j<xPointCount/2?'left':'right';
|
|
28748
|
+
}
|
|
28749
|
+
|
|
28750
|
+
if (ptMin.Value==null || ptMin.Value>data.Low) //求最小值
|
|
28751
|
+
{
|
|
28752
|
+
ptMin.X=x;
|
|
28753
|
+
ptMin.Y=yLow;
|
|
28754
|
+
ptMin.Value=data.Low;
|
|
28755
|
+
ptMin.Align=j<xPointCount/2?'left':'right';
|
|
28756
|
+
}
|
|
28757
|
+
|
|
28758
|
+
var xFixed=ToFixedPoint2(lineWidth,x);
|
|
28759
|
+
|
|
28760
|
+
if (preItem.Item)
|
|
28761
|
+
{
|
|
28762
|
+
this.Canvas.beginPath();
|
|
28763
|
+
var yFixed=ToFixedPoint2(lineWidth,preItem.Y);
|
|
28764
|
+
|
|
28765
|
+
this.Canvas.moveTo(preItem.X, yFixed);
|
|
28766
|
+
this.Canvas.lineTo(xFixed, yFixed);
|
|
28767
|
+
var prePrice=null;
|
|
28768
|
+
if (preItem.Item.Direction==1) prePrice=preItem.Item.Low;
|
|
28769
|
+
else if (preItem.Item.Direction==2) prePrice=preItem.Item.High;
|
|
28770
|
+
|
|
28771
|
+
if (data.Direction==1)
|
|
28772
|
+
{
|
|
28773
|
+
if (data.High<prePrice)
|
|
28774
|
+
{
|
|
28775
|
+
this.Canvas.lineTo(xFixed, yHigh);
|
|
28776
|
+
this.Canvas.strokeStyle=this.DownColor;
|
|
28777
|
+
this.Canvas.stroke();
|
|
28778
|
+
}
|
|
28779
|
+
else
|
|
28780
|
+
{
|
|
28781
|
+
var yPrePrice=this.GetYFromData(prePrice,false);
|
|
28782
|
+
this.Canvas.lineTo(xFixed, yPrePrice);
|
|
28783
|
+
this.Canvas.strokeStyle=this.DownColor;
|
|
28784
|
+
this.Canvas.stroke();
|
|
28785
|
+
|
|
28786
|
+
this.Canvas.beginPath();
|
|
28787
|
+
this.Canvas.moveTo(xFixed, yPrePrice);
|
|
28788
|
+
this.Canvas.lineTo(xFixed, yHigh);
|
|
28789
|
+
this.Canvas.strokeStyle=this.UpColor;
|
|
28790
|
+
this.Canvas.stroke();
|
|
28791
|
+
}
|
|
28792
|
+
|
|
28793
|
+
}
|
|
28794
|
+
else if (data.Direction==2)
|
|
28795
|
+
{
|
|
28796
|
+
if (data.Low>prePrice)
|
|
28797
|
+
{
|
|
28798
|
+
this.Canvas.lineTo(xFixed, yLow);
|
|
28799
|
+
this.Canvas.strokeStyle=this.DownColor; //阳线
|
|
28800
|
+
this.Canvas.stroke();
|
|
28801
|
+
}
|
|
28802
|
+
else
|
|
28803
|
+
{
|
|
28804
|
+
var yPrePrice=this.GetYFromData(prePrice,false);
|
|
28805
|
+
this.Canvas.lineTo(xFixed, yPrePrice);
|
|
28806
|
+
this.Canvas.strokeStyle=this.DownColor; //阳线
|
|
28807
|
+
this.Canvas.stroke();
|
|
28808
|
+
|
|
28809
|
+
this.Canvas.beginPath();
|
|
28810
|
+
this.Canvas.moveTo(xFixed, yPrePrice);
|
|
28811
|
+
this.Canvas.lineTo(xFixed, yLow);
|
|
28812
|
+
this.Canvas.strokeStyle=this.UpColor;
|
|
28813
|
+
this.Canvas.stroke();
|
|
28814
|
+
}
|
|
28815
|
+
}
|
|
28816
|
+
|
|
28817
|
+
}
|
|
28818
|
+
else
|
|
28819
|
+
{
|
|
28820
|
+
this.Canvas.beginPath();
|
|
28821
|
+
if (data.Direction==1)
|
|
28822
|
+
{
|
|
28823
|
+
this.Canvas.moveTo(xFixed, yLow);
|
|
28824
|
+
this.Canvas.lineTo(xFixed, yHigh);
|
|
28825
|
+
}
|
|
28826
|
+
else if (data.Direction==2)
|
|
28827
|
+
{
|
|
28828
|
+
this.Canvas.moveTo(xFixed, yHigh);
|
|
28829
|
+
this.Canvas.lineTo(xFixed, yLow);
|
|
28830
|
+
}
|
|
28831
|
+
this.Canvas.stroke();
|
|
28832
|
+
}
|
|
28833
|
+
|
|
28834
|
+
/*
|
|
28835
|
+
if (data.YClose<data.Close)
|
|
28836
|
+
{
|
|
28837
|
+
this.Canvas.strokeStyle=this.UpColor; //阳线
|
|
28838
|
+
this.Canvas.fillStyle=this.UpColor;
|
|
28839
|
+
}
|
|
28840
|
+
else if (data.YClose>data.Close)
|
|
28841
|
+
{
|
|
28842
|
+
this.Canvas.strokeStyle=this.DownColor; //阴线
|
|
28843
|
+
this.Canvas.fillStyle=this.DownColor;
|
|
28844
|
+
}
|
|
28845
|
+
|
|
28846
|
+
this.Canvas.beginPath();
|
|
28847
|
+
if (isHScreen)
|
|
28848
|
+
{
|
|
28849
|
+
this.Canvas.moveTo(yHigh,ToFixedPoint(x));
|
|
28850
|
+
this.Canvas.lineTo(yLow,ToFixedPoint(x));
|
|
28851
|
+
}
|
|
28852
|
+
else
|
|
28853
|
+
{
|
|
28854
|
+
this.Canvas.moveTo(ToFixedPoint2(lineWidth,x),yHigh);
|
|
28855
|
+
this.Canvas.lineTo(ToFixedPoint2(lineWidth,x),yLow);
|
|
28856
|
+
}
|
|
28857
|
+
this.Canvas.stroke();
|
|
28858
|
+
*/
|
|
28859
|
+
|
|
28860
|
+
preItem.Item=data;
|
|
28861
|
+
preItem.X=x;
|
|
28862
|
+
|
|
28863
|
+
if (data.Direction==1) preItem.Y=yHigh; //上
|
|
28864
|
+
else if (data.Direction==2) preItem.Y=yLow //下
|
|
28865
|
+
}
|
|
28866
|
+
|
|
28867
|
+
this.PtMax=ptMax;
|
|
28868
|
+
this.PtMin=ptMin;
|
|
28869
|
+
}
|
|
28870
|
+
|
|
28629
28871
|
this.DrawTrade=function() //交易系统
|
|
28630
28872
|
{
|
|
28631
28873
|
if (!this.TradeData) return;
|
|
@@ -29133,6 +29375,10 @@ function ChartKLine()
|
|
|
29133
29375
|
{
|
|
29134
29376
|
this.DrawHLCArea();
|
|
29135
29377
|
}
|
|
29378
|
+
else if (this.DrawType==16)
|
|
29379
|
+
{
|
|
29380
|
+
this.DrawKagi();
|
|
29381
|
+
}
|
|
29136
29382
|
else if (this.DrawType==17)
|
|
29137
29383
|
{
|
|
29138
29384
|
this.DrawOrderFlow_Style4();
|
|
@@ -49974,7 +50220,7 @@ function FrameSplitY()
|
|
|
49974
50220
|
var item=this.Frame.HorizontalInfo[i];
|
|
49975
50221
|
var y=this.Frame.GetYFromData(item.Value);
|
|
49976
50222
|
var yValue=leftFrame.GetYData(y);
|
|
49977
|
-
if (ySplitOper && ySplitOper.FormatValueString) item.Message[
|
|
50223
|
+
if (ySplitOper && ySplitOper.FormatValueString) item.Message[0] = ySplitOper.FormatValueString(yValue);
|
|
49978
50224
|
else item.Message[0] = this.FormatValueString(yValue);
|
|
49979
50225
|
}
|
|
49980
50226
|
}
|
|
@@ -52232,6 +52478,7 @@ function ChartCorssCursor()
|
|
|
52232
52478
|
|
|
52233
52479
|
this.StringFormatY.Value=yValue;
|
|
52234
52480
|
this.StringFormatY.FrameID=yValueExtend.FrameID;
|
|
52481
|
+
this.StringFormatY.RValue=yValueExtend.RightYValue; //右侧子坐标
|
|
52235
52482
|
this.StringFormatY.Point={X:x, Y:y};
|
|
52236
52483
|
this.StringFormatY.ClientPos=this.ClientPos;
|
|
52237
52484
|
|
|
@@ -53036,6 +53283,7 @@ function HQPriceStringFormat()
|
|
|
53036
53283
|
{
|
|
53037
53284
|
if (this.DataFormatType==1) this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
53038
53285
|
else this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);
|
|
53286
|
+
if (IFrameSplitOperator.IsNumber(this.RValue)) this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);
|
|
53039
53287
|
}
|
|
53040
53288
|
|
|
53041
53289
|
if (this.GetEventCallback)
|
|
@@ -69673,20 +69921,24 @@ function RenkoCalculate()
|
|
|
69673
69921
|
//
|
|
69674
69922
|
function KagiCalculate()
|
|
69675
69923
|
{
|
|
69676
|
-
this.
|
|
69677
|
-
this.
|
|
69678
|
-
this.
|
|
69679
|
-
|
|
69924
|
+
this.newMethod=RenkoCalculate; //派生
|
|
69925
|
+
this.newMethod();
|
|
69926
|
+
delete this.newMethod;
|
|
69927
|
+
|
|
69928
|
+
this.ClassName="KagiCalculate";
|
|
69929
|
+
this.BrickSizeType=0;
|
|
69930
|
+
this.BrickSize=0.5; //固定大小
|
|
69680
69931
|
|
|
69681
69932
|
this.RecvHistoryData=function(sourceData, option) //历史日线数据
|
|
69682
69933
|
{
|
|
69683
69934
|
this.Symbol=option.Symbol;
|
|
69684
69935
|
this.SourceData=sourceData;
|
|
69685
69936
|
this.FloatPrecision=GetfloatPrecision(this.Symbol);
|
|
69686
|
-
|
|
69937
|
+
if (this.BrickSizeType==1) this.CalculateATR();
|
|
69938
|
+
return this.CalculateByClose(sourceData);
|
|
69687
69939
|
}
|
|
69688
69940
|
|
|
69689
|
-
this.
|
|
69941
|
+
this.CalculateByClose=function(sourceData)
|
|
69690
69942
|
{
|
|
69691
69943
|
var bindData=new ChartData();
|
|
69692
69944
|
bindData.Data=[]
|
|
@@ -69697,13 +69949,139 @@ function KagiCalculate()
|
|
|
69697
69949
|
|
|
69698
69950
|
if (!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data)) return bindData;
|
|
69699
69951
|
|
|
69700
|
-
var
|
|
69952
|
+
var brickSize=this.BrickSize;
|
|
69953
|
+
if (this.BrickSizeType==1) brickSize=this.ATR.BrickSize;
|
|
69701
69954
|
|
|
69702
69955
|
var kItem=sourceData.Data[0];
|
|
69703
|
-
|
|
69704
|
-
|
|
69956
|
+
var kagiItem=HistoryData.Copy(kItem);
|
|
69957
|
+
|
|
69958
|
+
kagiItem.High=kagiItem.Low=kItem.Close;
|
|
69959
|
+
kagiItem.StartItem=kItem;
|
|
69960
|
+
kagiItem.Direction=0; //1 上 2=下
|
|
69961
|
+
|
|
69962
|
+
var T_MergeKData=function(dest, src)
|
|
69705
69963
|
{
|
|
69964
|
+
dest.Vol+=src.Vol;
|
|
69965
|
+
dest.Amount+=src.Amount;
|
|
69706
69966
|
}
|
|
69967
|
+
|
|
69968
|
+
var index=1;
|
|
69969
|
+
for( ;index<sourceData.Data.length;++index) //确定好方向
|
|
69970
|
+
{
|
|
69971
|
+
var kItem=sourceData.Data[index];
|
|
69972
|
+
if (kItem.Close>kagiItem.Close)
|
|
69973
|
+
{
|
|
69974
|
+
kagiItem.Direction=1;
|
|
69975
|
+
kagiItem.Close=kItem.Close;
|
|
69976
|
+
kagiItem.EndItem=kItem;
|
|
69977
|
+
kagiItem.High=kItem.Close;
|
|
69978
|
+
break;
|
|
69979
|
+
}
|
|
69980
|
+
else if (kItem.Close<kagiItem.Close)
|
|
69981
|
+
{
|
|
69982
|
+
kagiItem.Direction=2;
|
|
69983
|
+
kagiItem.Close=kItem.Close;
|
|
69984
|
+
kagiItem.EndItem=kItem;
|
|
69985
|
+
kagiItem.Low=kItem.Close;
|
|
69986
|
+
break;
|
|
69987
|
+
}
|
|
69988
|
+
}
|
|
69989
|
+
|
|
69990
|
+
var changeItem=null;
|
|
69991
|
+
for(++index; index<sourceData.Data.length;++index )
|
|
69992
|
+
{
|
|
69993
|
+
var kItem=sourceData.Data[index];
|
|
69994
|
+
if (kagiItem.Direction==1) //上
|
|
69995
|
+
{
|
|
69996
|
+
if (kItem.Close>=kagiItem.High)
|
|
69997
|
+
{
|
|
69998
|
+
kagiItem.Close=kItem.Close;
|
|
69999
|
+
kagiItem.High=kItem.Close;
|
|
70000
|
+
kagiItem.EndItem=kItem;
|
|
70001
|
+
changeItem=null;
|
|
70002
|
+
}
|
|
70003
|
+
else
|
|
70004
|
+
{
|
|
70005
|
+
if (!changeItem)
|
|
70006
|
+
{
|
|
70007
|
+
changeItem=HistoryData.Copy(kItem);
|
|
70008
|
+
changeItem.High=changeItem.Low=kItem.Close;
|
|
70009
|
+
}
|
|
70010
|
+
else
|
|
70011
|
+
{
|
|
70012
|
+
changeItem.Close=kItem.Close;
|
|
70013
|
+
if (changeItem.Low>kItem.Close) changeItem.Low=kItem.Close;
|
|
70014
|
+
}
|
|
70015
|
+
|
|
70016
|
+
if (Math.abs(changeItem.Low-kagiItem.High)>brickSize) //达到变盘点
|
|
70017
|
+
{
|
|
70018
|
+
bindData.Data.push(kagiItem);
|
|
70019
|
+
|
|
70020
|
+
var newItem=HistoryData.Copy(kItem);
|
|
70021
|
+
newItem.High=kagiItem.High;
|
|
70022
|
+
newItem.Low=kItem.Close;
|
|
70023
|
+
newItem.Direction=2; //1 上 2=下
|
|
70024
|
+
newItem.StartItem=kItem;
|
|
70025
|
+
|
|
70026
|
+
kagiItem=newItem;
|
|
70027
|
+
changeItem=null;
|
|
70028
|
+
}
|
|
70029
|
+
}
|
|
70030
|
+
}
|
|
70031
|
+
else if (kagiItem.Direction==2) //下
|
|
70032
|
+
{
|
|
70033
|
+
if (kItem.Close<=kagiItem.Low)
|
|
70034
|
+
{
|
|
70035
|
+
kagiItem.Close=kItem.Close;
|
|
70036
|
+
kagiItem.Low=kItem.Close;
|
|
70037
|
+
kagiItem.EndItem=kItem;
|
|
70038
|
+
}
|
|
70039
|
+
else
|
|
70040
|
+
{
|
|
70041
|
+
if (!changeItem)
|
|
70042
|
+
{
|
|
70043
|
+
changeItem=HistoryData.Copy(kItem);
|
|
70044
|
+
changeItem.High=changeItem.Low=kItem.Close;
|
|
70045
|
+
}
|
|
70046
|
+
else
|
|
70047
|
+
{
|
|
70048
|
+
changeItem.Close=kItem.Close;
|
|
70049
|
+
if (changeItem.High<kItem.Close) changeItem.High=kItem.Close;
|
|
70050
|
+
}
|
|
70051
|
+
|
|
70052
|
+
if (Math.abs(changeItem.High-kagiItem.Low)>brickSize) //达到变盘点
|
|
70053
|
+
{
|
|
70054
|
+
bindData.Data.push(kagiItem);
|
|
70055
|
+
|
|
70056
|
+
var newItem=HistoryData.Copy(kItem);
|
|
70057
|
+
newItem.High=kItem.Close;
|
|
70058
|
+
newItem.Low=kagiItem.Low;
|
|
70059
|
+
newItem.Direction=1; //1 上 2=下
|
|
70060
|
+
newItem.StartItem=kItem;
|
|
70061
|
+
|
|
70062
|
+
kagiItem=newItem;
|
|
70063
|
+
changeItem=null;
|
|
70064
|
+
}
|
|
70065
|
+
}
|
|
70066
|
+
}
|
|
70067
|
+
}
|
|
70068
|
+
|
|
70069
|
+
return bindData;
|
|
70070
|
+
}
|
|
70071
|
+
|
|
70072
|
+
//获取配置信息
|
|
70073
|
+
this.GetTitle=function()
|
|
70074
|
+
{
|
|
70075
|
+
if (this.BrickSizeType==1)
|
|
70076
|
+
{
|
|
70077
|
+
var text=`Kagi [ATR(${this.ATR.Count}), ${this.ATR.BrickSize}]`;
|
|
70078
|
+
}
|
|
70079
|
+
else
|
|
70080
|
+
{
|
|
70081
|
+
var text=`Kagi [Traditional]`;
|
|
70082
|
+
}
|
|
70083
|
+
|
|
70084
|
+
return text;
|
|
69707
70085
|
}
|
|
69708
70086
|
}
|
|
69709
70087
|
|
|
@@ -73311,12 +73689,17 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
73311
73689
|
//删除某一个窗口的指标, bCallDestory=是否调用图形销毁函数
|
|
73312
73690
|
this.DeleteIndexPaint=function(windowIndex, bCallDestroy)
|
|
73313
73691
|
{
|
|
73314
|
-
|
|
73315
|
-
|
|
73692
|
+
if (!this.Frame.SubFrame[windowIndex]) return;
|
|
73693
|
+
var subFrame=this.Frame.SubFrame[windowIndex].Frame;
|
|
73694
|
+
if (!subFrame) return;
|
|
73695
|
+
|
|
73696
|
+
var paint=[]; //踢出当前窗口的指标画法
|
|
73697
|
+
for(var i=0;i<this.ChartPaint.length; ++i)
|
|
73316
73698
|
{
|
|
73317
|
-
|
|
73699
|
+
var item=this.ChartPaint[i];
|
|
73700
|
+
var bFind=(item.ChartFrame.Guid==subFrame.Guid || item.ChartFrame==subFrame);
|
|
73318
73701
|
|
|
73319
|
-
if (i==0 ||
|
|
73702
|
+
if (i==0 || !bFind)
|
|
73320
73703
|
{
|
|
73321
73704
|
paint.push(item);
|
|
73322
73705
|
}
|
|
@@ -73329,7 +73712,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
73329
73712
|
}
|
|
73330
73713
|
}
|
|
73331
73714
|
|
|
73332
|
-
|
|
73715
|
+
|
|
73333
73716
|
subFrame.YSpecificMaxMin=null; //清空指定最大最小值
|
|
73334
73717
|
subFrame.IsLocked=false; //解除上锁
|
|
73335
73718
|
subFrame.YSplitScale = null; //清空固定刻度
|
|
@@ -79063,6 +79446,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79063
79446
|
}
|
|
79064
79447
|
|
|
79065
79448
|
var subFrame=new SubFrameItem();
|
|
79449
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
79066
79450
|
subFrame.Frame=frame;
|
|
79067
79451
|
if (i==0)
|
|
79068
79452
|
subFrame.Height=20;
|
|
@@ -79149,6 +79533,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79149
79533
|
}
|
|
79150
79534
|
|
|
79151
79535
|
var subFrame=new SubFrameItem();
|
|
79536
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
79152
79537
|
subFrame.Frame=frame;
|
|
79153
79538
|
subFrame.Height=10;
|
|
79154
79539
|
|
|
@@ -79220,12 +79605,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79220
79605
|
//删除某一个窗口的指标
|
|
79221
79606
|
this.DeleteIndexPaint=function(windowIndex,bCallDestroy)
|
|
79222
79607
|
{
|
|
79223
|
-
|
|
79224
|
-
|
|
79608
|
+
var subFrame=this.Frame.SubFrame[windowIndex].Frame;
|
|
79609
|
+
if (!subFrame) return;
|
|
79610
|
+
|
|
79611
|
+
var paint=[]; //踢出当前窗口的指标画法
|
|
79612
|
+
for(var i=0;i<this.ChartPaint.length;++i)
|
|
79225
79613
|
{
|
|
79226
|
-
|
|
79614
|
+
var item=this.ChartPaint[i];
|
|
79615
|
+
var bFind=(item.ChartFrame.Guid==subFrame.Guid || item.ChartFrame==subFrame);
|
|
79227
79616
|
|
|
79228
|
-
if (i==0 ||
|
|
79617
|
+
if (i==0 || !bFind)
|
|
79229
79618
|
{
|
|
79230
79619
|
paint.push(item);
|
|
79231
79620
|
}
|
|
@@ -79239,7 +79628,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79239
79628
|
}
|
|
79240
79629
|
|
|
79241
79630
|
//清空指定最大最小值
|
|
79242
|
-
|
|
79631
|
+
|
|
79243
79632
|
subFrame.YSpecificMaxMin=null;
|
|
79244
79633
|
subFrame.IsLocked=false; //解除上锁
|
|
79245
79634
|
subFrame.YSplitOperator.SplitType=subFrame.YSplitOperator.DefaultSplitType; //还原Y坐标分割模式
|
|
@@ -84562,6 +84951,7 @@ function KLineChartHScreenContainer(uielement)
|
|
|
84562
84951
|
}
|
|
84563
84952
|
|
|
84564
84953
|
var subFrame=new SubFrameItem();
|
|
84954
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
84565
84955
|
subFrame.Frame=frame;
|
|
84566
84956
|
if (i==0)
|
|
84567
84957
|
subFrame.Height=20;
|
|
@@ -84706,6 +85096,7 @@ function MinuteChartHScreenContainer(uielement)
|
|
|
84706
85096
|
}
|
|
84707
85097
|
|
|
84708
85098
|
var subFrame=new SubFrameItem();
|
|
85099
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
84709
85100
|
subFrame.Frame=frame;
|
|
84710
85101
|
if (i==0)
|
|
84711
85102
|
subFrame.Height=20;
|
|
@@ -134324,7 +134715,7 @@ function HQChartScriptWorker()
|
|
|
134324
134715
|
|
|
134325
134716
|
|
|
134326
134717
|
|
|
134327
|
-
var HQCHART_VERSION="1.1.
|
|
134718
|
+
var HQCHART_VERSION="1.1.13151";
|
|
134328
134719
|
|
|
134329
134720
|
function PrintHQChartVersion()
|
|
134330
134721
|
{
|