hqchart 1.1.13144 → 1.1.13155
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 +246 -199
- package/package.json +1 -1
- package/src/jscommon/umychart.js +412 -32
- package/src/jscommon/umychart.scrollbar.js +19 -4
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +432 -37
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +432 -37
|
@@ -22526,7 +22526,34 @@ function HQTradeHScreenFrame()
|
|
|
22526
22526
|
}
|
|
22527
22527
|
}
|
|
22528
22528
|
|
|
22529
|
-
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
|
+
}
|
|
22530
22557
|
}
|
|
22531
22558
|
}
|
|
22532
22559
|
|
|
@@ -28649,6 +28676,198 @@ function ChartKLine()
|
|
|
28649
28676
|
this.PtMin=ptMin;
|
|
28650
28677
|
}
|
|
28651
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
|
+
|
|
28652
28871
|
this.DrawTrade=function() //交易系统
|
|
28653
28872
|
{
|
|
28654
28873
|
if (!this.TradeData) return;
|
|
@@ -29156,6 +29375,10 @@ function ChartKLine()
|
|
|
29156
29375
|
{
|
|
29157
29376
|
this.DrawHLCArea();
|
|
29158
29377
|
}
|
|
29378
|
+
else if (this.DrawType==16)
|
|
29379
|
+
{
|
|
29380
|
+
this.DrawKagi();
|
|
29381
|
+
}
|
|
29159
29382
|
else if (this.DrawType==17)
|
|
29160
29383
|
{
|
|
29161
29384
|
this.DrawOrderFlow_Style4();
|
|
@@ -52255,6 +52478,7 @@ function ChartCorssCursor()
|
|
|
52255
52478
|
|
|
52256
52479
|
this.StringFormatY.Value=yValue;
|
|
52257
52480
|
this.StringFormatY.FrameID=yValueExtend.FrameID;
|
|
52481
|
+
this.StringFormatY.RValue=yValueExtend.RightYValue; //右侧子坐标
|
|
52258
52482
|
this.StringFormatY.Point={X:x, Y:y};
|
|
52259
52483
|
this.StringFormatY.ClientPos=this.ClientPos;
|
|
52260
52484
|
|
|
@@ -53059,6 +53283,7 @@ function HQPriceStringFormat()
|
|
|
53059
53283
|
{
|
|
53060
53284
|
if (this.DataFormatType==1) this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
53061
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);
|
|
53062
53287
|
}
|
|
53063
53288
|
|
|
53064
53289
|
if (this.GetEventCallback)
|
|
@@ -68304,7 +68529,11 @@ function JSChartResource()
|
|
|
68304
68529
|
DateFont:`${14*GetDevicePixelRatio()}px 微软雅黑`,
|
|
68305
68530
|
DateColor:'rgb(0,0,0)',
|
|
68306
68531
|
BarColor:"rgb(207,207,207)",
|
|
68307
|
-
BarAreaColor:"rgba(232,232,232,0.65)"
|
|
68532
|
+
BarAreaColor:"rgba(232,232,232,0.65)",
|
|
68533
|
+
|
|
68534
|
+
BarWidth:10,
|
|
68535
|
+
BarPadding:15, //上下留白
|
|
68536
|
+
MinCenterWidth:15
|
|
68308
68537
|
}
|
|
68309
68538
|
},
|
|
68310
68539
|
|
|
@@ -68949,6 +69178,9 @@ function JSChartResource()
|
|
|
68949
69178
|
if (subItem.DateColor) this.ScrollBar.Slider.DateColor=subItem.DateColor;
|
|
68950
69179
|
if (subItem.BarColor) this.ScrollBar.Slider.BarColor=subItem.BarColor;
|
|
68951
69180
|
if (subItem.BarAreaColor) this.ScrollBar.Slider.BarAreaColor=subItem.BarAreaColor;
|
|
69181
|
+
if (IFrameSplitOperator.IsNumber(subItem.BarWidth)) this.ScrollBar.Slider.BarWidth=subItem.BarWidth;
|
|
69182
|
+
if (IFrameSplitOperator.IsNumber(subItem.BarPadding)) this.ScrollBar.Slider.BarPadding=subItem.BarPadding;
|
|
69183
|
+
if (IFrameSplitOperator.IsNumber(subItem.MinCenterWidth)) this.ScrollBar.Slider.MinCenterWidth=subItem.MinCenterWidth;
|
|
68952
69184
|
}
|
|
68953
69185
|
|
|
68954
69186
|
if (item.BGChart)
|
|
@@ -69696,20 +69928,24 @@ function RenkoCalculate()
|
|
|
69696
69928
|
//
|
|
69697
69929
|
function KagiCalculate()
|
|
69698
69930
|
{
|
|
69699
|
-
this.
|
|
69700
|
-
this.
|
|
69701
|
-
this.
|
|
69702
|
-
|
|
69931
|
+
this.newMethod=RenkoCalculate; //派生
|
|
69932
|
+
this.newMethod();
|
|
69933
|
+
delete this.newMethod;
|
|
69934
|
+
|
|
69935
|
+
this.ClassName="KagiCalculate";
|
|
69936
|
+
this.BrickSizeType=0;
|
|
69937
|
+
this.BrickSize=0.5; //固定大小
|
|
69703
69938
|
|
|
69704
69939
|
this.RecvHistoryData=function(sourceData, option) //历史日线数据
|
|
69705
69940
|
{
|
|
69706
69941
|
this.Symbol=option.Symbol;
|
|
69707
69942
|
this.SourceData=sourceData;
|
|
69708
69943
|
this.FloatPrecision=GetfloatPrecision(this.Symbol);
|
|
69709
|
-
|
|
69944
|
+
if (this.BrickSizeType==1) this.CalculateATR();
|
|
69945
|
+
return this.CalculateByClose(sourceData);
|
|
69710
69946
|
}
|
|
69711
69947
|
|
|
69712
|
-
this.
|
|
69948
|
+
this.CalculateByClose=function(sourceData)
|
|
69713
69949
|
{
|
|
69714
69950
|
var bindData=new ChartData();
|
|
69715
69951
|
bindData.Data=[]
|
|
@@ -69720,13 +69956,139 @@ function KagiCalculate()
|
|
|
69720
69956
|
|
|
69721
69957
|
if (!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data)) return bindData;
|
|
69722
69958
|
|
|
69723
|
-
var
|
|
69959
|
+
var brickSize=this.BrickSize;
|
|
69960
|
+
if (this.BrickSizeType==1) brickSize=this.ATR.BrickSize;
|
|
69724
69961
|
|
|
69725
69962
|
var kItem=sourceData.Data[0];
|
|
69726
|
-
|
|
69727
|
-
|
|
69963
|
+
var kagiItem=HistoryData.Copy(kItem);
|
|
69964
|
+
|
|
69965
|
+
kagiItem.High=kagiItem.Low=kItem.Close;
|
|
69966
|
+
kagiItem.StartItem=kItem;
|
|
69967
|
+
kagiItem.Direction=0; //1 上 2=下
|
|
69968
|
+
|
|
69969
|
+
var T_MergeKData=function(dest, src)
|
|
69970
|
+
{
|
|
69971
|
+
dest.Vol+=src.Vol;
|
|
69972
|
+
dest.Amount+=src.Amount;
|
|
69973
|
+
}
|
|
69974
|
+
|
|
69975
|
+
var index=1;
|
|
69976
|
+
for( ;index<sourceData.Data.length;++index) //确定好方向
|
|
69728
69977
|
{
|
|
69978
|
+
var kItem=sourceData.Data[index];
|
|
69979
|
+
if (kItem.Close>kagiItem.Close)
|
|
69980
|
+
{
|
|
69981
|
+
kagiItem.Direction=1;
|
|
69982
|
+
kagiItem.Close=kItem.Close;
|
|
69983
|
+
kagiItem.EndItem=kItem;
|
|
69984
|
+
kagiItem.High=kItem.Close;
|
|
69985
|
+
break;
|
|
69986
|
+
}
|
|
69987
|
+
else if (kItem.Close<kagiItem.Close)
|
|
69988
|
+
{
|
|
69989
|
+
kagiItem.Direction=2;
|
|
69990
|
+
kagiItem.Close=kItem.Close;
|
|
69991
|
+
kagiItem.EndItem=kItem;
|
|
69992
|
+
kagiItem.Low=kItem.Close;
|
|
69993
|
+
break;
|
|
69994
|
+
}
|
|
69729
69995
|
}
|
|
69996
|
+
|
|
69997
|
+
var changeItem=null;
|
|
69998
|
+
for(++index; index<sourceData.Data.length;++index )
|
|
69999
|
+
{
|
|
70000
|
+
var kItem=sourceData.Data[index];
|
|
70001
|
+
if (kagiItem.Direction==1) //上
|
|
70002
|
+
{
|
|
70003
|
+
if (kItem.Close>=kagiItem.High)
|
|
70004
|
+
{
|
|
70005
|
+
kagiItem.Close=kItem.Close;
|
|
70006
|
+
kagiItem.High=kItem.Close;
|
|
70007
|
+
kagiItem.EndItem=kItem;
|
|
70008
|
+
changeItem=null;
|
|
70009
|
+
}
|
|
70010
|
+
else
|
|
70011
|
+
{
|
|
70012
|
+
if (!changeItem)
|
|
70013
|
+
{
|
|
70014
|
+
changeItem=HistoryData.Copy(kItem);
|
|
70015
|
+
changeItem.High=changeItem.Low=kItem.Close;
|
|
70016
|
+
}
|
|
70017
|
+
else
|
|
70018
|
+
{
|
|
70019
|
+
changeItem.Close=kItem.Close;
|
|
70020
|
+
if (changeItem.Low>kItem.Close) changeItem.Low=kItem.Close;
|
|
70021
|
+
}
|
|
70022
|
+
|
|
70023
|
+
if (Math.abs(changeItem.Low-kagiItem.High)>brickSize) //达到变盘点
|
|
70024
|
+
{
|
|
70025
|
+
bindData.Data.push(kagiItem);
|
|
70026
|
+
|
|
70027
|
+
var newItem=HistoryData.Copy(kItem);
|
|
70028
|
+
newItem.High=kagiItem.High;
|
|
70029
|
+
newItem.Low=kItem.Close;
|
|
70030
|
+
newItem.Direction=2; //1 上 2=下
|
|
70031
|
+
newItem.StartItem=kItem;
|
|
70032
|
+
|
|
70033
|
+
kagiItem=newItem;
|
|
70034
|
+
changeItem=null;
|
|
70035
|
+
}
|
|
70036
|
+
}
|
|
70037
|
+
}
|
|
70038
|
+
else if (kagiItem.Direction==2) //下
|
|
70039
|
+
{
|
|
70040
|
+
if (kItem.Close<=kagiItem.Low)
|
|
70041
|
+
{
|
|
70042
|
+
kagiItem.Close=kItem.Close;
|
|
70043
|
+
kagiItem.Low=kItem.Close;
|
|
70044
|
+
kagiItem.EndItem=kItem;
|
|
70045
|
+
}
|
|
70046
|
+
else
|
|
70047
|
+
{
|
|
70048
|
+
if (!changeItem)
|
|
70049
|
+
{
|
|
70050
|
+
changeItem=HistoryData.Copy(kItem);
|
|
70051
|
+
changeItem.High=changeItem.Low=kItem.Close;
|
|
70052
|
+
}
|
|
70053
|
+
else
|
|
70054
|
+
{
|
|
70055
|
+
changeItem.Close=kItem.Close;
|
|
70056
|
+
if (changeItem.High<kItem.Close) changeItem.High=kItem.Close;
|
|
70057
|
+
}
|
|
70058
|
+
|
|
70059
|
+
if (Math.abs(changeItem.High-kagiItem.Low)>brickSize) //达到变盘点
|
|
70060
|
+
{
|
|
70061
|
+
bindData.Data.push(kagiItem);
|
|
70062
|
+
|
|
70063
|
+
var newItem=HistoryData.Copy(kItem);
|
|
70064
|
+
newItem.High=kItem.Close;
|
|
70065
|
+
newItem.Low=kagiItem.Low;
|
|
70066
|
+
newItem.Direction=1; //1 上 2=下
|
|
70067
|
+
newItem.StartItem=kItem;
|
|
70068
|
+
|
|
70069
|
+
kagiItem=newItem;
|
|
70070
|
+
changeItem=null;
|
|
70071
|
+
}
|
|
70072
|
+
}
|
|
70073
|
+
}
|
|
70074
|
+
}
|
|
70075
|
+
|
|
70076
|
+
return bindData;
|
|
70077
|
+
}
|
|
70078
|
+
|
|
70079
|
+
//获取配置信息
|
|
70080
|
+
this.GetTitle=function()
|
|
70081
|
+
{
|
|
70082
|
+
if (this.BrickSizeType==1)
|
|
70083
|
+
{
|
|
70084
|
+
var text=`Kagi [ATR(${this.ATR.Count}), ${this.ATR.BrickSize}]`;
|
|
70085
|
+
}
|
|
70086
|
+
else
|
|
70087
|
+
{
|
|
70088
|
+
var text=`Kagi [Traditional]`;
|
|
70089
|
+
}
|
|
70090
|
+
|
|
70091
|
+
return text;
|
|
69730
70092
|
}
|
|
69731
70093
|
}
|
|
69732
70094
|
|
|
@@ -70054,8 +70416,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
70054
70416
|
this.KLineCalculate=null; //K线定制指标计算
|
|
70055
70417
|
this.KLineCalcOption=new Map(); //K线定制指标配置
|
|
70056
70418
|
|
|
70057
|
-
this.ScrollBar=null;
|
|
70058
|
-
|
|
70419
|
+
this.ScrollBar=null; //横向滚动条
|
|
70420
|
+
this.IsAutoSyncDataOffset=true; //增量更新时,是否移动当前屏数据
|
|
70059
70421
|
|
|
70060
70422
|
this.GetKLineCalulate=function()
|
|
70061
70423
|
{
|
|
@@ -71282,15 +71644,18 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
71282
71644
|
var xPointCount=this.Frame.SubFrame[0].Frame.XPointCount; //当前一屏能显示的数据个数
|
|
71283
71645
|
|
|
71284
71646
|
var newDataCount=0;
|
|
71285
|
-
if (
|
|
71647
|
+
if (IFrameSplitOperator.IsNumber(lastDataCount))
|
|
71286
71648
|
{
|
|
71287
|
-
|
|
71288
|
-
|
|
71289
|
-
|
|
71290
|
-
|
|
71291
|
-
|
|
71292
|
-
|
|
71293
|
-
|
|
71649
|
+
if (lastDataCount>0 && hisData.Data.length>lastDataCount)
|
|
71650
|
+
{
|
|
71651
|
+
newDataCount=hisData.Data.length-lastDataCount;
|
|
71652
|
+
JSConsole.Chart.Log(`[KLineChartContainer::UpdateMainData] [count=${lastDataCount}->${hisData.Data.length}], [newDataCount=${newDataCount}], [Pagesize=${xPointCount}]`);
|
|
71653
|
+
}
|
|
71654
|
+
else if (lastDataCount==0 && hisData.Data.length>xPointCount) //历史数据为空,当前收到数据大于一屏的数据,显示最新数据
|
|
71655
|
+
{
|
|
71656
|
+
newDataCount=hisData.Data.length-xPointCount;
|
|
71657
|
+
JSConsole.Chart.Log(`[KLineChartContainer::UpdateMainData] history data is empty. [count=${lastDataCount}->${hisData.Data.length}], [newDataCount=${newDataCount}], [Pagesize=${xPointCount}]`);
|
|
71658
|
+
}
|
|
71294
71659
|
}
|
|
71295
71660
|
|
|
71296
71661
|
this.ChartPaint[0].Data=hisData;
|
|
@@ -72682,7 +73047,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72682
73047
|
if (!this.SourceData) return;
|
|
72683
73048
|
if (!this.SourceData.MergeMinuteData(aryMinuteData)) return;
|
|
72684
73049
|
|
|
72685
|
-
JSConsole.Chart.Log(`[KLineChartContainer::RecvMinuteRealtimeDataV2] update kline by 1 minute data [${lastDataCount}->${this.SourceData.Data.length}]`);
|
|
73050
|
+
JSConsole.Chart.Log(`[KLineChartContainer::RecvMinuteRealtimeDataV2] update kline by 1 minute data [${lastDataCount}->${this.SourceData.Data.length}], IsAutoSyncDataOffset=${this.IsAutoSyncDataOffset}`);
|
|
73051
|
+
|
|
73052
|
+
if (this.IsAutoSyncDataOffset===false) lastDataCount=null; //维持当前的屏位置
|
|
72686
73053
|
|
|
72687
73054
|
var bindData=new ChartData();
|
|
72688
73055
|
bindData.Data=this.SourceData.Data;
|
|
@@ -73334,12 +73701,17 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
73334
73701
|
//删除某一个窗口的指标, bCallDestory=是否调用图形销毁函数
|
|
73335
73702
|
this.DeleteIndexPaint=function(windowIndex, bCallDestroy)
|
|
73336
73703
|
{
|
|
73337
|
-
|
|
73338
|
-
|
|
73704
|
+
if (!this.Frame.SubFrame[windowIndex]) return;
|
|
73705
|
+
var subFrame=this.Frame.SubFrame[windowIndex].Frame;
|
|
73706
|
+
if (!subFrame) return;
|
|
73707
|
+
|
|
73708
|
+
var paint=[]; //踢出当前窗口的指标画法
|
|
73709
|
+
for(var i=0;i<this.ChartPaint.length; ++i)
|
|
73339
73710
|
{
|
|
73340
|
-
|
|
73711
|
+
var item=this.ChartPaint[i];
|
|
73712
|
+
var bFind=(item.ChartFrame.Guid==subFrame.Guid || item.ChartFrame==subFrame);
|
|
73341
73713
|
|
|
73342
|
-
if (i==0 ||
|
|
73714
|
+
if (i==0 || !bFind)
|
|
73343
73715
|
{
|
|
73344
73716
|
paint.push(item);
|
|
73345
73717
|
}
|
|
@@ -73352,7 +73724,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
73352
73724
|
}
|
|
73353
73725
|
}
|
|
73354
73726
|
|
|
73355
|
-
|
|
73727
|
+
|
|
73356
73728
|
subFrame.YSpecificMaxMin=null; //清空指定最大最小值
|
|
73357
73729
|
subFrame.IsLocked=false; //解除上锁
|
|
73358
73730
|
subFrame.YSplitScale = null; //清空固定刻度
|
|
@@ -79086,6 +79458,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79086
79458
|
}
|
|
79087
79459
|
|
|
79088
79460
|
var subFrame=new SubFrameItem();
|
|
79461
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
79089
79462
|
subFrame.Frame=frame;
|
|
79090
79463
|
if (i==0)
|
|
79091
79464
|
subFrame.Height=20;
|
|
@@ -79172,6 +79545,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79172
79545
|
}
|
|
79173
79546
|
|
|
79174
79547
|
var subFrame=new SubFrameItem();
|
|
79548
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
79175
79549
|
subFrame.Frame=frame;
|
|
79176
79550
|
subFrame.Height=10;
|
|
79177
79551
|
|
|
@@ -79243,12 +79617,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79243
79617
|
//删除某一个窗口的指标
|
|
79244
79618
|
this.DeleteIndexPaint=function(windowIndex,bCallDestroy)
|
|
79245
79619
|
{
|
|
79246
|
-
|
|
79247
|
-
|
|
79620
|
+
var subFrame=this.Frame.SubFrame[windowIndex].Frame;
|
|
79621
|
+
if (!subFrame) return;
|
|
79622
|
+
|
|
79623
|
+
var paint=[]; //踢出当前窗口的指标画法
|
|
79624
|
+
for(var i=0;i<this.ChartPaint.length;++i)
|
|
79248
79625
|
{
|
|
79249
|
-
|
|
79626
|
+
var item=this.ChartPaint[i];
|
|
79627
|
+
var bFind=(item.ChartFrame.Guid==subFrame.Guid || item.ChartFrame==subFrame);
|
|
79250
79628
|
|
|
79251
|
-
if (i==0 ||
|
|
79629
|
+
if (i==0 || !bFind)
|
|
79252
79630
|
{
|
|
79253
79631
|
paint.push(item);
|
|
79254
79632
|
}
|
|
@@ -79262,7 +79640,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79262
79640
|
}
|
|
79263
79641
|
|
|
79264
79642
|
//清空指定最大最小值
|
|
79265
|
-
|
|
79643
|
+
|
|
79266
79644
|
subFrame.YSpecificMaxMin=null;
|
|
79267
79645
|
subFrame.IsLocked=false; //解除上锁
|
|
79268
79646
|
subFrame.YSplitOperator.SplitType=subFrame.YSplitOperator.DefaultSplitType; //还原Y坐标分割模式
|
|
@@ -84585,6 +84963,7 @@ function KLineChartHScreenContainer(uielement)
|
|
|
84585
84963
|
}
|
|
84586
84964
|
|
|
84587
84965
|
var subFrame=new SubFrameItem();
|
|
84966
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
84588
84967
|
subFrame.Frame=frame;
|
|
84589
84968
|
if (i==0)
|
|
84590
84969
|
subFrame.Height=20;
|
|
@@ -84729,6 +85108,7 @@ function MinuteChartHScreenContainer(uielement)
|
|
|
84729
85108
|
}
|
|
84730
85109
|
|
|
84731
85110
|
var subFrame=new SubFrameItem();
|
|
85111
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
84732
85112
|
subFrame.Frame=frame;
|
|
84733
85113
|
if (i==0)
|
|
84734
85114
|
subFrame.Height=20;
|
|
@@ -133338,11 +133718,11 @@ function JSScrollBarChartContainer(uielement)
|
|
|
133338
133718
|
switch(item.Data.Type)
|
|
133339
133719
|
{
|
|
133340
133720
|
case 0:
|
|
133341
|
-
mouseStatus={ Cursor:"
|
|
133721
|
+
mouseStatus={ Cursor:"grab", Name:"SliderChart"};
|
|
133342
133722
|
break;
|
|
133343
133723
|
case 1:
|
|
133344
133724
|
case 2:
|
|
133345
|
-
mouseStatus={ Cursor:"
|
|
133725
|
+
mouseStatus={ Cursor:"col-resize", Name:"SliderChart"};
|
|
133346
133726
|
break;
|
|
133347
133727
|
}
|
|
133348
133728
|
}
|
|
@@ -133412,6 +133792,10 @@ function JSScrollBarChartContainer(uielement)
|
|
|
133412
133792
|
{
|
|
133413
133793
|
xStart=pageRange.First.XStart;
|
|
133414
133794
|
}
|
|
133795
|
+
else if (xStart>=right)
|
|
133796
|
+
{
|
|
133797
|
+
xStart=pageRange.Last.XEnd;
|
|
133798
|
+
}
|
|
133415
133799
|
|
|
133416
133800
|
this.SliderChart.XStart=xStart;
|
|
133417
133801
|
}
|
|
@@ -133421,6 +133805,10 @@ function JSScrollBarChartContainer(uielement)
|
|
|
133421
133805
|
{
|
|
133422
133806
|
xEnd=pageRange.Last.XEnd;
|
|
133423
133807
|
}
|
|
133808
|
+
else if (xEnd<=left)
|
|
133809
|
+
{
|
|
133810
|
+
xEnd=pageRange.First.XStart;
|
|
133811
|
+
}
|
|
133424
133812
|
|
|
133425
133813
|
this.SliderChart.XEnd=xEnd;
|
|
133426
133814
|
}
|
|
@@ -133965,8 +134353,9 @@ function SliderChart()
|
|
|
133965
134353
|
this.Color=g_JSChartResource.ScrollBar.Slider.BarAreaColor;
|
|
133966
134354
|
|
|
133967
134355
|
this.BarColor=g_JSChartResource.ScrollBar.Slider.BarColor;
|
|
133968
|
-
this.BarWidth=
|
|
133969
|
-
this.BarPadding=
|
|
134356
|
+
this.BarWidth=g_JSChartResource.ScrollBar.Slider.BarWidth;
|
|
134357
|
+
this.BarPadding=g_JSChartResource.ScrollBar.Slider.BarPadding; //上下留白
|
|
134358
|
+
this.MinCenterWidth=g_JSChartResource.ScrollBar.Slider.MinCenterWidth;
|
|
133970
134359
|
|
|
133971
134360
|
this.DateFont=g_JSChartResource.ScrollBar.Slider.DateFont;
|
|
133972
134361
|
this.DateColor=g_JSChartResource.ScrollBar.Slider.DateColor;
|
|
@@ -134026,6 +134415,12 @@ function SliderChart()
|
|
|
134026
134415
|
var rtBar={ Left:Math.min(xStart,xEnd), Top:top, Width:Math.abs(xEnd-xStart), Height: bottom-top};
|
|
134027
134416
|
rtBar.Right=rtBar.Left+rtBar.Width;
|
|
134028
134417
|
rtBar.Bottom=rtBar.Top+rtBar.Height;
|
|
134418
|
+
if (rtBar.Width<this.MinCenterWidth)
|
|
134419
|
+
{
|
|
134420
|
+
rtBar.Left-=(this.MinCenterWidth-rtBar.Width)/2;
|
|
134421
|
+
rtBar.Width=this.MinCenterWidth;
|
|
134422
|
+
rtBar.Right=rtBar.Left+rtBar.Width;
|
|
134423
|
+
}
|
|
134029
134424
|
this.Canvas.fillRect(rtBar.Left, rtBar.Top, rtBar.Width, rtBar.Height);
|
|
134030
134425
|
this.AryRect.push({ Rect:rtBar, Type:0});
|
|
134031
134426
|
|
|
@@ -134347,7 +134742,7 @@ function HQChartScriptWorker()
|
|
|
134347
134742
|
|
|
134348
134743
|
|
|
134349
134744
|
|
|
134350
|
-
var HQCHART_VERSION="1.1.
|
|
134745
|
+
var HQCHART_VERSION="1.1.13154";
|
|
134351
134746
|
|
|
134352
134747
|
function PrintHQChartVersion()
|
|
134353
134748
|
{
|