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
|
@@ -22482,7 +22482,34 @@ function HQTradeHScreenFrame()
|
|
|
22482
22482
|
}
|
|
22483
22483
|
}
|
|
22484
22484
|
|
|
22485
|
-
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
|
+
}
|
|
22486
22513
|
}
|
|
22487
22514
|
}
|
|
22488
22515
|
|
|
@@ -28605,6 +28632,198 @@ function ChartKLine()
|
|
|
28605
28632
|
this.PtMin=ptMin;
|
|
28606
28633
|
}
|
|
28607
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
|
+
|
|
28608
28827
|
this.DrawTrade=function() //交易系统
|
|
28609
28828
|
{
|
|
28610
28829
|
if (!this.TradeData) return;
|
|
@@ -29112,6 +29331,10 @@ function ChartKLine()
|
|
|
29112
29331
|
{
|
|
29113
29332
|
this.DrawHLCArea();
|
|
29114
29333
|
}
|
|
29334
|
+
else if (this.DrawType==16)
|
|
29335
|
+
{
|
|
29336
|
+
this.DrawKagi();
|
|
29337
|
+
}
|
|
29115
29338
|
else if (this.DrawType==17)
|
|
29116
29339
|
{
|
|
29117
29340
|
this.DrawOrderFlow_Style4();
|
|
@@ -52211,6 +52434,7 @@ function ChartCorssCursor()
|
|
|
52211
52434
|
|
|
52212
52435
|
this.StringFormatY.Value=yValue;
|
|
52213
52436
|
this.StringFormatY.FrameID=yValueExtend.FrameID;
|
|
52437
|
+
this.StringFormatY.RValue=yValueExtend.RightYValue; //右侧子坐标
|
|
52214
52438
|
this.StringFormatY.Point={X:x, Y:y};
|
|
52215
52439
|
this.StringFormatY.ClientPos=this.ClientPos;
|
|
52216
52440
|
|
|
@@ -53015,6 +53239,7 @@ function HQPriceStringFormat()
|
|
|
53015
53239
|
{
|
|
53016
53240
|
if (this.DataFormatType==1) this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
53017
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);
|
|
53018
53243
|
}
|
|
53019
53244
|
|
|
53020
53245
|
if (this.GetEventCallback)
|
|
@@ -68260,7 +68485,11 @@ function JSChartResource()
|
|
|
68260
68485
|
DateFont:`${14*GetDevicePixelRatio()}px 微软雅黑`,
|
|
68261
68486
|
DateColor:'rgb(0,0,0)',
|
|
68262
68487
|
BarColor:"rgb(207,207,207)",
|
|
68263
|
-
BarAreaColor:"rgba(232,232,232,0.65)"
|
|
68488
|
+
BarAreaColor:"rgba(232,232,232,0.65)",
|
|
68489
|
+
|
|
68490
|
+
BarWidth:10,
|
|
68491
|
+
BarPadding:15, //上下留白
|
|
68492
|
+
MinCenterWidth:15
|
|
68264
68493
|
}
|
|
68265
68494
|
},
|
|
68266
68495
|
|
|
@@ -68905,6 +69134,9 @@ function JSChartResource()
|
|
|
68905
69134
|
if (subItem.DateColor) this.ScrollBar.Slider.DateColor=subItem.DateColor;
|
|
68906
69135
|
if (subItem.BarColor) this.ScrollBar.Slider.BarColor=subItem.BarColor;
|
|
68907
69136
|
if (subItem.BarAreaColor) this.ScrollBar.Slider.BarAreaColor=subItem.BarAreaColor;
|
|
69137
|
+
if (IFrameSplitOperator.IsNumber(subItem.BarWidth)) this.ScrollBar.Slider.BarWidth=subItem.BarWidth;
|
|
69138
|
+
if (IFrameSplitOperator.IsNumber(subItem.BarPadding)) this.ScrollBar.Slider.BarPadding=subItem.BarPadding;
|
|
69139
|
+
if (IFrameSplitOperator.IsNumber(subItem.MinCenterWidth)) this.ScrollBar.Slider.MinCenterWidth=subItem.MinCenterWidth;
|
|
68908
69140
|
}
|
|
68909
69141
|
|
|
68910
69142
|
if (item.BGChart)
|
|
@@ -69652,20 +69884,24 @@ function RenkoCalculate()
|
|
|
69652
69884
|
//
|
|
69653
69885
|
function KagiCalculate()
|
|
69654
69886
|
{
|
|
69655
|
-
this.
|
|
69656
|
-
this.
|
|
69657
|
-
this.
|
|
69658
|
-
|
|
69887
|
+
this.newMethod=RenkoCalculate; //派生
|
|
69888
|
+
this.newMethod();
|
|
69889
|
+
delete this.newMethod;
|
|
69890
|
+
|
|
69891
|
+
this.ClassName="KagiCalculate";
|
|
69892
|
+
this.BrickSizeType=0;
|
|
69893
|
+
this.BrickSize=0.5; //固定大小
|
|
69659
69894
|
|
|
69660
69895
|
this.RecvHistoryData=function(sourceData, option) //历史日线数据
|
|
69661
69896
|
{
|
|
69662
69897
|
this.Symbol=option.Symbol;
|
|
69663
69898
|
this.SourceData=sourceData;
|
|
69664
69899
|
this.FloatPrecision=GetfloatPrecision(this.Symbol);
|
|
69665
|
-
|
|
69900
|
+
if (this.BrickSizeType==1) this.CalculateATR();
|
|
69901
|
+
return this.CalculateByClose(sourceData);
|
|
69666
69902
|
}
|
|
69667
69903
|
|
|
69668
|
-
this.
|
|
69904
|
+
this.CalculateByClose=function(sourceData)
|
|
69669
69905
|
{
|
|
69670
69906
|
var bindData=new ChartData();
|
|
69671
69907
|
bindData.Data=[]
|
|
@@ -69676,13 +69912,139 @@ function KagiCalculate()
|
|
|
69676
69912
|
|
|
69677
69913
|
if (!IFrameSplitOperator.IsNonEmptyArray(sourceData.Data)) return bindData;
|
|
69678
69914
|
|
|
69679
|
-
var
|
|
69915
|
+
var brickSize=this.BrickSize;
|
|
69916
|
+
if (this.BrickSizeType==1) brickSize=this.ATR.BrickSize;
|
|
69680
69917
|
|
|
69681
69918
|
var kItem=sourceData.Data[0];
|
|
69682
|
-
|
|
69683
|
-
|
|
69919
|
+
var kagiItem=HistoryData.Copy(kItem);
|
|
69920
|
+
|
|
69921
|
+
kagiItem.High=kagiItem.Low=kItem.Close;
|
|
69922
|
+
kagiItem.StartItem=kItem;
|
|
69923
|
+
kagiItem.Direction=0; //1 上 2=下
|
|
69924
|
+
|
|
69925
|
+
var T_MergeKData=function(dest, src)
|
|
69926
|
+
{
|
|
69927
|
+
dest.Vol+=src.Vol;
|
|
69928
|
+
dest.Amount+=src.Amount;
|
|
69929
|
+
}
|
|
69930
|
+
|
|
69931
|
+
var index=1;
|
|
69932
|
+
for( ;index<sourceData.Data.length;++index) //确定好方向
|
|
69684
69933
|
{
|
|
69934
|
+
var kItem=sourceData.Data[index];
|
|
69935
|
+
if (kItem.Close>kagiItem.Close)
|
|
69936
|
+
{
|
|
69937
|
+
kagiItem.Direction=1;
|
|
69938
|
+
kagiItem.Close=kItem.Close;
|
|
69939
|
+
kagiItem.EndItem=kItem;
|
|
69940
|
+
kagiItem.High=kItem.Close;
|
|
69941
|
+
break;
|
|
69942
|
+
}
|
|
69943
|
+
else if (kItem.Close<kagiItem.Close)
|
|
69944
|
+
{
|
|
69945
|
+
kagiItem.Direction=2;
|
|
69946
|
+
kagiItem.Close=kItem.Close;
|
|
69947
|
+
kagiItem.EndItem=kItem;
|
|
69948
|
+
kagiItem.Low=kItem.Close;
|
|
69949
|
+
break;
|
|
69950
|
+
}
|
|
69685
69951
|
}
|
|
69952
|
+
|
|
69953
|
+
var changeItem=null;
|
|
69954
|
+
for(++index; index<sourceData.Data.length;++index )
|
|
69955
|
+
{
|
|
69956
|
+
var kItem=sourceData.Data[index];
|
|
69957
|
+
if (kagiItem.Direction==1) //上
|
|
69958
|
+
{
|
|
69959
|
+
if (kItem.Close>=kagiItem.High)
|
|
69960
|
+
{
|
|
69961
|
+
kagiItem.Close=kItem.Close;
|
|
69962
|
+
kagiItem.High=kItem.Close;
|
|
69963
|
+
kagiItem.EndItem=kItem;
|
|
69964
|
+
changeItem=null;
|
|
69965
|
+
}
|
|
69966
|
+
else
|
|
69967
|
+
{
|
|
69968
|
+
if (!changeItem)
|
|
69969
|
+
{
|
|
69970
|
+
changeItem=HistoryData.Copy(kItem);
|
|
69971
|
+
changeItem.High=changeItem.Low=kItem.Close;
|
|
69972
|
+
}
|
|
69973
|
+
else
|
|
69974
|
+
{
|
|
69975
|
+
changeItem.Close=kItem.Close;
|
|
69976
|
+
if (changeItem.Low>kItem.Close) changeItem.Low=kItem.Close;
|
|
69977
|
+
}
|
|
69978
|
+
|
|
69979
|
+
if (Math.abs(changeItem.Low-kagiItem.High)>brickSize) //达到变盘点
|
|
69980
|
+
{
|
|
69981
|
+
bindData.Data.push(kagiItem);
|
|
69982
|
+
|
|
69983
|
+
var newItem=HistoryData.Copy(kItem);
|
|
69984
|
+
newItem.High=kagiItem.High;
|
|
69985
|
+
newItem.Low=kItem.Close;
|
|
69986
|
+
newItem.Direction=2; //1 上 2=下
|
|
69987
|
+
newItem.StartItem=kItem;
|
|
69988
|
+
|
|
69989
|
+
kagiItem=newItem;
|
|
69990
|
+
changeItem=null;
|
|
69991
|
+
}
|
|
69992
|
+
}
|
|
69993
|
+
}
|
|
69994
|
+
else if (kagiItem.Direction==2) //下
|
|
69995
|
+
{
|
|
69996
|
+
if (kItem.Close<=kagiItem.Low)
|
|
69997
|
+
{
|
|
69998
|
+
kagiItem.Close=kItem.Close;
|
|
69999
|
+
kagiItem.Low=kItem.Close;
|
|
70000
|
+
kagiItem.EndItem=kItem;
|
|
70001
|
+
}
|
|
70002
|
+
else
|
|
70003
|
+
{
|
|
70004
|
+
if (!changeItem)
|
|
70005
|
+
{
|
|
70006
|
+
changeItem=HistoryData.Copy(kItem);
|
|
70007
|
+
changeItem.High=changeItem.Low=kItem.Close;
|
|
70008
|
+
}
|
|
70009
|
+
else
|
|
70010
|
+
{
|
|
70011
|
+
changeItem.Close=kItem.Close;
|
|
70012
|
+
if (changeItem.High<kItem.Close) changeItem.High=kItem.Close;
|
|
70013
|
+
}
|
|
70014
|
+
|
|
70015
|
+
if (Math.abs(changeItem.High-kagiItem.Low)>brickSize) //达到变盘点
|
|
70016
|
+
{
|
|
70017
|
+
bindData.Data.push(kagiItem);
|
|
70018
|
+
|
|
70019
|
+
var newItem=HistoryData.Copy(kItem);
|
|
70020
|
+
newItem.High=kItem.Close;
|
|
70021
|
+
newItem.Low=kagiItem.Low;
|
|
70022
|
+
newItem.Direction=1; //1 上 2=下
|
|
70023
|
+
newItem.StartItem=kItem;
|
|
70024
|
+
|
|
70025
|
+
kagiItem=newItem;
|
|
70026
|
+
changeItem=null;
|
|
70027
|
+
}
|
|
70028
|
+
}
|
|
70029
|
+
}
|
|
70030
|
+
}
|
|
70031
|
+
|
|
70032
|
+
return bindData;
|
|
70033
|
+
}
|
|
70034
|
+
|
|
70035
|
+
//获取配置信息
|
|
70036
|
+
this.GetTitle=function()
|
|
70037
|
+
{
|
|
70038
|
+
if (this.BrickSizeType==1)
|
|
70039
|
+
{
|
|
70040
|
+
var text=`Kagi [ATR(${this.ATR.Count}), ${this.ATR.BrickSize}]`;
|
|
70041
|
+
}
|
|
70042
|
+
else
|
|
70043
|
+
{
|
|
70044
|
+
var text=`Kagi [Traditional]`;
|
|
70045
|
+
}
|
|
70046
|
+
|
|
70047
|
+
return text;
|
|
69686
70048
|
}
|
|
69687
70049
|
}
|
|
69688
70050
|
|
|
@@ -70010,8 +70372,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
70010
70372
|
this.KLineCalculate=null; //K线定制指标计算
|
|
70011
70373
|
this.KLineCalcOption=new Map(); //K线定制指标配置
|
|
70012
70374
|
|
|
70013
|
-
this.ScrollBar=null;
|
|
70014
|
-
|
|
70375
|
+
this.ScrollBar=null; //横向滚动条
|
|
70376
|
+
this.IsAutoSyncDataOffset=true; //增量更新时,是否移动当前屏数据
|
|
70015
70377
|
|
|
70016
70378
|
this.GetKLineCalulate=function()
|
|
70017
70379
|
{
|
|
@@ -71238,15 +71600,18 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
71238
71600
|
var xPointCount=this.Frame.SubFrame[0].Frame.XPointCount; //当前一屏能显示的数据个数
|
|
71239
71601
|
|
|
71240
71602
|
var newDataCount=0;
|
|
71241
|
-
if (
|
|
71603
|
+
if (IFrameSplitOperator.IsNumber(lastDataCount))
|
|
71242
71604
|
{
|
|
71243
|
-
|
|
71244
|
-
|
|
71245
|
-
|
|
71246
|
-
|
|
71247
|
-
|
|
71248
|
-
|
|
71249
|
-
|
|
71605
|
+
if (lastDataCount>0 && hisData.Data.length>lastDataCount)
|
|
71606
|
+
{
|
|
71607
|
+
newDataCount=hisData.Data.length-lastDataCount;
|
|
71608
|
+
JSConsole.Chart.Log(`[KLineChartContainer::UpdateMainData] [count=${lastDataCount}->${hisData.Data.length}], [newDataCount=${newDataCount}], [Pagesize=${xPointCount}]`);
|
|
71609
|
+
}
|
|
71610
|
+
else if (lastDataCount==0 && hisData.Data.length>xPointCount) //历史数据为空,当前收到数据大于一屏的数据,显示最新数据
|
|
71611
|
+
{
|
|
71612
|
+
newDataCount=hisData.Data.length-xPointCount;
|
|
71613
|
+
JSConsole.Chart.Log(`[KLineChartContainer::UpdateMainData] history data is empty. [count=${lastDataCount}->${hisData.Data.length}], [newDataCount=${newDataCount}], [Pagesize=${xPointCount}]`);
|
|
71614
|
+
}
|
|
71250
71615
|
}
|
|
71251
71616
|
|
|
71252
71617
|
this.ChartPaint[0].Data=hisData;
|
|
@@ -72638,7 +73003,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
72638
73003
|
if (!this.SourceData) return;
|
|
72639
73004
|
if (!this.SourceData.MergeMinuteData(aryMinuteData)) return;
|
|
72640
73005
|
|
|
72641
|
-
JSConsole.Chart.Log(`[KLineChartContainer::RecvMinuteRealtimeDataV2] update kline by 1 minute data [${lastDataCount}->${this.SourceData.Data.length}]`);
|
|
73006
|
+
JSConsole.Chart.Log(`[KLineChartContainer::RecvMinuteRealtimeDataV2] update kline by 1 minute data [${lastDataCount}->${this.SourceData.Data.length}], IsAutoSyncDataOffset=${this.IsAutoSyncDataOffset}`);
|
|
73007
|
+
|
|
73008
|
+
if (this.IsAutoSyncDataOffset===false) lastDataCount=null; //维持当前的屏位置
|
|
72642
73009
|
|
|
72643
73010
|
var bindData=new ChartData();
|
|
72644
73011
|
bindData.Data=this.SourceData.Data;
|
|
@@ -73290,12 +73657,17 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
73290
73657
|
//删除某一个窗口的指标, bCallDestory=是否调用图形销毁函数
|
|
73291
73658
|
this.DeleteIndexPaint=function(windowIndex, bCallDestroy)
|
|
73292
73659
|
{
|
|
73293
|
-
|
|
73294
|
-
|
|
73660
|
+
if (!this.Frame.SubFrame[windowIndex]) return;
|
|
73661
|
+
var subFrame=this.Frame.SubFrame[windowIndex].Frame;
|
|
73662
|
+
if (!subFrame) return;
|
|
73663
|
+
|
|
73664
|
+
var paint=[]; //踢出当前窗口的指标画法
|
|
73665
|
+
for(var i=0;i<this.ChartPaint.length; ++i)
|
|
73295
73666
|
{
|
|
73296
|
-
|
|
73667
|
+
var item=this.ChartPaint[i];
|
|
73668
|
+
var bFind=(item.ChartFrame.Guid==subFrame.Guid || item.ChartFrame==subFrame);
|
|
73297
73669
|
|
|
73298
|
-
if (i==0 ||
|
|
73670
|
+
if (i==0 || !bFind)
|
|
73299
73671
|
{
|
|
73300
73672
|
paint.push(item);
|
|
73301
73673
|
}
|
|
@@ -73308,7 +73680,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
73308
73680
|
}
|
|
73309
73681
|
}
|
|
73310
73682
|
|
|
73311
|
-
|
|
73683
|
+
|
|
73312
73684
|
subFrame.YSpecificMaxMin=null; //清空指定最大最小值
|
|
73313
73685
|
subFrame.IsLocked=false; //解除上锁
|
|
73314
73686
|
subFrame.YSplitScale = null; //清空固定刻度
|
|
@@ -79042,6 +79414,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79042
79414
|
}
|
|
79043
79415
|
|
|
79044
79416
|
var subFrame=new SubFrameItem();
|
|
79417
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
79045
79418
|
subFrame.Frame=frame;
|
|
79046
79419
|
if (i==0)
|
|
79047
79420
|
subFrame.Height=20;
|
|
@@ -79128,6 +79501,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79128
79501
|
}
|
|
79129
79502
|
|
|
79130
79503
|
var subFrame=new SubFrameItem();
|
|
79504
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
79131
79505
|
subFrame.Frame=frame;
|
|
79132
79506
|
subFrame.Height=10;
|
|
79133
79507
|
|
|
@@ -79199,12 +79573,16 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79199
79573
|
//删除某一个窗口的指标
|
|
79200
79574
|
this.DeleteIndexPaint=function(windowIndex,bCallDestroy)
|
|
79201
79575
|
{
|
|
79202
|
-
|
|
79203
|
-
|
|
79576
|
+
var subFrame=this.Frame.SubFrame[windowIndex].Frame;
|
|
79577
|
+
if (!subFrame) return;
|
|
79578
|
+
|
|
79579
|
+
var paint=[]; //踢出当前窗口的指标画法
|
|
79580
|
+
for(var i=0;i<this.ChartPaint.length;++i)
|
|
79204
79581
|
{
|
|
79205
|
-
|
|
79582
|
+
var item=this.ChartPaint[i];
|
|
79583
|
+
var bFind=(item.ChartFrame.Guid==subFrame.Guid || item.ChartFrame==subFrame);
|
|
79206
79584
|
|
|
79207
|
-
if (i==0 ||
|
|
79585
|
+
if (i==0 || !bFind)
|
|
79208
79586
|
{
|
|
79209
79587
|
paint.push(item);
|
|
79210
79588
|
}
|
|
@@ -79218,7 +79596,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
79218
79596
|
}
|
|
79219
79597
|
|
|
79220
79598
|
//清空指定最大最小值
|
|
79221
|
-
|
|
79599
|
+
|
|
79222
79600
|
subFrame.YSpecificMaxMin=null;
|
|
79223
79601
|
subFrame.IsLocked=false; //解除上锁
|
|
79224
79602
|
subFrame.YSplitOperator.SplitType=subFrame.YSplitOperator.DefaultSplitType; //还原Y坐标分割模式
|
|
@@ -84541,6 +84919,7 @@ function KLineChartHScreenContainer(uielement)
|
|
|
84541
84919
|
}
|
|
84542
84920
|
|
|
84543
84921
|
var subFrame=new SubFrameItem();
|
|
84922
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
84544
84923
|
subFrame.Frame=frame;
|
|
84545
84924
|
if (i==0)
|
|
84546
84925
|
subFrame.Height=20;
|
|
@@ -84685,6 +85064,7 @@ function MinuteChartHScreenContainer(uielement)
|
|
|
84685
85064
|
}
|
|
84686
85065
|
|
|
84687
85066
|
var subFrame=new SubFrameItem();
|
|
85067
|
+
frame.FrameData.SubFrameItem=subFrame;
|
|
84688
85068
|
subFrame.Frame=frame;
|
|
84689
85069
|
if (i==0)
|
|
84690
85070
|
subFrame.Height=20;
|
|
@@ -130888,11 +131268,11 @@ function JSScrollBarChartContainer(uielement)
|
|
|
130888
131268
|
switch(item.Data.Type)
|
|
130889
131269
|
{
|
|
130890
131270
|
case 0:
|
|
130891
|
-
mouseStatus={ Cursor:"
|
|
131271
|
+
mouseStatus={ Cursor:"grab", Name:"SliderChart"};
|
|
130892
131272
|
break;
|
|
130893
131273
|
case 1:
|
|
130894
131274
|
case 2:
|
|
130895
|
-
mouseStatus={ Cursor:"
|
|
131275
|
+
mouseStatus={ Cursor:"col-resize", Name:"SliderChart"};
|
|
130896
131276
|
break;
|
|
130897
131277
|
}
|
|
130898
131278
|
}
|
|
@@ -130962,6 +131342,10 @@ function JSScrollBarChartContainer(uielement)
|
|
|
130962
131342
|
{
|
|
130963
131343
|
xStart=pageRange.First.XStart;
|
|
130964
131344
|
}
|
|
131345
|
+
else if (xStart>=right)
|
|
131346
|
+
{
|
|
131347
|
+
xStart=pageRange.Last.XEnd;
|
|
131348
|
+
}
|
|
130965
131349
|
|
|
130966
131350
|
this.SliderChart.XStart=xStart;
|
|
130967
131351
|
}
|
|
@@ -130971,6 +131355,10 @@ function JSScrollBarChartContainer(uielement)
|
|
|
130971
131355
|
{
|
|
130972
131356
|
xEnd=pageRange.Last.XEnd;
|
|
130973
131357
|
}
|
|
131358
|
+
else if (xEnd<=left)
|
|
131359
|
+
{
|
|
131360
|
+
xEnd=pageRange.First.XStart;
|
|
131361
|
+
}
|
|
130974
131362
|
|
|
130975
131363
|
this.SliderChart.XEnd=xEnd;
|
|
130976
131364
|
}
|
|
@@ -131515,8 +131903,9 @@ function SliderChart()
|
|
|
131515
131903
|
this.Color=g_JSChartResource.ScrollBar.Slider.BarAreaColor;
|
|
131516
131904
|
|
|
131517
131905
|
this.BarColor=g_JSChartResource.ScrollBar.Slider.BarColor;
|
|
131518
|
-
this.BarWidth=
|
|
131519
|
-
this.BarPadding=
|
|
131906
|
+
this.BarWidth=g_JSChartResource.ScrollBar.Slider.BarWidth;
|
|
131907
|
+
this.BarPadding=g_JSChartResource.ScrollBar.Slider.BarPadding; //上下留白
|
|
131908
|
+
this.MinCenterWidth=g_JSChartResource.ScrollBar.Slider.MinCenterWidth;
|
|
131520
131909
|
|
|
131521
131910
|
this.DateFont=g_JSChartResource.ScrollBar.Slider.DateFont;
|
|
131522
131911
|
this.DateColor=g_JSChartResource.ScrollBar.Slider.DateColor;
|
|
@@ -131576,6 +131965,12 @@ function SliderChart()
|
|
|
131576
131965
|
var rtBar={ Left:Math.min(xStart,xEnd), Top:top, Width:Math.abs(xEnd-xStart), Height: bottom-top};
|
|
131577
131966
|
rtBar.Right=rtBar.Left+rtBar.Width;
|
|
131578
131967
|
rtBar.Bottom=rtBar.Top+rtBar.Height;
|
|
131968
|
+
if (rtBar.Width<this.MinCenterWidth)
|
|
131969
|
+
{
|
|
131970
|
+
rtBar.Left-=(this.MinCenterWidth-rtBar.Width)/2;
|
|
131971
|
+
rtBar.Width=this.MinCenterWidth;
|
|
131972
|
+
rtBar.Right=rtBar.Left+rtBar.Width;
|
|
131973
|
+
}
|
|
131579
131974
|
this.Canvas.fillRect(rtBar.Left, rtBar.Top, rtBar.Width, rtBar.Height);
|
|
131580
131975
|
this.AryRect.push({ Rect:rtBar, Type:0});
|
|
131581
131976
|
|
|
@@ -131783,7 +132178,7 @@ function ScrollBarBGChart()
|
|
|
131783
132178
|
|
|
131784
132179
|
|
|
131785
132180
|
|
|
131786
|
-
var HQCHART_VERSION="1.1.
|
|
132181
|
+
var HQCHART_VERSION="1.1.13154";
|
|
131787
132182
|
|
|
131788
132183
|
function PrintHQChartVersion()
|
|
131789
132184
|
{
|