hqchart 1.1.14564 → 1.1.14591
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 +260 -94
- package/package.json +1 -1
- package/src/jscommon/umychart.DialogSearchIndex.js +156 -9
- package/src/jscommon/umychart.NetworkFilterTest.js +82 -1
- package/src/jscommon/umychart.PopMinuteChart.js +5 -2
- package/src/jscommon/umychart.complier.js +25 -7
- package/src/jscommon/umychart.index.data.js +178 -7
- package/src/jscommon/umychart.js +537 -16
- package/src/jscommon/umychart.testdata.js +82 -1
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +741 -31
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.NetworkFilterTest.vue.js +82 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +902 -42
|
@@ -155,7 +155,7 @@ function JSIndexScript()
|
|
|
155
155
|
['VRSI',this.VRSI],['HSCOL',this.HSCOL],['DBQRV',this.DBQRV],['DBLB',this.DBLB],
|
|
156
156
|
['ACD',this.ACD],['EXPMA',this.EXPMA],['EXPMA_S',this.EXPMA_S],['HMA',this.HMA],
|
|
157
157
|
['LMA',this.LMA],['VMA',this.VMA],['AMV',this.AMV],['BBIBOLL',this.BBIBOLL],
|
|
158
|
-
['ALLIGAT',this.ALLIGAT],['ZX',this.ZX],['XS',this.XS],['XS2',this.XS2],
|
|
158
|
+
['ALLIGAT',this.ALLIGAT],["GMMA",this.GMMA],['ZX',this.ZX],['XS',this.XS],['XS2',this.XS2],
|
|
159
159
|
['SG-XDT',this.SG_XDT],['SG-SMX',this.SG_SMX],['SG-LB',this.SG_LB],['SG-PF',this.SG_PF],
|
|
160
160
|
['RAD',this.RAD],['SHT',this.SHT],['ZLJC',this.ZLJC],['ZLMM',this.ZLMM],['SLZT',this.SLZT],
|
|
161
161
|
['ADVOL',this.ADVOL],['CYC',this.CYC],['CYS',this.CYS],['CYQKL',this.CYQKL],
|
|
@@ -167,7 +167,8 @@ function JSIndexScript()
|
|
|
167
167
|
['神奇九转', this.NineTurns],
|
|
168
168
|
['EMA', this.EMA3], ['EMA4', this.EMA4], ['EMA5', this.EMA5],['EMA6', this.EMA6],
|
|
169
169
|
["ICHIMOKU",this.ICHIMOKU],["CDP-STD", this.CDP_STD],["TBP-STD",this.TBP_STD],
|
|
170
|
-
["ADX", this.ADX],
|
|
170
|
+
["ADX", this.ADX],["SMACD", this.SMACD],["ACCER",this.ACCER],["AMO-TDX", this.AMO_TDX],
|
|
171
|
+
["WSBVOL",this.WSBVOL], ["CCYD",this.CCYD], ["CCL",this.CCL],["ABI", this.ABI],
|
|
171
172
|
|
|
172
173
|
["持仓量", this.VOL_POSITION], //成交量+持仓量
|
|
173
174
|
|
|
@@ -187,11 +188,11 @@ function JSIndexScript()
|
|
|
187
188
|
|
|
188
189
|
["两融余额", this.Margin2],["两融余额2", this.Margin3],
|
|
189
190
|
|
|
190
|
-
|
|
191
|
-
['
|
|
192
|
-
['
|
|
193
|
-
['
|
|
194
|
-
['
|
|
191
|
+
//特色指标
|
|
192
|
+
['特色指标-操盘BS点',this.FXG_BSPoint],
|
|
193
|
+
['特色指标-涨停多空线',this.FXG_INDEX],
|
|
194
|
+
['特色指标-涨停吸筹区',this.FXG_INDEX2],
|
|
195
|
+
['特色指标-量能黄金点',this.FXG_INDEX3],
|
|
195
196
|
|
|
196
197
|
//五彩K线(函数COLOR_开头)
|
|
197
198
|
['五彩K线-十字星',this.COLOR_KSTAR1],['五彩K线-早晨之星',this.COLOR_KSTAR2],['五彩K线-黄昏之星',this.COLOR_KSTAR3],['五彩K线-长十字',this.COLOR_SHI1],
|
|
@@ -752,6 +753,28 @@ MAVOL2:MA(VOLUME,M2);'
|
|
|
752
753
|
return data;
|
|
753
754
|
}
|
|
754
755
|
|
|
756
|
+
|
|
757
|
+
JSIndexScript.prototype.AMO_TDX=function()
|
|
758
|
+
{
|
|
759
|
+
let data=
|
|
760
|
+
{
|
|
761
|
+
Name:'AMO-TDX', Description:'成交金额(虚拟)', IsMainIndex:false,FloatPrecision:0,
|
|
762
|
+
Args:[ { Name:'M1', Value:5}, { Name:'M2', Value:10} ],
|
|
763
|
+
Script: //脚本
|
|
764
|
+
'TOTAL:=IF(PERIOD=1,5,IF(PERIOD=2,15,IF(PERIOD=3,30,IF(PERIOD=4,60,IF(PERIOD=5,TOTALFZNUM,1)))));\n\
|
|
765
|
+
MTIME:=MOD(FROMOPEN,TOTAL);\n\
|
|
766
|
+
CTIME:=IF(MTIME<0.5,TOTAL,MTIME);\n\
|
|
767
|
+
VAMO:=IF((CURRBARSCOUNT=1 AND DYNAINFO(8)>1),AMOUNT/10000.0*TOTAL/CTIME,DRAWNULL);\n\
|
|
768
|
+
STICKLINE((CURRBARSCOUNT=1 AND DYNAINFO(8)>1),VAMO,0,-1,-1),COLOR00C0C0;\n\
|
|
769
|
+
AMOW:AMOUNT/10000.0,VOLSTICK;\n\
|
|
770
|
+
AMO1:MA(AMOW,M1);\n\
|
|
771
|
+
AMO2:MA(AMOW,M2);'
|
|
772
|
+
|
|
773
|
+
};
|
|
774
|
+
|
|
775
|
+
return data;
|
|
776
|
+
}
|
|
777
|
+
|
|
755
778
|
JSIndexScript.prototype.RSI=function()
|
|
756
779
|
{
|
|
757
780
|
let data=
|
|
@@ -1489,6 +1512,40 @@ MACD:DIF-DEA,COLORSTICK;'
|
|
|
1489
1512
|
return data;
|
|
1490
1513
|
}
|
|
1491
1514
|
|
|
1515
|
+
JSIndexScript.prototype.SMACD = function ()
|
|
1516
|
+
{
|
|
1517
|
+
let data =
|
|
1518
|
+
{
|
|
1519
|
+
Name: 'SMACD', Description: '单线平滑异同平均线', IsMainIndex: false,
|
|
1520
|
+
Args: [{ Name: 'SHORT', Value: 12 },{ Name: 'LONG', Value: 26 },{ Name: 'MID', Value: 9 }],
|
|
1521
|
+
Script: //脚本
|
|
1522
|
+
'DIF:=EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);\n\
|
|
1523
|
+
DEA:EMA(DIF,MID);\n\
|
|
1524
|
+
MACD:DIF,COLORSTICK;'
|
|
1525
|
+
|
|
1526
|
+
};
|
|
1527
|
+
|
|
1528
|
+
return data;
|
|
1529
|
+
}
|
|
1530
|
+
|
|
1531
|
+
|
|
1532
|
+
JSIndexScript.prototype.ACCER = function ()
|
|
1533
|
+
{
|
|
1534
|
+
let data =
|
|
1535
|
+
{
|
|
1536
|
+
Name: 'ACCER', Description: '幅度涨速', IsMainIndex: false,
|
|
1537
|
+
Args: [{ Name: 'N', Value: 8 }],
|
|
1538
|
+
Script: //脚本
|
|
1539
|
+
'ACCER:SLOPE(CLOSE,N)/CLOSE;'
|
|
1540
|
+
|
|
1541
|
+
};
|
|
1542
|
+
|
|
1543
|
+
return data;
|
|
1544
|
+
}
|
|
1545
|
+
|
|
1546
|
+
|
|
1547
|
+
|
|
1548
|
+
|
|
1492
1549
|
JSIndexScript.prototype.QACD = function ()
|
|
1493
1550
|
{
|
|
1494
1551
|
let data =
|
|
@@ -1913,6 +1970,32 @@ JSIndexScript.prototype.ALLIGAT = function ()
|
|
|
1913
1970
|
return data;
|
|
1914
1971
|
}
|
|
1915
1972
|
|
|
1973
|
+
|
|
1974
|
+
JSIndexScript.prototype.GMMA = function ()
|
|
1975
|
+
{
|
|
1976
|
+
let data =
|
|
1977
|
+
{
|
|
1978
|
+
Name: 'GMMA', Description: '顾比均线', IsMainIndex: true,
|
|
1979
|
+
Args: [],
|
|
1980
|
+
Script: //脚本
|
|
1981
|
+
'MA3:EMA(CLOSE,3),COLORC08080;\n\
|
|
1982
|
+
MA5:EMA(CLOSE,5),COLORC08080;\n\
|
|
1983
|
+
MA8:EMA(CLOSE,8),COLORC08080;\n\
|
|
1984
|
+
MA10:EMA(CLOSE,10),COLORC08080;\n\
|
|
1985
|
+
MA12:EMA(CLOSE,12),COLORC08080;\n\
|
|
1986
|
+
MA15:EMA(CLOSE,15),COLORC08080;\n\
|
|
1987
|
+
MA30:EMA(CLOSE,30),COLOR0080FF;\n\
|
|
1988
|
+
MA35:EMA(CLOSE,35),COLOR0080FF;\n\
|
|
1989
|
+
MA40:EMA(CLOSE,40),COLOR0080FF;\n\
|
|
1990
|
+
MA45:EMA(CLOSE,45),COLOR0080FF;\n\
|
|
1991
|
+
MA50:EMA(CLOSE,50),COLOR0080FF;\n\
|
|
1992
|
+
MA60:EMA(CLOSE,60),COLOR0080FF;'
|
|
1993
|
+
|
|
1994
|
+
};
|
|
1995
|
+
|
|
1996
|
+
return data;
|
|
1997
|
+
}
|
|
1998
|
+
|
|
1916
1999
|
JSIndexScript.prototype.ZX = function ()
|
|
1917
2000
|
{
|
|
1918
2001
|
let data =
|
|
@@ -3949,6 +4032,94 @@ B:=REF(LLV(CLOSE,N),1);
|
|
|
3949
4032
|
}
|
|
3950
4033
|
|
|
3951
4034
|
|
|
4035
|
+
JSIndexScript.prototype.WSBVOL = function()
|
|
4036
|
+
{
|
|
4037
|
+
let data =
|
|
4038
|
+
{
|
|
4039
|
+
Name: 'WSBVOL', Description: '维斯波成交量', IsMainIndex: false,
|
|
4040
|
+
Script: //脚本
|
|
4041
|
+
`UPTJ1:=CLOSE>REF(CLOSE,1);
|
|
4042
|
+
UPTJ2:=(CLOSE==REF(CLOSE,1) && REF(CLOSE,1)>REF(CLOSE,2));
|
|
4043
|
+
UPTJ3:=MAX(OPEN,CLOSE)<REF(C,BARSLAST(CLOSE>REF(CLOSE,1))) AND MIN(OPEN,CLOSE)>REF(O,BARSLAST(CLOSE>REF(CLOSE,1)));
|
|
4044
|
+
UPTJ4:=NOT (H<REF(H,1) AND L<REF(L,1));
|
|
4045
|
+
UP:=(UPTJ1 || UPTJ2 || UPTJ3) AND UPTJ4;
|
|
4046
|
+
DOWN:=NOT(UP);
|
|
4047
|
+
M1:=BARSLASTCOUNT(UP);
|
|
4048
|
+
N1:=BARSLASTCOUNT(DOWN);
|
|
4049
|
+
CZB:=IF(M1=1 OR N1=1,2*INTPART(VOL*100/10000),INTPART(VOL*100/10000));
|
|
4050
|
+
SZ:=IF(M1>0,SUM(CZB,M1),-1*SUM(CZB,N1));
|
|
4051
|
+
GY:=IF(N1>0,SUM(CZB,N1),0);
|
|
4052
|
+
XQ:=IF(M1>0,SUM(CZB,M1),0);
|
|
4053
|
+
NOTEXT1:STICKLINE(M1>0,0,XQ,1,0),COLORRED;
|
|
4054
|
+
NOTEXT2:STICKLINE(N1>0,0,GY,1,0),COLORGREEN;
|
|
4055
|
+
WSB:SZ,NODRAW;`
|
|
4056
|
+
};
|
|
4057
|
+
|
|
4058
|
+
return data;
|
|
4059
|
+
}
|
|
4060
|
+
|
|
4061
|
+
|
|
4062
|
+
JSIndexScript.prototype.CCL = function()
|
|
4063
|
+
{
|
|
4064
|
+
let data =
|
|
4065
|
+
{
|
|
4066
|
+
Name: 'CCL', Description: '持仓量(适用于期货)', IsMainIndex: false,
|
|
4067
|
+
Script: //脚本
|
|
4068
|
+
`持仓量:VOLINSTK;
|
|
4069
|
+
成交:VOL,COLORLIRED;
|
|
4070
|
+
仓差:VOLINSTK-REF(VOLINSTK,1),NODRAW;
|
|
4071
|
+
STICKLINE(仓差>0 AND C>REF(C,1),0,仓差,2,3),COLORRED;
|
|
4072
|
+
STICKLINE(仓差>0 AND C<REF(C,1),0,仓差,2,3),COLORCYAN;
|
|
4073
|
+
STICKLINE(仓差>0 AND C=REF(C,1),0,仓差,2,3),COLORGRAY;
|
|
4074
|
+
STICKLINE(仓差<0 AND C>REF(C,1),0,仓差,2,3),COLORRED;
|
|
4075
|
+
STICKLINE(仓差<0 AND C<REF(C,1),0,仓差,2,3),COLORCYAN;
|
|
4076
|
+
STICKLINE(仓差<0 AND C=REF(C,1),0,仓差,2,3),COLORGRAY;`
|
|
4077
|
+
};
|
|
4078
|
+
|
|
4079
|
+
return data;
|
|
4080
|
+
}
|
|
4081
|
+
|
|
4082
|
+
JSIndexScript.prototype.CCYD = function()
|
|
4083
|
+
{
|
|
4084
|
+
let data =
|
|
4085
|
+
{
|
|
4086
|
+
Name: 'CCYD', Description: '持仓异动(适用于期货)', IsMainIndex: false,
|
|
4087
|
+
Script: //脚本
|
|
4088
|
+
`CCYD:=VOLINSTK-REF(VOLINSTK,1);
|
|
4089
|
+
SPYD:=C-REF(C,1);
|
|
4090
|
+
多头增仓:IF(SPYD>=0 AND CCYD>=0,ABS(CCYD),DRAWNULL),COLOR3232FF,NODRAW;
|
|
4091
|
+
空头减仓:IF(SPYD>0 AND CCYD<0,ABS(CCYD),DRAWNULL),COLOR3232FF,NODRAW;
|
|
4092
|
+
空头增仓:IF(SPYD<0 AND CCYD>=0,ABS(CCYD),DRAWNULL),COLORFFFF54,NODRAW;
|
|
4093
|
+
多头减仓:IF(SPYD<0 AND CCYD<0,ABS(CCYD),DRAWNULL),COLORFFFF54,NODRAW;
|
|
4094
|
+
STICKLINE(SPYD>=0 AND CCYD>=0,0,CCYD,3,1),COLOR3232FF;
|
|
4095
|
+
STICKLINE(SPYD>0 AND CCYD<0,CCYD,0,3,1),COLOR3232FF;
|
|
4096
|
+
STICKLINE(SPYD<0 AND CCYD>=0,CCYD,0,3,0),COLORFFFF54;
|
|
4097
|
+
STICKLINE(SPYD<0 AND CCYD<0,CCYD,0,3,0),COLORFFFF54;`
|
|
4098
|
+
};
|
|
4099
|
+
|
|
4100
|
+
return data;
|
|
4101
|
+
}
|
|
4102
|
+
|
|
4103
|
+
JSIndexScript.prototype.ABI = function()
|
|
4104
|
+
{
|
|
4105
|
+
let data =
|
|
4106
|
+
{
|
|
4107
|
+
Name: 'ABI', Description: '绝对广量指标', IsMainIndex: false,
|
|
4108
|
+
Args: [{ Name: 'N', Value: 10 }],
|
|
4109
|
+
Condition:
|
|
4110
|
+
{
|
|
4111
|
+
Period:[CONDITION_PERIOD.KLINE_DAY_ID, CONDITION_PERIOD.KLINE_WEEK_ID, CONDITION_PERIOD.KLINE_TWOWEEK_ID,
|
|
4112
|
+
CONDITION_PERIOD.KLINE_MONTH_ID, CONDITION_PERIOD.KLINE_QUARTER_ID ,CONDITION_PERIOD.KLINE_YEAR_ID ],
|
|
4113
|
+
Include:["000001.SH", "000003.SH", "000016.SH", "000300.SH", "000905.SH", "399001.SZ", " 399005.SZ", "399006.SZ"]
|
|
4114
|
+
},
|
|
4115
|
+
Script: //脚本
|
|
4116
|
+
`ABI:100*ABS(ADVANCE-DECLINE)/(ADVANCE+DECLINE);
|
|
4117
|
+
MAABI:EMA(ABI,M);`
|
|
4118
|
+
};
|
|
4119
|
+
|
|
4120
|
+
return data;
|
|
4121
|
+
}
|
|
4122
|
+
|
|
3952
4123
|
|
|
3953
4124
|
|
|
3954
4125
|
|
|
@@ -4258,6 +4429,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4258
4429
|
if (IFrameSplitOperator.IsBool(option.EnableZoomIndexWindow)) chart.EnableZoomIndexWindow=option.EnableZoomIndexWindow;
|
|
4259
4430
|
if (IFrameSplitOperator.IsBool(option.IsDrawPictureXY)) chart.IsDrawPictureXY=option.IsDrawPictureXY;
|
|
4260
4431
|
if (IFrameSplitOperator.IsNumber(option.CtrlMoveStep)) chart.CtrlMoveStep=option.CtrlMoveStep;
|
|
4432
|
+
if (IFrameSplitOperator.IsNumber(option.ShiftMoveStep)) chart.ShiftMoveStep=option.ShiftMoveStep;
|
|
4261
4433
|
if (IFrameSplitOperator.IsBool(option.EnableIndexChartDrag)) chart.EnableIndexChartDrag=option.EnableIndexChartDrag;
|
|
4262
4434
|
if (IFrameSplitOperator.IsBool(option.EnableVerifyRecvData)) chart.EnableVerifyRecvData=option.EnableVerifyRecvData;
|
|
4263
4435
|
|
|
@@ -4409,6 +4581,12 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4409
4581
|
if (IFrameSplitOperator.IsNumber(item.ZIndex)) zindex=item.ZIndex;
|
|
4410
4582
|
if (item.Enable) this.CreateExtraCanvasElement(JSChart.RectDragCanvasKey, { ZIndex:zindex }); //创建独立的区间选择画布
|
|
4411
4583
|
}
|
|
4584
|
+
|
|
4585
|
+
if (option.DragKLine)
|
|
4586
|
+
{
|
|
4587
|
+
var item=option.DragKLine;
|
|
4588
|
+
if (IFrameSplitOperator.IsBool(item.EnableShfit)) chart.KLineDragConfig.EnableShfit=item.EnableShfit;
|
|
4589
|
+
}
|
|
4412
4590
|
}
|
|
4413
4591
|
|
|
4414
4592
|
//创建子窗口
|
|
@@ -4460,6 +4638,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4460
4638
|
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
4461
4639
|
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
4462
4640
|
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
4641
|
+
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
4463
4642
|
|
|
4464
4643
|
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
4465
4644
|
|
|
@@ -4965,6 +5144,7 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4965
5144
|
if (IFrameSplitOperator.IsNumber(item.HPenType)) chart.ChartCorssCursor.HPenType=item.HPenType;
|
|
4966
5145
|
if (IFrameSplitOperator.IsNumber(item.VPenType)) chart.ChartCorssCursor.VPenType=item.VPenType;
|
|
4967
5146
|
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
5147
|
+
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
4968
5148
|
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
4969
5149
|
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
4970
5150
|
}
|
|
@@ -6468,9 +6648,6 @@ JSChart.GetfloatPrecision=function(symbol)
|
|
|
6468
6648
|
return GetfloatPrecision(symbol);
|
|
6469
6649
|
}
|
|
6470
6650
|
|
|
6471
|
-
|
|
6472
|
-
|
|
6473
|
-
|
|
6474
6651
|
var JSCHART_EVENT_ID=
|
|
6475
6652
|
{
|
|
6476
6653
|
//RECV_KLINE_MATCH:1, //接收到形态匹配
|
|
@@ -6866,10 +7043,14 @@ var JSCHART_MENU_ID=
|
|
|
6866
7043
|
CMD_CORSS_ON_VAILD_TIME_ID:50, //超出当前时间的,X轴调整到当前最后的时间(分时图)
|
|
6867
7044
|
CMD_CORSS_ON_KLINE_ID:51, //十字光标只能画在K线上
|
|
6868
7045
|
CMD_CORSS_POINT_ID:52, //十字光标圆点
|
|
7046
|
+
|
|
6869
7047
|
|
|
6870
7048
|
CMD_RBUTTON_SELECT_RECT_ID:53, //右键区间选择
|
|
6871
7049
|
CMD_LBUTTON_SELECT_RECT_ID:54, //左键区间选择
|
|
6872
|
-
CMD_ENABLE_XDRAG_BOTTOM_ID:55,
|
|
7050
|
+
CMD_ENABLE_XDRAG_BOTTOM_ID:55, //X轴拖动缩放
|
|
7051
|
+
|
|
7052
|
+
CMD_FULLSCREEN_SUMMARY_ID:56, //当前屏区间统计
|
|
7053
|
+
CMD_CORSS_DBCLICK_ID:57, //双击显示隐藏十字光标
|
|
6873
7054
|
|
|
6874
7055
|
|
|
6875
7056
|
|
|
@@ -7024,6 +7205,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7024
7205
|
this.ZoomStepPixel=5; //放大缩小手势需要的最小像素
|
|
7025
7206
|
this.TouchMoveMinAngle=70; //左右移动最小角度
|
|
7026
7207
|
this.EnableAnimation=false; //是否开启动画
|
|
7208
|
+
this.ShiftUpDownStepPixel=1*GetDevicePixelRatio(); //Shift+(up/down) 移动十字光标
|
|
7027
7209
|
|
|
7028
7210
|
//tooltip提示信息
|
|
7029
7211
|
this.Tooltip=document.createElement("div");
|
|
@@ -7124,7 +7306,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7124
7306
|
|
|
7125
7307
|
this.RestoreFocusTimer=null; //恢复焦点定时器
|
|
7126
7308
|
this.PreventRightMenu={ Timer:null, Enable:false, Delay:2000 }; //阻止右键菜单
|
|
7127
|
-
|
|
7309
|
+
|
|
7310
|
+
//SecondKeyID 1=shiftKey 2=ctrlKey 3=altKey
|
|
7311
|
+
this.AryHotKey=[]; //热键 { KeyID:87, SecondKeyID:1, CMD:JSCHART_MENU_ID.CMD_FULLSCREEN_SUMMARY_ID, Args:null, Description:"Alt+W 全屏区间统计" },
|
|
7312
|
+
|
|
7128
7313
|
this.RestoreFocus=function(delay)
|
|
7129
7314
|
{
|
|
7130
7315
|
var value=1000;
|
|
@@ -8159,6 +8344,17 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8159
8344
|
document.oncontextmenu=(e)=> { this.DocContextMenu(e); }
|
|
8160
8345
|
}
|
|
8161
8346
|
|
|
8347
|
+
|
|
8348
|
+
this.IsShfitDragKLine=function(e)
|
|
8349
|
+
{
|
|
8350
|
+
if (this.DragMode!=1) return false;
|
|
8351
|
+
if (!this.KLineDragConfig) return false;
|
|
8352
|
+
if (!this.KLineDragConfig.EnableShfit) return false;
|
|
8353
|
+
if (!e.shiftKey) return false;
|
|
8354
|
+
|
|
8355
|
+
return true;
|
|
8356
|
+
}
|
|
8357
|
+
|
|
8162
8358
|
this.DocOnMouseMove=function(e)
|
|
8163
8359
|
{
|
|
8164
8360
|
//加载数据中,禁用鼠标事件
|
|
@@ -8174,6 +8370,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8174
8370
|
var moveSetpY=Math.abs(drag.LastMove.Y-e.clientY);
|
|
8175
8371
|
var isDragSelectRect=(this.RectSelectDrag && this.RectSelectDrag.Index>=0);
|
|
8176
8372
|
var isDragSubSelectRect=(this.RectSelectDrag && this.RectSelectDrag.Type==4);
|
|
8373
|
+
var bShfitDragKLine=this.IsShfitDragKLine(e); //shift+鼠标移动K线
|
|
8177
8374
|
if (drag.CurrentMove)
|
|
8178
8375
|
{
|
|
8179
8376
|
drag.CurrentMove.X=e.clientX;
|
|
@@ -8281,7 +8478,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8281
8478
|
{
|
|
8282
8479
|
this.OnDragXCoordinateZoom(drag, {X:moveSetp, Y:moveSetpY}, e);
|
|
8283
8480
|
}
|
|
8284
|
-
else if ((bLButtonSelectRect || bRButtonSelectRect) && !isDragSelectRect && !isDragSubSelectRect) //左右键区间选择
|
|
8481
|
+
else if ((bLButtonSelectRect || bRButtonSelectRect) && !isDragSelectRect && !isDragSubSelectRect && !bShfitDragKLine) //左右键区间选择
|
|
8285
8482
|
{
|
|
8286
8483
|
var yMoveSetp=Math.abs(drag.LastMove.Y-e.clientY);
|
|
8287
8484
|
|
|
@@ -8393,6 +8590,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8393
8590
|
var isLeft=true;
|
|
8394
8591
|
if (drag.LastMove.X<e.clientX) isLeft=false;//右移数据
|
|
8395
8592
|
|
|
8593
|
+
//按住shift才能移动K线
|
|
8594
|
+
if (this.KLineDragConfig && this.KLineDragConfig.EnableShfit && !e.shiftKey) return;
|
|
8595
|
+
|
|
8396
8596
|
var cursorStatus="pointer";
|
|
8397
8597
|
var oneStepWidth=this.GetMoveOneStepWidth();
|
|
8398
8598
|
if (moveSetp<oneStepWidth)
|
|
@@ -8490,6 +8690,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8490
8690
|
var isDragSelectRect=(this.RectSelectDrag && this.RectSelectDrag.Index>=0);
|
|
8491
8691
|
var isDragSubSelectRect=(this.RectSelectDrag && this.RectSelectDrag.Type==4);
|
|
8492
8692
|
var bClearDrawPicture=true;
|
|
8693
|
+
var bShfitDragKLine=this.IsShfitDragKLine(e);
|
|
8493
8694
|
if (this.CurrentChartDrawPicture)
|
|
8494
8695
|
{
|
|
8495
8696
|
var drawPicture=this.CurrentChartDrawPicture;
|
|
@@ -8532,7 +8733,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8532
8733
|
{
|
|
8533
8734
|
if (this.OnMinuteSelectRectMouseUp) this.OnMinuteSelectRectMouseUp(e); //分时图区间选择
|
|
8534
8735
|
}
|
|
8535
|
-
else if (bLButtonSelectRect || bRButtonSelectRect) //K线图区间选择
|
|
8736
|
+
else if ((bLButtonSelectRect || bRButtonSelectRect) && !bShfitDragKLine) //K线图区间选择
|
|
8536
8737
|
{
|
|
8537
8738
|
var drag=this.MouseDrag;
|
|
8538
8739
|
drag.LastMove.X=e.clientX;
|
|
@@ -9821,6 +10022,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
9821
10022
|
item.Draw();
|
|
9822
10023
|
}
|
|
9823
10024
|
|
|
10025
|
+
this.DrawExtendChartPaint(IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_5);
|
|
10026
|
+
|
|
9824
10027
|
if (this.Frame.DrawOveraly)
|
|
9825
10028
|
this.Frame.DrawOveraly(true); //画叠加指标
|
|
9826
10029
|
|
|
@@ -9844,9 +10047,14 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
9844
10047
|
item.Draw();
|
|
9845
10048
|
}
|
|
9846
10049
|
|
|
10050
|
+
this.DrawExtendChartPaint(IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_8);
|
|
10051
|
+
|
|
9847
10052
|
if (this.Frame.DrawOveraly)
|
|
9848
10053
|
this.Frame.DrawOveraly(false); //画叠加指标
|
|
9849
10054
|
|
|
10055
|
+
this.DrawExtendChartPaint(IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_10);
|
|
10056
|
+
|
|
10057
|
+
/*
|
|
9850
10058
|
//固定扩展图形
|
|
9851
10059
|
for(var i=0;i<this.ExtendChartPaint.length;++i)
|
|
9852
10060
|
{
|
|
@@ -9855,6 +10063,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
9855
10063
|
if (item.DrawAfterPicture) continue;
|
|
9856
10064
|
if (!item.IsDynamic && item.IsAnimation==false) item.Draw();
|
|
9857
10065
|
}
|
|
10066
|
+
*/
|
|
9858
10067
|
|
|
9859
10068
|
if (this.Frame.DrawInsideHorizontal) this.Frame.DrawInsideHorizontal();
|
|
9860
10069
|
this.KLineIncreaseCustomHorizontal();
|
|
@@ -9883,6 +10092,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
9883
10092
|
|
|
9884
10093
|
var moveonPoint=null;
|
|
9885
10094
|
if (this.LastMouseStatus && this.LastMouseStatus.MoveOnPoint) moveonPoint=this.LastMouseStatus.MoveOnPoint;
|
|
10095
|
+
|
|
10096
|
+
this.DrawExtendChartPaint(IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_20, { MoveonPoint:moveonPoint} );
|
|
10097
|
+
|
|
10098
|
+
/*
|
|
9886
10099
|
for(var i=0;i<this.ExtendChartPaint.length;++i) //动态扩展图形
|
|
9887
10100
|
{
|
|
9888
10101
|
var item=this.ExtendChartPaint[i];
|
|
@@ -9894,6 +10107,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
9894
10107
|
if (item.DrawToolbar) item.DrawToolbar(moveonPoint);
|
|
9895
10108
|
}
|
|
9896
10109
|
}
|
|
10110
|
+
*/
|
|
9897
10111
|
|
|
9898
10112
|
for(var i=0;i<this.ChartDrawPicture.length;++i)
|
|
9899
10113
|
{
|
|
@@ -9983,6 +10197,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
9983
10197
|
item.Draw(moveonPoint, this.LastMouseStatus);
|
|
9984
10198
|
}
|
|
9985
10199
|
|
|
10200
|
+
this.DrawExtendChartPaint(IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25);
|
|
10201
|
+
/*
|
|
9986
10202
|
for(var i=0;i<this.ExtendChartPaint.length;++i) //动态扩展图形
|
|
9987
10203
|
{
|
|
9988
10204
|
var item=this.ExtendChartPaint[i];
|
|
@@ -9990,7 +10206,11 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
9990
10206
|
if (item.DrawAfterPicture) continue;
|
|
9991
10207
|
if (item.IsDynamic && item.DrawAfterTitle===true && item.IsAnimation==false) item.Draw();
|
|
9992
10208
|
}
|
|
10209
|
+
*/
|
|
9993
10210
|
|
|
10211
|
+
if (this.EnableAnimation) this.DrawExtendChartPaint(IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_30);
|
|
10212
|
+
|
|
10213
|
+
/*
|
|
9994
10214
|
if (this.EnableAnimation)
|
|
9995
10215
|
{
|
|
9996
10216
|
for(var i=0;i<this.ExtendChartPaint.length;++i) //动画
|
|
@@ -9999,6 +10219,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
9999
10219
|
if (item.IsAnimation===true) item.Draw();
|
|
10000
10220
|
}
|
|
10001
10221
|
}
|
|
10222
|
+
*/
|
|
10002
10223
|
|
|
10003
10224
|
for(var i=0;i<this.ChartDrawPicture.length;++i)
|
|
10004
10225
|
{
|
|
@@ -10017,12 +10238,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10017
10238
|
this.CurrentChartDrawPicture.Draw();
|
|
10018
10239
|
}
|
|
10019
10240
|
|
|
10241
|
+
this.DrawExtendChartPaint(IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_50);
|
|
10242
|
+
/*
|
|
10020
10243
|
for(var i=0;i<this.ExtendChartPaint.length;++i) //画图工具绘制完成以后 动态扩展图形
|
|
10021
10244
|
{
|
|
10022
10245
|
var item=this.ExtendChartPaint[i];
|
|
10023
10246
|
if (item.DrawAfterPicture)
|
|
10024
10247
|
item.Draw();
|
|
10025
10248
|
}
|
|
10249
|
+
*/
|
|
10026
10250
|
|
|
10027
10251
|
this.OffscreenToShowCanvas();
|
|
10028
10252
|
|
|
@@ -10051,6 +10275,45 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10051
10275
|
++this.TouchDrawCount;
|
|
10052
10276
|
}
|
|
10053
10277
|
|
|
10278
|
+
this.DrawExtendChartPaint=function(level, option)
|
|
10279
|
+
{
|
|
10280
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.ExtendChartPaint)) return;
|
|
10281
|
+
|
|
10282
|
+
//扩展图形
|
|
10283
|
+
for(var i=0;i<this.ExtendChartPaint.length;++i)
|
|
10284
|
+
{
|
|
10285
|
+
var item=this.ExtendChartPaint[i];
|
|
10286
|
+
if (item.IsCallbackDraw) continue;
|
|
10287
|
+
|
|
10288
|
+
var value=item.GetPriority(); //绘图优先级
|
|
10289
|
+
if (value!=level) continue;
|
|
10290
|
+
|
|
10291
|
+
if (level==IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_20)
|
|
10292
|
+
{
|
|
10293
|
+
item.Draw();
|
|
10294
|
+
if (item.DrawToolbar && option) item.DrawToolbar(option.MoveonPoint, option.LastMouseStatus);
|
|
10295
|
+
}
|
|
10296
|
+
else if (level==IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25 && option)
|
|
10297
|
+
{
|
|
10298
|
+
if (item.ClassName=='KLineTooltipPaint' && option)
|
|
10299
|
+
{
|
|
10300
|
+
if (option.Tooltip==false) continue;
|
|
10301
|
+
if (option.Point) item.LatestPoint=option.Point;
|
|
10302
|
+
}
|
|
10303
|
+
else if (item.ClassName=="MinuteTooltipPaint" && option)
|
|
10304
|
+
{
|
|
10305
|
+
if (option.Point) item.LatestPoint=option.Point;
|
|
10306
|
+
}
|
|
10307
|
+
|
|
10308
|
+
item.Draw(option.MoveonPoint, option.LastMouseStatus);
|
|
10309
|
+
}
|
|
10310
|
+
else
|
|
10311
|
+
{
|
|
10312
|
+
item.Draw();
|
|
10313
|
+
}
|
|
10314
|
+
}
|
|
10315
|
+
}
|
|
10316
|
+
|
|
10054
10317
|
this.PtInButton=function(x, y)
|
|
10055
10318
|
{
|
|
10056
10319
|
var button=this.Frame.PtInButtons(x,y);
|
|
@@ -10363,6 +10626,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10363
10626
|
|
|
10364
10627
|
var moveonPoint=null;
|
|
10365
10628
|
if (this.LastMouseStatus && this.LastMouseStatus.MoveOnPoint) moveonPoint=this.LastMouseStatus.MoveOnPoint;
|
|
10629
|
+
|
|
10630
|
+
this.DrawExtendChartPaint(IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_20, { MoveonPoint:moveonPoint, LastMouseStatus:this.LastMouseStatus } );
|
|
10631
|
+
|
|
10632
|
+
/*
|
|
10366
10633
|
for(var i=0;i<this.ExtendChartPaint.length;++i) //动态扩展图形
|
|
10367
10634
|
{
|
|
10368
10635
|
var item=this.ExtendChartPaint[i];
|
|
@@ -10374,6 +10641,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10374
10641
|
if (item.DrawToolbar) item.DrawToolbar(moveonPoint, this.LastMouseStatus);
|
|
10375
10642
|
}
|
|
10376
10643
|
}
|
|
10644
|
+
*/
|
|
10377
10645
|
|
|
10378
10646
|
for(var i=0;i<this.ChartDrawPicture.length;++i)
|
|
10379
10647
|
{
|
|
@@ -10472,6 +10740,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10472
10740
|
item.Draw(moveonPoint, this.LastMouseStatus);
|
|
10473
10741
|
}
|
|
10474
10742
|
|
|
10743
|
+
|
|
10744
|
+
var exChartOption={ MoveonPoint:moveonPoint, LastMouseStatus:this.LastMouseStatus };
|
|
10745
|
+
if (option)
|
|
10746
|
+
{
|
|
10747
|
+
exChartOption.Tooltip=option.Tooltip;
|
|
10748
|
+
exChartOption.Point=option.Point;
|
|
10749
|
+
}
|
|
10750
|
+
this.DrawExtendChartPaint(IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25,exChartOption);
|
|
10751
|
+
/*
|
|
10475
10752
|
for(var i=0;i<this.ExtendChartPaint.length;++i) //动态扩展图形 在动态标题以后画
|
|
10476
10753
|
{
|
|
10477
10754
|
var item=this.ExtendChartPaint[i];
|
|
@@ -10489,7 +10766,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10489
10766
|
|
|
10490
10767
|
if (item.IsDynamic && item.DrawAfterTitle===true) item.Draw(moveonPoint, this.LastMouseStatus);
|
|
10491
10768
|
}
|
|
10769
|
+
*/
|
|
10492
10770
|
|
|
10771
|
+
if (this.EnableAnimation) this.DrawExtendChartPaint(IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_30);
|
|
10772
|
+
/*
|
|
10493
10773
|
if (this.EnableAnimation)
|
|
10494
10774
|
{
|
|
10495
10775
|
for(var i=0;i<this.ExtendChartPaint.length;++i) //动画
|
|
@@ -10498,6 +10778,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10498
10778
|
if (item.IsAnimation===true) item.Draw();
|
|
10499
10779
|
}
|
|
10500
10780
|
}
|
|
10781
|
+
*/
|
|
10501
10782
|
|
|
10502
10783
|
for(var i=0;i<this.ChartDrawPicture.length;++i)
|
|
10503
10784
|
{
|
|
@@ -10519,12 +10800,15 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10519
10800
|
this.CurrentChartDrawPicture.Draw();
|
|
10520
10801
|
}
|
|
10521
10802
|
|
|
10803
|
+
this.DrawExtendChartPaint(IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_50);
|
|
10804
|
+
/*
|
|
10522
10805
|
for(var i=0;i<this.ExtendChartPaint.length;++i) //动态扩展图形
|
|
10523
10806
|
{
|
|
10524
10807
|
var item=this.ExtendChartPaint[i];
|
|
10525
10808
|
if (item.DrawAfterPicture)
|
|
10526
10809
|
item.Draw();
|
|
10527
10810
|
}
|
|
10811
|
+
*/
|
|
10528
10812
|
|
|
10529
10813
|
if (this.LastMouseStatus.MouseOnToolbar) //工具栏按钮提示信息
|
|
10530
10814
|
{
|
|
@@ -10951,6 +11235,40 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10951
11235
|
this.UIElement.style.cursor=obj.Cursor;
|
|
10952
11236
|
}
|
|
10953
11237
|
|
|
11238
|
+
this.OnHotKeyDown=function(keyID, e) //热键触发
|
|
11239
|
+
{
|
|
11240
|
+
var item=this.FindHotKey(keyID,e);
|
|
11241
|
+
if (!item) return false;
|
|
11242
|
+
|
|
11243
|
+
this.ExecuteMenuCommand(item.CMD, item.Args);
|
|
11244
|
+
return true;
|
|
11245
|
+
}
|
|
11246
|
+
|
|
11247
|
+
this.FindHotKey=function(keyID, e)
|
|
11248
|
+
{
|
|
11249
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.AryHotKey)) return null;
|
|
11250
|
+
|
|
11251
|
+
for(var i=0;i<this.AryHotKey.length;++i)
|
|
11252
|
+
{
|
|
11253
|
+
var item=this.AryHotKey[i];
|
|
11254
|
+
if (keyID==item.KeyID)
|
|
11255
|
+
{
|
|
11256
|
+
//SecondKeyID 1=shiftKey 2=ctrlKey 3=altKey
|
|
11257
|
+
if ((item.SecondKeyID==1 && e.shiftKey) || (item.SecondKeyID==2 && e.ctrlKey) || (item.SecondKeyID==3 && e.altKey))
|
|
11258
|
+
return item;
|
|
11259
|
+
}
|
|
11260
|
+
}
|
|
11261
|
+
|
|
11262
|
+
return null;
|
|
11263
|
+
}
|
|
11264
|
+
|
|
11265
|
+
this.IsHotKey=function(keyID, e)
|
|
11266
|
+
{
|
|
11267
|
+
var item=this.FindHotKey(keyID,e);
|
|
11268
|
+
if (!item) return false;
|
|
11269
|
+
return true;
|
|
11270
|
+
}
|
|
11271
|
+
|
|
10954
11272
|
this.OnKeyDown=function(e)
|
|
10955
11273
|
{
|
|
10956
11274
|
if (this.ChartSplashPaint && this.ChartSplashPaint.IsEnableSplash == true) return;
|
|
@@ -10967,22 +11285,35 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10967
11285
|
}
|
|
10968
11286
|
|
|
10969
11287
|
var draw=false;
|
|
10970
|
-
if (this.
|
|
11288
|
+
if (keyID==27 && this.PopMinuteChart && this.PopMinuteChart.IsShow())
|
|
11289
|
+
{
|
|
11290
|
+
this.PopMinuteChart.Close();
|
|
11291
|
+
draw=true;
|
|
11292
|
+
}
|
|
11293
|
+
else if (this.ChartCorssCursor && this.ChartCorssCursor.OnKeyDown) //十字光标 隐藏显示
|
|
10971
11294
|
{
|
|
10972
11295
|
var sendData={ e:e, KeyID:keyID, Draw:false, PreventDefault:false };
|
|
10973
11296
|
this.ChartCorssCursor.OnKeyDown(sendData);
|
|
10974
11297
|
draw=sendData.Draw;
|
|
10975
11298
|
}
|
|
10976
11299
|
|
|
11300
|
+
if (this.OnHotKeyDown(keyID, e))
|
|
11301
|
+
{
|
|
11302
|
+
//不让滚动条滚动
|
|
11303
|
+
if(e.preventDefault) e.preventDefault();
|
|
11304
|
+
else e.returnValue = false;
|
|
11305
|
+
return;
|
|
11306
|
+
}
|
|
11307
|
+
|
|
10977
11308
|
switch(keyID)
|
|
10978
11309
|
{
|
|
10979
11310
|
case 37: //left
|
|
10980
|
-
if (e.ctrlKey && this.OnCustomKeyDown)
|
|
11311
|
+
if ((e.ctrlKey||e.shiftKey) && this.OnCustomKeyDown)
|
|
10981
11312
|
{
|
|
10982
11313
|
if (this.OnCustomKeyDown(keyID, e))
|
|
10983
11314
|
break;
|
|
10984
11315
|
}
|
|
10985
|
-
|
|
11316
|
+
|
|
10986
11317
|
if (this.CursorIndex<=0.99999)
|
|
10987
11318
|
{
|
|
10988
11319
|
if (!this.DataMoveLeft())
|
|
@@ -11007,7 +11338,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11007
11338
|
}
|
|
11008
11339
|
break;
|
|
11009
11340
|
case 39: //right
|
|
11010
|
-
if (e.ctrlKey && this.OnCustomKeyDown)
|
|
11341
|
+
if ((e.ctrlKey|| e.shiftKey) && this.OnCustomKeyDown)
|
|
11011
11342
|
{
|
|
11012
11343
|
if (this.OnCustomKeyDown(keyID, e))
|
|
11013
11344
|
break;
|
|
@@ -11043,8 +11374,14 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11043
11374
|
}
|
|
11044
11375
|
break;
|
|
11045
11376
|
case 38: //up
|
|
11377
|
+
if ((e.ctrlKey||e.shiftKey) && this.OnCustomKeyDown)
|
|
11378
|
+
{
|
|
11379
|
+
if (this.OnCustomKeyDown(keyID, e))
|
|
11380
|
+
break;
|
|
11381
|
+
}
|
|
11046
11382
|
if (this.EnableZoomUpDown && this.EnableZoomUpDown.Keyboard===false) break;
|
|
11047
11383
|
var cursorIndex={ ZoomType:this.ZoomType, IsLockRight:this.IsZoomLockRight };
|
|
11384
|
+
if (e.ctrlKey) cursorIndex.ZoomType=1; //ctrl 十字中心缩放
|
|
11048
11385
|
cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));
|
|
11049
11386
|
if (!this.Frame.ZoomUp(cursorIndex)) break;
|
|
11050
11387
|
this.CursorIndex=cursorIndex.Index;
|
|
@@ -11057,8 +11394,14 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11057
11394
|
this.OnKLinePageChange("keydown");
|
|
11058
11395
|
break;
|
|
11059
11396
|
case 40: //down
|
|
11397
|
+
if ((e.ctrlKey||e.shiftKey) && this.OnCustomKeyDown)
|
|
11398
|
+
{
|
|
11399
|
+
if (this.OnCustomKeyDown(keyID, e))
|
|
11400
|
+
break;
|
|
11401
|
+
}
|
|
11060
11402
|
if (this.EnableZoomUpDown && this.EnableZoomUpDown.Keyboard===false) break;
|
|
11061
11403
|
var cursorIndex={ ZoomType:this.ZoomType ,IsLockRight:this.IsZoomLockRight };
|
|
11404
|
+
if (e.ctrlKey) cursorIndex.ZoomType=1; //ctrl 十字中心缩放
|
|
11062
11405
|
cursorIndex.Index=parseInt(Math.abs(this.CursorIndex-0.5).toFixed(0));
|
|
11063
11406
|
if (!this.Frame.ZoomDown(cursorIndex, { ZoomDownloadDataCallback:(requestData)=>{ this.ZoomDownloadData(requestData) } })) break;
|
|
11064
11407
|
|
|
@@ -11111,6 +11454,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11111
11454
|
this.CurrentChartDrawPicture=null;
|
|
11112
11455
|
}
|
|
11113
11456
|
break;
|
|
11457
|
+
case 13: //回车
|
|
11458
|
+
if (this.OnCustomKeyDown) this.OnCustomKeyDown(keyID, e);
|
|
11459
|
+
break;
|
|
11114
11460
|
default:
|
|
11115
11461
|
return;
|
|
11116
11462
|
}
|
|
@@ -11124,7 +11470,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11124
11470
|
|
|
11125
11471
|
this.OnDoubleClick=function(x,y,e)
|
|
11126
11472
|
{
|
|
11127
|
-
|
|
11473
|
+
|
|
11128
11474
|
}
|
|
11129
11475
|
|
|
11130
11476
|
this.ZoomIndexWindow=function(frameID, option) //最大化/最小化指标窗口
|
|
@@ -13069,6 +13415,43 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
13069
13415
|
return width;
|
|
13070
13416
|
}
|
|
13071
13417
|
|
|
13418
|
+
this.GetChartPaintByClassName=function(name)
|
|
13419
|
+
{
|
|
13420
|
+
var aryData=[];
|
|
13421
|
+
for(var i=0;i<this.ChartPaint.length;++i)
|
|
13422
|
+
{
|
|
13423
|
+
var item=this.ChartPaint[i];
|
|
13424
|
+
if (item.ClassName==name)
|
|
13425
|
+
{
|
|
13426
|
+
var frameID=null;
|
|
13427
|
+
if (item.ChartFrame) frameID=item.ChartFrame.Identify;
|
|
13428
|
+
aryData.push({ IsOverlay:false, Chart:item, FrameID:frameID });
|
|
13429
|
+
}
|
|
13430
|
+
}
|
|
13431
|
+
|
|
13432
|
+
for(var i=0;i<this.Frame.SubFrame.length;++i)
|
|
13433
|
+
{
|
|
13434
|
+
var subItem=this.Frame.SubFrame[i];
|
|
13435
|
+
if (!subItem) continue;
|
|
13436
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(subItem.OverlayIndex)) continue;
|
|
13437
|
+
|
|
13438
|
+
for(var j=0;j<subItem.OverlayIndex.length;++j)
|
|
13439
|
+
{
|
|
13440
|
+
var item=subItem.OverlayIndex[j];
|
|
13441
|
+
for(var k=0;k<item.ChartPaint.length;++k)
|
|
13442
|
+
{
|
|
13443
|
+
var chartItem=item.ChartPaint[k];
|
|
13444
|
+
if (chartItem.ClassName==name)
|
|
13445
|
+
{
|
|
13446
|
+
aryData.push({ IsOverlay:true, Chart:chartItem, FrameID:subItem.Frame.Identify, SubFrameID:j });
|
|
13447
|
+
}
|
|
13448
|
+
}
|
|
13449
|
+
}
|
|
13450
|
+
}
|
|
13451
|
+
|
|
13452
|
+
return aryData;
|
|
13453
|
+
}
|
|
13454
|
+
|
|
13072
13455
|
//删除扩展画法
|
|
13073
13456
|
this.DeleteExtendChart=function(data)
|
|
13074
13457
|
{
|
|
@@ -14443,6 +14826,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
14443
14826
|
case JSCHART_MENU_ID.CMD_CORSS_POINT_ID:
|
|
14444
14827
|
if (IFrameSplitOperator.IsBool(srcParam) && this.ChartCorssCursor) this.ChartCorssCursor.CorssPointConfig.Enable=srcParam;
|
|
14445
14828
|
break;
|
|
14829
|
+
case JSCHART_MENU_ID.CMD_CORSS_DBCLICK_ID:
|
|
14830
|
+
if (IFrameSplitOperator.IsBool(srcParam) && this.ChartCorssCursor) this.ChartCorssCursor.EnableDBClick=srcParam;
|
|
14831
|
+
break;
|
|
14446
14832
|
case JSCHART_MENU_ID.CMD_RBUTTON_SELECT_RECT_ID:
|
|
14447
14833
|
if (IFrameSplitOperator.IsBool(srcParam) && this.ChartDragSelectRect) this.ChartDragSelectRect.EnableRButton=srcParam;
|
|
14448
14834
|
break;
|
|
@@ -14452,6 +14838,9 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
14452
14838
|
case JSCHART_MENU_ID.CMD_ENABLE_XDRAG_BOTTOM_ID:
|
|
14453
14839
|
if (IFrameSplitOperator.IsBool(srcParam)) this.EnableXDrag.Bottom=srcParam;
|
|
14454
14840
|
break;
|
|
14841
|
+
case JSCHART_MENU_ID.CMD_FULLSCREEN_SUMMARY_ID:
|
|
14842
|
+
this.FullScreenSummary();
|
|
14843
|
+
break;
|
|
14455
14844
|
}
|
|
14456
14845
|
}
|
|
14457
14846
|
|
|
@@ -15008,6 +15397,63 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
15008
15397
|
this.Draw();
|
|
15009
15398
|
}
|
|
15010
15399
|
}
|
|
15400
|
+
|
|
15401
|
+
this.MoveCorssCursorUp=function(step)
|
|
15402
|
+
{
|
|
15403
|
+
if (!IFrameSplitOperator.IsNumber(this.LastPoint.Y)) return;
|
|
15404
|
+
var border=this.Frame.ChartBorder.GetBorder();
|
|
15405
|
+
var top=border.TopEx;
|
|
15406
|
+
if (this.LastPoint.Y-step<=top) return;
|
|
15407
|
+
|
|
15408
|
+
this.LastPoint.Y-=step;
|
|
15409
|
+
this.DrawDynamicInfo();
|
|
15410
|
+
}
|
|
15411
|
+
|
|
15412
|
+
this.MoveCorssCursorDown=function(step)
|
|
15413
|
+
{
|
|
15414
|
+
if (!IFrameSplitOperator.IsNumber(this.LastPoint.Y)) return;
|
|
15415
|
+
var border=this.Frame.ChartBorder.GetBorder();
|
|
15416
|
+
var border=this.Frame.ChartBorder.GetBorder();
|
|
15417
|
+
var bottom=border.BottomEx;
|
|
15418
|
+
if (this.LastPoint.Y+step>=bottom) return;
|
|
15419
|
+
|
|
15420
|
+
this.LastPoint.Y+=step;
|
|
15421
|
+
this.DrawDynamicInfo();
|
|
15422
|
+
}
|
|
15423
|
+
|
|
15424
|
+
//整屏区间统计
|
|
15425
|
+
this.FullScreenSummary=function()
|
|
15426
|
+
{
|
|
15427
|
+
var kData=this.GetKData();
|
|
15428
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false;
|
|
15429
|
+
|
|
15430
|
+
var paint=this.GetRectSelectPaint();
|
|
15431
|
+
if (!paint) return false;
|
|
15432
|
+
|
|
15433
|
+
var xPointcount=0;
|
|
15434
|
+
if (this.Frame.XPointCount) xPointcount=this.Frame.XPointCount;
|
|
15435
|
+
else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;
|
|
15436
|
+
if (!IFrameSplitOperator.IsPlusNumber(xPointcount)) return false;
|
|
15437
|
+
|
|
15438
|
+
var startIndex=kData.DataOffset;
|
|
15439
|
+
var endIndex=startIndex+xPointcount;
|
|
15440
|
+
this.UpdateSelectRect(startIndex, endIndex);
|
|
15441
|
+
|
|
15442
|
+
var selectData=paint.GetSelectRectData();
|
|
15443
|
+
var border=this.Frame.SubFrame[0].Frame.GetBorder();
|
|
15444
|
+
|
|
15445
|
+
var data=
|
|
15446
|
+
{
|
|
15447
|
+
X:border.ChartWidth/2, Y:border.ChartHeight/2,
|
|
15448
|
+
SelectData:selectData, //区间选择的数据
|
|
15449
|
+
RectSelectPaint:paint //区间选择背景
|
|
15450
|
+
}
|
|
15451
|
+
|
|
15452
|
+
var e={ data:data };
|
|
15453
|
+
if (this.DialogSelectRect) this.DrawSelectRectDialog(e);
|
|
15454
|
+
|
|
15455
|
+
return true;
|
|
15456
|
+
}
|
|
15011
15457
|
}
|
|
15012
15458
|
|
|
15013
15459
|
function GetDevicePixelRatio()
|
|
@@ -46655,7 +47101,7 @@ function ChartMultiSVGIconV2()
|
|
|
46655
47101
|
if (IFrameSplitOperator.IsString(item.Value)) value=this.GetKValue(kItem,item.Value);
|
|
46656
47102
|
if (!IFrameSplitOperator.IsNumber(value)) continue;
|
|
46657
47103
|
|
|
46658
|
-
var y=this.ChartFrame.GetYFromData(
|
|
47104
|
+
var y=this.ChartFrame.GetYFromData(value,false);
|
|
46659
47105
|
|
|
46660
47106
|
if (item.Image)
|
|
46661
47107
|
{
|
|
@@ -49065,12 +49511,34 @@ function IExtendChartPainting()
|
|
|
49065
49511
|
this.IsCallbackDraw=false; //在回调函数里绘制, 不在Draw()中绘制
|
|
49066
49512
|
this.ID=Guid();
|
|
49067
49513
|
|
|
49514
|
+
this.DrawPriority=null; //绘图优先级
|
|
49515
|
+
|
|
49068
49516
|
//上下左右间距
|
|
49069
49517
|
this.Left=5;
|
|
49070
49518
|
this.Right=5;
|
|
49071
49519
|
this.Top=5;
|
|
49072
49520
|
this.Bottom=5;
|
|
49073
49521
|
|
|
49522
|
+
|
|
49523
|
+
this.GetPriority=function()
|
|
49524
|
+
{
|
|
49525
|
+
if (IFrameSplitOperator.IsNumber(this.DrawPriority)) return this.DrawPriority; //新版本
|
|
49526
|
+
|
|
49527
|
+
//老版本转换
|
|
49528
|
+
|
|
49529
|
+
if (!this.IsDynamic && !this.DrawAfterPicture) return IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_10;
|
|
49530
|
+
|
|
49531
|
+
if (this.DrawAfterTitle===false && this.IsAnimation==false) return IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_20;
|
|
49532
|
+
|
|
49533
|
+
if (this.DrawAfterTitle===true) return IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25;
|
|
49534
|
+
|
|
49535
|
+
if (this.IsAnimation===true) return IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_35;
|
|
49536
|
+
|
|
49537
|
+
if (this.DrawAfterPicture===true) IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_50;
|
|
49538
|
+
|
|
49539
|
+
return IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_50
|
|
49540
|
+
}
|
|
49541
|
+
|
|
49074
49542
|
this.Draw=function()
|
|
49075
49543
|
{
|
|
49076
49544
|
|
|
@@ -49107,6 +49575,23 @@ function IExtendChartPainting()
|
|
|
49107
49575
|
}
|
|
49108
49576
|
}
|
|
49109
49577
|
|
|
49578
|
+
//绘图优先级
|
|
49579
|
+
IExtendChartPainting.DRAW_PRIORITY_ID=
|
|
49580
|
+
{
|
|
49581
|
+
LEVEL_1:1,
|
|
49582
|
+
LEVEL_5:5, // 叠加指数图形前面 指标图形 IsDrawFirst=true
|
|
49583
|
+
LEVEL_8:8, // 叠加指数图形前面 指标图形 IsDrawFirst=false
|
|
49584
|
+
LEVEL_10:10, // IsDynamic=false
|
|
49585
|
+
|
|
49586
|
+
LEVEL_20:20, // IsDynamic=true
|
|
49587
|
+
|
|
49588
|
+
LEVEL_25:25, // DrawAfterTitle=true 标题栏绘制完成以后
|
|
49589
|
+
|
|
49590
|
+
LEVEL_35:35, // IsAnimation=true
|
|
49591
|
+
|
|
49592
|
+
LEVEL_50:50, // DrawAfterPicture=true; 是否在画图工具以后绘制
|
|
49593
|
+
}
|
|
49594
|
+
|
|
49110
49595
|
//K线Tooltip, 显示在左边或右边
|
|
49111
49596
|
function KLineTooltipPaint()
|
|
49112
49597
|
{
|
|
@@ -49126,6 +49611,7 @@ function KLineTooltipPaint()
|
|
|
49126
49611
|
this.AmountColor=g_JSChartResource.TooltipPaint.AmountColor; //成交金额
|
|
49127
49612
|
this.LatestPoint; //手势位置
|
|
49128
49613
|
this.ShowPosition=0; //显示位置 0=左 1=右
|
|
49614
|
+
this.DrawPriority=IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25;
|
|
49129
49615
|
|
|
49130
49616
|
this.Left=1*GetDevicePixelRatio();
|
|
49131
49617
|
this.Top=5*GetDevicePixelRatio();
|
|
@@ -49869,6 +50355,7 @@ function MinuteLeftTooltipPaint()
|
|
|
49869
50355
|
this.IsDynamic=true;
|
|
49870
50356
|
this.IsEraseBG=true;
|
|
49871
50357
|
this.DrawAfterTitle=true;
|
|
50358
|
+
this.DrawPriority=IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25;
|
|
49872
50359
|
this.ClassName='MinuteLeftTooltipPaint';
|
|
49873
50360
|
this.BorderColor=g_JSChartResource.PCTooltipPaint.BorderColor; //边框颜色
|
|
49874
50361
|
this.BGColor=g_JSChartResource.PCTooltipPaint.BGColor; //背景色
|
|
@@ -50279,6 +50766,7 @@ function StockChip()
|
|
|
50279
50766
|
this.PixelRatio=GetDevicePixelRatio();
|
|
50280
50767
|
this.ShowType=0; //0=所有筹码 1=周期前 2=周期内
|
|
50281
50768
|
this.IsDynamic=true;
|
|
50769
|
+
this.DrawPriority=IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_20;
|
|
50282
50770
|
this.ClientRect={};
|
|
50283
50771
|
this.Font=g_JSChartResource.StockChip.Font;
|
|
50284
50772
|
this.InfoColor=g_JSChartResource.StockChip.InfoColor;
|
|
@@ -53958,6 +54446,7 @@ function FrameButtomToolbarPaint()
|
|
|
53958
54446
|
this.FrameGuid=null;
|
|
53959
54447
|
this.IsDynamic=true;
|
|
53960
54448
|
this.DrawAfterTitle=true;
|
|
54449
|
+
this.DrawPriority=IExtendChartPainting.DRAW_PRIORITY_ID.LEVEL_25;
|
|
53961
54450
|
|
|
53962
54451
|
this.AryButton=[]; // { Title:, ID:, Data:数据, TooltipText:提示信息 }
|
|
53963
54452
|
this.SelectedID=null; // 选中按钮ID
|
|
@@ -58103,6 +58592,7 @@ function ChartCorssCursor()
|
|
|
58103
58592
|
this.CallAcutionXOperator;
|
|
58104
58593
|
|
|
58105
58594
|
this.EnableKeyboard=false; //是否支持键盘隐藏显示
|
|
58595
|
+
this.EnableDBClick=false; //是否允许双击显示|隐藏十字光标
|
|
58106
58596
|
this.OnChangeStatusCallback; //状态切换以后回调
|
|
58107
58597
|
|
|
58108
58598
|
|
|
@@ -59331,6 +59821,27 @@ function ChartCorssCursor()
|
|
|
59331
59821
|
}
|
|
59332
59822
|
}
|
|
59333
59823
|
|
|
59824
|
+
this.OnDBClick=function(data)
|
|
59825
|
+
{
|
|
59826
|
+
if (!this.EnableDBClick) return;
|
|
59827
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.Frame.SubFrame)) return;
|
|
59828
|
+
|
|
59829
|
+
//在主图框架内
|
|
59830
|
+
var frame=this.Frame.SubFrame[0].Frame;
|
|
59831
|
+
if (!frame) return;
|
|
59832
|
+
|
|
59833
|
+
var border=frame.GetBorder();
|
|
59834
|
+
var rtClient={ Left:border.Left, Top:border.Top, Bottom:border.Bottom, Right:border.Right };
|
|
59835
|
+
var x=data.X, y=data.Y;
|
|
59836
|
+
if (x>=rtClient.Left && x<=rtClient.Right && y>=rtClient.Top && y<=rtClient.Bottom)
|
|
59837
|
+
{
|
|
59838
|
+
this.IsShowCorss=!this.IsShowCorss
|
|
59839
|
+
data.Draw=true;
|
|
59840
|
+
|
|
59841
|
+
if (this.OnChangeStatusCallback) this.OnChangeStatusCallback({ Type:1, IsShowCorss:this.IsShowCorss }, this);
|
|
59842
|
+
}
|
|
59843
|
+
}
|
|
59844
|
+
|
|
59334
59845
|
|
|
59335
59846
|
this.DrawCorssPoint=function(x,y)
|
|
59336
59847
|
{
|
|
@@ -80090,7 +80601,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
80090
80601
|
this.ChartDrawStorageCache=null; //首次需要创建的画图工具数据
|
|
80091
80602
|
this.RightSpaceCount=0; //右侧空白个数
|
|
80092
80603
|
this.SourceDataLimit=new Map(); //每个周期缓存数据最大个数 key=周期 value=最大个数
|
|
80093
|
-
this.CtrlMoveStep=5; //Ctrl+(Left/Right) 移动数据个数
|
|
80604
|
+
this.CtrlMoveStep=5; //Ctrl+(Left/Right) 移动数据个数
|
|
80605
|
+
this.ShiftMoveStep=1; //Shift+(Left/Right) 移动K线
|
|
80094
80606
|
|
|
80095
80607
|
this.CustomShow=null; //首先显示的K线的起始日期 { Date:日期, Time:时间, PageSize:, Callback:, Position:0=left 1=center }
|
|
80096
80608
|
this.ZoomType=0; //缩放模式 0=最右边固定缩放, 1=十字光标两边缩放
|
|
@@ -80144,6 +80656,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
80144
80656
|
this.ScrollBar=null; //横向滚动条
|
|
80145
80657
|
this.IsAutoSyncDataOffset=true; //增量更新时,是否移动当前屏数据
|
|
80146
80658
|
|
|
80659
|
+
//热键
|
|
80660
|
+
this.AryHotKey=
|
|
80661
|
+
[
|
|
80662
|
+
//SecondKeyID 1=shiftKey 2=ctrlKey 3=altKey
|
|
80663
|
+
{ KeyID:87, SecondKeyID:3, CMD:JSCHART_MENU_ID.CMD_FULLSCREEN_SUMMARY_ID, Args:null, Description:"Alt+W 全屏区间统计" },
|
|
80664
|
+
]
|
|
80665
|
+
|
|
80666
|
+
this.KLineDragConfig={ EnableShfit:false }; //是否启动Shift+鼠标拖动K线
|
|
80667
|
+
|
|
80147
80668
|
this.GetKLineCalulate=function()
|
|
80148
80669
|
{
|
|
80149
80670
|
var kLineDrawType=this.GetKLineDrawType();
|
|
@@ -81181,7 +81702,9 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
81181
81702
|
this.PopMinuteChart.Show({ Date:date, Symbol:symbol, Data:data.Tooltip.Data, Chart:data.Tooltip.ChartPaint }, x/pixelRatio,y/pixelRatio);
|
|
81182
81703
|
}
|
|
81183
81704
|
|
|
81184
|
-
|
|
81705
|
+
//Alt+W 区间统计
|
|
81706
|
+
//Alt+数字 切换多个窗口
|
|
81707
|
+
//Ctrl+I
|
|
81185
81708
|
this.OnCustomKeyDown=function(keyID, e) //自定义键盘事件
|
|
81186
81709
|
{
|
|
81187
81710
|
if (keyID==37 && e.ctrlKey) //Ctrl+Left
|
|
@@ -81194,12 +81717,93 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
81194
81717
|
this.MoveCorssCursorRight(this.CtrlMoveStep);
|
|
81195
81718
|
return true;
|
|
81196
81719
|
}
|
|
81720
|
+
else if (keyID==37 && e.shiftKey) //shift+Left 移动K线
|
|
81721
|
+
{
|
|
81722
|
+
this.MoveKLineLeft(this.ShiftMoveStep);
|
|
81723
|
+
return true;
|
|
81724
|
+
}
|
|
81725
|
+
else if (keyID==39 && e.shiftKey) //shift+Right 移动K线
|
|
81726
|
+
{
|
|
81727
|
+
this.MoveKLineRight(this.ShiftMoveStep);
|
|
81728
|
+
return true;
|
|
81729
|
+
}
|
|
81730
|
+
else if (keyID==38 && e.shiftKey) //shift+up 上移十字光标
|
|
81731
|
+
{
|
|
81732
|
+
this.MoveCorssCursorUp(this.ShiftUpDownStepPixel);
|
|
81733
|
+
return true;
|
|
81734
|
+
}
|
|
81735
|
+
else if (keyID==40 && e.shiftKey) //shift+down 下移十字光标
|
|
81736
|
+
{
|
|
81737
|
+
this.MoveCorssCursorDown(this.ShiftUpDownStepPixel);
|
|
81738
|
+
return true;
|
|
81739
|
+
}
|
|
81740
|
+
else if (keyID==13) //回车显示分时图
|
|
81741
|
+
{
|
|
81742
|
+
this.OnEnterKeyDown();
|
|
81743
|
+
}
|
|
81197
81744
|
else
|
|
81198
81745
|
{
|
|
81199
81746
|
return false;
|
|
81200
81747
|
}
|
|
81201
81748
|
}
|
|
81202
81749
|
|
|
81750
|
+
this.MoveKLineLeft=function(value)
|
|
81751
|
+
{
|
|
81752
|
+
return this.MoveKLine(-value);
|
|
81753
|
+
}
|
|
81754
|
+
|
|
81755
|
+
this.MoveKLineRight=function(value)
|
|
81756
|
+
{
|
|
81757
|
+
return this.MoveKLine(value);
|
|
81758
|
+
}
|
|
81759
|
+
|
|
81760
|
+
this.MoveKLine=function(step)
|
|
81761
|
+
{
|
|
81762
|
+
if (step==0) return;
|
|
81763
|
+
|
|
81764
|
+
var oneStepWidth=this.GetMoveOneStepWidth();
|
|
81765
|
+
var moveSetp=step*oneStepWidth;
|
|
81766
|
+
var bLeft=true;
|
|
81767
|
+
if (step<0)
|
|
81768
|
+
{
|
|
81769
|
+
moveSetp=Math.abs(step)*oneStepWidth;
|
|
81770
|
+
bLeft=false;
|
|
81771
|
+
}
|
|
81772
|
+
|
|
81773
|
+
if(!this.DataMove(moveSetp,bLeft)) return;
|
|
81774
|
+
|
|
81775
|
+
this.UpdataDataoffset();
|
|
81776
|
+
this.RepairCursorIndex();
|
|
81777
|
+
this.UpdatePointByCursorIndex(); //推拽数据的时候不需要把鼠标位置更新到K线上
|
|
81778
|
+
this.UpdateFrameMaxMin();
|
|
81779
|
+
this.ResetFrameXYSplit();
|
|
81780
|
+
this.Draw();
|
|
81781
|
+
this.ShowTooltipByKeyDown();
|
|
81782
|
+
this.OnKLinePageChange("datamove");
|
|
81783
|
+
}
|
|
81784
|
+
|
|
81785
|
+
//修复 当前数据索引大于数据个数的请求
|
|
81786
|
+
this.RepairCursorIndex=function()
|
|
81787
|
+
{
|
|
81788
|
+
var kData=this.GetKData();
|
|
81789
|
+
if (!kData) return;
|
|
81790
|
+
|
|
81791
|
+
var xPointcount=0;
|
|
81792
|
+
if (this.Frame.XPointCount) xPointcount=this.Frame.XPointCount;
|
|
81793
|
+
else xPointcount=this.Frame.SubFrame[0].Frame.XPointCount;
|
|
81794
|
+
if (!IFrameSplitOperator.IsPlusNumber(xPointcount)) return;
|
|
81795
|
+
|
|
81796
|
+
if (this.CursorIndex<0) this.CursorIndex=0;
|
|
81797
|
+
|
|
81798
|
+
var index=this.CursorIndex;
|
|
81799
|
+
index=parseInt(index.toFixed(0));
|
|
81800
|
+
|
|
81801
|
+
if (index+kData.DataOffset>=kData.Data.length)
|
|
81802
|
+
{
|
|
81803
|
+
this.CursorIndex=kData.Data.length-1-kData.DataOffset;
|
|
81804
|
+
}
|
|
81805
|
+
}
|
|
81806
|
+
|
|
81203
81807
|
this.MoveCorssCursorLeft=function(step)
|
|
81204
81808
|
{
|
|
81205
81809
|
var data=null;
|
|
@@ -81276,6 +81880,30 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
81276
81880
|
this.ShowTooltipByKeyDown();
|
|
81277
81881
|
}
|
|
81278
81882
|
|
|
81883
|
+
this.OnEnterKeyDown=function()
|
|
81884
|
+
{
|
|
81885
|
+
if (!this.PopMinuteChart) return false;
|
|
81886
|
+
if (!ChartData.IsDayPeriod(this.Period,true)) return false; //只支持日K
|
|
81887
|
+
if (!this.ChartCorssCursor || !this.ChartCorssCursor.IsShowCorss || this.ChartCorssCursor.ClientPos<0) return false;
|
|
81888
|
+
var index=this.ChartCorssCursor.CursorIndex;
|
|
81889
|
+
index=parseInt(index.toFixed(0));
|
|
81890
|
+
var kData=this.GetKData();
|
|
81891
|
+
if (!kData || !IFrameSplitOperator.IsNonEmptyArray(kData.Data)) return false;
|
|
81892
|
+
var dataIndex=kData.DataOffset+index;
|
|
81893
|
+
if (dataIndex<0 || dataIndex>=kData.Data.length) return false;
|
|
81894
|
+
|
|
81895
|
+
var kItem = kData.Data[dataIndex];
|
|
81896
|
+
if (!kItem) return false;
|
|
81897
|
+
|
|
81898
|
+
var frame=this.Frame.SubFrame[0].Frame;
|
|
81899
|
+
var x=frame.GetXFromIndex(index);
|
|
81900
|
+
var y=frame.GetYFromData(kItem.Close);
|
|
81901
|
+
|
|
81902
|
+
var data={ Chart:this, Tooltip:{ ChartPaint:this.ChartPaint[0], Data:kItem } };
|
|
81903
|
+
|
|
81904
|
+
this.ShowMinuteChartDialog(data, x, y);
|
|
81905
|
+
}
|
|
81906
|
+
|
|
81279
81907
|
//获取K线图实例
|
|
81280
81908
|
this.GetKLineChart=function()
|
|
81281
81909
|
{
|
|
@@ -86033,12 +86661,14 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
86033
86661
|
var bCorssDrawKLine=false;
|
|
86034
86662
|
var bCorssDrawVaildTime=false;
|
|
86035
86663
|
var bCorssDrawPoint=false;
|
|
86664
|
+
var bCorssBCClick=false;
|
|
86036
86665
|
if (this.ChartCorssCursor)
|
|
86037
86666
|
{
|
|
86038
86667
|
bShowCorss=this.ChartCorssCursor.IsShowCorss;
|
|
86039
86668
|
bCorssDrawKLine=this.ChartCorssCursor.IsOnlyDrawKLine && this.ChartCorssCursor.IsShowClose;
|
|
86040
86669
|
bCorssDrawVaildTime=this.ChartCorssCursor.IsFixXLastTime;
|
|
86041
86670
|
bCorssDrawPoint=this.ChartCorssCursor.CorssPointConfig.Enable;
|
|
86671
|
+
bCorssBCClick=this.ChartCorssCursor.EnableDBClick;
|
|
86042
86672
|
}
|
|
86043
86673
|
|
|
86044
86674
|
var bPopMinuteChart=false;
|
|
@@ -86224,6 +86854,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
86224
86854
|
{ Name:"显示在K线上", Data:{ ID:JSCHART_MENU_ID.CMD_CORSS_ON_KLINE_ID, Args:[!bCorssDrawKLine]}, Checked:bCorssDrawKLine },
|
|
86225
86855
|
{ Name:"画在有效X轴上",Data:{ ID:JSCHART_MENU_ID.CMD_CORSS_ON_VAILD_TIME_ID, Args:[!bCorssDrawVaildTime]}, Checked:bCorssDrawVaildTime },
|
|
86226
86856
|
{ Name:"画圆点",Data:{ ID:JSCHART_MENU_ID.CMD_CORSS_POINT_ID, Args:[!bCorssDrawPoint]}, Checked:bCorssDrawPoint },
|
|
86857
|
+
{ Name:"双击显示/隐藏", Data:{ ID:JSCHART_MENU_ID.CMD_CORSS_DBCLICK_ID, Args:[!bCorssBCClick]}, Checked:bCorssBCClick },
|
|
86227
86858
|
]
|
|
86228
86859
|
},
|
|
86229
86860
|
{
|
|
@@ -86697,6 +87328,14 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
86697
87328
|
|
|
86698
87329
|
this.OnDoubleClick=function(x,y,e)
|
|
86699
87330
|
{
|
|
87331
|
+
var bDraw=false;
|
|
87332
|
+
if (this.ChartCorssCursor)
|
|
87333
|
+
{
|
|
87334
|
+
var data={ e:e, X:x, Y:y, Draw:false };
|
|
87335
|
+
this.ChartCorssCursor.OnDBClick(data);
|
|
87336
|
+
bDraw=data.Draw
|
|
87337
|
+
}
|
|
87338
|
+
|
|
86700
87339
|
if (this.EnableYDrag && (this.EnableYDrag.Left || this.EnableYDrag.Right) && this.Frame && this.Frame.PtInFrameY)
|
|
86701
87340
|
{
|
|
86702
87341
|
var pixelTatio = GetDevicePixelRatio();
|
|
@@ -86733,6 +87372,8 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
86733
87372
|
}
|
|
86734
87373
|
}
|
|
86735
87374
|
|
|
87375
|
+
if (bDraw) this.Draw();
|
|
87376
|
+
|
|
86736
87377
|
var tooltip=new TooltipData();
|
|
86737
87378
|
if (!this.PtInChartPaintTooltip(x,y,tooltip))
|
|
86738
87379
|
{
|
|
@@ -88519,6 +89160,13 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
88519
89160
|
this.BaselineType=0; //基准线类型 0=最新昨收盘 1=多日前昨收盘
|
|
88520
89161
|
this.EnableNightDayBG=false; //是否启动夜盘背景色
|
|
88521
89162
|
|
|
89163
|
+
//热键
|
|
89164
|
+
this.AryHotKey=
|
|
89165
|
+
[
|
|
89166
|
+
//SecondKeyID 1=shiftKey 2=ctrlKey 3=altKey
|
|
89167
|
+
{ KeyID:87, SecondKeyID:3, CMD:JSCHART_MENU_ID.CMD_FULLSCREEN_SUMMARY_ID, Args:null, Description:"Alt+W 全屏区间统计" },
|
|
89168
|
+
]
|
|
89169
|
+
|
|
88522
89170
|
//集合竞价设置 obj={ Left:true/false, Right:true/false, MultiDay:{Left:, Right:} }
|
|
88523
89171
|
this.SetCallCationDataBorder=function(obj)
|
|
88524
89172
|
{
|
|
@@ -90023,6 +90671,14 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
90023
90671
|
draw=sendData.Draw;
|
|
90024
90672
|
}
|
|
90025
90673
|
|
|
90674
|
+
if (this.OnHotKeyDown(keyID, e))
|
|
90675
|
+
{
|
|
90676
|
+
//不让滚动条滚动
|
|
90677
|
+
if(e.preventDefault) e.preventDefault();
|
|
90678
|
+
else e.returnValue = false;
|
|
90679
|
+
return;
|
|
90680
|
+
}
|
|
90681
|
+
|
|
90026
90682
|
switch(keyID)
|
|
90027
90683
|
{
|
|
90028
90684
|
case 37: //left
|
|
@@ -90136,6 +90792,11 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
90136
90792
|
this.CurrentChartDrawPicture=null;
|
|
90137
90793
|
}
|
|
90138
90794
|
break;
|
|
90795
|
+
case 38:
|
|
90796
|
+
case 40:
|
|
90797
|
+
if ((e.ctrlKey||e.shiftKey) && this.OnCustomKeyDown)
|
|
90798
|
+
this.OnCustomKeyDown(keyID, e)
|
|
90799
|
+
break;
|
|
90139
90800
|
default:
|
|
90140
90801
|
return;
|
|
90141
90802
|
}
|
|
@@ -90147,6 +90808,24 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
90147
90808
|
else e.returnValue = false;
|
|
90148
90809
|
}
|
|
90149
90810
|
|
|
90811
|
+
this.OnCustomKeyDown=function(keyID, e) //自定义键盘事件
|
|
90812
|
+
{
|
|
90813
|
+
if (keyID==38 && e.shiftKey) //shift+up 上移十字光标
|
|
90814
|
+
{
|
|
90815
|
+
this.MoveCorssCursorUp(this.ShiftUpDownStepPixel);
|
|
90816
|
+
return true;
|
|
90817
|
+
}
|
|
90818
|
+
else if (keyID==40 && e.shiftKey) //shift+down 下移十字光标
|
|
90819
|
+
{
|
|
90820
|
+
this.MoveCorssCursorDown(this.ShiftUpDownStepPixel);
|
|
90821
|
+
return true;
|
|
90822
|
+
}
|
|
90823
|
+
else
|
|
90824
|
+
{
|
|
90825
|
+
return false;
|
|
90826
|
+
}
|
|
90827
|
+
}
|
|
90828
|
+
|
|
90150
90829
|
/*
|
|
90151
90830
|
this.OnMarkRectSelect=function(e)
|
|
90152
90831
|
{
|
|
@@ -90256,12 +90935,14 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
90256
90935
|
var bCorssDrawCloseLine=false; //十字光标只能画在走势图价格线上
|
|
90257
90936
|
var bCorssDrawVaildTime=false;
|
|
90258
90937
|
var bCorssDrawPoint=false;
|
|
90938
|
+
var bCorssBCClick=false;
|
|
90259
90939
|
if (this.ChartCorssCursor)
|
|
90260
90940
|
{
|
|
90261
90941
|
bShowCorss=this.ChartCorssCursor.IsShowCorss;
|
|
90262
90942
|
bCorssDrawCloseLine=this.ChartCorssCursor.IsOnlyDrawMinute;
|
|
90263
90943
|
bCorssDrawVaildTime=this.ChartCorssCursor.IsFixXLastTime;
|
|
90264
90944
|
bCorssDrawPoint=this.ChartCorssCursor.CorssPointConfig.Enable;
|
|
90945
|
+
bCorssBCClick=this.ChartCorssCursor.EnableDBClick;
|
|
90265
90946
|
}
|
|
90266
90947
|
|
|
90267
90948
|
var bRButtonSelectRect=false,bLButtonSelectRect=false;
|
|
@@ -90358,6 +91039,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
90358
91039
|
{ Name:"画在价格线上", Data:{ ID:JSCHART_MENU_ID.CMD_CORSS_ON_CLOSE_LINE_ID, Args:[!bCorssDrawCloseLine]}, Checked:bCorssDrawCloseLine },
|
|
90359
91040
|
{ Name:"画在有效X轴上",Data:{ ID:JSCHART_MENU_ID.CMD_CORSS_ON_VAILD_TIME_ID, Args:[!bCorssDrawVaildTime]}, Checked:bCorssDrawVaildTime },
|
|
90360
91041
|
{ Name:"画圆点",Data:{ ID:JSCHART_MENU_ID.CMD_CORSS_POINT_ID, Args:[!bCorssDrawPoint]}, Checked:bCorssDrawPoint },
|
|
91042
|
+
{ Name:"双击显示/隐藏", Data:{ ID:JSCHART_MENU_ID.CMD_CORSS_DBCLICK_ID, Args:[!bCorssBCClick]}, Checked:bCorssBCClick },
|
|
90361
91043
|
]
|
|
90362
91044
|
},
|
|
90363
91045
|
|
|
@@ -90498,6 +91180,14 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
90498
91180
|
{
|
|
90499
91181
|
JSConsole.Chart.Log("[MinuteChartContainer::OnDoubleClick]", e);
|
|
90500
91182
|
|
|
91183
|
+
var bDraw=false;
|
|
91184
|
+
if (this.ChartCorssCursor)
|
|
91185
|
+
{
|
|
91186
|
+
var data={ e:e, X:x, Y:y, Draw:false };
|
|
91187
|
+
this.ChartCorssCursor.OnDBClick(data);
|
|
91188
|
+
bDraw=data.Draw
|
|
91189
|
+
}
|
|
91190
|
+
|
|
90501
91191
|
if (this.EnableYDrag && (this.EnableYDrag.Left || this.EnableYDrag.Right) && this.Frame && this.Frame.PtInFrameY)
|
|
90502
91192
|
{
|
|
90503
91193
|
var pixelTatio = GetDevicePixelRatio();
|
|
@@ -90535,10 +91225,12 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
90535
91225
|
if (this.ZoomIndexWindow(frameId, {X:x, Y:y}))
|
|
90536
91226
|
{
|
|
90537
91227
|
this.Frame.SetSizeChage(true);
|
|
90538
|
-
|
|
91228
|
+
bDraw=true;
|
|
90539
91229
|
}
|
|
90540
91230
|
}
|
|
90541
91231
|
}
|
|
91232
|
+
|
|
91233
|
+
if (bDraw) this.Draw();
|
|
90542
91234
|
}
|
|
90543
91235
|
|
|
90544
91236
|
this.GetDataItem=function(pointInfo)
|
|
@@ -104194,7 +104886,7 @@ function Node(ErrorHandler)
|
|
|
104194
104886
|
//CAPITAL流通股本(手), EXCHANGE 换手率, TOTALCAPITAL 总股本(手)
|
|
104195
104887
|
let setVariantName=new Set(
|
|
104196
104888
|
[
|
|
104197
|
-
"CAPITAL","TOTALCAPITAL","EXCHANGE",
|
|
104889
|
+
"CAPITAL","TOTALCAPITAL","EXCHANGE","HSL",
|
|
104198
104890
|
"HYBLOCK","DYBLOCK","GNBLOCK","FGBLOCK","ZSBLOCK","ZHBLOCK","ZDBLOCK","HYZSCODE",
|
|
104199
104891
|
"GNBLOCKNUM","FGBLOCKNUM","ZSBLOCKNUM","ZHBLOCKNUM","ZDBLOCKNUM",
|
|
104200
104892
|
"HYSYL","HYSJL","FROMOPEN",
|
|
@@ -117738,7 +118430,7 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
117738
118430
|
{
|
|
117739
118431
|
var dataType=0;
|
|
117740
118432
|
if (IFrameSplitOperator.IsNumber(recvData.DataType)) dataType=recvData.DataType;
|
|
117741
|
-
self.RecvStockValue(recvData.Data,jobItem,key,dataType);
|
|
118433
|
+
self.RecvStockValue(recvData.Data,jobItem,key,dataType,recvData);
|
|
117742
118434
|
}
|
|
117743
118435
|
|
|
117744
118436
|
self.Execute.RunNextJob();
|
|
@@ -117753,7 +118445,7 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
117753
118445
|
};
|
|
117754
118446
|
|
|
117755
118447
|
var apiDownload;
|
|
117756
|
-
if (jobItem.VariantName=="CAPITAL" || jobItem.VariantName=="TOTALCAPITAL" || jobItem.VariantName=="EXCHANGE")
|
|
118448
|
+
if (jobItem.VariantName=="CAPITAL" || jobItem.VariantName=="TOTALCAPITAL" || jobItem.VariantName=="EXCHANGE" || jobItem.VariantName=="HSL")
|
|
117757
118449
|
{
|
|
117758
118450
|
var callback=function(recvData, jobItem, key)
|
|
117759
118451
|
{
|
|
@@ -117948,7 +118640,7 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
117948
118640
|
}
|
|
117949
118641
|
}
|
|
117950
118642
|
|
|
117951
|
-
this.RecvStockValue=function(recvData,jobItem,key,dataType)
|
|
118643
|
+
this.RecvStockValue=function(recvData,jobItem,key,dataType, srcData)
|
|
117952
118644
|
{
|
|
117953
118645
|
if (!recvData)
|
|
117954
118646
|
{
|
|
@@ -117979,8 +118671,9 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
117979
118671
|
var bindData=new ChartData();
|
|
117980
118672
|
bindData.Data=aryFittingData;
|
|
117981
118673
|
var result=bindData.GetValue();
|
|
118674
|
+
var bVersion2=srcData && srcData.Ver==2; //2.0 版本
|
|
117982
118675
|
|
|
117983
|
-
if (key=="EXCHANGE") //计算换手率=成交量/流通股本*100
|
|
118676
|
+
if (!bVersion2 && (key=="EXCHANGE" || key=="HSL")) //计算换手率=成交量/流通股本*100
|
|
117984
118677
|
{
|
|
117985
118678
|
for(var i in result)
|
|
117986
118679
|
{
|
|
@@ -120000,7 +120693,7 @@ function JSExecute(ast,option)
|
|
|
120000
120693
|
|
|
120001
120694
|
['CAPITAL',null], //流通股本(手)
|
|
120002
120695
|
["TOTALCAPITAL",null], //TOTALCAPITAL 当前总股本 手
|
|
120003
|
-
['EXCHANGE',null], //换手率
|
|
120696
|
+
['EXCHANGE',null], ["HSL",null], //换手率
|
|
120004
120697
|
['SETCODE', null], //市场类型
|
|
120005
120698
|
['CODE',null], //品种代码
|
|
120006
120699
|
['STKNAME',null], //品种名称
|
|
@@ -120250,6 +120943,7 @@ function JSExecute(ast,option)
|
|
|
120250
120943
|
case "TOTALCAPITAL":
|
|
120251
120944
|
case 'CAPITAL':
|
|
120252
120945
|
case 'EXCHANGE':
|
|
120946
|
+
case "HSL":
|
|
120253
120947
|
|
|
120254
120948
|
case "HYBLOCK":
|
|
120255
120949
|
case "DYBLOCK":
|
|
@@ -121917,7 +122611,7 @@ function JSExplainer(ast,option)
|
|
|
121917
122611
|
['BARSTATUS',"数据位置状态"], //BARSTATUS返回数据位置信息,1表示第一根K线,2表示最后一个数据,0表示中间位置.
|
|
121918
122612
|
|
|
121919
122613
|
['CAPITAL',"当前流通股本(手)"], ["TOTALCAPITAL","当前总股本(手)"],
|
|
121920
|
-
['EXCHANGE',"换手率"],
|
|
122614
|
+
['EXCHANGE',"换手率"], ['HSL',"换手线"],
|
|
121921
122615
|
['SETCODE', "市场类型"], //市场类型
|
|
121922
122616
|
['CODE',"品种代码"], //品种代码
|
|
121923
122617
|
['STKNAME',"品种名称"], //品种名称
|
|
@@ -128857,6 +129551,19 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
128857
129551
|
|
|
128858
129552
|
result.push(outVarItem);
|
|
128859
129553
|
}
|
|
129554
|
+
else if (draw.DrawType=="DRAWTEXT_LINE")
|
|
129555
|
+
{
|
|
129556
|
+
drawItem.Name=draw.Name;
|
|
129557
|
+
drawItem.Type=draw.Type;
|
|
129558
|
+
|
|
129559
|
+
drawItem.DrawType=draw.DrawType;
|
|
129560
|
+
drawItem.DrawData=draw.DrawData; //{ Price:, Text:{ Title:text, Color:textcolor }, Line:{ Type:linetype, Color:linecolor } };
|
|
129561
|
+
|
|
129562
|
+
outVarItem.Draw=drawItem;
|
|
129563
|
+
if (draw.Font) outVarItem.Font=draw.Font;
|
|
129564
|
+
|
|
129565
|
+
result.push(outVarItem);
|
|
129566
|
+
}
|
|
128860
129567
|
else
|
|
128861
129568
|
{
|
|
128862
129569
|
var find=g_ScriptIndexChartFactory.Get(draw.DrawType); //外部挂接
|
|
@@ -129162,6 +129869,7 @@ function DownloadFinanceData(obj)
|
|
|
129162
129869
|
case 1: //FINANCE(1) 总股本(随时间可能有变化) 股
|
|
129163
129870
|
case 7: //FINANCE(7) 流通股本(随时间可能有变化) 股
|
|
129164
129871
|
case "EXCHANGE": //换手率
|
|
129872
|
+
case "HSL"://换手率
|
|
129165
129873
|
this.DownloadHistoryData(id);
|
|
129166
129874
|
break;
|
|
129167
129875
|
case 3:
|
|
@@ -129288,6 +129996,7 @@ function DownloadFinanceData(obj)
|
|
|
129288
129996
|
return ["capital.total", "capital.date"];
|
|
129289
129997
|
case 7:
|
|
129290
129998
|
return ["capital.a", "capital.date"];
|
|
129999
|
+
case "HSL":
|
|
129291
130000
|
case "EXCHANGE":
|
|
129292
130001
|
return ["capital.a", "capital.date"];
|
|
129293
130002
|
|
|
@@ -129421,6 +130130,7 @@ function DownloadFinanceData(obj)
|
|
|
129421
130130
|
if (!item.capital) return null;
|
|
129422
130131
|
return { Date:date, Value:item.capital.total };
|
|
129423
130132
|
case 7:
|
|
130133
|
+
case "HSL": //换手率
|
|
129424
130134
|
case "EXCHANGE": //换手率 历史流通股本
|
|
129425
130135
|
if (!item.capital) return null;
|
|
129426
130136
|
return { Date:date, Value:item.capital.a };
|
|
@@ -150495,6 +151205,7 @@ function MarkPopMinutePaint()
|
|
|
150495
151205
|
this.LineColor=g_JSChartResource.PopMinuteChart.Mark.LineColor;
|
|
150496
151206
|
this.SubFrame;
|
|
150497
151207
|
this.IsDynamic=true;
|
|
151208
|
+
this.IsShow=true;
|
|
150498
151209
|
|
|
150499
151210
|
|
|
150500
151211
|
this.ReloadResource=function(resource)
|
|
@@ -150524,6 +151235,7 @@ function MarkPopMinutePaint()
|
|
|
150524
151235
|
this.Draw=function()
|
|
150525
151236
|
{
|
|
150526
151237
|
this.SubFrame=null;
|
|
151238
|
+
if (!this.IsShow) return;
|
|
150527
151239
|
if (!this.HQChart) return;
|
|
150528
151240
|
if (!this.ChartFrame || !IFrameSplitOperator.IsNonEmptyArray(this.ChartFrame.SubFrame)) return;
|
|
150529
151241
|
if (!this.MapDate || this.MapDate.size<=0) return;
|
|
@@ -150578,9 +151290,10 @@ function MarkPopMinutePaint()
|
|
|
150578
151290
|
|
|
150579
151291
|
this.Canvas.lineWidth=lineWidth;
|
|
150580
151292
|
this.Canvas.strokeStyle=this.LineColor;
|
|
151293
|
+
var x=ToFixedPoint2(lineWidth,item.XCenter);
|
|
150581
151294
|
this.Canvas.beginPath();
|
|
150582
|
-
this.Canvas.moveTo(
|
|
150583
|
-
this.Canvas.lineTo(
|
|
151295
|
+
this.Canvas.moveTo(x,border.TopEx);
|
|
151296
|
+
this.Canvas.lineTo(x,border.BottomEx);
|
|
150584
151297
|
this.Canvas.stroke();
|
|
150585
151298
|
}
|
|
150586
151299
|
}
|
|
@@ -154554,10 +155267,14 @@ function JSDialogSearchIndex()
|
|
|
154554
155267
|
{
|
|
154555
155268
|
if (!IFrameSplitOperator.IsNumber(this.OpData.WindowIndex)) return;
|
|
154556
155269
|
var indexItem=cellItem.IndexItem;
|
|
154557
|
-
if (indexItem.Type==0) //系统指标
|
|
155270
|
+
if (indexItem.Type==0 ) //系统指标
|
|
154558
155271
|
{
|
|
154559
155272
|
this.HQChart.ChangeIndex(this.OpData.WindowIndex, indexItem.ID );
|
|
154560
155273
|
}
|
|
155274
|
+
else if(indexItem.Type==4 || indexItem.Type==5) //五彩K线
|
|
155275
|
+
{
|
|
155276
|
+
this.HQChart.ChangeInstructionIndex(indexItem.ID);
|
|
155277
|
+
}
|
|
154561
155278
|
else if (indexItem.Type==1) //自定义脚本指标
|
|
154562
155279
|
{
|
|
154563
155280
|
var indexData={ ID:indexItem.ID, Name:indexItem.Name, Script:indexItem.Script, Args:indexItem.Args };
|
|
@@ -154597,6 +155314,10 @@ function JSDialogSearchIndex()
|
|
|
154597
155314
|
{
|
|
154598
155315
|
this.HQChart.ChangeIndexTemplate(indexItem.TemplateData)
|
|
154599
155316
|
}
|
|
155317
|
+
else if(indexItem.Type==4 || indexItem.Type==5) //五彩K线
|
|
155318
|
+
{
|
|
155319
|
+
this.HQChart.ChangeInstructionIndex(indexItem.ID);
|
|
155320
|
+
}
|
|
154600
155321
|
}
|
|
154601
155322
|
else if (this.OpData.OpType==3) //新增加指标窗口
|
|
154602
155323
|
{
|
|
@@ -154819,7 +155540,7 @@ JSDialogSearchIndex.GetDefaultIndexData=function()
|
|
|
154819
155540
|
Group:{ ID:"超买超卖型", Name:"超买超卖型"} ,
|
|
154820
155541
|
AryIndex:
|
|
154821
155542
|
[
|
|
154822
|
-
{Name:"ADTM 动态买卖气指标", ID:"ADTM", Type:0 }, //Type:0=系统指标 1=自定义通达信脚本 2=api指标
|
|
155543
|
+
{Name:"ADTM 动态买卖气指标", ID:"ADTM", Type:0 }, //Type:0=系统指标 1=自定义通达信脚本 2=api指标 3=指标模板 4=交易系统 5=五彩K线
|
|
154823
155544
|
{Name:"BIAS 乖离率", ID:"BIAS", Type:0},
|
|
154824
155545
|
{Name:"BIAS36 三六乖离", ID:"BIAS36", Type:0 },
|
|
154825
155546
|
{Name:"BIAS_QL 乖离率-传统版", ID:"BIAS_QL", Type:0 },
|
|
@@ -154830,7 +155551,17 @@ JSDialogSearchIndex.GetDefaultIndexData=function()
|
|
|
154830
155551
|
{Name:"OSC 变动速率线", ID:"OSC", Type:0},
|
|
154831
155552
|
{Name:"RSI 相对强弱指标", ID:"RSI", Type:0},
|
|
154832
155553
|
{Name:"ROC 变动率指标", ID:"ROC", Type:0},
|
|
154833
|
-
{Name:"WR 威廉指标", ID:"WR", Type:0}
|
|
155554
|
+
{Name:"WR 威廉指标", ID:"WR", Type:0},
|
|
155555
|
+
{Name:"UDL 引力线", ID:"UDL", Type:0},
|
|
155556
|
+
{Name:"LWR 威廉指标", ID:"LWR", Type:0},
|
|
155557
|
+
{Name:"MARSI 相对强弱平均线", ID:"MARSI", Type:0},
|
|
155558
|
+
{Name:"ACCER 幅度涨速", ID:"ACCER", Type:0},
|
|
155559
|
+
{Name:"CYD 承接因子", ID:"CYD", Type:0},
|
|
155560
|
+
{Name:"CYF 市场能量", ID:"CYF", Type:0},
|
|
155561
|
+
{Name:"ADTM 动态买卖气指标", ID:"ADTM", Type:0},
|
|
155562
|
+
{Name:"ATR 真实波幅", ID:"ATR", Type:0},
|
|
155563
|
+
{Name:"DKX 多空线", ID:"DKX", Type:0},
|
|
155564
|
+
{Name:"TAPI 加权指数成交值", ID:"TAPI", Type:0},
|
|
154834
155565
|
]
|
|
154835
155566
|
},
|
|
154836
155567
|
|
|
@@ -154845,7 +155576,22 @@ JSDialogSearchIndex.GetDefaultIndexData=function()
|
|
|
154845
155576
|
{Name:"MACD 平滑异同平均", ID:"MACD", Type:0 },
|
|
154846
155577
|
{Name:"TRIX 三重指数平均线", ID:"TRIX", Type:0 },
|
|
154847
155578
|
{Name:"UOS 终极指标", ID:"UOS", Type:0 },
|
|
154848
|
-
{Name:"TRIX 三重指数平均线", ID:"TRIX", Type:0 }
|
|
155579
|
+
{Name:"TRIX 三重指数平均线", ID:"TRIX", Type:0 },
|
|
155580
|
+
{Name:"VMACD 量平滑异同平均", ID:"VMACD", Type:0 },
|
|
155581
|
+
|
|
155582
|
+
{Name:"VMACD 量平滑异同平均", ID:"VMACD", Type:0 },
|
|
155583
|
+
{Name:"SMACD 单线平滑异同平均线", ID:"SMACD", Type:0 },
|
|
155584
|
+
{Name:"QACD 快速异同平均", ID:"QACD", Type:0 },
|
|
155585
|
+
{Name:"VPT 量价曲线", ID:"VPT", Type:0 },
|
|
155586
|
+
{Name:"WVAD 威廉变异离散量", ID:"WVAD", Type:0 },
|
|
155587
|
+
|
|
155588
|
+
{Name:"DBQR 对比强弱", ID:"DBQR", Type:0 },
|
|
155589
|
+
{Name:"WVAD 威廉变异离散量", ID:"WVAD", Type:0 },
|
|
155590
|
+
{Name:"JS 加速线", ID:"JS", Type:0 },
|
|
155591
|
+
{Name:"CYE 市场趋势", ID:"CYE", Type:0 },
|
|
155592
|
+
{Name:"QR 强弱指标", ID:"QR", Type:0 },
|
|
155593
|
+
{Name:"GDX 轨道线", ID:"GDX", Type:0 },
|
|
155594
|
+
{Name:"JLHB 绝路航标", ID:"JLHB", Type:0 },
|
|
154849
155595
|
]
|
|
154850
155596
|
},
|
|
154851
155597
|
|
|
@@ -154857,7 +155603,18 @@ JSDialogSearchIndex.GetDefaultIndexData=function()
|
|
|
154857
155603
|
{Name:"OBV 累积能量线", ID:"OBV", Type:0},
|
|
154858
155604
|
{Name:"NVI 负成交量", ID:"NVI", Type:0},
|
|
154859
155605
|
{Name:"PVI 正成交量", ID:"PVI", Type:0},
|
|
154860
|
-
{Name:"VOL 成交量", ID:"VOL", Type:0}
|
|
155606
|
+
{Name:"VOL 成交量", ID:"VOL", Type:0},
|
|
155607
|
+
{Name:"VOL-TDX 成交量(虚拟)", ID:"VOL-TDX", Type:0},
|
|
155608
|
+
{Name:"AMO 成交金额", ID:"AMO", Type:0},
|
|
155609
|
+
{Name:"AMO-TDX 成交金额(虚拟)", ID:"AMO-TDX", Type:0},
|
|
155610
|
+
{Name:"VRSI 相对强弱量", ID:"VRSI", Type:0},
|
|
155611
|
+
{Name:"HSCOL 换手柱", ID:"HSCOL", Type:0},
|
|
155612
|
+
{Name:"DBQRV 对比强弱量", ID:"DBQRV", Type:0},
|
|
155613
|
+
{Name:"DBLB 对比量比", ID:"DBLB", Type:0},
|
|
155614
|
+
{Name:"WSBVOL 维斯波成交量", ID:"WSBVOL", Type:0},
|
|
155615
|
+
|
|
155616
|
+
{Name:"CCYD 持仓异动(适用于期货)", ID:"CCYD", Type:0},
|
|
155617
|
+
{Name:"CCL 持仓量(适用于期货)", ID:"CCL", Type:0},
|
|
154861
155618
|
]
|
|
154862
155619
|
},
|
|
154863
155620
|
{
|
|
@@ -154865,7 +155622,22 @@ JSDialogSearchIndex.GetDefaultIndexData=function()
|
|
|
154865
155622
|
AryIndex:
|
|
154866
155623
|
[
|
|
154867
155624
|
{Name:"MA 均线", ID:"MA", Type:0},
|
|
154868
|
-
{Name:"
|
|
155625
|
+
{Name:"MA4 4根均线", ID:"MA4", Type:0},
|
|
155626
|
+
{Name:"MA5 5根均线", ID:"MA5", Type:0},
|
|
155627
|
+
{Name:"MA7 6根均线", ID:"MA6", Type:0},
|
|
155628
|
+
{Name:"MA7 7根均线", ID:"MA7", Type:0},
|
|
155629
|
+
{Name:"MA8 8根均线", ID:"MA8", Type:0},
|
|
155630
|
+
{Name:"BBI 多空线", ID:"BBI", Type:0},
|
|
155631
|
+
{Name:"ACD 升降线", ID:"ACD", Type:0},
|
|
155632
|
+
{Name:"EXPMA 指数平均线", ID:"EXPMA", Type:0},
|
|
155633
|
+
{Name:"EXPMA_S 指数平均线-副图", ID:"EXPMA_S", Type:0},
|
|
155634
|
+
{Name:"HMA 高价平均线", ID:"HMA", Type:0},
|
|
155635
|
+
{Name:"LMA 低价平均线", ID:"LMA", Type:0},
|
|
155636
|
+
{Name:"VMA 变异平均线", ID:"VMA", Type:0},
|
|
155637
|
+
{Name:"AMV 成本价均线", ID:"AMV", Type:0},
|
|
155638
|
+
{Name:"BBIBOLL 多空布林线", ID:"BBIBOLL", Type:0},
|
|
155639
|
+
{Name:"ALLIGAT 鳄鱼线", ID:"ALLIGAT", Type:0},
|
|
155640
|
+
{Name:"GMMA 顾比均线", ID:"GMMA", Type:0},
|
|
154869
155641
|
]
|
|
154870
155642
|
},
|
|
154871
155643
|
{
|
|
@@ -154873,9 +155645,13 @@ JSDialogSearchIndex.GetDefaultIndexData=function()
|
|
|
154873
155645
|
AryIndex:
|
|
154874
155646
|
[
|
|
154875
155647
|
{Name:"BOLL 布林线", ID:"BOLL", Type:0},
|
|
154876
|
-
{Name:"BOLL
|
|
155648
|
+
{Name:"BOLL 布林线-副图", ID:"BOLL副图", Type:0},
|
|
154877
155649
|
{Name:"MIKE 麦克支撑压力", ID:"MIKE", Type:0},
|
|
154878
|
-
{Name:"ENE 轨道线", ID:"ENE", Type:0}
|
|
155650
|
+
{Name:"ENE 轨道线", ID:"ENE", Type:0},
|
|
155651
|
+
{Name:"PBX 瀑布线", ID:"PBX", Type:0},
|
|
155652
|
+
{Name:"XS 薛斯通道", ID:"XS", Type:0},
|
|
155653
|
+
{Name:"XS2 薛斯通道II", ID:"XS2", Type:0},
|
|
155654
|
+
{Name:"DC 唐奇安通道", ID:"DC", Type:0}
|
|
154879
155655
|
]
|
|
154880
155656
|
},
|
|
154881
155657
|
{
|
|
@@ -154888,7 +155664,91 @@ JSDialogSearchIndex.GetDefaultIndexData=function()
|
|
|
154888
155664
|
{Name:"PSY 心理线", ID:"PSY", Type:0},
|
|
154889
155665
|
{Name:"CR 带状能量线", ID:"CR", Type:0},
|
|
154890
155666
|
{Name:"VR 成交量变异率", ID:"VR", Type:0},
|
|
154891
|
-
{Name:"WAD 威廉多空力度线", ID:"WAD", Type:0}
|
|
155667
|
+
{Name:"WAD 威廉多空力度线", ID:"WAD", Type:0},
|
|
155668
|
+
{Name:"PCNT 幅度比", ID:"PCNT", Type:0}
|
|
155669
|
+
]
|
|
155670
|
+
},
|
|
155671
|
+
{
|
|
155672
|
+
Group:{ ID:"大势型", Name:"大势型"},
|
|
155673
|
+
AryIndex:
|
|
155674
|
+
[
|
|
155675
|
+
{Name:"ABI 绝对广量指标", ID:"ABI", Type:0 },
|
|
155676
|
+
{Name:"ADL 腾落指标", ID:"ADL", Type:0 },
|
|
155677
|
+
]
|
|
155678
|
+
},
|
|
155679
|
+
|
|
155680
|
+
{
|
|
155681
|
+
Group:{ ID:"五彩K线", Name:"五彩K线"} ,
|
|
155682
|
+
AryIndex:
|
|
155683
|
+
[
|
|
155684
|
+
{Name:"五彩K线-十字星", ID:"五彩K线-十字星", Type:5},
|
|
155685
|
+
{Name:"五彩K线-早晨之星", ID:"五彩K线-早晨之星", Type:5},
|
|
155686
|
+
{Name:"五彩K线-黄昏之星", ID:"五彩K线-黄昏之星", Type:5},
|
|
155687
|
+
{Name:"五彩K线-长十字", ID:"五彩K线-长十字", Type:5},
|
|
155688
|
+
|
|
155689
|
+
{Name:"五彩K线-身怀六甲", ID:"五彩K线-身怀六甲", Type:5},
|
|
155690
|
+
{Name:"五彩K线-三个白武士", ID:"五彩K线-三个白武士", Type:5},
|
|
155691
|
+
{Name:"五彩K线-三只乌鸦", ID:"五彩K线-三只乌鸦", Type:5},
|
|
155692
|
+
{Name:"五彩K线-光头阳线", ID:"五彩K线-光头阳线", Type:5},
|
|
155693
|
+
|
|
155694
|
+
{Name:"五彩K线-光脚阴线", ID:"五彩K线-光脚阴线线", Type:5},
|
|
155695
|
+
{Name:"五彩K线-垂死十字", ID:"五彩K线-垂死十字", Type:5},
|
|
155696
|
+
{Name:"五彩K线-早晨十字星", ID:"五彩K线-早晨十字星", Type:5},
|
|
155697
|
+
{Name:"五彩K线-黄昏十字星", ID:"五彩K线-黄昏十字星", Type:5},
|
|
155698
|
+
|
|
155699
|
+
{Name:"五彩K线-射击之星", ID:"五彩K线-射击之星", Type:5},
|
|
155700
|
+
{Name:"五彩K线-倒转锤头", ID:"五彩K线-倒转锤头", Type:5},
|
|
155701
|
+
{Name:"五彩K线-锤头", ID:"五彩K线-锤头", Type:5},
|
|
155702
|
+
{Name:"五彩K线-吊颈", ID:"五彩K线-吊颈星", Type:5},
|
|
155703
|
+
|
|
155704
|
+
{Name:"五彩K线-穿头破脚", ID:"五彩K线-穿头破脚", Type:5},
|
|
155705
|
+
{Name:"五彩K线-出水芙蓉", ID:"五彩K线-出水芙蓉", Type:5},
|
|
155706
|
+
{Name:"五彩K线-乌云盖顶", ID:"五彩K线-乌云盖顶", Type:5},
|
|
155707
|
+
{Name:"五彩K线-曙光初现", ID:"五彩K线-曙光初现", Type:5},
|
|
155708
|
+
|
|
155709
|
+
{Name:"五彩K线-十字胎", ID:"五彩K线-十字胎", Type:5},
|
|
155710
|
+
{Name:"五彩K线-剑", ID:"五彩K线-剑", Type:5},
|
|
155711
|
+
{Name:"五彩K线-平顶", ID:"五彩K线-平顶", Type:5},
|
|
155712
|
+
{Name:"五彩K线-平底", ID:"五彩K线-平底", Type:5},
|
|
155713
|
+
|
|
155714
|
+
{Name:"五彩K线-大阳烛", ID:"五彩K线-大阳烛", Type:5},
|
|
155715
|
+
{Name:"五彩K线-大阴烛", ID:"五彩K线-大阴烛", Type:5},
|
|
155716
|
+
|
|
155717
|
+
{Name:"五彩K线-好友反攻", ID:"五彩K线-好友反攻", Type:5},
|
|
155718
|
+
{Name:"五彩K线-跳空缺口", ID:"五彩K线-跳空缺口", Type:5},
|
|
155719
|
+
|
|
155720
|
+
{Name:"五彩K线-双飞乌鸦", ID:"五彩K线-双飞乌鸦", Type:5},
|
|
155721
|
+
{Name:"五彩K线-上升三部曲", ID:"五彩K线-上升三部曲", Type:5},
|
|
155722
|
+
{Name:"五彩K线-下跌三部曲", ID:"五彩K线-下跌三部曲", Type:5},
|
|
155723
|
+
{Name:"五彩K线-长下影", ID:"五彩K线-长下影", Type:5},
|
|
155724
|
+
|
|
155725
|
+
{Name:"五彩K线-长上影", ID:"五彩K线-长上影", Type:5},
|
|
155726
|
+
{Name:"五彩K线-分离", ID:"五彩K线-分离", Type:5},
|
|
155727
|
+
|
|
155728
|
+
]
|
|
155729
|
+
},
|
|
155730
|
+
{
|
|
155731
|
+
Group:{ ID:"交易系统", Name:"交易系统"} ,
|
|
155732
|
+
AryIndex:
|
|
155733
|
+
[
|
|
155734
|
+
{Name:"交易系统-BIAS", ID:"交易系统-BIAS", Type:4},
|
|
155735
|
+
{Name:"交易系统-CCI", ID:"交易系统-CCI", Type:4},
|
|
155736
|
+
{Name:"交易系统-DMI", ID:"交易系统-DMI", Type:4},
|
|
155737
|
+
{Name:"交易系统-KD", ID:"交易系统-KD", Type:4},
|
|
155738
|
+
|
|
155739
|
+
{Name:"交易系统-BOLL", ID:"交易系统-BOLL", Type:4},
|
|
155740
|
+
{Name:"交易系统-KDJ", ID:"交易系统-KDJ", Type:4},
|
|
155741
|
+
{Name:"交易系统-MACD", ID:"交易系统-MACD", Type:4},
|
|
155742
|
+
{Name:"交易系统-KD", ID:"交易系统-KD", Type:4},
|
|
155743
|
+
|
|
155744
|
+
{Name:"交易系统-MTM", ID:"交易系统-MTM", Type:4},
|
|
155745
|
+
{Name:"交易系统-PSY", ID:"交易系统-PSY", Type:4},
|
|
155746
|
+
{Name:"交易系统-ROC", ID:"交易系统-ROC", Type:4},
|
|
155747
|
+
{Name:"交易系统-RSI", ID:"交易系统-RSI", Type:4},
|
|
155748
|
+
|
|
155749
|
+
{Name:"交易系统-VR", ID:"交易系统-VR", Type:4},
|
|
155750
|
+
{Name:"交易系统-DPSJ", ID:"交易系统-DPSJ", Type:4},
|
|
155751
|
+
|
|
154892
155752
|
]
|
|
154893
155753
|
},
|
|
154894
155754
|
|
|
@@ -155496,7 +156356,7 @@ function HQChartScriptWorker()
|
|
|
155496
156356
|
|
|
155497
156357
|
|
|
155498
156358
|
|
|
155499
|
-
var HQCHART_VERSION="1.1.
|
|
156359
|
+
var HQCHART_VERSION="1.1.14590";
|
|
155500
156360
|
|
|
155501
156361
|
function PrintHQChartVersion()
|
|
155502
156362
|
{
|