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.
@@ -176,17 +176,15 @@ function JSIndexScript()
176
176
  ['CJL2', this.CJL], //期货持仓量
177
177
  ['ASI', this.ASI],['DC', this.DC],['DEMA', this.DEMA],["VWAP", this.VWAP],
178
178
 
179
+ //指南针
180
+ ["ZNZ_CBAND", this.ZNZ_CBAND],["ZNZ_RPY2",this.ZNZ_RPY2],["ZNZ_RPY1", this.ZNZ_RPY1],
181
+
179
182
  ['飞龙四式', this.Dragon4_Main],['飞龙四式-附图', this.Dragon4_Fig],
180
183
  ['资金分析', this.FundsAnalysis],['融资占比',this.MarginProportion],['负面新闻', this.NewsNegative],
181
184
  ['涨跌趋势', this.UpDownAnalyze],['北上资金', this.HK2SHSZ],['股东人数', this.ShareHolder],
182
185
 
183
186
  ["两融余额", this.Margin2],["两融余额2", this.Margin3],
184
-
185
- ['Zealink-资金吸筹', this.Zealink_Index1], ['Zealink-牛熊区间', this.Zealink_Index2],['Zealink-持仓信号', this.Zealink_Index3],
186
- ['Zealink-增减持',this.Zealink_Index4],['Zealink-大宗交易', this.Zealink_Index5], ['Zealink-信托持股', this.Zealink_Index6],
187
- ['Zealink-官网新闻', this.Zealink_Index7], ['Zealink-高管要闻', this.Zealink_Index8],['Zealink-股权质押', this.Zealink_Index9],
188
- ['Zealink-操盘BS点', this.Zealink_Index10],['Zealink-操盘BS点2', this.Zealink_Index11],
189
-
187
+
190
188
  //外包指标
191
189
  ['放心股-操盘BS点',this.FXG_BSPoint],
192
190
  ['放心股-涨停多空线',this.FXG_INDEX],
@@ -238,6 +236,7 @@ JSIndexScript.ModifyAttribute=function(indexInfo, attribute)
238
236
  if (attribute.Lock) indexInfo.Lock=attribute.Lock;
239
237
  if (IFrameSplitOperator.IsNumber(attribute.YSplitType)) indexInfo.YSplitType=attribute.YSplitType;
240
238
  if (IFrameSplitOperator.IsBool(attribute.IsShowIndexTitle)) indexInfo.IsShowIndexTitle=attribute.IsShowIndexTitle;
239
+ if (IFrameSplitOperator.IsNumber(attribute.KLineType)) indexInfo.KLineType=attribute.KLineType;
241
240
 
242
241
  if (attribute.YAxis)
243
242
  {
@@ -3325,359 +3324,6 @@ EXITLONG: (CROSS(HSL,5) OR CROSS(K,80));'
3325
3324
  return data;
3326
3325
  }
3327
3326
 
3328
-
3329
- JSIndexScript.prototype.Zealink_Index1 = function ()
3330
- {
3331
- let data =
3332
- {
3333
- Name: '资金吸筹', Description: '资金吸筹', IsMainIndex: false,
3334
- Args: [],
3335
- Script: //脚本
3336
- 'VAR1:=REF((LOW+OPEN+CLOSE+HIGH)/4,1); \n\
3337
- VAR2:= SMA(ABS(LOW - VAR1), 13, 1) / SMA(MAX(LOW - VAR1, 0), 10, 1);\n\
3338
- VAR3:= EMA(VAR2, 10);\n\
3339
- VAR4:= LLV(LOW, 33);\n\
3340
- VAR5:= EMA(IF(LOW <= VAR4, VAR3, 0), 3) * 0.2;\n\
3341
- 主力进场: IF(VAR5 > REF(VAR5, 1), VAR5,0), COLORRED, NODRAW;\n\
3342
- 洗盘: IF(VAR5 < REF(VAR5, 1), VAR5,0), COLORYELLOW, NODRAW;\n\
3343
- STICKLINE(VAR5> REF(VAR5, 1),0, VAR5, 20, 0), COLORRED;\n\
3344
- STICKLINE(VAR5 < REF(VAR5, 1), 0, VAR5, 20, 0), COLORYELLOW;'
3345
- };
3346
-
3347
- return data;
3348
- }
3349
-
3350
- JSIndexScript.prototype.Zealink_Index2 = function ()
3351
- {
3352
- let data =
3353
- {
3354
- Name: '牛熊区间', Description: '牛熊区间', IsMainIndex: false,YSpecificMaxMin:{Max:100,Min:1,Count:4},YSplitScale:[1,50,100],
3355
- Args: [],
3356
- Script: //脚本
3357
- '短高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\
3358
- + 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\
3359
- + 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\
3360
- REF(H, 20))/ 210, COLORBLUE, LINETHICK1;\n\
3361
- 短低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\
3362
- + 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\
3363
- + 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\
3364
- REF(L, 20)) / 210, COLORBLUE, LINETHICK1;\n\
3365
- D90H:= EMA(短高H, 90), COLORRED, LINETHICK1;\n\
3366
- D90L:= EMA(短低L, 90), COLORRED, LINETHICK1;\n\
3367
- D90差:= D90H - D90L;\n\
3368
- D90顶:= D90H + D90差 * 2, COLORRED, LINETHICK1;\n\
3369
- D90底:= D90L - D90差 * 2, COLORRED, LINETHICK1;\n\
3370
- 高0:= (EMA(EMA(H, 25), 25) - EMA(EMA(L, 25), 25)) * 1 + EMA(EMA(H, 25), 25), LINETHICK1, COLORWHITE;\n\
3371
- 低0:= EMA(EMA(L, 25), 25) - (EMA(EMA(H, 25), 25) - EMA(EMA(L, 25), 25)) * 1, LINETHICK1, COLORWHITE;\n\
3372
- 多头定位:= 低0 >= D90底 AND 高0 >= D90顶;\n\
3373
- 空头定位:= 高0 <= D90顶 AND 低0 <= D90底;\n\
3374
- 震荡定位:= 低0 >= D90底 AND 高0 <= D90顶;\n\
3375
- 牛市: IF(多头定位 == 1, 100, 1), COLORRED, NODRAW;\n\
3376
- 熊市: IF(空头定位 == 1, 100, 1), COLORGREEN, NODRAW;\n\
3377
- 震荡: IF(震荡定位 == 1, 100, 1), COLORGRAY, NODRAW;\n\
3378
- STICKLINE(多头定位 == 1, 100, 1, 100, 0), COLORRED;\n\
3379
- STICKLINE(空头定位 == 1, 100, 1, 100, 0), COLORGREEN;\n\
3380
- STICKLINE(震荡定位 == 1, 100, 1, 100, 0), COLORGRAY;'
3381
- };
3382
-
3383
- return data;
3384
- }
3385
-
3386
- JSIndexScript.prototype.Zealink_Index3 = function ()
3387
- {
3388
- let data =
3389
- {
3390
- Name: '持仓信号', Description: '持仓信号', IsMainIndex: true,
3391
- Args: [],
3392
- Script: //脚本
3393
- '买线:=EMA(C,2);\n\
3394
- 卖线:=EMA(SLOPE(C,30)*5+C,20); \n\
3395
- BU:=CROSS(买线,卖线);\n\
3396
- SEL:=CROSS(卖线,买线);\n\
3397
- \n\
3398
- STICKLINE(买线>=卖线 AND CLOSE>OPEN,LOW,HIGH,0,1),COLORRED;\n\
3399
- STICKLINE(买线>=卖线 AND CLOSE<OPEN,LOW,HIGH,0,1),COLORRED;\n\
3400
- STICKLINE(买线>=卖线 AND CLOSE>OPEN,CLOSE,OPEN,50,1),COLORRED;\n\
3401
- STICKLINE(买线>=卖线 AND CLOSE<OPEN,CLOSE,OPEN,50,0),COLORRED;\n\
3402
- STICKLINE(买线<卖线 AND CLOSE<OPEN,LOW,HIGH,0,1),COLORGREEN;\n\
3403
- STICKLINE(买线<卖线 AND CLOSE>OPEN,LOW,HIGH,0,1),COLORGREEN;\n\
3404
- STICKLINE(买线<卖线 AND CLOSE<OPEN,CLOSE,OPEN,50,0),COLORGREEN;\n\
3405
- STICKLINE(买线<卖线 AND CLOSE>OPEN,CLOSE,OPEN,50,1),COLORGREEN;\n\
3406
- \n\
3407
- HHJSJDA:=(3*CLOSE+OPEN+LOW+HIGH)/6;\n\
3408
- 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\
3409
- +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\
3410
- (HHJSJDA,20)+REF(HHJSJDA,19))/210,COLORYELLOW;\n\
3411
- HHJSJDC:MA(HHJSJDB,5),COLORRED;\n\
3412
- \n\
3413
- SVAR11:=HHV(HIGH,34);\n\
3414
- SVAR14:=CLOSE-REF(CLOSE,1);\n\
3415
- SVAR15:=MAX(SVAR14,0);\n\
3416
- SVAR16:=ABS(SVAR14);\n\
3417
- SVAR17:=SMA(SVAR15,7,1)/SMA(SVAR16,7,1)*100;\n\
3418
- SVAR18:=SMA(SVAR15,13,1)/SMA(SVAR16,13,1)*100;\n\
3419
- SVAR19:=BARSCOUNT(CLOSE);\n\
3420
- SVAR20:=SMA(MAX(SVAR14,0),6,1)/SMA(ABS(SVAR14),6,1)*100;\n\
3421
- SVAR21:=(-200)*(HHV(HIGH,60)-CLOSE)/(HHV(HIGH,60)-LLV(LOW,60))+100;\n\
3422
- SVAR1A:=(CLOSE-LLV(LOW,15))/(HHV(HIGH,15)-LLV(LOW,15))*100;\n\
3423
- SVAR1B:=SMA((SMA(SVAR1A,4,1)-50)*2,3,1);\n\
3424
- SVAR1C:=(INDEXC-LLV(INDEXL,14))/(HHV(INDEXH,14)-LLV(INDEXL,14))*100;\n\
3425
- SVAR1D:=SMA(SVAR1C,4,1);\n\
3426
- SVAR1E:=SMA(SVAR1D,3,1);\n\
3427
- SVAR1F:=(HHV(HIGH,30)-CLOSE)/CLOSE*100;\n\
3428
- 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\
3429
- BUY3:=CROSS(SVAR22,0.5) AND COUNT(SVAR22==1,10)==1;\n\
3430
- \n\
3431
- SVARF:=LOW*0.9;\n\
3432
- 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\
3433
- SVAR11X:=SVARF<REF(SVAR10X,1) AND VOL>REF(VOL,1) AND CLOSE>REF(CLOSE,1);\n\
3434
- BUY2:=SVAR11X AND COUNT(SVAR11X,30)==1;\n\
3435
- \n\
3436
- VAR1:=(CLOSE+HIGH+LOW+OPEN)/4;\n\
3437
- VAR2:=SUMBARS(VOL,CAPITAL);\n\
3438
- VAR3:=HHV(VAR1,VAR2);\n\
3439
- VAR4:=LLV(VAR1,VAR2);\n\
3440
- VAR5:=(2*VAR1-VAR4-REF(VAR4,1))/(VAR3-VAR4);\n\
3441
- VAR6:=(VAR1-VAR4)/(VAR3-VAR4);\n\
3442
- VAR7:=IF(VAR1<=VAR4,VAR5*60,VAR6*60);\n\
3443
- VAR8:=600*(EMA(CLOSE,3)-EMA(LOW,30))/EMA(LOW,30);\n\
3444
- VAR9:=EMA(VAR8,7);\n\
3445
- VARC:=HHV(HIGH,9)-LLV(LOW,9);\n\
3446
- VARD:=HHV(HIGH,9)-CLOSE;\n\
3447
- VARE:=CLOSE-LLV(LOW,9);\n\
3448
- VARF:=VARD/VARC*100-70;\n\
3449
- VAR10:=(CLOSE-LLV(LOW,60))/(HHV(HIGH,60)-LLV(LOW,60))*100;\n\
3450
- VAR11:=(2*CLOSE+HIGH+LOW)/4;\n\
3451
- VAR12:=SMA(VARE/VARC*100,3,1);\n\
3452
- VAR13:=LLV(LOW,34);\n\
3453
- VAR14:=SMA(VAR12,3,1)-SMA(VARF,9,1);\n\
3454
- VAR15:=IF(VAR14>100,VAR14-100,0);\n\
3455
- VAR16:=HHV(HIGH,34);\n\
3456
- VAR17:=EMA((VAR11-VAR13)/(VAR16-VAR13)*100,8);\n\
3457
- VAR18:=EMA(VAR17,5);\n\
3458
- BUY:=STICKLINE(VAR17-VAR18>0,VAR17,VAR18,8,1),COLORRED;\n\
3459
- SELL:=STICKLINE(VAR17-VAR18<0,VAR17,VAR18,8,1),COLORGREEN;\n\
3460
- BUY1:=VAR17>VAR18 AND REF(VAR17,1)<REF(VAR18,1);\n\
3461
- SELL1:=VAR17<VAR18 AND REF(VAR17,1)>REF(VAR18,1);\n\
3462
- \n\
3463
- 短高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\
3464
- +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\
3465
- +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\
3466
- REF(H,20))/210,COLORBLUE,LINETHICK1;\n\
3467
- 短低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\
3468
- +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\
3469
- +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\
3470
- REF(L,20))/210,COLORBLUE,LINETHICK1;\n\
3471
- D90H:=EMA(短高H,90),COLORRED,LINETHICK1;\n\
3472
- D90L:=EMA(短低L,90),COLORRED,LINETHICK1;\n\
3473
- D90差:=D90H-D90L;\n\
3474
- D90顶:=D90H+D90差*2,COLORRED,LINETHICK1;\n\
3475
- D90底:=D90L-D90差*2,COLORRED,LINETHICK1;\n\
3476
- 高0:=(EMA(EMA(H,25),25)-EMA(EMA(L,25),25))*1+EMA(EMA(H,25),25),LINETHICK1,COLORWHITE;\n\
3477
- 低0:=EMA(EMA(L,25),25)-(EMA(EMA(H,25),25)-EMA(EMA(L,25),25))*1,LINETHICK1,COLORWHITE;\n\
3478
- 多头定位:=低0>=D90底 AND 高0>=D90顶;\n\
3479
- 空头定位:=高0<=D90顶 AND 低0<=D90底;\n\
3480
- 震荡定位:=低0>=D90底 AND 高0<=D90顶;\n\
3481
- \n\
3482
- 牛市:=多头定位==1;\n\
3483
- 熊市:=空头定位==1;\n\
3484
- 震荡:=震荡定位==1;\n\
3485
- \n\
3486
- 非牛市:=熊市 OR 震荡;\n\
3487
- 非熊市:=牛市 OR 震荡;\n\
3488
- \n\
3489
- BUY11:=BUY1 AND 非熊市;\n\
3490
- SELL11:=SELL1 AND 震荡定位==0;\n\
3491
- \n\
3492
- BUY111:=BUY11 AND COUNT(BUY11,10)<2;\n\
3493
- BUY0:=BUY111 AND COUNT(BUY111,21)==1;\n\
3494
- SELL111:=SELL11 AND COUNT(SELL11,10)<2;\n\
3495
- SELL0:=SELL111 AND COUNT(SELL111,10)==1;\n\
3496
- \n\
3497
- XK1:=EMA(100*(CLOSE-LLV(LOW,34))/(HHV(HIGH,34)-LLV(LOW,34)),3)/4;\n\
3498
- 上穿:=REF(XK1,1)<5 AND XK1>=5;\n\
3499
- BUY4:=上穿 AND COUNT(XK1<2,12)<1;\n\
3500
- \n\
3501
- SELL2:=REF(XK1,1)<=22.5 AND XK1>22.5 AND COUNT(REF(XK1,1)>=22.5 AND XK1<22.5,5)>0;\n\
3502
- SELL3:=REF(XK1,1)>=21.5 AND XK1<21.5 AND COUNT(REF(XK1,1)>=22.5 AND XK1<22.5,12)>1;\n\
3503
- SELL4:=SELL2 OR SELL3 AND COUNT((SELL2 OR SELL3)==1,5)==1;\n\
3504
- \n\
3505
- SUPERDRAWTEXT(BUY0,L,"机会",2,10),COLORRED;\n\
3506
- SUPERDRAWTEXT(SELL0,H,"风险",1,10),COLORGREEN;\n\
3507
- SUPERDRAWTEXT(BUY2,L,"机会",2,10),COLORRED;\n\
3508
- SUPERDRAWTEXT(BUY4,L,"机会",2,10),COLORRED;\n\
3509
- SUPERDRAWTEXT(SELL4,H,"风险",1,10),COLORGREEN;'
3510
- };
3511
-
3512
- return data;
3513
- }
3514
-
3515
- JSIndexScript.prototype.Zealink_Index4 = function ()
3516
- {
3517
- let data =
3518
- {
3519
- Name: '股东实际增减持', Description: '股东实际增减持', IsMainIndex: false, FloatPrecision:0,
3520
- Args: [],
3521
- Script: //脚本
3522
- '增持:NEWS(4),NODRAW,COLORRED;\n\
3523
- 减持:NEWS(5),NODRAW,COLORGREEN;\n\
3524
- STICKLINE(增持>0,0,增持,1,0),COLORRED;\n\
3525
- STICKLINE(减持<0,0,减持,1,0),COLORGREEN;'
3526
- };
3527
-
3528
- return data;
3529
- }
3530
-
3531
- JSIndexScript.prototype.Zealink_Index5 = function ()
3532
- {
3533
- let data =
3534
- {
3535
- Name: '大宗交易', Description: '大宗交易', IsMainIndex: false, FloatPrecision: 0,
3536
- Args: [],
3537
- Script: //脚本
3538
- '交易次数:NEWS(7);'
3539
- };
3540
-
3541
- return data;
3542
- }
3543
-
3544
- JSIndexScript.prototype.Zealink_Index6 = function ()
3545
- {
3546
- let data =
3547
- {
3548
- Name: '信托持股', Description: '信托持股', IsMainIndex: false, FloatPrecision: 0,
3549
- Args: [],
3550
- Script: //脚本
3551
- '家数:NEWS(6);'
3552
- };
3553
-
3554
- return data;
3555
- }
3556
-
3557
- JSIndexScript.prototype.Zealink_Index7 = function ()
3558
- {
3559
- let data =
3560
- {
3561
- Name: '官网新闻', Description: '官网新闻', IsMainIndex: false, FloatPrecision: 0,
3562
- Args: [],
3563
- Script: //脚本
3564
- '个数:NEWS(8);'
3565
- };
3566
-
3567
- return data;
3568
- }
3569
-
3570
- JSIndexScript.prototype.Zealink_Index8 = function ()
3571
- {
3572
- let data =
3573
- {
3574
- Name: '高管要闻', Description: '高管要闻', IsMainIndex: false, FloatPrecision: 0,
3575
- Args: [],
3576
- Script: //脚本
3577
- '个数:NEWS(9);'
3578
- };
3579
-
3580
- return data;
3581
- }
3582
-
3583
- JSIndexScript.prototype.Zealink_Index9 = function ()
3584
- {
3585
- let data =
3586
- {
3587
- Name: '股权质押', Description: '股权质押', IsMainIndex: false, FloatPrecision: 0,
3588
- Args: [],
3589
- Script: //脚本
3590
- '次数:NEWS(10);'
3591
- };
3592
-
3593
- return data;
3594
- }
3595
-
3596
- JSIndexScript.prototype.Zealink_Index10 = function ()
3597
- {
3598
- let data =
3599
- {
3600
- Name: '操盘BS点', Description: '操盘BS点', IsMainIndex: true, FloatPrecision: 0,
3601
- Args: [],
3602
- Script: //脚本
3603
- "JJ:=(CLOSE+HIGH+LOW)/3; \n\
3604
- A:=EMA(JJ,10); \n\
3605
- B:=REF(A,1);\n\
3606
- M1:=EMA(CLOSE,3);\n\
3607
- M2:=EMA(CLOSE,8); \n\
3608
- M3:=EMA(M2,13); \n\
3609
- M4:=EMA(M2,55); \n\
3610
- B1:=A>B AND REF(A,1)<REF(B,1);\n\
3611
- S1:=A<B AND REF(A,1)>REF(B,1);\n\
3612
- INDEXCLOSE:INDEXC,EXDATA;\n\
3613
- INDEXOPEN:INDEXO,EXDATA;\n\
3614
- DRAWICON(REF(B1,1),L*0.97,13);\n\
3615
- DRAWICON(REF(S1,1),H*1.03,14);"
3616
- };
3617
-
3618
- return data;
3619
- }
3620
-
3621
- JSIndexScript.prototype.Zealink_Index11 = function ()
3622
- {
3623
- let data =
3624
- {
3625
- Name: '操盘BS点', Description: '操盘BS点', IsMainIndex: true, FloatPrecision: 0,
3626
- Args: [],
3627
- Script: //脚本
3628
- "JJ:=(CLOSE+HIGH+LOW)/3;\n\
3629
- A:=EMA(JJ,10);\n\
3630
- B:=REF(A,1);\n\
3631
- M1:=EMA(CLOSE,3);\n\
3632
- M2:=EMA(CLOSE,8); \n\
3633
- M3:=EMA(M2,13);\n\
3634
- M4:=EMA(M2,55);\n\
3635
- 持股区域:=STICKLINE(A>B,A,B,2,0),COLORYELLOW; \n\
3636
- 持币区域:=STICKLINE(A<B,A,B,2,0),COLORBLUE;\n\
3637
- \n\
3638
- VR1:=(C+O+REF(C,1))/3;\n\
3639
- VR3:=HHV(VR1,21);\n\
3640
- VR4:=LLV(VR1,21);\n\
3641
- VR5:=(2*VR1-VR4-REF(VR4,1))/(VR3-VR4);\n\
3642
- VR6:=(VR1-VR4)/(VR3-VR4);\n\
3643
- VR7:=IF(VR1<=VR4,VR5*60,VR6*60);\n\
3644
- VR8:=600*(EMA(C,3)-EMA(L,30))/EMA(L,30);\n\
3645
- VR9:=EMA(VR8,7);\n\
3646
- VRA:=(WINNER(120*C/100)-WINNER(100*C/100))*100;\n\
3647
- VRB:=(-100)*(WINNER(120*C/100)-WINNER(100*C/100))+5;\n\
3648
- VRC:=HHV(H,9)-LLV(L,9);\n\
3649
- VRD:=HHV(H,9)-C;\n\
3650
- VRE:=C-LLV(L,9);\n\
3651
- VRF:=VRD/VRC*100-70;\n\
3652
- VR10:=(C-LLV(L,60))/(HHV(H,60)-LLV(L,60))*100;\n\
3653
- VR11:=(2*C+H+L)/4;\n\
3654
- VR12:=SMA(VRE/VRC*100,3,1);\n\
3655
- VR13:=LLV(L,34);\n\
3656
- VR14:=SMA(VR12,3,1)-SMA(VRF,9,1);\n\
3657
- VR15:=IF(VR14>100,VR14-100,0);\n\
3658
- VR16:=HHV(H,34);\n\
3659
- VR17:=EMA((VR11-VR13)/(VR16-VR13)*100,8);\n\
3660
- VR18:=EMA(VR17,5);\n\
3661
- \n\
3662
- B1:=A>B AND REF(A,1)<REF(B,1);\n\
3663
- S1:=A<B AND REF(A,1)>REF(B,1);\n\
3664
- \n\
3665
- B9:=BARSLAST(REF(B1,1) AND (REF(VR17>VR18,1) OR MIN(VR17,VR18)>REF(MAX(VR17,VR18),1)));\n\
3666
- S9:=BARSLAST(REF(S1,1) AND (REF(VR17<VR18,1) OR MAX(VR17,VR18)<REF(MIN(VR17,VR18),1)));\n\
3667
- \n\
3668
- 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\
3669
- 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\
3670
- \n\
3671
- DRAWKLINE_IF(VR17>VR18,HIGH,CLOSE,LOW,OPEN),COLORRED;\n\
3672
- DRAWKLINE_IF(VR17<VR18,HIGH,CLOSE,LOW,OPEN),COLORBLUE;\n\
3673
- \n\
3674
- INDEXCLOSE:INDEXC,EXDATA; //取指数的收盘价 回测的时候计算BATE系数用 "
3675
- };
3676
-
3677
- return data;
3678
- }
3679
-
3680
-
3681
3327
  JSIndexScript.prototype.HeikinAshi=function()
3682
3328
  {
3683
3329
  let data =
@@ -4220,6 +3866,58 @@ ADX:SMA(ABS(MDI-PDI)/(MDI+PDI)*100,N,1),COLORYELLOW,LINETHICK2;
4220
3866
  }
4221
3867
 
4222
3868
 
3869
+ JSIndexScript.prototype.ZNZ_CBAND = function()
3870
+ {
3871
+ let data =
3872
+ {
3873
+ Name: 'ZNZ_CBAND', Description: '优化成本布林带宽', IsMainIndex: false,
3874
+ Args: [{ Name: 'N', Value: 20 }],
3875
+ Script: //脚本
3876
+ `A:=AMOUNT/(100*VOL);
3877
+ BBI1:=MA(A,N);
3878
+ UPR0:=BBI1+STD(A,N);
3879
+ DWN0:=BBI1-STD(A,N);
3880
+ UPR1:=BBI1+1.7*STD(A,N);
3881
+ DWN1:=BBI1-1.7*STD(A,N);
3882
+ 优化成本布林带宽:100*1.7*STD(A,N);`
3883
+ };
3884
+
3885
+ return data;
3886
+ }
3887
+
3888
+ JSIndexScript.prototype.ZNZ_RPY2 = function()
3889
+ {
3890
+ let data =
3891
+ {
3892
+ Name: 'ZNZ_RPY2', Description: '两年相对价位', IsMainIndex: false,
3893
+ Script: //脚本
3894
+ `A:=REF(HHV(CLOSE,480),1);
3895
+ B:=REF(LLV(CLOSE,480),1);
3896
+ 100*(CLOSE-B)/(A-B);`
3897
+ };
3898
+
3899
+ return data;
3900
+ }
3901
+
3902
+ JSIndexScript.prototype.ZNZ_RPY1 = function()
3903
+ {
3904
+ let data =
3905
+ {
3906
+ Name: 'ZNZ_RPY1', Description: '年相对价位', IsMainIndex: false,
3907
+ Args: [{ Name: 'N', Value: 240 }],
3908
+ Script: //脚本
3909
+ `A:=REF(HHV(CLOSE,N),1);
3910
+ B:=REF(LLV(CLOSE,N),1);
3911
+ 100*(CLOSE-B)/(A-B);`
3912
+ };
3913
+
3914
+ return data;
3915
+ }
3916
+
3917
+
3918
+
3919
+
3920
+
4223
3921
  JSIndexScript.prototype.TEST = function ()
4224
3922
  {
4225
3923
  let data =
@@ -6965,6 +6663,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
6965
6663
  this.Tooltip.id=Guid();
6966
6664
  uielement.parentNode.appendChild(this.Tooltip);
6967
6665
  this.IsShowTooltip=true; //是否显示K线tooltip
6666
+ this.TooltipCache={ Type:null, IsShow:false, X:null, Y:null, Data:null, InnerHTML:null }; //缓存tooltip数据
6968
6667
 
6969
6668
  //区间选择
6970
6669
  this.SelectRect=document.createElement("div");
@@ -10720,6 +10419,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10720
10419
 
10721
10420
  var pixelTatio = GetDevicePixelRatio(); //获取设备的分辨率
10722
10421
  var xMove=15/pixelTatio; //顶部坐标偏移位置
10422
+
10423
+ this.TooltipCache.Type=toolTip.Type;
10424
+ this.TooltipCache.Data=null;
10425
+ this.TooltipCache.X=x;
10426
+ this.TooltipCache.Y=y;
10427
+
10723
10428
  if (toolTip.Type===0) //K线信息
10724
10429
  {
10725
10430
  var scrollPos=GetScrollPosition();
@@ -10754,6 +10459,10 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10754
10459
  this.Tooltip.className='jschart-tooltip';
10755
10460
  this.Tooltip.innerHTML=format.Text;
10756
10461
  this.Tooltip.style.display = "block";
10462
+
10463
+ this.TooltipCache.IsShow=true;
10464
+ this.TooltipCache.Data={ Date:toolTip.Data.Date, Time:toolTip.Data.Time };
10465
+ this.TooltipCache.InnerHTML=format.Text;
10757
10466
  }
10758
10467
  else if (toolTip.Type===1) //信息地雷提示信息
10759
10468
  {
@@ -10908,13 +10617,44 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
10908
10617
  this.Tooltip.style.top = (top +xMove)+ "px";
10909
10618
  this.Tooltip.style.width = width+"px";
10910
10619
  this.Tooltip.style.height =null;
10911
- this.Tooltip.innerHTML=format.Text;;
10620
+ this.Tooltip.innerHTML=format.Text;
10912
10621
  this.Tooltip.style.display = "block";
10913
10622
  }
10914
10623
  }
10915
10624
 
10625
+ this.UpdateDOMTooltip=function(toolTipType, data)
10626
+ {
10627
+ if (!this.TooltipCache.IsShow) return ;
10628
+ if (this.TooltipCache.Type!=toolTipType) return;
10629
+ if (!this.TooltipCache.Data) return;
10630
+
10631
+ if (this.TooltipCache.Type===0)
10632
+ {
10633
+ if (!data || !IFrameSplitOperator.IsNonEmptyArray(data.Data)) return;
10634
+ var lastItem=data.Data[data.Data.length-1];
10635
+ if (lastItem.Date!=this.TooltipCache.Data.Date) return;
10636
+ if (IFrameSplitOperator.IsNumber(lastItem.Time) && lastItem.Time!=this.TooltipCache.Data.Time) return;
10637
+ var klinePaint=this.ChartPaint[0];
10638
+
10639
+ var format=g_DivTooltipDataForamt.Create('HistoryDataStringFormat');
10640
+ format.Value={ Data:lastItem, ChartPaint:klinePaint, Type:this.TooltipCache.Type };
10641
+ format.Symbol=this.Symbol;
10642
+ format.LanguageID=this.LanguageID;
10643
+ format.GetEventCallback=(id)=> { return this.GetEventCallback(id); }
10644
+ if (!format.Operator()) return;
10645
+ if (format.Text==this.TooltipCache.InnerHTML) return;
10646
+ this.Tooltip.innerHTML=format.Text;
10647
+ this.TooltipCache.InnerHTML=format.Text;
10648
+ }
10649
+ }
10650
+
10916
10651
  this.HideTooltip=function()
10917
10652
  {
10653
+ this.TooltipCache.IsShow=false;
10654
+ this.TooltipCache.Type=null;
10655
+ this.TooltipCache.InnerHTML=null;
10656
+ this.TooltipCache.Data=null;
10657
+
10918
10658
  if (this.Tooltip.style.display!="none") this.Tooltip.style.display = "none";
10919
10659
  }
10920
10660
 
@@ -13010,6 +12750,65 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
13010
12750
  }
13011
12751
  }
13012
12752
  }
12753
+
12754
+ //获取当前的显示的指标 包含叠加指标
12755
+ this.GetIndexInfo=function()
12756
+ {
12757
+ var aryIndex=[];
12758
+ for(var i=0, j=0; i<this.WindowIndex.length; ++i)
12759
+ {
12760
+ var item=this.WindowIndex[i];
12761
+ if (!item) continue;
12762
+
12763
+ var info={ Name:item.Name, WindowIndex:i, IsOverlay:false };
12764
+ if (item.ID) info.ID=item.ID;
12765
+ if (IFrameSplitOperator.IsNonEmptyArray(item.Arguments)) //参数
12766
+ {
12767
+ info.Args=[];
12768
+ for(j=0;j<item.Arguments.length;++j)
12769
+ {
12770
+ var argItem=item.Arguments[j];
12771
+ info.Args.push( { Name:argItem.Name, Value:argItem.Value} );
12772
+ }
12773
+ }
12774
+
12775
+ aryIndex.push(info);
12776
+ }
12777
+
12778
+ this.GetOverlayIndexInfo(aryIndex); //叠加指标
12779
+
12780
+ return aryIndex;
12781
+ }
12782
+
12783
+ //叠加指标
12784
+ this.GetOverlayIndexInfo=function(aryIndex)
12785
+ {
12786
+ for(var i=0, j=0, k=0; i<this.Frame.SubFrame.length; ++i)
12787
+ {
12788
+ var item=this.Frame.SubFrame[i];
12789
+ if (!IFrameSplitOperator.IsNonEmptyArray(item.OverlayIndex)) continue;
12790
+
12791
+ for(j=0; j<item.OverlayIndex.length; ++j)
12792
+ {
12793
+ var overlayItem=item.OverlayIndex[j];
12794
+ if (!overlayItem.Script) continue;
12795
+ var indexData=overlayItem.Script;
12796
+ var info={ Name:indexData.Name, ID:indexData.ID, WindowIndex:i, IsOverlay:true, Identify:overlayItem.Identify };
12797
+
12798
+ if (IFrameSplitOperator.IsNonEmptyArray(indexData.Arguments)) //参数
12799
+ {
12800
+ info.Args=[];
12801
+ for(k=0;k<indexData.Arguments.length;++k)
12802
+ {
12803
+ var argItem=indexData.Arguments[k];
12804
+ info.Args.push( { Name:argItem.Name, Value:argItem.Value} );
12805
+ }
12806
+ }
12807
+
12808
+ aryIndex.push(info);
12809
+ }
12810
+ }
12811
+ }
13013
12812
  }
13014
12813
 
13015
12814
  function GetDevicePixelRatio()
@@ -16192,16 +15991,18 @@ function MinuteFrame()
16192
15991
  if (this.Identify==0 && this.IsShowCloseButton) this.DrawCloseBeforeButton(moveonPoint, mouseStatus); //盘前集合竞价关闭按钮
16193
15992
 
16194
15993
  if (this.ChartBorder.TitleHeight<5) return;
16195
- if (this.Identify==0 || this.Identify==1) return;
16196
15994
 
16197
15995
  var aryButton=[];
16198
- if (this.CloseIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.CLOSE_INDEX_WINDOW, Style:this.CloseWindowButton });
16199
- if (this.MaxMinWindow) aryButton.push({ ID:JSCHART_BUTTON_ID.MAX_MIN_WINDOW, Style:this.MaxMinWindowButton })
16200
- if (this.TitleWindow) aryButton.push({ ID:JSCHART_BUTTON_ID.TITLE_WINDOW, Style:this.TitleWindowButton });
16201
- if (this.ExportData) aryButton.push( {ID:JSCHART_BUTTON_ID.EXPORT_DATA, Style:this.ExportDataButton});
16202
- if (this.OverlayIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.OVERLAY_INDEX, Style:this.OverlayIndexButton });
16203
- if (this.ChangeIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.CHANGE_INDEX, Style:this.ChangeIndexButton });
16204
- if (this.ModifyIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM, Style:this.ModifyIndexParamButton });
15996
+ if (this.Identify!=0 && this.Identify!=1) //价格图和成交量图只有自定义按钮
15997
+ {
15998
+ if (this.CloseIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.CLOSE_INDEX_WINDOW, Style:this.CloseWindowButton });
15999
+ if (this.MaxMinWindow) aryButton.push({ ID:JSCHART_BUTTON_ID.MAX_MIN_WINDOW, Style:this.MaxMinWindowButton })
16000
+ if (this.TitleWindow) aryButton.push({ ID:JSCHART_BUTTON_ID.TITLE_WINDOW, Style:this.TitleWindowButton });
16001
+ if (this.ExportData) aryButton.push( {ID:JSCHART_BUTTON_ID.EXPORT_DATA, Style:this.ExportDataButton});
16002
+ if (this.OverlayIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.OVERLAY_INDEX, Style:this.OverlayIndexButton });
16003
+ if (this.ChangeIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.CHANGE_INDEX, Style:this.ChangeIndexButton });
16004
+ if (this.ModifyIndex) aryButton.push( { ID:JSCHART_BUTTON_ID.MODIFY_INDEX_PARAM, Style:this.ModifyIndexParamButton });
16005
+ }
16205
16006
 
16206
16007
  if (IFrameSplitOperator.IsNonEmptyArray(this.CustomToolbar))
16207
16008
  {
@@ -71046,6 +70847,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
71046
70847
  this.Draw();
71047
70848
 
71048
70849
  this.SendKLineUpdateEvent(bindData);
70850
+ this.UpdateDOMTooltip(0, bindData);
71049
70851
 
71050
70852
  //叠加指标计算
71051
70853
  this.BindAllOverlayIndexData(bindData, { CheckRunCount:true,SyncExecute:false }); //异步模式叠加指标
@@ -71296,6 +71098,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
71296
71098
  this.Draw();
71297
71099
 
71298
71100
  this.SendKLineUpdateEvent(bindData);
71101
+ this.UpdateDOMTooltip(0, bindData);
71299
71102
 
71300
71103
  //更新叠加指标
71301
71104
  this.BindAllOverlayIndexData(bindData, { CheckRunCount:true,SyncExecute:false }); //异步模式叠加指标
@@ -72796,31 +72599,6 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
72796
72599
  this.Draw();
72797
72600
  }
72798
72601
 
72799
- //获取当前的显示的指标
72800
- this.GetIndexInfo=function()
72801
- {
72802
- var aryIndex=[];
72803
- for(var i in this.WindowIndex)
72804
- {
72805
- var item=this.WindowIndex[i];
72806
- var info={Name:item.Name};
72807
- if (item.ID) info.ID=item.ID;
72808
- if (item.Arguments) //参数
72809
- {
72810
- info.Args=[];
72811
- for(var i in item.Arguments)
72812
- {
72813
- var argItem=item.Arguments[i];
72814
- info.Args.push( {Name:argItem.Name, Value:argItem.Value} );
72815
- }
72816
- }
72817
-
72818
- aryIndex.push(info);
72819
- }
72820
-
72821
- return aryIndex;
72822
- }
72823
-
72824
72602
  this.CreateExtendChart=function(name, option) //创建扩展图形
72825
72603
  {
72826
72604
  var chart;
@@ -80465,21 +80243,6 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
80465
80243
  this.WindowIndex[windowIndex].Create(this,windowIndex);
80466
80244
  }
80467
80245
 
80468
- //获取当前的显示的指标
80469
- this.GetIndexInfo=function()
80470
- {
80471
- var aryIndex=[];
80472
- for(var i in this.WindowIndex)
80473
- {
80474
- var item=this.WindowIndex[i];
80475
- var info={Name:item.Name};
80476
- if (item.ID) info.ID=item.ID;
80477
- aryIndex.push(info);
80478
- }
80479
-
80480
- return aryIndex;
80481
- }
80482
-
80483
80246
  this.OnTouchFinished=function()
80484
80247
  {
80485
80248
  if (this.CorssCursorTouchEnd===true) //手势离开十字光标消失
@@ -129561,7 +129324,7 @@ function HQChartScriptWorker()
129561
129324
 
129562
129325
 
129563
129326
 
129564
- var HQCHART_VERSION="1.1.12954";
129327
+ var HQCHART_VERSION="1.1.12967";
129565
129328
 
129566
129329
  function PrintHQChartVersion()
129567
129330
  {