hqchart 1.1.12809 → 1.1.12820

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.
@@ -166,6 +166,7 @@ function JSIndexScript()
166
166
  ['神奇九转', this.NineTurns],
167
167
  ['EMA', this.EMA3], ['EMA4', this.EMA4], ['EMA5', this.EMA5],['EMA6', this.EMA6],
168
168
  ["ICHIMOKU",this.ICHIMOKU],["CDP-STD", this.CDP_STD],["TBP-STD",this.TBP_STD],
169
+ ["ADX", this.ADX],
169
170
 
170
171
  //通达信特色指标
171
172
  ["散户线", this.ShareholderCount],["NXTS", this.NXTS],["FKX", this.FKX],["两融资金", this.Margin4],
@@ -4170,6 +4171,28 @@ TBP:REF(REF(C,1)+IF(DIRECT0>50,MIN(MF0,MF1),MAX(MF0,MF1)),1);\n\
4170
4171
  return data;
4171
4172
  }
4172
4173
 
4174
+ JSIndexScript.prototype.ADX = function ()
4175
+ {
4176
+ let data =
4177
+ {
4178
+ Name: 'ADX', Description: '均趋向指标', IsMainIndex: true,
4179
+ Args: [{ Name: 'N', Value: 14 }],
4180
+ Script: //脚本
4181
+ `TR1:=SMA(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),N,1);
4182
+ HD:=HIGH-REF(HIGH,1);
4183
+ LD:=REF(LOW,1)-LOW;
4184
+ DMP:=SMA(IF(HD>0 AND HD>LD,HD,0),N,1);
4185
+ DMM:=SMA(IF(LD>0 AND LD>HD,LD,0),N,1);
4186
+ PDI:DMP*100/TR1,COLORRED,DOTLINE;
4187
+ MDI:DMM*100/TR1,COLORGREEN,DOTLINE;
4188
+ ADX:SMA(ABS(MDI-PDI)/(MDI+PDI)*100,N,1),COLORYELLOW,LINETHICK2;
4189
+ 20;
4190
+ 40;`
4191
+ };
4192
+
4193
+ return data;
4194
+ }
4195
+
4173
4196
 
4174
4197
  JSIndexScript.prototype.TEST = function ()
4175
4198
  {
@@ -52068,8 +52091,8 @@ function ChartSplashPaint()
52068
52091
  {
52069
52092
  this.Frame;
52070
52093
  this.Canvas; //画布
52071
- this.Font=g_JSChartResource.DefaultTextFont; //字体
52072
- this.TextColor=g_JSChartResource.DefaultTextColor; //文本颜色
52094
+ this.Font=g_JSChartResource.SplashScreen.Font; //字体
52095
+ this.TextColor=g_JSChartResource.SplashScreen.TextColor; //文本颜色
52073
52096
  this.IsEnableSplash=false;
52074
52097
  this.SplashTitle='数据加载中';
52075
52098
  this.HQChart;
@@ -66252,7 +66275,9 @@ function JSChartResource()
66252
66275
  this.SplashScreen=
66253
66276
  {
66254
66277
  BGColor:"rgba(112,128,144,0.5)",
66255
- Title:"下载数据中......"
66278
+ Title:"下载数据中......",
66279
+ TextColor:"rgb(43,54,69)",
66280
+ Font:14*GetDevicePixelRatio() +'px 微软雅黑'
66256
66281
  }
66257
66282
 
66258
66283
  this.HLCArea=
@@ -67333,6 +67358,8 @@ function JSChartResource()
67333
67358
  var item=style.SplashScreen;
67334
67359
  if (item.BGColor) this.SplashScreen.BGColor=item.BGColor;
67335
67360
  if (item.Title) this.SplashScreen.Title=item.Title;
67361
+ if (item.TextColor) this.SplashScreen.TextColor=item.TextColor;
67362
+ if (item.Font) this.SplashScreen.Font=item.Font;
67336
67363
  }
67337
67364
 
67338
67365
  if (style.HLCArea)
@@ -71300,7 +71327,7 @@ function KLineChartContainer(uielement,OffscreenElement)
71300
71327
  item.BindData(this,windowIndex,hisData);
71301
71328
  }
71302
71329
 
71303
- //叠加指标
71330
+ //叠加指标 option={ CheckRunCount:执行次数检测 ,SyncExecute:同步|异步检测 }
71304
71331
  this.BindOverlayIndexData=function(overlayItem, windowIndex, hisData, option)
71305
71332
  {
71306
71333
  if (!overlayItem.Script) return;
@@ -71313,8 +71340,20 @@ function KLineChartContainer(uielement,OffscreenElement)
71313
71340
 
71314
71341
  if (typeof(overlayItem.Script.ExecuteScript)=='function')
71315
71342
  {
71316
- if (option && option.CheckRunCount)
71317
- if (overlayItem.Script.IsExcessRunCount()) return;
71343
+ if (option)
71344
+ {
71345
+ if (option.CheckRunCount) //检测执行次数
71346
+ {
71347
+ if (overlayItem.Script.IsExcessRunCount())
71348
+ return;
71349
+ }
71350
+
71351
+ if (IFrameSplitOperator.IsBool(option.SyncExecute)) //异步|同步
71352
+ {
71353
+ if (overlayItem.Script.IsSync!=option.SyncExecute)
71354
+ return;
71355
+ }
71356
+ }
71318
71357
 
71319
71358
  overlayItem.Script.ExecuteScript(this,windowIndex,hisData);
71320
71359
  return;
@@ -71490,7 +71529,7 @@ function KLineChartContainer(uielement,OffscreenElement)
71490
71529
  for(var i=0;i<this.Frame.SubFrame.length;++i)
71491
71530
  {
71492
71531
  var item=this.Frame.SubFrame[i];
71493
- for(var j in item.OverlayIndex)
71532
+ for(var j=0; j<item.OverlayIndex.length; ++j)
71494
71533
  {
71495
71534
  var overlayItem=item.OverlayIndex[j];
71496
71535
  this.BindOverlayIndexData(overlayItem,i,hisData,option)
@@ -71573,12 +71612,14 @@ function KLineChartContainer(uielement,OffscreenElement)
71573
71612
 
71574
71613
  if (page.Enable) page.Index=1; //第一页下载完成
71575
71614
 
71576
- this.BindInstructionIndexData(bindData); //执行指示脚本
71615
+ this.BindInstructionIndexData(bindData); //执行指示脚本
71577
71616
  for(var i=0; i<this.Frame.SubFrame.length; ++i) //执行指标
71578
71617
  {
71579
71618
  this.BindIndexData(i,bindData);
71580
71619
  }
71581
71620
 
71621
+ this.BindAllOverlayIndexData(bindData, { SyncExecute:true }); //同步模式叠加指标
71622
+
71582
71623
  //刷新画图
71583
71624
  this.UpdataDataoffset(); //更新数据偏移
71584
71625
  this.UpdateFrameMaxMin(); //调整坐标最大 最小值
@@ -71586,8 +71627,8 @@ function KLineChartContainer(uielement,OffscreenElement)
71586
71627
  this.UpdatePointByCursorIndex(2); //取消十字光标
71587
71628
  this.Draw();
71588
71629
 
71589
- //叠加指标
71590
- this.BindAllOverlayIndexData(bindData);
71630
+
71631
+ this.BindAllOverlayIndexData(bindData,{ SyncExecute:false } ); //异步模式叠加指标
71591
71632
 
71592
71633
  if (this.mapEvent.has(JSCHART_EVENT_ID.RECV_HISTROY_DATA))
71593
71634
  {
@@ -71881,6 +71922,8 @@ function KLineChartContainer(uielement,OffscreenElement)
71881
71922
  this.BindIndexData(i,bindData);
71882
71923
  }
71883
71924
 
71925
+ this.BindAllOverlayIndexData(bindData, { SyncExecute:true }); //同步模式叠加指标
71926
+
71884
71927
  //刷新画图
71885
71928
  this.UpdataDataoffset(); //更新数据偏移
71886
71929
  this.UpdatePointByCursorIndex(2); //切换周期了取消十字光标
@@ -71889,7 +71932,7 @@ function KLineChartContainer(uielement,OffscreenElement)
71889
71932
  this.Draw();
71890
71933
 
71891
71934
  //叠加指标
71892
- this.BindAllOverlayIndexData(bindData);
71935
+ this.BindAllOverlayIndexData(bindData, { SyncExecute:false } ); //异步模式叠加指标
71893
71936
 
71894
71937
  if (this.mapEvent.has(JSCHART_EVENT_ID.RECV_HISTROY_DATA))
71895
71938
  {
@@ -72181,6 +72224,8 @@ function KLineChartContainer(uielement,OffscreenElement)
72181
72224
  this.BindIndexData(i,bindData, { CheckRunCount:true });
72182
72225
  }
72183
72226
 
72227
+ this.BindAllOverlayIndexData(bindData, { CheckRunCount:true, SyncExecute:true }); //同步模式叠加指标
72228
+
72184
72229
  //刷新画图
72185
72230
  this.UpdataDataoffset(); //更新数据偏移
72186
72231
  this.UpdatePointByCursorIndex(1); //更新十字光标位子
@@ -72188,10 +72233,10 @@ function KLineChartContainer(uielement,OffscreenElement)
72188
72233
  this.Frame.SetSizeChage(true);
72189
72234
  this.Draw();
72190
72235
 
72191
- this.SendKLineUpdateEvent(bindData);
72236
+ this.SendKLineUpdateEvent(bindData);
72192
72237
 
72193
72238
  //叠加指标计算
72194
- this.BindAllOverlayIndexData(bindData,{ CheckRunCount:true });
72239
+ this.BindAllOverlayIndexData(bindData, { CheckRunCount:true,SyncExecute:false }); //异步模式叠加指标
72195
72240
 
72196
72241
  if (this.mapEvent.has(JSCHART_EVENT_ID.ON_RECV_REALTIME_DATA))
72197
72242
  {
@@ -72429,6 +72474,8 @@ function KLineChartContainer(uielement,OffscreenElement)
72429
72474
  this.BindIndexData(i,bindData);
72430
72475
  }
72431
72476
 
72477
+ this.BindAllOverlayIndexData(bindData, { CheckRunCount:true, SyncExecute:true }); //同步模式叠加指标
72478
+
72432
72479
  //刷新画图
72433
72480
  this.UpdataDataoffset(); //更新数据偏移
72434
72481
  this.UpdatePointByCursorIndex(1); //更新十字光标位子
@@ -72439,7 +72486,7 @@ function KLineChartContainer(uielement,OffscreenElement)
72439
72486
  this.SendKLineUpdateEvent(bindData);
72440
72487
 
72441
72488
  //更新叠加指标
72442
- this.BindAllOverlayIndexData(bindData);
72489
+ this.BindAllOverlayIndexData(bindData, { CheckRunCount:true,SyncExecute:false }); //异步模式叠加指标
72443
72490
 
72444
72491
  if (this.mapEvent.has(JSCHART_EVENT_ID.ON_RECV_REALTIME_DATA))
72445
72492
  {
@@ -72505,6 +72552,8 @@ function KLineChartContainer(uielement,OffscreenElement)
72505
72552
  this.BindIndexData(i,bindData);
72506
72553
  }
72507
72554
 
72555
+ this.BindAllOverlayIndexData(bindData, { CheckRunCount:true, SyncExecute:true }); //同步模式叠加指标
72556
+
72508
72557
  //刷新画图
72509
72558
  this.UpdataDataoffset(); //更新数据偏移
72510
72559
  this.UpdatePointByCursorIndex(1); //更新十字光标位子
@@ -72515,7 +72564,7 @@ function KLineChartContainer(uielement,OffscreenElement)
72515
72564
  this.SendKLineUpdateEvent(bindData);
72516
72565
 
72517
72566
  //更新叠加指标
72518
- this.BindAllOverlayIndexData(bindData);
72567
+ this.BindAllOverlayIndexData(bindData, { CheckRunCount:true, SyncExecute:false }); //异步模式叠加指标
72519
72568
  }
72520
72569
 
72521
72570
  //更新当天的全量分钟数据
@@ -73450,7 +73499,7 @@ function KLineChartContainer(uielement,OffscreenElement)
73450
73499
 
73451
73500
  if (IFrameSplitOperator.IsNumber(obj.FloatPrecision)) indexData.FloatPrecision=obj.FloatPrecision;
73452
73501
  if (IFrameSplitOperator.IsNumber(obj.StringFormat)) indexData.StringFormat=obj.StringFormat;
73453
-
73502
+ if (IFrameSplitOperator.IsBool(obj.IsSync)) indexData.IsSync=obj.IsSync;
73454
73503
  var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行
73455
73504
  scriptIndex.OverlayIndex={ IsOverlay:true, Identify:overlayFrame.Identify, WindowIndex:windowIndex, Frame:overlayFrame }; //叠加指标信息
73456
73505
  overlayFrame.Script=scriptIndex;
@@ -75964,6 +76013,8 @@ function KLineChartContainer(uielement,OffscreenElement)
75964
76013
  this.BindIndexData(i,bindData);
75965
76014
  }
75966
76015
 
76016
+ this.BindAllOverlayIndexData(bindData, { SyncExecute:true }); //同步模式叠加指标
76017
+
75967
76018
  //刷新画图
75968
76019
  this.UpdataDataoffset(); //更新数据偏移
75969
76020
  this.UpdatePointByCursorIndex(); //更新十字光标位子
@@ -75973,7 +76024,7 @@ function KLineChartContainer(uielement,OffscreenElement)
75973
76024
  this.Draw();
75974
76025
 
75975
76026
  //叠加指标计算
75976
- this.BindAllOverlayIndexData(bindData);
76027
+ this.BindAllOverlayIndexData(bindData, { SyncExecute:false }); //异步模式叠加指标
75977
76028
  }
75978
76029
 
75979
76030
  this.RequestZoomMinuteData=function(requestData)
@@ -76132,6 +76183,7 @@ function KLineChartContainer(uielement,OffscreenElement)
76132
76183
  Explain:funcExplain,
76133
76184
  Request:{ Url:url, Type:'POST' , Data: postData, Period:this.Period, Right:this.Right },
76134
76185
  DragDownload:download,
76186
+ Option:option,
76135
76187
  Self:this,
76136
76188
  PreventDefault:false,
76137
76189
  ZoomData:option.ZoomData
@@ -76209,6 +76261,12 @@ function KLineChartContainer(uielement,OffscreenElement)
76209
76261
 
76210
76262
  if (!this.IsApiPeriod)
76211
76263
  {
76264
+ if (bindData.Right>0) //复权
76265
+ {
76266
+ var rightData=bindData.GetRightData(bindData.Right, { AlgorithmType: this.RightFormula });
76267
+ bindData.Data=rightData;
76268
+ }
76269
+
76212
76270
  if (ChartData.IsDayPeriod(bindData.Period,false) || ChartData.IsMinutePeriod(bindData.Period,false)) //周期数据 (0= 日线,4=1分钟线 不需要处理)
76213
76271
  {
76214
76272
  var periodData=bindData.GetPeriodData(bindData.Period);
@@ -76226,12 +76284,20 @@ function KLineChartContainer(uielement,OffscreenElement)
76226
76284
 
76227
76285
  //绑定数据
76228
76286
  this.UpdateMainData(bindData,lastDataCount);
76229
- if (option && option.ZoomData) //缩放需要调整当前屏的位置
76287
+ if (option) //缩放需要调整当前屏的位置
76230
76288
  {
76231
- var zoomData=option.ZoomData;
76232
- var showCount=zoomData.PageSize-zoomData.RightSpaceCount; //一屏显示的数据个数
76233
- bindData.DataOffset= bindData.Data.length-showCount;
76234
- if (bindData.DataOffset<0) bindData.DataOffset=0;
76289
+ if (option.ZoomData)
76290
+ {
76291
+ var zoomData=option.ZoomData;
76292
+ var showCount=zoomData.PageSize-zoomData.RightSpaceCount; //一屏显示的数据个数
76293
+ bindData.DataOffset= bindData.Data.length-showCount;
76294
+ if (bindData.DataOffset<0) bindData.DataOffset=0;
76295
+ }
76296
+ else if (IFrameSplitOperator.IsNumber(option.DataOffset))
76297
+ {
76298
+ bindData.DataOffset+=option.DataOffset;
76299
+ if (bindData.DataOffset<0) bindData.DataOffset=0;
76300
+ }
76235
76301
  }
76236
76302
 
76237
76303
  this.UpdateOverlayDragDayData(data);
@@ -76242,6 +76308,8 @@ function KLineChartContainer(uielement,OffscreenElement)
76242
76308
  this.BindIndexData(i,bindData);
76243
76309
  }
76244
76310
 
76311
+ this.BindAllOverlayIndexData(bindData, { SyncExecute:true }); //同步模式叠加指标
76312
+
76245
76313
  //刷新画图
76246
76314
  this.UpdataDataoffset(); //更新数据偏移
76247
76315
  this.UpdatePointByCursorIndex(); //更新十字光标位子
@@ -76254,7 +76322,7 @@ function KLineChartContainer(uielement,OffscreenElement)
76254
76322
  this.ReqeustKLineInfoData( { FunctionName:option.RecvFuncName, StartDate:firstData.Date } );
76255
76323
 
76256
76324
  //叠加指标计算
76257
- this.BindAllOverlayIndexData(bindData);
76325
+ this.BindAllOverlayIndexData(bindData, { SyncExecute:false }); //异步模式叠加指标
76258
76326
  }
76259
76327
 
76260
76328
  this.RequestZoomDayData=function(requestData)
@@ -76270,6 +76338,7 @@ function KLineChartContainer(uielement,OffscreenElement)
76270
76338
  RecvFuncName:"RecvZoomDayData",
76271
76339
  Download:this.ZoomDownload.Day,
76272
76340
  Url:this.ZoomKLineApiUrl,
76341
+ XShowCount:this.Frame.GetXShowCount(),
76273
76342
  Count:count,
76274
76343
  ZoomData:zoomData
76275
76344
  };
@@ -76287,7 +76356,8 @@ function KLineChartContainer(uielement,OffscreenElement)
76287
76356
  RecvFuncName:"RecvDragDayData",
76288
76357
  Download:this.DragDownload.Day,
76289
76358
  Url:this.DragKLineApiUrl,
76290
- Count:this.MaxRequestDataCount
76359
+ Count:this.MaxRequestDataCount,
76360
+ XShowCount:this.Frame.GetXShowCount(),
76291
76361
  };
76292
76362
 
76293
76363
  this.RequestPreviousDayData(option);
@@ -81500,7 +81570,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
81500
81570
  for(var i=0;i<this.Frame.SubFrame.length;++i)
81501
81571
  {
81502
81572
  var item=this.Frame.SubFrame[i];
81503
- for(var j in item.OverlayIndex)
81573
+ for(var j=0;j<item.OverlayIndex.length; ++j)
81504
81574
  {
81505
81575
  var overlayItem=item.OverlayIndex[j];
81506
81576
  this.BindOverlayIndexData(overlayItem,i,hisData,option)
@@ -112388,6 +112458,7 @@ function JSExecute(ast,option)
112388
112458
  outVar=this.SymbolData.GetOtherSymolCacheData({ Literal:outVar });
112389
112459
  varName="__temp_li_"+i+"__";
112390
112460
  var type=0;
112461
+ if (!Array.isArray(outVar)) outVar=this.SingleDataToArrayData(outVar);
112391
112462
  this.OutVarTable.push({Name:varName, Data:outVar, Type:type, NoneName:true});
112392
112463
  }
112393
112464
  else if (item.Expression.Type==Syntax.BinaryExpression)
@@ -117154,7 +117225,9 @@ function OverlayScriptIndex(name,script,args,option)
117154
117225
 
117155
117226
  param.HQChart.UpdataDataoffset(); //更新数据偏移
117156
117227
  param.HQChart.UpdateFrameMaxMin(); //调整坐标最大 最小值
117157
- param.HQChart.Draw();
117228
+
117229
+ if (param.Self.IsSync===false) //异步需要马上刷新,同步主图数据更新的时候会刷新的
117230
+ param.HQChart.Draw();
117158
117231
 
117159
117232
  var event=hqChart.GetOverlayIndexEvent(); //指标计算完成回调
117160
117233
  if (event)
@@ -120864,6 +120937,12 @@ function GetBlackStyle()
120864
120937
  UnchagneBarColor: "rgb(228,228,228)", //平盘
120865
120938
  EmptyBarBGColor:'rgb(0,0,0)', //空心柱子背景色
120866
120939
 
120940
+ SplashScreen:
120941
+ {
120942
+ BGColor:"rgba(112,128,144,0.5)",
120943
+ TextColor:"rgb(230,230,230)",
120944
+ },
120945
+
120867
120946
  HLCArea:
120868
120947
  {
120869
120948
  HighLineColor:'rgb(238,21,21)',
@@ -131833,7 +131912,7 @@ function HQChartScriptWorker()
131833
131912
 
131834
131913
 
131835
131914
 
131836
- var HQCHART_VERSION="1.1.12808";
131915
+ var HQCHART_VERSION="1.1.12819";
131837
131916
 
131838
131917
  function PrintHQChartVersion()
131839
131918
  {