hqchart 1.1.15364 → 1.1.15368

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.
@@ -3053,6 +3053,7 @@ var JSCHART_DATA_FIELD_ID=
3053
3053
  KLINE_COLOR_DATA:66, //K线自定义颜色数据
3054
3054
  KLINE_DAY_EXTENDDATA:25,
3055
3055
  KLINE_MINUTE_EXTENDDATA:25,
3056
+ KLINE_TICK_EXTENDDATA:25,
3056
3057
 
3057
3058
  //OrderBook Heatmap
3058
3059
  KLINE_HEATMAP:67,
@@ -86176,14 +86177,26 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
86176
86177
  {
86177
86178
  var self=this;
86178
86179
  var start=0;
86179
- if (this.SourceData && this.SourceData.Data) start=this.SourceData.Data.length;
86180
+ var hisData=this.GetKData();
86181
+ var dateRange=hisData.GetDateRange();
86182
+
86180
86183
  if (this.NetworkFilter)
86181
86184
  {
86185
+ var kLineDrawType=this.GetKLineDrawType();
86182
86186
  var obj=
86183
86187
  {
86184
86188
  Name:'KLineChartContainer::RequestTickRealtimeData', //类名::
86185
86189
  Explain:'当天最新分笔数据',
86186
- Request:{ Url:self.TickApiUrl, Data:{ symbol: self.Symbol, start:start, end:start+1000 }, Type:'POST' },
86190
+ Request:
86191
+ {
86192
+ Url:self.TickApiUrl,
86193
+ Data:
86194
+ {
86195
+ symbol:self.Symbol, period:this.Period, right:this.Right,
86196
+ dateRange:dateRange, klineDrawType:kLineDrawType
86197
+ },
86198
+ Type:'POST'
86199
+ },
86187
86200
  Self:this,
86188
86201
  PreventDefault:false
86189
86202
  };
@@ -86196,29 +86209,14 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
86196
86209
 
86197
86210
  if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
86198
86211
  }
86199
-
86200
- JSNetwork.HttpRequest({
86201
- url: self.TickApiUrl,
86202
- data:{"symbol":self.Symbol, start:start-10, end:start+1000 },
86203
- type:"post",
86204
- dataType: "json",
86205
- async:true,
86206
- success: function (data)
86207
- {
86208
- self.ChartSplashPaint.EnableSplash(false);
86209
- self.RecvTickRealtimeData(data);
86210
- self.AutoUpdate();
86211
- }
86212
- });
86213
86212
  }
86214
86213
 
86215
86214
  this.RecvTickRealtimeData=function(data)
86216
86215
  {
86217
- if (data.ver==2.0)
86218
- var aryDayData=KLineChartContainer.JsonDataToTickDataV2(data); //增量数据
86219
- else
86220
- var aryDayData=KLineChartContainer.JsonDataToTickData(data); //增量数据
86221
- if (!aryDayData || aryDayData.length<=0) return;
86216
+ var aryDayData=null;
86217
+ if (data.ver==2.0) aryDayData=KLineChartContainer.JsonDataToTickDataV2(data); //增量数据
86218
+ else aryDayData=KLineChartContainer.JsonDataToTickData(data); //增量数据
86219
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryDayData)) return;
86222
86220
 
86223
86221
  var redraw=false; //强制重绘
86224
86222
  if (data.redraw==true) redraw=true;
@@ -86228,7 +86226,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
86228
86226
  var lastTime=0;
86229
86227
  if (source.length>0) lastTime=source[source.length-1].Time;
86230
86228
  var newCount=0;
86231
- for(var i in aryDayData)
86229
+ for(var i=0; i<aryDayData.length; ++i)
86232
86230
  {
86233
86231
  var item=aryDayData[i];
86234
86232
  if (item.Time<=lastTime) continue;
@@ -91213,20 +91211,24 @@ KLineChartContainer.JsonDataToTickDataV2=function(data)
91213
91211
  {
91214
91212
  var aryDayData=[];
91215
91213
  if (!IFrameSplitOperator.IsNonEmptyArray(data.data)) return aryDayData;
91216
-
91214
+ var extendDataIndex=JSCHART_DATA_FIELD_ID.KLINE_TICK_EXTENDDATA;
91217
91215
  for(var i=0;i<data.data.length;++i)
91218
91216
  {
91219
91217
  var item = new HistoryData();
91220
- var tick=data.data[i]; //[ date, time, yClose, price, extendData]
91218
+ var tick=data.data[i]; //[ date, time, yClose, price, vol, amount, flag,]
91221
91219
  if (!tick) continue;
91222
91220
 
91223
91221
  item.Date = tick[0];
91224
91222
  item.Time=tick[1];
91225
91223
  item.YClose = tick[2];
91226
91224
  item.Low=item.High=item.Close=item.Open = tick[3];
91225
+ item.Vol = tick[4]; //原始单位股
91226
+ item.Amount = tick[5];
91227
+ item.Flag=tick[6];
91228
+
91227
91229
  aryDayData.push(item);
91228
91230
 
91229
- if (tick[4]) item.ExtendData=tick[4];
91231
+ if (tick[extendDataIndex]) item.ExtendData=tick[extendDataIndex];
91230
91232
  }
91231
91233
 
91232
91234
  return aryDayData;
@@ -8036,7 +8036,7 @@ function ChartReport()
8036
8036
 
8037
8037
  this.FormaTimeDrawInfo=function(column, stock, drawInfo, data)
8038
8038
  {
8039
- if (!IFrameSplitOperator.IsNumber(stock.Time)) return;
8039
+ if (!stock || !IFrameSplitOperator.IsNumber(stock.Time)) return;
8040
8040
 
8041
8041
  if (column.ValueType==0) //0=hhmm 1=hhmmss 2=hhmmss.fff
8042
8042
  {
@@ -8054,7 +8054,7 @@ function ChartReport()
8054
8054
 
8055
8055
  this.FormaDateDrawInfo=function(column, stock, drawInfo, data)
8056
8056
  {
8057
- if (!IFrameSplitOperator.IsNumber(stock.Date)) return;
8057
+ if (!stock || !IFrameSplitOperator.IsNumber(stock.Date)) return;
8058
8058
 
8059
8059
  if (column.FormatType==0)
8060
8060
  drawInfo.Text=IFrameSplitOperator.FormatDateString(stock.Date,"YYYY-MM-DD");
@@ -62,6 +62,15 @@ HQData.NetworkFilter=function(data, callback)
62
62
  HQData.RequestMinuteRealtimeData(data,callback);
63
63
  break;
64
64
 
65
+ case "KLineChartContainer::RequestTickData":
66
+ //HQChart使用教程30-K线图如何对接第3方数据5-逐笔数据
67
+ HQData.RequestKLineTickData(data,callback);
68
+ break;
69
+ case "KLineChartContainer::RequestTickRealtimeData":
70
+ //HQChart使用教程30-K线图如何对接第3方数据16-轮询增量更新逐笔数据
71
+ HQData.RequestTickRealtimeData(data,callback);
72
+ break;
73
+
65
74
  case "JSSymbolData::GetVariantData": //额外的变量数据
66
75
  //HQChart使用教程30-K线图如何对接第3方数据29-板块字符串函数数据[GNBLOCK,GNBLOCKNUM......]
67
76
  HQData.RequestIndexVariantData(data,callback);
@@ -1230,6 +1239,50 @@ HQData.RequestMinuteRealtimeData=function(data,callback)
1230
1239
  }
1231
1240
 
1232
1241
 
1242
+ HQData.RequestKLineTickData=function(data,callback)
1243
+ {
1244
+ data.PreventDefault=true;
1245
+ var symbol=data.Request.Data.symbol;
1246
+ console.log(`[HQData::RequestKLineTickData] Symbol=${symbol}`);
1247
+
1248
+ var hqchartData={ code:0, symbol:symbol, name:symbol, data:[], ver:2.0 };
1249
+ for(var i=0;i<MSECOND_TEST_DATA.data.length-100;++i)
1250
+ {
1251
+ var item=MSECOND_TEST_DATA.data[i];
1252
+ var flag=HQData.GetRandomTestData(1,10)%3;
1253
+ var kItem=[item[0], parseInt(item[8]/1000), item[1], item[5], item[6]*1000, item[7], flag ];
1254
+ hqchartData.data.push(kItem);
1255
+ }
1256
+
1257
+ callback(hqchartData);
1258
+ }
1259
+
1260
+ HQData.RequestTickRealtimeData=function(data,callback)
1261
+ {
1262
+ data.PreventDefault=true;
1263
+ var symbol=data.Request.Data.symbol; //请求的股票代码
1264
+ var dateRange=data.Request.Data.dateRange;
1265
+ var endTime=dateRange.End.Time;
1266
+ var endDate=dateRange.End.Date;
1267
+
1268
+ var hqchartData={ code:0, symbol:symbol, name:symbol, data:[], ver:2.0 };
1269
+ for(var i=0;i<MSECOND_TEST_DATA.data.length;++i)
1270
+ {
1271
+ var item=MSECOND_TEST_DATA.data[i];
1272
+ var time=parseInt(item[8]/1000);
1273
+ if (time>endTime)
1274
+ {
1275
+ var flag=HQData.GetRandomTestData(1,10)%3;
1276
+ var kItem=[item[0], time, item[1], item[5], item[6]*1000, item[7], flag ];
1277
+ hqchartData.data.push(kItem);
1278
+ break;
1279
+ }
1280
+ }
1281
+
1282
+ callback(hqchartData);
1283
+ }
1284
+
1285
+
1233
1286
  HQData.RequestIndexVariantData=function(data,callback)
1234
1287
  {
1235
1288
  data.PreventDefault=true;
@@ -3897,7 +3950,13 @@ HQData.APIIndex_KLINE_TABLE=function(data, callback)
3897
3950
  DrawType:'KLINE_TABLE',
3898
3951
  DrawData:[ ] , //数据 [ [ { Text, Color: BGColor }, ...... ], [],]
3899
3952
  RowCount:4,
3900
- RowName:[ {Name:"账户[*9993]",TextAlign:"center", Color:"rgb(124, 252, 0)"}, {Name:"账户[*8881]",TextAlign:"center", Color:"rgb(238, 99, 9)"}, {Name:"账户3",TextAlign:"center"},{Name:"账户4", TextAlign:"center"}],
3953
+ RowName:
3954
+ [
3955
+ {Name:"账户[*9993]",TextAlign:"center", Color:"rgb(124, 252, 0)"},
3956
+ {Name:"账户[*8881]",TextAlign:"center", Color:"rgb(238, 99, 9)", BGColor:"rgb(100,0,200)" },
3957
+ {Name:"账户3",TextAlign:"center"},
3958
+ {Name:"账户4", TextAlign:"center"}
3959
+ ],
3901
3960
 
3902
3961
  Config:
3903
3962
  {
@@ -3908,7 +3967,9 @@ HQData.APIIndex_KLINE_TABLE=function(data, callback)
3908
3967
  RowNamePosition:3,
3909
3968
  TextFont:{ Family:'微软雅黑' , FontMaxSize:14*GetDevicePixelRatio(), },
3910
3969
  RowHeightType:0,
3911
- Style:1
3970
+ Style:1,
3971
+
3972
+ AryBorderColor:[null, "rgb(100,20,200)", "rgb(200,0,100)"]
3912
3973
  }
3913
3974
  },
3914
3975
 
@@ -7149,6 +7149,7 @@ var JSCHART_DATA_FIELD_ID=
7149
7149
  KLINE_COLOR_DATA:66, //K线自定义颜色数据
7150
7150
  KLINE_DAY_EXTENDDATA:25,
7151
7151
  KLINE_MINUTE_EXTENDDATA:25,
7152
+ KLINE_TICK_EXTENDDATA:25,
7152
7153
 
7153
7154
  //OrderBook Heatmap
7154
7155
  KLINE_HEATMAP:67,
@@ -90272,14 +90273,26 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
90272
90273
  {
90273
90274
  var self=this;
90274
90275
  var start=0;
90275
- if (this.SourceData && this.SourceData.Data) start=this.SourceData.Data.length;
90276
+ var hisData=this.GetKData();
90277
+ var dateRange=hisData.GetDateRange();
90278
+
90276
90279
  if (this.NetworkFilter)
90277
90280
  {
90281
+ var kLineDrawType=this.GetKLineDrawType();
90278
90282
  var obj=
90279
90283
  {
90280
90284
  Name:'KLineChartContainer::RequestTickRealtimeData', //类名::
90281
90285
  Explain:'当天最新分笔数据',
90282
- Request:{ Url:self.TickApiUrl, Data:{ symbol: self.Symbol, start:start, end:start+1000 }, Type:'POST' },
90286
+ Request:
90287
+ {
90288
+ Url:self.TickApiUrl,
90289
+ Data:
90290
+ {
90291
+ symbol:self.Symbol, period:this.Period, right:this.Right,
90292
+ dateRange:dateRange, klineDrawType:kLineDrawType
90293
+ },
90294
+ Type:'POST'
90295
+ },
90283
90296
  Self:this,
90284
90297
  PreventDefault:false
90285
90298
  };
@@ -90292,29 +90305,14 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
90292
90305
 
90293
90306
  if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
90294
90307
  }
90295
-
90296
- JSNetwork.HttpRequest({
90297
- url: self.TickApiUrl,
90298
- data:{"symbol":self.Symbol, start:start-10, end:start+1000 },
90299
- type:"post",
90300
- dataType: "json",
90301
- async:true,
90302
- success: function (data)
90303
- {
90304
- self.ChartSplashPaint.EnableSplash(false);
90305
- self.RecvTickRealtimeData(data);
90306
- self.AutoUpdate();
90307
- }
90308
- });
90309
90308
  }
90310
90309
 
90311
90310
  this.RecvTickRealtimeData=function(data)
90312
90311
  {
90313
- if (data.ver==2.0)
90314
- var aryDayData=KLineChartContainer.JsonDataToTickDataV2(data); //增量数据
90315
- else
90316
- var aryDayData=KLineChartContainer.JsonDataToTickData(data); //增量数据
90317
- if (!aryDayData || aryDayData.length<=0) return;
90312
+ var aryDayData=null;
90313
+ if (data.ver==2.0) aryDayData=KLineChartContainer.JsonDataToTickDataV2(data); //增量数据
90314
+ else aryDayData=KLineChartContainer.JsonDataToTickData(data); //增量数据
90315
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryDayData)) return;
90318
90316
 
90319
90317
  var redraw=false; //强制重绘
90320
90318
  if (data.redraw==true) redraw=true;
@@ -90324,7 +90322,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
90324
90322
  var lastTime=0;
90325
90323
  if (source.length>0) lastTime=source[source.length-1].Time;
90326
90324
  var newCount=0;
90327
- for(var i in aryDayData)
90325
+ for(var i=0; i<aryDayData.length; ++i)
90328
90326
  {
90329
90327
  var item=aryDayData[i];
90330
90328
  if (item.Time<=lastTime) continue;
@@ -95309,20 +95307,24 @@ KLineChartContainer.JsonDataToTickDataV2=function(data)
95309
95307
  {
95310
95308
  var aryDayData=[];
95311
95309
  if (!IFrameSplitOperator.IsNonEmptyArray(data.data)) return aryDayData;
95312
-
95310
+ var extendDataIndex=JSCHART_DATA_FIELD_ID.KLINE_TICK_EXTENDDATA;
95313
95311
  for(var i=0;i<data.data.length;++i)
95314
95312
  {
95315
95313
  var item = new HistoryData();
95316
- var tick=data.data[i]; //[ date, time, yClose, price, extendData]
95314
+ var tick=data.data[i]; //[ date, time, yClose, price, vol, amount, flag,]
95317
95315
  if (!tick) continue;
95318
95316
 
95319
95317
  item.Date = tick[0];
95320
95318
  item.Time=tick[1];
95321
95319
  item.YClose = tick[2];
95322
95320
  item.Low=item.High=item.Close=item.Open = tick[3];
95321
+ item.Vol = tick[4]; //原始单位股
95322
+ item.Amount = tick[5];
95323
+ item.Flag=tick[6];
95324
+
95323
95325
  aryDayData.push(item);
95324
95326
 
95325
- if (tick[4]) item.ExtendData=tick[4];
95327
+ if (tick[extendDataIndex]) item.ExtendData=tick[extendDataIndex];
95326
95328
  }
95327
95329
 
95328
95330
  return aryDayData;
@@ -118393,6 +118395,32 @@ function JSAlgorithm(errorHandler,symbolData)
118393
118395
  return result;
118394
118396
  }
118395
118397
 
118398
+ //VARCAT6(A,B,C,D,E,F):将六个字符串A,B,C,D,E,F相加成一个字符串.
118399
+ //每个数据都进行序列运算,若用于多股选股,建议换用STRCAT6
118400
+ //用法: VARCAT6('多头',VAR2STR(C,2),' ',VAR2STR(O,2),' ',VAR2STR(MA(C,5),2))将六个字符串相加成一个字符串
118401
+ this.VARCAT6=function(data,data2,data3,data4,data5)
118402
+ {
118403
+ var aryData=[];
118404
+ if (Array.isArray(data) || IFrameSplitOperator.IsString(data)) aryData.push(data);
118405
+ if (Array.isArray(data2) || IFrameSplitOperator.IsString(data2)) aryData.push(data2);
118406
+ if (Array.isArray(data3) || IFrameSplitOperator.IsString(data3)) aryData.push(data3);
118407
+ if (Array.isArray(data4) || IFrameSplitOperator.IsString(data4)) aryData.push(data4);
118408
+ if (Array.isArray(data5) || IFrameSplitOperator.IsString(data5)) aryData.push(data5);
118409
+
118410
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryData)) return [];
118411
+ if (aryData.length==1) return data;
118412
+
118413
+ var tempData=this.VARCAT(aryData[0], aryData[1]);
118414
+ var result=tempData;
118415
+ for(var i=2;i<aryData.length;++i)
118416
+ {
118417
+ result=this.VARCAT(tempData,aryData[i]);
118418
+ tempData=result;
118419
+ }
118420
+
118421
+ return result;
118422
+ }
118423
+
118396
118424
  //FINDSTR(A,B):在字符串A中查找字符串B,如果找到返回1,否则返回0.
118397
118425
  //用法: FINDSTR('多头开仓','开仓')在字符串'多头开仓'中查找字符串'开仓',返回1
118398
118426
  this.FINDSTR=function(data, data2)
@@ -118519,6 +118547,8 @@ function JSAlgorithm(errorHandler,symbolData)
118519
118547
  this.VAR2STR=function(data,n)
118520
118548
  {
118521
118549
  var result=[];
118550
+ var dec=0;
118551
+ if (IFrameSplitOperator.IsNumber(n)) dec=n;
118522
118552
  if (Array.isArray(data))
118523
118553
  {
118524
118554
  for(var i=0;i<data.length;++i)
@@ -118526,13 +118556,13 @@ function JSAlgorithm(errorHandler,symbolData)
118526
118556
  result[i]=null;
118527
118557
  var item=data[i];
118528
118558
  if (this.IsNumber(item))
118529
- result[i]=item.toFixed(n);
118559
+ result[i]=item.toFixed(dec);
118530
118560
  }
118531
118561
  }
118532
118562
  else
118533
118563
  {
118534
118564
  if (this.IsNumber(data))
118535
- result=data.toFixed(n);
118565
+ result=data.toFixed(dec);
118536
118566
  }
118537
118567
 
118538
118568
  return result;
@@ -120244,6 +120274,8 @@ function JSAlgorithm(errorHandler,symbolData)
120244
120274
  return this.VAR2STR(args[0], args[1]);
120245
120275
  case "VARCAT":
120246
120276
  return this.VARCAT(args[0], args[1]);
120277
+ case "VARCAT6":
120278
+ return this.VARCAT6(args[0], args[1],args[2], args[3],args[4], args[5]);
120247
120279
  case "STRSPACE":
120248
120280
  return this.STRSPACE(args[0]);
120249
120281
  case "FINDSTR":
@@ -120456,7 +120488,8 @@ function JSDraw(errorHandler,symbolData)
120456
120488
  var drawData=[];
120457
120489
  var result={ DrawData:drawData, DrawType:'DRAWFLAGTEXT' };
120458
120490
  if (!text) return result;
120459
-
120491
+ var bArrayText=Array.isArray(text); //是否是数组字符串
120492
+
120460
120493
  if (Array.isArray(condition))
120461
120494
  {
120462
120495
  if (condition.length<=0) return result;
@@ -120467,14 +120500,18 @@ function JSDraw(errorHandler,symbolData)
120467
120500
  drawData[i]=null;
120468
120501
 
120469
120502
  if (isNaN(condition[i]) || !condition[i]) continue;
120503
+
120504
+ var outText=null;
120505
+ if (!bArrayText) outText=text;
120506
+ else if (bArrayText && text[i]) outText=text[i];
120470
120507
 
120471
120508
  if (bSinglePrice)
120472
120509
  {
120473
- drawData[i]={ YValue:price, Text:text };
120510
+ drawData[i]={ YValue:price, Text:outText };
120474
120511
  }
120475
120512
  else
120476
120513
  {
120477
- if (IFrameSplitOperator.IsNumber(price[i])) drawData[i]={ YValue:price[i], Text:text };
120514
+ if (IFrameSplitOperator.IsNumber(price[i])) drawData[i]={ YValue:price[i], Text:outText };
120478
120515
  }
120479
120516
  }
120480
120517
  }
@@ -120483,13 +120520,17 @@ function JSDraw(errorHandler,symbolData)
120483
120520
  var bSinglePrice=IFrameSplitOperator.IsNumber(price);
120484
120521
  for(var i=0;i<this.SymbolData.Data.Data.length;++i)
120485
120522
  {
120523
+ var outText=null;
120524
+ if (!bArrayText) outText=text;
120525
+ else if (bArrayText && text[i]) outText=text[i];
120526
+
120486
120527
  if (bSinglePrice)
120487
120528
  {
120488
- drawData[i]={ YValue:price, Text:text };
120529
+ drawData[i]={ YValue:price, Text:outText };
120489
120530
  }
120490
120531
  else
120491
120532
  {
120492
- if (IFrameSplitOperator.IsNumber(price[i])) drawData[i]={ YValue:price[i], Text:text };
120533
+ if (IFrameSplitOperator.IsNumber(price[i])) drawData[i]={ YValue:price[i], Text:outText };
120493
120534
  }
120494
120535
  }
120495
120536
  }
@@ -130687,6 +130728,7 @@ function JSExplainer(ast,option)
130687
130728
  ["STRCAT", { Name:"STRCAT", Param:{ Count:2 }, ToString:function(args) { return `字符串相加`; } } ],
130688
130729
  ["STRCAT6",{ Name:"STRCAT6", Param:{ Dynamic:true }, ToString:function(args) { return `字符串相加`; } } ],
130689
130730
  ["VARCAT", { Name:"VARCAT", Param:{ Count:2 }, ToString:function(args) { return `字符串相加`; } } ],
130731
+ ["VARCAT6", { Name:"VARCAT", Param:{ Dynamic:true }, ToString:function(args) { return `字符串相加`; } } ],
130690
130732
  ["STRSPACE", { Name:"STRSPACE", Param:{ Count:1 }, ToString:function(args) { return `字符串${args[0]}加一空格`; } } ],
130691
130733
  ["SUBSTR", { Name:"SUBSTR", Param:{ Count:3 }, ToString:function(args) { return `字符串${args[0]}中取一部分`; } } ],
130692
130734
  ["STRCMP", { Name:"STRCMP", Param:{ Count:2 }, ToString:function(args) { return `字符串${args[0]}和字符串${args[1]}比较`; } } ],
@@ -149627,7 +149669,7 @@ function ChartReport()
149627
149669
 
149628
149670
  this.FormaTimeDrawInfo=function(column, stock, drawInfo, data)
149629
149671
  {
149630
- if (!IFrameSplitOperator.IsNumber(stock.Time)) return;
149672
+ if (!stock || !IFrameSplitOperator.IsNumber(stock.Time)) return;
149631
149673
 
149632
149674
  if (column.ValueType==0) //0=hhmm 1=hhmmss 2=hhmmss.fff
149633
149675
  {
@@ -149645,7 +149687,7 @@ function ChartReport()
149645
149687
 
149646
149688
  this.FormaDateDrawInfo=function(column, stock, drawInfo, data)
149647
149689
  {
149648
- if (!IFrameSplitOperator.IsNumber(stock.Date)) return;
149690
+ if (!stock || !IFrameSplitOperator.IsNumber(stock.Date)) return;
149649
149691
 
149650
149692
  if (column.FormatType==0)
149651
149693
  drawInfo.Text=IFrameSplitOperator.FormatDateString(stock.Date,"YYYY-MM-DD");
@@ -155459,7 +155501,7 @@ function ScrollBarBGChart()
155459
155501
 
155460
155502
 
155461
155503
 
155462
- var HQCHART_VERSION="1.1.15363";
155504
+ var HQCHART_VERSION="1.1.15367";
155463
155505
 
155464
155506
  function PrintHQChartVersion()
155465
155507
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.15363";
8
+ var HQCHART_VERSION="1.1.15367";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -55594,6 +55594,15 @@ HQData.NetworkFilter=function(data, callback)
55594
55594
  HQData.RequestMinuteRealtimeData(data,callback);
55595
55595
  break;
55596
55596
 
55597
+ case "KLineChartContainer::RequestTickData":
55598
+ //HQChart使用教程30-K线图如何对接第3方数据5-逐笔数据
55599
+ HQData.RequestKLineTickData(data,callback);
55600
+ break;
55601
+ case "KLineChartContainer::RequestTickRealtimeData":
55602
+ //HQChart使用教程30-K线图如何对接第3方数据16-轮询增量更新逐笔数据
55603
+ HQData.RequestTickRealtimeData(data,callback);
55604
+ break;
55605
+
55597
55606
  case "JSSymbolData::GetVariantData": //额外的变量数据
55598
55607
  //HQChart使用教程30-K线图如何对接第3方数据29-板块字符串函数数据[GNBLOCK,GNBLOCKNUM......]
55599
55608
  HQData.RequestIndexVariantData(data,callback);
@@ -56762,6 +56771,50 @@ HQData.RequestMinuteRealtimeData=function(data,callback)
56762
56771
  }
56763
56772
 
56764
56773
 
56774
+ HQData.RequestKLineTickData=function(data,callback)
56775
+ {
56776
+ data.PreventDefault=true;
56777
+ var symbol=data.Request.Data.symbol;
56778
+ console.log(`[HQData::RequestKLineTickData] Symbol=${symbol}`);
56779
+
56780
+ var hqchartData={ code:0, symbol:symbol, name:symbol, data:[], ver:2.0 };
56781
+ for(var i=0;i<MSECOND_TEST_DATA.data.length-100;++i)
56782
+ {
56783
+ var item=MSECOND_TEST_DATA.data[i];
56784
+ var flag=HQData.GetRandomTestData(1,10)%3;
56785
+ var kItem=[item[0], parseInt(item[8]/1000), item[1], item[5], item[6]*1000, item[7], flag ];
56786
+ hqchartData.data.push(kItem);
56787
+ }
56788
+
56789
+ callback(hqchartData);
56790
+ }
56791
+
56792
+ HQData.RequestTickRealtimeData=function(data,callback)
56793
+ {
56794
+ data.PreventDefault=true;
56795
+ var symbol=data.Request.Data.symbol; //请求的股票代码
56796
+ var dateRange=data.Request.Data.dateRange;
56797
+ var endTime=dateRange.End.Time;
56798
+ var endDate=dateRange.End.Date;
56799
+
56800
+ var hqchartData={ code:0, symbol:symbol, name:symbol, data:[], ver:2.0 };
56801
+ for(var i=0;i<MSECOND_TEST_DATA.data.length;++i)
56802
+ {
56803
+ var item=MSECOND_TEST_DATA.data[i];
56804
+ var time=parseInt(item[8]/1000);
56805
+ if (time>endTime)
56806
+ {
56807
+ var flag=HQData.GetRandomTestData(1,10)%3;
56808
+ var kItem=[item[0], time, item[1], item[5], item[6]*1000, item[7], flag ];
56809
+ hqchartData.data.push(kItem);
56810
+ break;
56811
+ }
56812
+ }
56813
+
56814
+ callback(hqchartData);
56815
+ }
56816
+
56817
+
56765
56818
  HQData.RequestIndexVariantData=function(data,callback)
56766
56819
  {
56767
56820
  data.PreventDefault=true;
@@ -59429,7 +59482,13 @@ HQData.APIIndex_KLINE_TABLE=function(data, callback)
59429
59482
  DrawType:'KLINE_TABLE',
59430
59483
  DrawData:[ ] , //数据 [ [ { Text, Color: BGColor }, ...... ], [],]
59431
59484
  RowCount:4,
59432
- RowName:[ {Name:"账户[*9993]",TextAlign:"center", Color:"rgb(124, 252, 0)"}, {Name:"账户[*8881]",TextAlign:"center", Color:"rgb(238, 99, 9)"}, {Name:"账户3",TextAlign:"center"},{Name:"账户4", TextAlign:"center"}],
59485
+ RowName:
59486
+ [
59487
+ {Name:"账户[*9993]",TextAlign:"center", Color:"rgb(124, 252, 0)"},
59488
+ {Name:"账户[*8881]",TextAlign:"center", Color:"rgb(238, 99, 9)", BGColor:"rgb(100,0,200)" },
59489
+ {Name:"账户3",TextAlign:"center"},
59490
+ {Name:"账户4", TextAlign:"center"}
59491
+ ],
59433
59492
 
59434
59493
  Config:
59435
59494
  {
@@ -59440,7 +59499,9 @@ HQData.APIIndex_KLINE_TABLE=function(data, callback)
59440
59499
  RowNamePosition:3,
59441
59500
  TextFont:{ Family:'微软雅黑' , FontMaxSize:14*GetDevicePixelRatio(), },
59442
59501
  RowHeightType:0,
59443
- Style:1
59502
+ Style:1,
59503
+
59504
+ AryBorderColor:[null, "rgb(100,20,200)", "rgb(200,0,100)"]
59444
59505
  }
59445
59506
  },
59446
59507