hqchart 1.1.12955 → 1.1.12968

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.
@@ -132,17 +132,15 @@ function JSIndexScript()
132
132
  ['CJL2', this.CJL], //期货持仓量
133
133
  ['ASI', this.ASI],['DC', this.DC],['DEMA', this.DEMA],["VWAP", this.VWAP],
134
134
 
135
+ //指南针
136
+ ["ZNZ_CBAND", this.ZNZ_CBAND],["ZNZ_RPY2",this.ZNZ_RPY2],["ZNZ_RPY1", this.ZNZ_RPY1],
137
+
135
138
  ['飞龙四式', this.Dragon4_Main],['飞龙四式-附图', this.Dragon4_Fig],
136
139
  ['资金分析', this.FundsAnalysis],['融资占比',this.MarginProportion],['负面新闻', this.NewsNegative],
137
140
  ['涨跌趋势', this.UpDownAnalyze],['北上资金', this.HK2SHSZ],['股东人数', this.ShareHolder],
138
141
 
139
142
  ["两融余额", this.Margin2],["两融余额2", this.Margin3],
140
-
141
- ['Zealink-资金吸筹', this.Zealink_Index1], ['Zealink-牛熊区间', this.Zealink_Index2],['Zealink-持仓信号', this.Zealink_Index3],
142
- ['Zealink-增减持',this.Zealink_Index4],['Zealink-大宗交易', this.Zealink_Index5], ['Zealink-信托持股', this.Zealink_Index6],
143
- ['Zealink-官网新闻', this.Zealink_Index7], ['Zealink-高管要闻', this.Zealink_Index8],['Zealink-股权质押', this.Zealink_Index9],
144
- ['Zealink-操盘BS点', this.Zealink_Index10],['Zealink-操盘BS点2', this.Zealink_Index11],
145
-
143
+
146
144
  //外包指标
147
145
  ['放心股-操盘BS点',this.FXG_BSPoint],
148
146
  ['放心股-涨停多空线',this.FXG_INDEX],
@@ -194,6 +192,7 @@ JSIndexScript.ModifyAttribute=function(indexInfo, attribute)
194
192
  if (attribute.Lock) indexInfo.Lock=attribute.Lock;
195
193
  if (IFrameSplitOperator.IsNumber(attribute.YSplitType)) indexInfo.YSplitType=attribute.YSplitType;
196
194
  if (IFrameSplitOperator.IsBool(attribute.IsShowIndexTitle)) indexInfo.IsShowIndexTitle=attribute.IsShowIndexTitle;
195
+ if (IFrameSplitOperator.IsNumber(attribute.KLineType)) indexInfo.KLineType=attribute.KLineType;
197
196
 
198
197
  if (attribute.YAxis)
199
198
  {
@@ -3281,359 +3280,6 @@ EXITLONG: (CROSS(HSL,5) OR CROSS(K,80));'
3281
3280
  return data;
3282
3281
  }
3283
3282
 
3284
-
3285
- JSIndexScript.prototype.Zealink_Index1 = function ()
3286
- {
3287
- let data =
3288
- {
3289
- Name: '资金吸筹', Description: '资金吸筹', IsMainIndex: false,
3290
- Args: [],
3291
- Script: //脚本
3292
- 'VAR1:=REF((LOW+OPEN+CLOSE+HIGH)/4,1); \n\
3293
- VAR2:= SMA(ABS(LOW - VAR1), 13, 1) / SMA(MAX(LOW - VAR1, 0), 10, 1);\n\
3294
- VAR3:= EMA(VAR2, 10);\n\
3295
- VAR4:= LLV(LOW, 33);\n\
3296
- VAR5:= EMA(IF(LOW <= VAR4, VAR3, 0), 3) * 0.2;\n\
3297
- 主力进场: IF(VAR5 > REF(VAR5, 1), VAR5,0), COLORRED, NODRAW;\n\
3298
- 洗盘: IF(VAR5 < REF(VAR5, 1), VAR5,0), COLORYELLOW, NODRAW;\n\
3299
- STICKLINE(VAR5> REF(VAR5, 1),0, VAR5, 20, 0), COLORRED;\n\
3300
- STICKLINE(VAR5 < REF(VAR5, 1), 0, VAR5, 20, 0), COLORYELLOW;'
3301
- };
3302
-
3303
- return data;
3304
- }
3305
-
3306
- JSIndexScript.prototype.Zealink_Index2 = function ()
3307
- {
3308
- let data =
3309
- {
3310
- Name: '牛熊区间', Description: '牛熊区间', IsMainIndex: false,YSpecificMaxMin:{Max:100,Min:1,Count:4},YSplitScale:[1,50,100],
3311
- Args: [],
3312
- Script: //脚本
3313
- '短高H:=(20*H+19*REF(H,1)+18*REF(H,2)+17*REF(H,3)+16*REF(H,4)+15*REF(H,5)+14*REF(H,6)\n\
3314
- + 13 * REF(H, 7) + 12 * REF(H, 8) + 11 * REF(H, 9) + 10 * REF(H, 10) + 9 * REF(H, 11) + 8 * REF(H, 12)\n\
3315
- + 7 * REF(H, 13) + 6 * REF(H, 14) + 5 * REF(H, 15) + 4 * REF(H, 16) + 3 * REF(H, 17) + 2 * REF(H, 18) +\n\
3316
- REF(H, 20))/ 210, COLORBLUE, LINETHICK1;\n\
3317
- 短低L:= (20 * L + 19 * REF(L, 1) + 18 * REF(L, 2) + 17 * REF(L, 3) + 16 * REF(L, 4) + 15 * REF(L, 5) + 14 * REF(L, 6)\n\
3318
- + 13 * REF(L, 7) + 12 * REF(L, 8) + 11 * REF(L, 9) + 10 * REF(L, 10) + 9 * REF(L, 11) + 8 * REF(L, 12)\n\
3319
- + 7 * REF(L, 13) + 6 * REF(L, 14) + 5 * REF(L, 15) + 4 * REF(L, 16) + 3 * REF(L, 17) + 2 * REF(L, 18) +\n\
3320
- REF(L, 20)) / 210, COLORBLUE, LINETHICK1;\n\
3321
- D90H:= EMA(短高H, 90), COLORRED, LINETHICK1;\n\
3322
- D90L:= EMA(短低L, 90), COLORRED, LINETHICK1;\n\
3323
- D90差:= D90H - D90L;\n\
3324
- D90顶:= D90H + D90差 * 2, COLORRED, LINETHICK1;\n\
3325
- D90底:= D90L - D90差 * 2, COLORRED, LINETHICK1;\n\
3326
- 高0:= (EMA(EMA(H, 25), 25) - EMA(EMA(L, 25), 25)) * 1 + EMA(EMA(H, 25), 25), LINETHICK1, COLORWHITE;\n\
3327
- 低0:= EMA(EMA(L, 25), 25) - (EMA(EMA(H, 25), 25) - EMA(EMA(L, 25), 25)) * 1, LINETHICK1, COLORWHITE;\n\
3328
- 多头定位:= 低0 >= D90底 AND 高0 >= D90顶;\n\
3329
- 空头定位:= 高0 <= D90顶 AND 低0 <= D90底;\n\
3330
- 震荡定位:= 低0 >= D90底 AND 高0 <= D90顶;\n\
3331
- 牛市: IF(多头定位 == 1, 100, 1), COLORRED, NODRAW;\n\
3332
- 熊市: IF(空头定位 == 1, 100, 1), COLORGREEN, NODRAW;\n\
3333
- 震荡: IF(震荡定位 == 1, 100, 1), COLORGRAY, NODRAW;\n\
3334
- STICKLINE(多头定位 == 1, 100, 1, 100, 0), COLORRED;\n\
3335
- STICKLINE(空头定位 == 1, 100, 1, 100, 0), COLORGREEN;\n\
3336
- STICKLINE(震荡定位 == 1, 100, 1, 100, 0), COLORGRAY;'
3337
- };
3338
-
3339
- return data;
3340
- }
3341
-
3342
- JSIndexScript.prototype.Zealink_Index3 = function ()
3343
- {
3344
- let data =
3345
- {
3346
- Name: '持仓信号', Description: '持仓信号', IsMainIndex: true,
3347
- Args: [],
3348
- Script: //脚本
3349
- '买线:=EMA(C,2);\n\
3350
- 卖线:=EMA(SLOPE(C,30)*5+C,20); \n\
3351
- BU:=CROSS(买线,卖线);\n\
3352
- SEL:=CROSS(卖线,买线);\n\
3353
- \n\
3354
- STICKLINE(买线>=卖线 AND CLOSE>OPEN,LOW,HIGH,0,1),COLORRED;\n\
3355
- STICKLINE(买线>=卖线 AND CLOSE<OPEN,LOW,HIGH,0,1),COLORRED;\n\
3356
- STICKLINE(买线>=卖线 AND CLOSE>OPEN,CLOSE,OPEN,50,1),COLORRED;\n\
3357
- STICKLINE(买线>=卖线 AND CLOSE<OPEN,CLOSE,OPEN,50,0),COLORRED;\n\
3358
- STICKLINE(买线<卖线 AND CLOSE<OPEN,LOW,HIGH,0,1),COLORGREEN;\n\
3359
- STICKLINE(买线<卖线 AND CLOSE>OPEN,LOW,HIGH,0,1),COLORGREEN;\n\
3360
- STICKLINE(买线<卖线 AND CLOSE<OPEN,CLOSE,OPEN,50,0),COLORGREEN;\n\
3361
- STICKLINE(买线<卖线 AND CLOSE>OPEN,CLOSE,OPEN,50,1),COLORGREEN;\n\
3362
- \n\
3363
- HHJSJDA:=(3*CLOSE+OPEN+LOW+HIGH)/6;\n\
3364
- HHJSJDB:(19*HHJSJDA+19*REF(HHJSJDA,1)+18*REF(HHJSJDA,2)+17*REF(HHJSJDA,3)+16*REF(HHJSJDA,4)+15*REF(HHJSJDA,5)+14*REF(HHJSJDA,6)\n\
3365
- +13*REF(HHJSJDA,7)+12*REF(HHJSJDA,8)+11*REF(HHJSJDA,9)+10*REF(HHJSJDA,10)+9*REF(HHJSJDA,11)+8*REF(HHJSJDA,12)+7*REF(HHJSJDA,13)+6*REF(HHJSJDA,14)+5*REF(HHJSJDA,15)+4*REF(HHJSJDA,16)+3*REF(HHJSJDA,17)+2*REF\n\
3366
- (HHJSJDA,20)+REF(HHJSJDA,19))/210,COLORYELLOW;\n\
3367
- HHJSJDC:MA(HHJSJDB,5),COLORRED;\n\
3368
- \n\
3369
- SVAR11:=HHV(HIGH,34);\n\
3370
- SVAR14:=CLOSE-REF(CLOSE,1);\n\
3371
- SVAR15:=MAX(SVAR14,0);\n\
3372
- SVAR16:=ABS(SVAR14);\n\
3373
- SVAR17:=SMA(SVAR15,7,1)/SMA(SVAR16,7,1)*100;\n\
3374
- SVAR18:=SMA(SVAR15,13,1)/SMA(SVAR16,13,1)*100;\n\
3375
- SVAR19:=BARSCOUNT(CLOSE);\n\
3376
- SVAR20:=SMA(MAX(SVAR14,0),6,1)/SMA(ABS(SVAR14),6,1)*100;\n\
3377
- SVAR21:=(-200)*(HHV(HIGH,60)-CLOSE)/(HHV(HIGH,60)-LLV(LOW,60))+100;\n\
3378
- SVAR1A:=(CLOSE-LLV(LOW,15))/(HHV(HIGH,15)-LLV(LOW,15))*100;\n\
3379
- SVAR1B:=SMA((SMA(SVAR1A,4,1)-50)*2,3,1);\n\
3380
- SVAR1C:=(INDEXC-LLV(INDEXL,14))/(HHV(INDEXH,14)-LLV(INDEXL,14))*100;\n\
3381
- SVAR1D:=SMA(SVAR1C,4,1);\n\
3382
- SVAR1E:=SMA(SVAR1D,3,1);\n\
3383
- SVAR1F:=(HHV(HIGH,30)-CLOSE)/CLOSE*100;\n\
3384
- SVAR22:=SVAR20<=25 AND SVAR21<-95 AND SVAR1F>20 AND SVAR1B<-30 AND SVAR1E<30 AND SVAR11-CLOSE>=-0.25 AND SVAR17<22 AND SVAR18<28 AND SVAR19>50;\n\
3385
- BUY3:=CROSS(SVAR22,0.5) AND COUNT(SVAR22==1,10)==1;\n\
3386
- \n\
3387
- SVARF:=LOW*0.9;\n\
3388
- SVAR10X:=100-3*SMA((OPEN-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1)+2*SMA(SMA((OPEN-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1),15,1);\n\
3389
- SVAR11X:=SVARF<REF(SVAR10X,1) AND VOL>REF(VOL,1) AND CLOSE>REF(CLOSE,1);\n\
3390
- BUY2:=SVAR11X AND COUNT(SVAR11X,30)==1;\n\
3391
- \n\
3392
- VAR1:=(CLOSE+HIGH+LOW+OPEN)/4;\n\
3393
- VAR2:=SUMBARS(VOL,CAPITAL);\n\
3394
- VAR3:=HHV(VAR1,VAR2);\n\
3395
- VAR4:=LLV(VAR1,VAR2);\n\
3396
- VAR5:=(2*VAR1-VAR4-REF(VAR4,1))/(VAR3-VAR4);\n\
3397
- VAR6:=(VAR1-VAR4)/(VAR3-VAR4);\n\
3398
- VAR7:=IF(VAR1<=VAR4,VAR5*60,VAR6*60);\n\
3399
- VAR8:=600*(EMA(CLOSE,3)-EMA(LOW,30))/EMA(LOW,30);\n\
3400
- VAR9:=EMA(VAR8,7);\n\
3401
- VARC:=HHV(HIGH,9)-LLV(LOW,9);\n\
3402
- VARD:=HHV(HIGH,9)-CLOSE;\n\
3403
- VARE:=CLOSE-LLV(LOW,9);\n\
3404
- VARF:=VARD/VARC*100-70;\n\
3405
- VAR10:=(CLOSE-LLV(LOW,60))/(HHV(HIGH,60)-LLV(LOW,60))*100;\n\
3406
- VAR11:=(2*CLOSE+HIGH+LOW)/4;\n\
3407
- VAR12:=SMA(VARE/VARC*100,3,1);\n\
3408
- VAR13:=LLV(LOW,34);\n\
3409
- VAR14:=SMA(VAR12,3,1)-SMA(VARF,9,1);\n\
3410
- VAR15:=IF(VAR14>100,VAR14-100,0);\n\
3411
- VAR16:=HHV(HIGH,34);\n\
3412
- VAR17:=EMA((VAR11-VAR13)/(VAR16-VAR13)*100,8);\n\
3413
- VAR18:=EMA(VAR17,5);\n\
3414
- BUY:=STICKLINE(VAR17-VAR18>0,VAR17,VAR18,8,1),COLORRED;\n\
3415
- SELL:=STICKLINE(VAR17-VAR18<0,VAR17,VAR18,8,1),COLORGREEN;\n\
3416
- BUY1:=VAR17>VAR18 AND REF(VAR17,1)<REF(VAR18,1);\n\
3417
- SELL1:=VAR17<VAR18 AND REF(VAR17,1)>REF(VAR18,1);\n\
3418
- \n\
3419
- 短高H:=(20*H+19*REF(H,1)+18*REF(H,2)+17*REF(H,3)+16*REF(H,4)+15*REF(H,5)+14*REF(H,6)\n\
3420
- +13*REF(H,7)+12*REF(H,8)+11*REF(H,9)+10*REF(H,10)+9*REF(H,11)+8*REF(H,12)\n\
3421
- +7*REF(H,13)+6*REF(H,14)+5*REF(H,15)+4*REF(H,16)+3*REF(H,17)+2*REF(H,18)+\n\
3422
- REF(H,20))/210,COLORBLUE,LINETHICK1;\n\
3423
- 短低L:=(20*L+19*REF(L,1)+18*REF(L,2)+17*REF(L,3)+16*REF(L,4)+15*REF(L,5)+14*REF(L,6)\n\
3424
- +13*REF(L,7)+12*REF(L,8)+11*REF(L,9)+10*REF(L,10)+9*REF(L,11)+8*REF(L,12)\n\
3425
- +7*REF(L,13)+6*REF(L,14)+5*REF(L,15)+4*REF(L,16)+3*REF(L,17)+2*REF(L,18)+\n\
3426
- REF(L,20))/210,COLORBLUE,LINETHICK1;\n\
3427
- D90H:=EMA(短高H,90),COLORRED,LINETHICK1;\n\
3428
- D90L:=EMA(短低L,90),COLORRED,LINETHICK1;\n\
3429
- D90差:=D90H-D90L;\n\
3430
- D90顶:=D90H+D90差*2,COLORRED,LINETHICK1;\n\
3431
- D90底:=D90L-D90差*2,COLORRED,LINETHICK1;\n\
3432
- 高0:=(EMA(EMA(H,25),25)-EMA(EMA(L,25),25))*1+EMA(EMA(H,25),25),LINETHICK1,COLORWHITE;\n\
3433
- 低0:=EMA(EMA(L,25),25)-(EMA(EMA(H,25),25)-EMA(EMA(L,25),25))*1,LINETHICK1,COLORWHITE;\n\
3434
- 多头定位:=低0>=D90底 AND 高0>=D90顶;\n\
3435
- 空头定位:=高0<=D90顶 AND 低0<=D90底;\n\
3436
- 震荡定位:=低0>=D90底 AND 高0<=D90顶;\n\
3437
- \n\
3438
- 牛市:=多头定位==1;\n\
3439
- 熊市:=空头定位==1;\n\
3440
- 震荡:=震荡定位==1;\n\
3441
- \n\
3442
- 非牛市:=熊市 OR 震荡;\n\
3443
- 非熊市:=牛市 OR 震荡;\n\
3444
- \n\
3445
- BUY11:=BUY1 AND 非熊市;\n\
3446
- SELL11:=SELL1 AND 震荡定位==0;\n\
3447
- \n\
3448
- BUY111:=BUY11 AND COUNT(BUY11,10)<2;\n\
3449
- BUY0:=BUY111 AND COUNT(BUY111,21)==1;\n\
3450
- SELL111:=SELL11 AND COUNT(SELL11,10)<2;\n\
3451
- SELL0:=SELL111 AND COUNT(SELL111,10)==1;\n\
3452
- \n\
3453
- XK1:=EMA(100*(CLOSE-LLV(LOW,34))/(HHV(HIGH,34)-LLV(LOW,34)),3)/4;\n\
3454
- 上穿:=REF(XK1,1)<5 AND XK1>=5;\n\
3455
- BUY4:=上穿 AND COUNT(XK1<2,12)<1;\n\
3456
- \n\
3457
- SELL2:=REF(XK1,1)<=22.5 AND XK1>22.5 AND COUNT(REF(XK1,1)>=22.5 AND XK1<22.5,5)>0;\n\
3458
- SELL3:=REF(XK1,1)>=21.5 AND XK1<21.5 AND COUNT(REF(XK1,1)>=22.5 AND XK1<22.5,12)>1;\n\
3459
- SELL4:=SELL2 OR SELL3 AND COUNT((SELL2 OR SELL3)==1,5)==1;\n\
3460
- \n\
3461
- SUPERDRAWTEXT(BUY0,L,"机会",2,10),COLORRED;\n\
3462
- SUPERDRAWTEXT(SELL0,H,"风险",1,10),COLORGREEN;\n\
3463
- SUPERDRAWTEXT(BUY2,L,"机会",2,10),COLORRED;\n\
3464
- SUPERDRAWTEXT(BUY4,L,"机会",2,10),COLORRED;\n\
3465
- SUPERDRAWTEXT(SELL4,H,"风险",1,10),COLORGREEN;'
3466
- };
3467
-
3468
- return data;
3469
- }
3470
-
3471
- JSIndexScript.prototype.Zealink_Index4 = function ()
3472
- {
3473
- let data =
3474
- {
3475
- Name: '股东实际增减持', Description: '股东实际增减持', IsMainIndex: false, FloatPrecision:0,
3476
- Args: [],
3477
- Script: //脚本
3478
- '增持:NEWS(4),NODRAW,COLORRED;\n\
3479
- 减持:NEWS(5),NODRAW,COLORGREEN;\n\
3480
- STICKLINE(增持>0,0,增持,1,0),COLORRED;\n\
3481
- STICKLINE(减持<0,0,减持,1,0),COLORGREEN;'
3482
- };
3483
-
3484
- return data;
3485
- }
3486
-
3487
- JSIndexScript.prototype.Zealink_Index5 = function ()
3488
- {
3489
- let data =
3490
- {
3491
- Name: '大宗交易', Description: '大宗交易', IsMainIndex: false, FloatPrecision: 0,
3492
- Args: [],
3493
- Script: //脚本
3494
- '交易次数:NEWS(7);'
3495
- };
3496
-
3497
- return data;
3498
- }
3499
-
3500
- JSIndexScript.prototype.Zealink_Index6 = function ()
3501
- {
3502
- let data =
3503
- {
3504
- Name: '信托持股', Description: '信托持股', IsMainIndex: false, FloatPrecision: 0,
3505
- Args: [],
3506
- Script: //脚本
3507
- '家数:NEWS(6);'
3508
- };
3509
-
3510
- return data;
3511
- }
3512
-
3513
- JSIndexScript.prototype.Zealink_Index7 = function ()
3514
- {
3515
- let data =
3516
- {
3517
- Name: '官网新闻', Description: '官网新闻', IsMainIndex: false, FloatPrecision: 0,
3518
- Args: [],
3519
- Script: //脚本
3520
- '个数:NEWS(8);'
3521
- };
3522
-
3523
- return data;
3524
- }
3525
-
3526
- JSIndexScript.prototype.Zealink_Index8 = function ()
3527
- {
3528
- let data =
3529
- {
3530
- Name: '高管要闻', Description: '高管要闻', IsMainIndex: false, FloatPrecision: 0,
3531
- Args: [],
3532
- Script: //脚本
3533
- '个数:NEWS(9);'
3534
- };
3535
-
3536
- return data;
3537
- }
3538
-
3539
- JSIndexScript.prototype.Zealink_Index9 = function ()
3540
- {
3541
- let data =
3542
- {
3543
- Name: '股权质押', Description: '股权质押', IsMainIndex: false, FloatPrecision: 0,
3544
- Args: [],
3545
- Script: //脚本
3546
- '次数:NEWS(10);'
3547
- };
3548
-
3549
- return data;
3550
- }
3551
-
3552
- JSIndexScript.prototype.Zealink_Index10 = function ()
3553
- {
3554
- let data =
3555
- {
3556
- Name: '操盘BS点', Description: '操盘BS点', IsMainIndex: true, FloatPrecision: 0,
3557
- Args: [],
3558
- Script: //脚本
3559
- "JJ:=(CLOSE+HIGH+LOW)/3; \n\
3560
- A:=EMA(JJ,10); \n\
3561
- B:=REF(A,1);\n\
3562
- M1:=EMA(CLOSE,3);\n\
3563
- M2:=EMA(CLOSE,8); \n\
3564
- M3:=EMA(M2,13); \n\
3565
- M4:=EMA(M2,55); \n\
3566
- B1:=A>B AND REF(A,1)<REF(B,1);\n\
3567
- S1:=A<B AND REF(A,1)>REF(B,1);\n\
3568
- INDEXCLOSE:INDEXC,EXDATA;\n\
3569
- INDEXOPEN:INDEXO,EXDATA;\n\
3570
- DRAWICON(REF(B1,1),L*0.97,13);\n\
3571
- DRAWICON(REF(S1,1),H*1.03,14);"
3572
- };
3573
-
3574
- return data;
3575
- }
3576
-
3577
- JSIndexScript.prototype.Zealink_Index11 = function ()
3578
- {
3579
- let data =
3580
- {
3581
- Name: '操盘BS点', Description: '操盘BS点', IsMainIndex: true, FloatPrecision: 0,
3582
- Args: [],
3583
- Script: //脚本
3584
- "JJ:=(CLOSE+HIGH+LOW)/3;\n\
3585
- A:=EMA(JJ,10);\n\
3586
- B:=REF(A,1);\n\
3587
- M1:=EMA(CLOSE,3);\n\
3588
- M2:=EMA(CLOSE,8); \n\
3589
- M3:=EMA(M2,13);\n\
3590
- M4:=EMA(M2,55);\n\
3591
- 持股区域:=STICKLINE(A>B,A,B,2,0),COLORYELLOW; \n\
3592
- 持币区域:=STICKLINE(A<B,A,B,2,0),COLORBLUE;\n\
3593
- \n\
3594
- VR1:=(C+O+REF(C,1))/3;\n\
3595
- VR3:=HHV(VR1,21);\n\
3596
- VR4:=LLV(VR1,21);\n\
3597
- VR5:=(2*VR1-VR4-REF(VR4,1))/(VR3-VR4);\n\
3598
- VR6:=(VR1-VR4)/(VR3-VR4);\n\
3599
- VR7:=IF(VR1<=VR4,VR5*60,VR6*60);\n\
3600
- VR8:=600*(EMA(C,3)-EMA(L,30))/EMA(L,30);\n\
3601
- VR9:=EMA(VR8,7);\n\
3602
- VRA:=(WINNER(120*C/100)-WINNER(100*C/100))*100;\n\
3603
- VRB:=(-100)*(WINNER(120*C/100)-WINNER(100*C/100))+5;\n\
3604
- VRC:=HHV(H,9)-LLV(L,9);\n\
3605
- VRD:=HHV(H,9)-C;\n\
3606
- VRE:=C-LLV(L,9);\n\
3607
- VRF:=VRD/VRC*100-70;\n\
3608
- VR10:=(C-LLV(L,60))/(HHV(H,60)-LLV(L,60))*100;\n\
3609
- VR11:=(2*C+H+L)/4;\n\
3610
- VR12:=SMA(VRE/VRC*100,3,1);\n\
3611
- VR13:=LLV(L,34);\n\
3612
- VR14:=SMA(VR12,3,1)-SMA(VRF,9,1);\n\
3613
- VR15:=IF(VR14>100,VR14-100,0);\n\
3614
- VR16:=HHV(H,34);\n\
3615
- VR17:=EMA((VR11-VR13)/(VR16-VR13)*100,8);\n\
3616
- VR18:=EMA(VR17,5);\n\
3617
- \n\
3618
- B1:=A>B AND REF(A,1)<REF(B,1);\n\
3619
- S1:=A<B AND REF(A,1)>REF(B,1);\n\
3620
- \n\
3621
- B9:=BARSLAST(REF(B1,1) AND (REF(VR17>VR18,1) OR MIN(VR17,VR18)>REF(MAX(VR17,VR18),1)));\n\
3622
- S9:=BARSLAST(REF(S1,1) AND (REF(VR17<VR18,1) OR MAX(VR17,VR18)<REF(MIN(VR17,VR18),1)));\n\
3623
- \n\
3624
- DRAWICON(REF(B1,1) AND (REF(VR17>VR18,1) OR MIN(VR17,VR18)>REF(MAX(VR17,VR18),1)) AND REF(B9,2)>=S9,L*0.97,13);\n\
3625
- DRAWICON(REF(S1,1) AND (REF(VR17<VR18,1) OR MAX(VR17,VR18)<REF(MIN(VR17,VR18),1)) AND REF(S9,1)>=B9,H*1.03,14);\n\
3626
- \n\
3627
- DRAWKLINE_IF(VR17>VR18,HIGH,CLOSE,LOW,OPEN),COLORRED;\n\
3628
- DRAWKLINE_IF(VR17<VR18,HIGH,CLOSE,LOW,OPEN),COLORBLUE;\n\
3629
- \n\
3630
- INDEXCLOSE:INDEXC,EXDATA; //取指数的收盘价 回测的时候计算BATE系数用 "
3631
- };
3632
-
3633
- return data;
3634
- }
3635
-
3636
-
3637
3283
  JSIndexScript.prototype.HeikinAshi=function()
3638
3284
  {
3639
3285
  let data =
@@ -4176,6 +3822,58 @@ ADX:SMA(ABS(MDI-PDI)/(MDI+PDI)*100,N,1),COLORYELLOW,LINETHICK2;
4176
3822
  }
4177
3823
 
4178
3824
 
3825
+ JSIndexScript.prototype.ZNZ_CBAND = function()
3826
+ {
3827
+ let data =
3828
+ {
3829
+ Name: 'ZNZ_CBAND', Description: '优化成本布林带宽', IsMainIndex: false,
3830
+ Args: [{ Name: 'N', Value: 20 }],
3831
+ Script: //脚本
3832
+ `A:=AMOUNT/(100*VOL);
3833
+ BBI1:=MA(A,N);
3834
+ UPR0:=BBI1+STD(A,N);
3835
+ DWN0:=BBI1-STD(A,N);
3836
+ UPR1:=BBI1+1.7*STD(A,N);
3837
+ DWN1:=BBI1-1.7*STD(A,N);
3838
+ 优化成本布林带宽:100*1.7*STD(A,N);`
3839
+ };
3840
+
3841
+ return data;
3842
+ }
3843
+
3844
+ JSIndexScript.prototype.ZNZ_RPY2 = function()
3845
+ {
3846
+ let data =
3847
+ {
3848
+ Name: 'ZNZ_RPY2', Description: '两年相对价位', IsMainIndex: false,
3849
+ Script: //脚本
3850
+ `A:=REF(HHV(CLOSE,480),1);
3851
+ B:=REF(LLV(CLOSE,480),1);
3852
+ 100*(CLOSE-B)/(A-B);`
3853
+ };
3854
+
3855
+ return data;
3856
+ }
3857
+
3858
+ JSIndexScript.prototype.ZNZ_RPY1 = function()
3859
+ {
3860
+ let data =
3861
+ {
3862
+ Name: 'ZNZ_RPY1', Description: '年相对价位', IsMainIndex: false,
3863
+ Args: [{ Name: 'N', Value: 240 }],
3864
+ Script: //脚本
3865
+ `A:=REF(HHV(CLOSE,N),1);
3866
+ B:=REF(LLV(CLOSE,N),1);
3867
+ 100*(CLOSE-B)/(A-B);`
3868
+ };
3869
+
3870
+ return data;
3871
+ }
3872
+
3873
+
3874
+
3875
+
3876
+
4179
3877
  JSIndexScript.prototype.TEST = function ()
4180
3878
  {
4181
3879
  let data =
@@ -6921,6 +6619,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
6921
6619
  this.Tooltip.id=Guid();
6922
6620
  uielement.parentNode.appendChild(this.Tooltip);
6923
6621
  this.IsShowTooltip=true; //是否显示K线tooltip
6622
+ this.TooltipCache={ Type:null, IsShow:false, X:null, Y:null, Data:null, InnerHTML:null }; //缓存tooltip数据
6924
6623
 
6925
6624
  //区间选择
6926
6625
  this.SelectRect=document.createElement("div");
@@ -10676,6 +10375,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10676
10375
 
10677
10376
  var pixelTatio = GetDevicePixelRatio(); //获取设备的分辨率
10678
10377
  var xMove=15/pixelTatio; //顶部坐标偏移位置
10378
+
10379
+ this.TooltipCache.Type=toolTip.Type;
10380
+ this.TooltipCache.Data=null;
10381
+ this.TooltipCache.X=x;
10382
+ this.TooltipCache.Y=y;
10383
+
10679
10384
  if (toolTip.Type===0) //K线信息
10680
10385
  {
10681
10386
  var scrollPos=GetScrollPosition();
@@ -10710,6 +10415,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10710
10415
  this.Tooltip.className='jschart-tooltip';
10711
10416
  this.Tooltip.innerHTML=format.Text;
10712
10417
  this.Tooltip.style.display = "block";
10418
+
10419
+ this.TooltipCache.IsShow=true;
10420
+ this.TooltipCache.Data={ Date:toolTip.Data.Date, Time:toolTip.Data.Time };
10421
+ this.TooltipCache.InnerHTML=format.Text;
10713
10422
  }
10714
10423
  else if (toolTip.Type===1) //信息地雷提示信息
10715
10424
  {
@@ -10864,13 +10573,44 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10864
10573
  this.Tooltip.style.top = (top +xMove)+ "px";
10865
10574
  this.Tooltip.style.width = width+"px";
10866
10575
  this.Tooltip.style.height =null;
10867
- this.Tooltip.innerHTML=format.Text;;
10576
+ this.Tooltip.innerHTML=format.Text;
10868
10577
  this.Tooltip.style.display = "block";
10869
10578
  }
10870
10579
  }
10871
10580
 
10581
+ this.UpdateDOMTooltip=function(toolTipType, data)
10582
+ {
10583
+ if (!this.TooltipCache.IsShow) return ;
10584
+ if (this.TooltipCache.Type!=toolTipType) return;
10585
+ if (!this.TooltipCache.Data) return;
10586
+
10587
+ if (this.TooltipCache.Type===0)
10588
+ {
10589
+ if (!data || !IFrameSplitOperator.IsNonEmptyArray(data.Data)) return;
10590
+ var lastItem=data.Data[data.Data.length-1];
10591
+ if (lastItem.Date!=this.TooltipCache.Data.Date) return;
10592
+ if (IFrameSplitOperator.IsNumber(lastItem.Time) && lastItem.Time!=this.TooltipCache.Data.Time) return;
10593
+ var klinePaint=this.ChartPaint[0];
10594
+
10595
+ var format=g_DivTooltipDataForamt.Create('HistoryDataStringFormat');
10596
+ format.Value={ Data:lastItem, ChartPaint:klinePaint, Type:this.TooltipCache.Type };
10597
+ format.Symbol=this.Symbol;
10598
+ format.LanguageID=this.LanguageID;
10599
+ format.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
10600
+ if (!format.Operator()) return;
10601
+ if (format.Text==this.TooltipCache.InnerHTML) return;
10602
+ this.Tooltip.innerHTML=format.Text;
10603
+ this.TooltipCache.InnerHTML=format.Text;
10604
+ }
10605
+ }
10606
+
10872
10607
  this.HideTooltip=function()
10873
10608
  {
10609
+ this.TooltipCache.IsShow=false;
10610
+ this.TooltipCache.Type=null;
10611
+ this.TooltipCache.InnerHTML=null;
10612
+ this.TooltipCache.Data=null;
10613
+
10874
10614
  if (this.Tooltip.style.display!="none") this.Tooltip.style.display = "none";
10875
10615
  }
10876
10616
 
@@ -12966,6 +12706,65 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
12966
12706
  }
12967
12707
  }
12968
12708
  }
12709
+
12710
+ //获取当前的显示的指标 包含叠加指标
12711
+ this.GetIndexInfo=function()
12712
+ {
12713
+ var aryIndex=[];
12714
+ for(var i=0, j=0; i<this.WindowIndex.length; ++i)
12715
+ {
12716
+ var item=this.WindowIndex[i];
12717
+ if (!item) continue;
12718
+
12719
+ var info={ Name:item.Name, WindowIndex:i, IsOverlay:false };
12720
+ if (item.ID) info.ID=item.ID;
12721
+ if (IFrameSplitOperator.IsNonEmptyArray(item.Arguments)) //参数
12722
+ {
12723
+ info.Args=[];
12724
+ for(j=0;j<item.Arguments.length;++j)
12725
+ {
12726
+ var argItem=item.Arguments[j];
12727
+ info.Args.push( { Name:argItem.Name, Value:argItem.Value} );
12728
+ }
12729
+ }
12730
+
12731
+ aryIndex.push(info);
12732
+ }
12733
+
12734
+ this.GetOverlayIndexInfo(aryIndex); //叠加指标
12735
+
12736
+ return aryIndex;
12737
+ }
12738
+
12739
+ //叠加指标
12740
+ this.GetOverlayIndexInfo=function(aryIndex)
12741
+ {
12742
+ for(var i=0, j=0, k=0; i<this.Frame.SubFrame.length; ++i)
12743
+ {
12744
+ var item=this.Frame.SubFrame[i];
12745
+ if (!IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex)) continue;
12746
+
12747
+ for(j=0; j<item.OverlayIndex.length; ++j)
12748
+ {
12749
+ var overlayItem=item.OverlayIndex[j];
12750
+ if (!overlayItem.Script) continue;
12751
+ var indexData=overlayItem.Script;
12752
+ var info={ Name:indexData.Name, ID:indexData.ID, WindowIndex:i, IsOverlay:true, Identify:overlayItem.Identify };
12753
+
12754
+ if (IFrameSplitOperator.IsNonEmptyArray(indexData.Arguments)) //参数
12755
+ {
12756
+ info.Args=[];
12757
+ for(k=0;k<indexData.Arguments.length;++k)
12758
+ {
12759
+ var argItem=indexData.Arguments[k];
12760
+ info.Args.push( { Name:argItem.Name, Value:argItem.Value} );
12761
+ }
12762
+ }
12763
+
12764
+ aryIndex.push(info);
12765
+ }
12766
+ }
12767
+ }
12969
12768
  }
12970
12769
 
12971
12770
  function GetDevicePixelRatio()
@@ -16148,16 +15947,18 @@ function MinuteFrame()
16148
15947
  if (this.Identify==0 && this.IsShowCloseButton) this.DrawCloseBeforeButton(moveonPoint, mouseStatus); //盘前集合竞价关闭按钮
16149
15948
 
16150
15949
  if (this.ChartBorder.TitleHeight<5) return;
16151
- if (this.Identify==0 || this.Identify==1) return;
16152
15950
 
16153
15951
  var aryButton=[];
16154
- if (this.CloseIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.CLOSE_INDEX_WINDOW, Style:this.CloseWindowButton });
16155
- if (this.MaxMinWindow) aryButton.push({ ID:JSCHART_BUTTON_ID.MAX_MIN_WINDOW, Style:this.MaxMinWindowButton })
16156
- if (this.TitleWindow) aryButton.push({ ID:JSCHART_BUTTON_ID.TITLE_WINDOW, Style:this.TitleWindowButton });
16157
- if (this.ExportData) aryButton.push( {ID:JSCHART_BUTTON_ID.EXPORT_DATA, Style:this.ExportDataButton});
16158
- if (this.OverlayIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.OVERLAY_INDEX, Style:this.OverlayIndexButton });
16159
- if (this.ChangeIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.CHANGE_INDEX, Style:this.ChangeIndexButton });
16160
- if (this.ModifyIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM, Style:this.ModifyIndexParamButton });
15952
+ if (this.Identify!=0 && this.Identify!=1) //价格图和成交量图只有自定义按钮
15953
+ {
15954
+ if (this.CloseIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.CLOSE_INDEX_WINDOW, Style:this.CloseWindowButton });
15955
+ if (this.MaxMinWindow) aryButton.push({ ID:JSCHART_BUTTON_ID.MAX_MIN_WINDOW, Style:this.MaxMinWindowButton })
15956
+ if (this.TitleWindow) aryButton.push({ ID:JSCHART_BUTTON_ID.TITLE_WINDOW, Style:this.TitleWindowButton });
15957
+ if (this.ExportData) aryButton.push( {ID:JSCHART_BUTTON_ID.EXPORT_DATA, Style:this.ExportDataButton});
15958
+ if (this.OverlayIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.OVERLAY_INDEX, Style:this.OverlayIndexButton });
15959
+ if (this.ChangeIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.CHANGE_INDEX, Style:this.ChangeIndexButton });
15960
+ if (this.ModifyIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM, Style:this.ModifyIndexParamButton });
15961
+ }
16161
15962
 
16162
15963
  if (IFrameSplitOperator.IsNonEmptyArray(this.CustomToolbar))
16163
15964
  {
@@ -71002,6 +70803,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
71002
70803
  this.Draw();
71003
70804
 
71004
70805
  this.SendKLineUpdateEvent(bindData);
70806
+ this.UpdateDOMTooltip(0, bindData);
71005
70807
 
71006
70808
  //叠加指标计算
71007
70809
  this.BindAllOverlayIndexData(bindData, { CheckRunCount:true,SyncExecute:false }); //异步模式叠加指标
@@ -71252,6 +71054,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
71252
71054
  this.Draw();
71253
71055
 
71254
71056
  this.SendKLineUpdateEvent(bindData);
71057
+ this.UpdateDOMTooltip(0, bindData);
71255
71058
 
71256
71059
  //更新叠加指标
71257
71060
  this.BindAllOverlayIndexData(bindData, { CheckRunCount:true,SyncExecute:false }); //异步模式叠加指标
@@ -72752,31 +72555,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72752
72555
  this.Draw();
72753
72556
  }
72754
72557
 
72755
- //获取当前的显示的指标
72756
- this.GetIndexInfo=function()
72757
- {
72758
- var aryIndex=[];
72759
- for(var i in this.WindowIndex)
72760
- {
72761
- var item=this.WindowIndex[i];
72762
- var info={Name:item.Name};
72763
- if (item.ID) info.ID=item.ID;
72764
- if (item.Arguments) //参数
72765
- {
72766
- info.Args=[];
72767
- for(var i in item.Arguments)
72768
- {
72769
- var argItem=item.Arguments[i];
72770
- info.Args.push( {Name:argItem.Name, Value:argItem.Value} );
72771
- }
72772
- }
72773
-
72774
- aryIndex.push(info);
72775
- }
72776
-
72777
- return aryIndex;
72778
- }
72779
-
72780
72558
  this.CreateExtendChart=function(name, option) //创建扩展图形
72781
72559
  {
72782
72560
  var chart;
@@ -80421,21 +80199,6 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
80421
80199
  this.WindowIndex[windowIndex].Create(this,windowIndex);
80422
80200
  }
80423
80201
 
80424
- //获取当前的显示的指标
80425
- this.GetIndexInfo=function()
80426
- {
80427
- var aryIndex=[];
80428
- for(var i in this.WindowIndex)
80429
- {
80430
- var item=this.WindowIndex[i];
80431
- var info={Name:item.Name};
80432
- if (item.ID) info.ID=item.ID;
80433
- aryIndex.push(info);
80434
- }
80435
-
80436
- return aryIndex;
80437
- }
80438
-
80439
80202
  this.OnTouchFinished=function()
80440
80203
  {
80441
80204
  if (this.CorssCursorTouchEnd===true) //手势离开十字光标消失
@@ -129403,7 +129166,7 @@ function ScrollBarBGChart()
129403
129166
 
129404
129167
 
129405
129168
 
129406
- var HQCHART_VERSION="1.1.12954";
129169
+ var HQCHART_VERSION="1.1.12967";
129407
129170
 
129408
129171
  function PrintHQChartVersion()
129409
129172
  {