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.
|
@@ -21933,6 +21933,29 @@ function HQTradeFrame()
|
|
|
21933
21933
|
var firstOpenPrice=frame.YSplitOperator.GetFirstOpenPrice();
|
|
21934
21934
|
outObject.RightYValue=((yValue-firstOpenPrice)/firstOpenPrice*100).toFixed(2)+'%';
|
|
21935
21935
|
}
|
|
21936
|
+
|
|
21937
|
+
if (frame.GetMainOverlayFrame)
|
|
21938
|
+
{
|
|
21939
|
+
var aryOverlayFrame=frame.GetMainOverlayFrame();
|
|
21940
|
+
if (aryOverlayFrame)
|
|
21941
|
+
{
|
|
21942
|
+
if (aryOverlayFrame[0]) //左侧
|
|
21943
|
+
{
|
|
21944
|
+
var leftFrame=aryOverlayFrame[0];
|
|
21945
|
+
var value=leftFrame.GetYData(y);
|
|
21946
|
+
outObject.RightYValue=yValue;
|
|
21947
|
+
yValue=value;
|
|
21948
|
+
}
|
|
21949
|
+
|
|
21950
|
+
if (aryOverlayFrame[1]) //右侧
|
|
21951
|
+
{
|
|
21952
|
+
var rightFrame=aryOverlayFrame[1];
|
|
21953
|
+
var value=rightFrame.GetYData(y);
|
|
21954
|
+
outObject.RightYValue=value;
|
|
21955
|
+
}
|
|
21956
|
+
}
|
|
21957
|
+
}
|
|
21958
|
+
|
|
21936
21959
|
return yValue;
|
|
21937
21960
|
}
|
|
21938
21961
|
}
|
|
@@ -22459,7 +22482,34 @@ function HQTradeHScreenFrame()
|
|
|
22459
22482
|
}
|
|
22460
22483
|
}
|
|
22461
22484
|
|
|
22462
|
-
if (frame!=null)
|
|
22485
|
+
if (frame!=null)
|
|
22486
|
+
{
|
|
22487
|
+
var xValue= frame.GetYData(x);
|
|
22488
|
+
|
|
22489
|
+
if (frame.GetMainOverlayFrame)
|
|
22490
|
+
{
|
|
22491
|
+
var aryOverlayFrame=frame.GetMainOverlayFrame();
|
|
22492
|
+
if (aryOverlayFrame)
|
|
22493
|
+
{
|
|
22494
|
+
if (aryOverlayFrame[0]) //左侧
|
|
22495
|
+
{
|
|
22496
|
+
var leftFrame=aryOverlayFrame[0];
|
|
22497
|
+
var value=leftFrame.GetYData(x);
|
|
22498
|
+
outObject.RightYValue=xValue;
|
|
22499
|
+
xValue=value;
|
|
22500
|
+
}
|
|
22501
|
+
|
|
22502
|
+
if (aryOverlayFrame[1]) //右侧
|
|
22503
|
+
{
|
|
22504
|
+
var rightFrame=aryOverlayFrame[1];
|
|
22505
|
+
var value=rightFrame.GetYData(x);
|
|
22506
|
+
outObject.RightYValue=value;
|
|
22507
|
+
}
|
|
22508
|
+
}
|
|
22509
|
+
}
|
|
22510
|
+
|
|
22511
|
+
return xValue;
|
|
22512
|
+
}
|
|
22463
22513
|
}
|
|
22464
22514
|
}
|
|
22465
22515
|
|
|
@@ -28582,6 +28632,198 @@ function ChartKLine()
|
|
|
28582
28632
|
this.PtMin=ptMin;
|
|
28583
28633
|
}
|
|
28584
28634
|
|
|
28635
|
+
this.DrawKagi=function() //卡吉图
|
|
28636
|
+
{
|
|
28637
|
+
var isHScreen=(this.ChartFrame.IsHScreen===true);
|
|
28638
|
+
var dataWidth=this.ChartFrame.DataWidth;
|
|
28639
|
+
var distanceWidth=this.ChartFrame.DistanceWidth;
|
|
28640
|
+
var xPointCount=this.ChartFrame.XPointCount;
|
|
28641
|
+
|
|
28642
|
+
if (isHScreen)
|
|
28643
|
+
{
|
|
28644
|
+
var border=this.ChartBorder.GetHScreenBorder();
|
|
28645
|
+
var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
28646
|
+
var chartright=border.BottomEx;
|
|
28647
|
+
var left=border.TopEx+g_JSChartResource.FrameLeftMargin;
|
|
28648
|
+
}
|
|
28649
|
+
else
|
|
28650
|
+
{
|
|
28651
|
+
var border=this.ChartBorder.GetBorder();
|
|
28652
|
+
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
28653
|
+
var chartright=border.RightEx;
|
|
28654
|
+
var left=border.Left+g_JSChartResource.FrameLeftMargin;
|
|
28655
|
+
}
|
|
28656
|
+
|
|
28657
|
+
var ptMax={X:null,Y:null,Value:null,Align:'left'};
|
|
28658
|
+
var ptMin={X:null,Y:null,Value:null,Align:'left'};
|
|
28659
|
+
this.ShowRange.Start=this.Data.DataOffset;
|
|
28660
|
+
this.ShowRange.End=this.ShowRange.Start;
|
|
28661
|
+
this.ShowRange.DataCount=0;
|
|
28662
|
+
this.ShowRange.ShowCount=xPointCount;
|
|
28663
|
+
this.DrawKRange.Start=this.Data.DataOffset;
|
|
28664
|
+
|
|
28665
|
+
var lineWidth=2*GetDevicePixelRatio();
|
|
28666
|
+
this.Canvas.lineWidth=lineWidth;
|
|
28667
|
+
var preItem={ Item:null, X:left, Y:null };
|
|
28668
|
+
var index=this.Data.DataOffset-1;
|
|
28669
|
+
if (index>=0 && index<this.Data.Data.length)
|
|
28670
|
+
{
|
|
28671
|
+
var item=this.Data.Data[index];
|
|
28672
|
+
preItem.Item=item;
|
|
28673
|
+
if (item.Direction==1) //上
|
|
28674
|
+
{
|
|
28675
|
+
preItem.Y=this.GetYFromData(item.High,false);
|
|
28676
|
+
}
|
|
28677
|
+
else if (item.Direction==2)
|
|
28678
|
+
{
|
|
28679
|
+
preItem.Y=this.GetYFromData(item.Low,false);
|
|
28680
|
+
}
|
|
28681
|
+
}
|
|
28682
|
+
|
|
28683
|
+
|
|
28684
|
+
for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth),++this.ShowRange.DataCount)
|
|
28685
|
+
{
|
|
28686
|
+
var data=this.Data.Data[i];
|
|
28687
|
+
this.ShowRange.End=i;
|
|
28688
|
+
if (data.Open==null || data.High==null || data.Low==null || data.Close==null) continue;
|
|
28689
|
+
|
|
28690
|
+
var left=xOffset;
|
|
28691
|
+
var right=xOffset+dataWidth;
|
|
28692
|
+
if (right>chartright) break;
|
|
28693
|
+
var x=left+(right-left)/2;
|
|
28694
|
+
var yLow=this.GetYFromData(data.Low,false);
|
|
28695
|
+
var yHigh=this.GetYFromData(data.High,false);
|
|
28696
|
+
this.DrawKRange.End=i;
|
|
28697
|
+
|
|
28698
|
+
if (ptMax.Value==null || ptMax.Value<data.High) //求最大值
|
|
28699
|
+
{
|
|
28700
|
+
ptMax.X=x;
|
|
28701
|
+
ptMax.Y=yHigh;
|
|
28702
|
+
ptMax.Value=data.High;
|
|
28703
|
+
ptMax.Align=j<xPointCount/2?'left':'right';
|
|
28704
|
+
}
|
|
28705
|
+
|
|
28706
|
+
if (ptMin.Value==null || ptMin.Value>data.Low) //求最小值
|
|
28707
|
+
{
|
|
28708
|
+
ptMin.X=x;
|
|
28709
|
+
ptMin.Y=yLow;
|
|
28710
|
+
ptMin.Value=data.Low;
|
|
28711
|
+
ptMin.Align=j<xPointCount/2?'left':'right';
|
|
28712
|
+
}
|
|
28713
|
+
|
|
28714
|
+
var xFixed=ToFixedPoint2(lineWidth,x);
|
|
28715
|
+
|
|
28716
|
+
if (preItem.Item)
|
|
28717
|
+
{
|
|
28718
|
+
this.Canvas.beginPath();
|
|
28719
|
+
var yFixed=ToFixedPoint2(lineWidth,preItem.Y);
|
|
28720
|
+
|
|
28721
|
+
this.Canvas.moveTo(preItem.X, yFixed);
|
|
28722
|
+
this.Canvas.lineTo(xFixed, yFixed);
|
|
28723
|
+
var prePrice=null;
|
|
28724
|
+
if (preItem.Item.Direction==1) prePrice=preItem.Item.Low;
|
|
28725
|
+
else if (preItem.Item.Direction==2) prePrice=preItem.Item.High;
|
|
28726
|
+
|
|
28727
|
+
if (data.Direction==1)
|
|
28728
|
+
{
|
|
28729
|
+
if (data.High<prePrice)
|
|
28730
|
+
{
|
|
28731
|
+
this.Canvas.lineTo(xFixed, yHigh);
|
|
28732
|
+
this.Canvas.strokeStyle=this.DownColor;
|
|
28733
|
+
this.Canvas.stroke();
|
|
28734
|
+
}
|
|
28735
|
+
else
|
|
28736
|
+
{
|
|
28737
|
+
var yPrePrice=this.GetYFromData(prePrice,false);
|
|
28738
|
+
this.Canvas.lineTo(xFixed, yPrePrice);
|
|
28739
|
+
this.Canvas.strokeStyle=this.DownColor;
|
|
28740
|
+
this.Canvas.stroke();
|
|
28741
|
+
|
|
28742
|
+
this.Canvas.beginPath();
|
|
28743
|
+
this.Canvas.moveTo(xFixed, yPrePrice);
|
|
28744
|
+
this.Canvas.lineTo(xFixed, yHigh);
|
|
28745
|
+
this.Canvas.strokeStyle=this.UpColor;
|
|
28746
|
+
this.Canvas.stroke();
|
|
28747
|
+
}
|
|
28748
|
+
|
|
28749
|
+
}
|
|
28750
|
+
else if (data.Direction==2)
|
|
28751
|
+
{
|
|
28752
|
+
if (data.Low>prePrice)
|
|
28753
|
+
{
|
|
28754
|
+
this.Canvas.lineTo(xFixed, yLow);
|
|
28755
|
+
this.Canvas.strokeStyle=this.DownColor; //阳线
|
|
28756
|
+
this.Canvas.stroke();
|
|
28757
|
+
}
|
|
28758
|
+
else
|
|
28759
|
+
{
|
|
28760
|
+
var yPrePrice=this.GetYFromData(prePrice,false);
|
|
28761
|
+
this.Canvas.lineTo(xFixed, yPrePrice);
|
|
28762
|
+
this.Canvas.strokeStyle=this.DownColor; //阳线
|
|
28763
|
+
this.Canvas.stroke();
|
|
28764
|
+
|
|
28765
|
+
this.Canvas.beginPath();
|
|
28766
|
+
this.Canvas.moveTo(xFixed, yPrePrice);
|
|
28767
|
+
this.Canvas.lineTo(xFixed, yLow);
|
|
28768
|
+
this.Canvas.strokeStyle=this.UpColor;
|
|
28769
|
+
this.Canvas.stroke();
|
|
28770
|
+
}
|
|
28771
|
+
}
|
|
28772
|
+
|
|
28773
|
+
}
|
|
28774
|
+
else
|
|
28775
|
+
{
|
|
28776
|
+
this.Canvas.beginPath();
|
|
28777
|
+
if (data.Direction==1)
|
|
28778
|
+
{
|
|
28779
|
+
this.Canvas.moveTo(xFixed, yLow);
|
|
28780
|
+
this.Canvas.lineTo(xFixed, yHigh);
|
|
28781
|
+
}
|
|
28782
|
+
else if (data.Direction==2)
|
|
28783
|
+
{
|
|
28784
|
+
this.Canvas.moveTo(xFixed, yHigh);
|
|
28785
|
+
this.Canvas.lineTo(xFixed, yLow);
|
|
28786
|
+
}
|
|
28787
|
+
this.Canvas.stroke();
|
|
28788
|
+
}
|
|
28789
|
+
|
|
28790
|
+
/*
|
|
28791
|
+
if (data.YClose<data.Close)
|
|
28792
|
+
{
|
|
28793
|
+
this.Canvas.strokeStyle=this.UpColor; //阳线
|
|
28794
|
+
this.Canvas.fillStyle=this.UpColor;
|
|
28795
|
+
}
|
|
28796
|
+
else if (data.YClose>data.Close)
|
|
28797
|
+
{
|
|
28798
|
+
this.Canvas.strokeStyle=this.DownColor; //阴线
|
|
28799
|
+
this.Canvas.fillStyle=this.DownColor;
|
|
28800
|
+
}
|
|
28801
|
+
|
|
28802
|
+
this.Canvas.beginPath();
|
|
28803
|
+
if (isHScreen)
|
|
28804
|
+
{
|
|
28805
|
+
this.Canvas.moveTo(yHigh,ToFixedPoint(x));
|
|
28806
|
+
this.Canvas.lineTo(yLow,ToFixedPoint(x));
|
|
28807
|
+
}
|
|
28808
|
+
else
|
|
28809
|
+
{
|
|
28810
|
+
this.Canvas.moveTo(ToFixedPoint2(lineWidth,x),yHigh);
|
|
28811
|
+
this.Canvas.lineTo(ToFixedPoint2(lineWidth,x),yLow);
|
|
28812
|
+
}
|
|
28813
|
+
this.Canvas.stroke();
|
|
28814
|
+
*/
|
|
28815
|
+
|
|
28816
|
+
preItem.Item=data;
|
|
28817
|
+
preItem.X=x;
|
|
28818
|
+
|
|
28819
|
+
if (data.Direction==1) preItem.Y=yHigh; //上
|
|
28820
|
+
else if (data.Direction==2) preItem.Y=yLow //下
|
|
28821
|
+
}
|
|
28822
|
+
|
|
28823
|
+
this.PtMax=ptMax;
|
|
28824
|
+
this.PtMin=ptMin;
|
|
28825
|
+
}
|
|
28826
|
+
|
|
28585
28827
|
this.DrawTrade=function() //交易系统
|
|
28586
28828
|
{
|
|
28587
28829
|
if (!this.TradeData) return;
|
|
@@ -29089,6 +29331,10 @@ function ChartKLine()
|
|
|
29089
29331
|
{
|
|
29090
29332
|
this.DrawHLCArea();
|
|
29091
29333
|
}
|
|
29334
|
+
else if (this.DrawType==16)
|
|
29335
|
+
{
|
|
29336
|
+
this.DrawKagi();
|
|
29337
|
+
}
|
|
29092
29338
|
else if (this.DrawType==17)
|
|
29093
29339
|
{
|
|
29094
29340
|
this.DrawOrderFlow_Style4();
|
|
@@ -49930,7 +50176,7 @@ function FrameSplitY()
|
|
|
49930
50176
|
var item=this.Frame.HorizontalInfo[i];
|
|
49931
50177
|
var y=this.Frame.GetYFromData(item.Value);
|
|
49932
50178
|
var yValue=leftFrame.GetYData(y);
|
|
49933
|
-
if (ySplitOper && ySplitOper.FormatValueString) item.Message[
|
|
50179
|
+
if (ySplitOper && ySplitOper.FormatValueString) item.Message[0] = ySplitOper.FormatValueString(yValue);
|
|
49934
50180
|
else item.Message[0] = this.FormatValueString(yValue);
|
|
49935
50181
|
}
|
|
49936
50182
|
}
|
|
@@ -52188,6 +52434,7 @@ function ChartCorssCursor()
|
|
|
52188
52434
|
|
|
52189
52435
|
this.StringFormatY.Value=yValue;
|
|
52190
52436
|
this.StringFormatY.FrameID=yValueExtend.FrameID;
|
|
52437
|
+
this.StringFormatY.RValue=yValueExtend.RightYValue; //右侧子坐标
|
|
52191
52438
|
this.StringFormatY.Point={X:x, Y:y};
|
|
52192
52439
|
this.StringFormatY.ClientPos=this.ClientPos;
|
|
52193
52440
|
|
|
@@ -52992,6 +53239,7 @@ function HQPriceStringFormat()
|
|
|
52992
53239
|
{
|
|
52993
53240
|
if (this.DataFormatType==1) this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
52994
53241
|
else this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);
|
|
53242
|
+
if (IFrameSplitOperator.IsNumber(this.RValue)) this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);
|
|
52995
53243
|
}
|
|
52996
53244
|
|
|
52997
53245
|
if (this.GetEventCallback)
|
|
@@ -69629,20 +69877,24 @@ function RenkoCalculate()
|
|
|
69629
69877
|
//
|
|
69630
69878
|
function KagiCalculate()
|
|
69631
69879
|
{
|
|
69632
|
-
this.
|
|
69633
|
-
this.
|
|
69634
|
-
this.
|
|
69635
|
-
|
|
69880
|
+
this.newMethod=RenkoCalculate; //派生
|
|
69881
|
+
this.newMethod();
|
|
69882
|
+
delete this.newMethod;
|
|
69883
|
+
|
|
69884
|
+
this.ClassName="KagiCalculate";
|
|
69885
|
+
this.BrickSizeType=0;
|
|
69886
|
+
this.BrickSize=0.5; //固定大小
|
|
69636
69887
|
|
|
69637
69888
|
this.RecvHistoryData=function(sourceData, option) //历史日线数据
|
|
69638
69889
|
{
|
|
69639
69890
|
this.Symbol=option.Symbol;
|
|
69640
69891
|
this.SourceData=sourceData;
|
|
69641
69892
|
this.FloatPrecision=GetfloatPrecision(this.Symbol);
|
|
69642
|
-
|
|
69893
|
+
if (this.BrickSizeType==1) this.CalculateATR();
|
|
69894
|
+
return this.CalculateByClose(sourceData);
|
|
69643
69895
|
}
|
|
69644
69896
|
|
|
69645
|
-
this.
|
|
69897
|
+
this.CalculateByClose=function(sourceData)
|
|
69646
69898
|
{
|
|
69647
69899
|
var bindData=new ChartData();
|
|
69648
69900
|
bindData.Data=[]
|
|
@@ -69653,13 +69905,139 @@ function KagiCalculate()
|
|
|
69653
69905
|
|
|
69654
69906
|
if (!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data)) return bindData;
|
|
69655
69907
|
|
|
69656
|
-
var
|
|
69908
|
+
var brickSize=this.BrickSize;
|
|
69909
|
+
if (this.BrickSizeType==1) brickSize=this.ATR.BrickSize;
|
|
69657
69910
|
|
|
69658
69911
|
var kItem=sourceData.Data[0];
|
|
69659
|
-
|
|
69660
|
-
|
|
69912
|
+
var kagiItem=HistoryData.Copy(kItem);
|
|
69913
|
+
|
|
69914
|
+
kagiItem.High=kagiItem.Low=kItem.Close;
|
|
69915
|
+
kagiItem.StartItem=kItem;
|
|
69916
|
+
kagiItem.Direction=0; //1 上 2=下
|
|
69917
|
+
|
|
69918
|
+
var T_MergeKData=function(dest, src)
|
|
69661
69919
|
{
|
|
69920
|
+
dest.Vol+=src.Vol;
|
|
69921
|
+
dest.Amount+=src.Amount;
|
|
69662
69922
|
}
|
|
69923
|
+
|
|
69924
|
+
var index=1;
|
|
69925
|
+
for( ;index<sourceData.Data.length;++index) //确定好方向
|
|
69926
|
+
{
|
|
69927
|
+
var kItem=sourceData.Data[index];
|
|
69928
|
+
if (kItem.Close>kagiItem.Close)
|
|
69929
|
+
{
|
|
69930
|
+
kagiItem.Direction=1;
|
|
69931
|
+
kagiItem.Close=kItem.Close;
|
|
69932
|
+
kagiItem.EndItem=kItem;
|
|
69933
|
+
kagiItem.High=kItem.Close;
|
|
69934
|
+
break;
|
|
69935
|
+
}
|
|
69936
|
+
else if (kItem.Close<kagiItem.Close)
|
|
69937
|
+
{
|
|
69938
|
+
kagiItem.Direction=2;
|
|
69939
|
+
kagiItem.Close=kItem.Close;
|
|
69940
|
+
kagiItem.EndItem=kItem;
|
|
69941
|
+
kagiItem.Low=kItem.Close;
|
|
69942
|
+
break;
|
|
69943
|
+
}
|
|
69944
|
+
}
|
|
69945
|
+
|
|
69946
|
+
var changeItem=null;
|
|
69947
|
+
for(++index; index<sourceData.Data.length;++index )
|
|
69948
|
+
{
|
|
69949
|
+
var kItem=sourceData.Data[index];
|
|
69950
|
+
if (kagiItem.Direction==1) //上
|
|
69951
|
+
{
|
|
69952
|
+
if (kItem.Close>=kagiItem.High)
|
|
69953
|
+
{
|
|
69954
|
+
kagiItem.Close=kItem.Close;
|
|
69955
|
+
kagiItem.High=kItem.Close;
|
|
69956
|
+
kagiItem.EndItem=kItem;
|
|
69957
|
+
changeItem=null;
|
|
69958
|
+
}
|
|
69959
|
+
else
|
|
69960
|
+
{
|
|
69961
|
+
if (!changeItem)
|
|
69962
|
+
{
|
|
69963
|
+
changeItem=HistoryData.Copy(kItem);
|
|
69964
|
+
changeItem.High=changeItem.Low=kItem.Close;
|
|
69965
|
+
}
|
|
69966
|
+
else
|
|
69967
|
+
{
|
|
69968
|
+
changeItem.Close=kItem.Close;
|
|
69969
|
+
if (changeItem.Low>kItem.Close) changeItem.Low=kItem.Close;
|
|
69970
|
+
}
|
|
69971
|
+
|
|
69972
|
+
if (Math.abs(changeItem.Low-kagiItem.High)>brickSize) //达到变盘点
|
|
69973
|
+
{
|
|
69974
|
+
bindData.Data.push(kagiItem);
|
|
69975
|
+
|
|
69976
|
+
var newItem=HistoryData.Copy(kItem);
|
|
69977
|
+
newItem.High=kagiItem.High;
|
|
69978
|
+
newItem.Low=kItem.Close;
|
|
69979
|
+
newItem.Direction=2; //1 上 2=下
|
|
69980
|
+
newItem.StartItem=kItem;
|
|
69981
|
+
|
|
69982
|
+
kagiItem=newItem;
|
|
69983
|
+
changeItem=null;
|
|
69984
|
+
}
|
|
69985
|
+
}
|
|
69986
|
+
}
|
|
69987
|
+
else if (kagiItem.Direction==2) //下
|
|
69988
|
+
{
|
|
69989
|
+
if (kItem.Close<=kagiItem.Low)
|
|
69990
|
+
{
|
|
69991
|
+
kagiItem.Close=kItem.Close;
|
|
69992
|
+
kagiItem.Low=kItem.Close;
|
|
69993
|
+
kagiItem.EndItem=kItem;
|
|
69994
|
+
}
|
|
69995
|
+
else
|
|
69996
|
+
{
|
|
69997
|
+
if (!changeItem)
|
|
69998
|
+
{
|
|
69999
|
+
changeItem=HistoryData.Copy(kItem);
|
|
70000
|
+
changeItem.High=changeItem.Low=kItem.Close;
|
|
70001
|
+
}
|
|
70002
|
+
else
|
|
70003
|
+
{
|
|
70004
|
+
changeItem.Close=kItem.Close;
|
|
70005
|
+
if (changeItem.High<kItem.Close) changeItem.High=kItem.Close;
|
|
70006
|
+
}
|
|
70007
|
+
|
|
70008
|
+
if (Math.abs(changeItem.High-kagiItem.Low)>brickSize) //达到变盘点
|
|
70009
|
+
{
|
|
70010
|
+
bindData.Data.push(kagiItem);
|
|
70011
|
+
|
|
70012
|
+
var newItem=HistoryData.Copy(kItem);
|
|
70013
|
+
newItem.High=kItem.Close;
|
|
70014
|
+
newItem.Low=kagiItem.Low;
|
|
70015
|
+
newItem.Direction=1; //1 上 2=下
|
|
70016
|
+
newItem.StartItem=kItem;
|
|
70017
|
+
|
|
70018
|
+
kagiItem=newItem;
|
|
70019
|
+
changeItem=null;
|
|
70020
|
+
}
|
|
70021
|
+
}
|
|
70022
|
+
}
|
|
70023
|
+
}
|
|
70024
|
+
|
|
70025
|
+
return bindData;
|
|
70026
|
+
}
|
|
70027
|
+
|
|
70028
|
+
//获取配置信息
|
|
70029
|
+
this.GetTitle=function()
|
|
70030
|
+
{
|
|
70031
|
+
if (this.BrickSizeType==1)
|
|
70032
|
+
{
|
|
70033
|
+
var text=`Kagi [ATR(${this.ATR.Count}), ${this.ATR.BrickSize}]`;
|
|
70034
|
+
}
|
|
70035
|
+
else
|
|
70036
|
+
{
|
|
70037
|
+
var text=`Kagi [Traditional]`;
|
|
70038
|
+
}
|
|
70039
|
+
|
|
70040
|
+
return text;
|
|
69663
70041
|
}
|
|
69664
70042
|
}
|
|
69665
70043
|
|
|
@@ -73267,12 +73645,17 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
73267
73645
|
//删除某一个窗口的指标, bCallDestory=是否调用图形销毁函数
|
|
73268
73646
|
this.DeleteIndexPaint=function(windowIndex, bCallDestroy)
|
|
73269
73647
|
{
|
|
73270
|
-
|
|
73271
|
-
|
|
73648
|
+
if (!this.Frame.SubFrame[windowIndex]) return;
|
|
73649
|
+
var subFrame=this.Frame.SubFrame[windowIndex].Frame;
|
|
73650
|
+
if (!subFrame) return;
|
|
73651
|
+
|
|
73652
|
+
var paint=[]; //踢出当前窗口的指标画法
|
|
73653
|
+
for(var i=0;i<this.ChartPaint.length; ++i)
|
|
73272
73654
|
{
|
|
73273
|
-
|
|
73655
|
+
var item=this.ChartPaint[i];
|
|
73656
|
+
var bFind=(item.ChartFrame.Guid==subFrame.Guid || item.ChartFrame==subFrame);
|
|
73274
73657
|
|
|
73275
|
-
if (i==0 ||
|
|
73658
|
+
if (i==0 || !bFind)
|
|
73276
73659
|
{
|
|
73277
73660
|
paint.push(item);
|
|
73278
73661
|
}
|
|
@@ -73285,7 +73668,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
73285
73668
|
}
|
|
73286
73669
|
}
|
|
73287
73670
|
|
|
73288
|
-
|
|
73671
|
+
|
|
73289
73672
|
subFrame.YSpecificMaxMin=null; //清空指定最大最小值
|
|
73290
73673
|
subFrame.IsLocked=false; //解除上锁
|
|
73291
73674
|
subFrame.YSplitScale = null; //清空固定刻度
|
|
@@ -79019,6 +79402,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79019
79402
|
}
|
|
79020
79403
|
|
|
79021
79404
|
var subFrame=new SubFrameItem();
|
|
79405
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
79022
79406
|
subFrame.Frame=frame;
|
|
79023
79407
|
if (i==0)
|
|
79024
79408
|
subFrame.Height=20;
|
|
@@ -79105,6 +79489,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79105
79489
|
}
|
|
79106
79490
|
|
|
79107
79491
|
var subFrame=new SubFrameItem();
|
|
79492
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
79108
79493
|
subFrame.Frame=frame;
|
|
79109
79494
|
subFrame.Height=10;
|
|
79110
79495
|
|
|
@@ -79176,12 +79561,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79176
79561
|
//删除某一个窗口的指标
|
|
79177
79562
|
this.DeleteIndexPaint=function(windowIndex,bCallDestroy)
|
|
79178
79563
|
{
|
|
79179
|
-
|
|
79180
|
-
|
|
79564
|
+
var subFrame=this.Frame.SubFrame[windowIndex].Frame;
|
|
79565
|
+
if (!subFrame) return;
|
|
79566
|
+
|
|
79567
|
+
var paint=[]; //踢出当前窗口的指标画法
|
|
79568
|
+
for(var i=0;i<this.ChartPaint.length;++i)
|
|
79181
79569
|
{
|
|
79182
|
-
|
|
79570
|
+
var item=this.ChartPaint[i];
|
|
79571
|
+
var bFind=(item.ChartFrame.Guid==subFrame.Guid || item.ChartFrame==subFrame);
|
|
79183
79572
|
|
|
79184
|
-
if (i==0 ||
|
|
79573
|
+
if (i==0 || !bFind)
|
|
79185
79574
|
{
|
|
79186
79575
|
paint.push(item);
|
|
79187
79576
|
}
|
|
@@ -79195,7 +79584,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79195
79584
|
}
|
|
79196
79585
|
|
|
79197
79586
|
//清空指定最大最小值
|
|
79198
|
-
|
|
79587
|
+
|
|
79199
79588
|
subFrame.YSpecificMaxMin=null;
|
|
79200
79589
|
subFrame.IsLocked=false; //解除上锁
|
|
79201
79590
|
subFrame.YSplitOperator.SplitType=subFrame.YSplitOperator.DefaultSplitType; //还原Y坐标分割模式
|
|
@@ -84518,6 +84907,7 @@ function KLineChartHScreenContainer(uielement)
|
|
|
84518
84907
|
}
|
|
84519
84908
|
|
|
84520
84909
|
var subFrame=new SubFrameItem();
|
|
84910
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
84521
84911
|
subFrame.Frame=frame;
|
|
84522
84912
|
if (i==0)
|
|
84523
84913
|
subFrame.Height=20;
|
|
@@ -84662,6 +85052,7 @@ function MinuteChartHScreenContainer(uielement)
|
|
|
84662
85052
|
}
|
|
84663
85053
|
|
|
84664
85054
|
var subFrame=new SubFrameItem();
|
|
85055
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
84665
85056
|
subFrame.Frame=frame;
|
|
84666
85057
|
if (i==0)
|
|
84667
85058
|
subFrame.Height=20;
|
|
@@ -131760,7 +132151,7 @@ function ScrollBarBGChart()
|
|
|
131760
132151
|
|
|
131761
132152
|
|
|
131762
132153
|
|
|
131763
|
-
var HQCHART_VERSION="1.1.
|
|
132154
|
+
var HQCHART_VERSION="1.1.13151";
|
|
131764
132155
|
|
|
131765
132156
|
function PrintHQChartVersion()
|
|
131766
132157
|
{
|