hqchart 1.1.15364 → 1.1.15375
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/umychart.vue.js +35 -24
- package/package.json +1 -1
- package/src/jscommon/umychart.NetworkFilterTest.js +63 -2
- package/src/jscommon/umychart.complier.js +47 -7
- package/src/jscommon/umychart.js +96 -80
- package/src/jscommon/umychart.report.js +2 -2
- package/src/jscommon/umychart.testdata.js +63 -2
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +146 -90
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.NetworkFilterTest.vue.js +63 -2
- package/src/jscommon/umychart.vue/umychart.vue.js +146 -90
|
@@ -4379,6 +4379,49 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4379
4379
|
if (IFrameSplitOperator.IsNumber(item.Count)) klineChart.PriceGap.Count=item.Count;
|
|
4380
4380
|
}
|
|
4381
4381
|
|
|
4382
|
+
//设置十字光标
|
|
4383
|
+
this.SetCorssCursorConfig=function(chart, option)
|
|
4384
|
+
{
|
|
4385
|
+
if (!option || !option.CorssCursorInfo) return;
|
|
4386
|
+
|
|
4387
|
+
var item=option.CorssCursorInfo;
|
|
4388
|
+
if (IFrameSplitOperator.IsNumber(item.Left)) chart.ChartCorssCursor.ShowTextMode.Left=item.Left;
|
|
4389
|
+
if (IFrameSplitOperator.IsNumber(item.Right)) chart.ChartCorssCursor.ShowTextMode.Right=item.Right;
|
|
4390
|
+
if (IFrameSplitOperator.IsNumber(item.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=item.Bottom;
|
|
4391
|
+
|
|
4392
|
+
if (IFrameSplitOperator.IsBool(item.IsShowCorss)) chart.ChartCorssCursor.IsShowCorss=item.IsShowCorss;
|
|
4393
|
+
|
|
4394
|
+
if (IFrameSplitOperator.IsNumber(item.HPenType)) chart.ChartCorssCursor.HPenType=item.HPenType;
|
|
4395
|
+
if (IFrameSplitOperator.IsNumber(item.VPenType)) chart.ChartCorssCursor.VPenType=item.VPenType;
|
|
4396
|
+
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
4397
|
+
|
|
4398
|
+
if (item.RightButton)
|
|
4399
|
+
{
|
|
4400
|
+
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
4401
|
+
}
|
|
4402
|
+
|
|
4403
|
+
if (item.BottomButton)
|
|
4404
|
+
{
|
|
4405
|
+
var subItem=item.BottomButton;
|
|
4406
|
+
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
4407
|
+
}
|
|
4408
|
+
|
|
4409
|
+
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
4410
|
+
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
4411
|
+
|
|
4412
|
+
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
4413
|
+
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
4414
|
+
|
|
4415
|
+
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
4416
|
+
|
|
4417
|
+
if (item.YDecimals) //Y轴文字小数位数
|
|
4418
|
+
{
|
|
4419
|
+
var subItem=item.YDecimals;
|
|
4420
|
+
if (IFrameSplitOperator.IsNumber(subItem.Value)) chart.ChartCorssCursor.StringFormatY.DecimalsConfig.Value=subItem.Value;
|
|
4421
|
+
if (IFrameSplitOperator.IsNumber(subItem.Type)) chart.ChartCorssCursor.StringFormatY.DecimalsConfig.Type=subItem.Type;
|
|
4422
|
+
}
|
|
4423
|
+
}
|
|
4424
|
+
|
|
4382
4425
|
//历史K线图
|
|
4383
4426
|
this.CreateKLineChartContainer=function(option)
|
|
4384
4427
|
{
|
|
@@ -4632,48 +4675,23 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4632
4675
|
if (option.IsCorssOnlyDrawKLine===true) chart.ChartCorssCursor.IsOnlyDrawKLine=option.IsCorssOnlyDrawKLine;
|
|
4633
4676
|
if (option.CorssCursorTouchEnd===true) chart.CorssCursorTouchEnd = option.CorssCursorTouchEnd;
|
|
4634
4677
|
if (option.IsClickShowCorssCursor==true) chart.IsClickShowCorssCursor=option.IsClickShowCorssCursor;
|
|
4635
|
-
|
|
4678
|
+
this.SetCorssCursorConfig(chart, option);
|
|
4679
|
+
if (option.CorssCursorInfo) //十字光标K线上的属性设置
|
|
4636
4680
|
{
|
|
4637
4681
|
var item=option.CorssCursorInfo;
|
|
4638
|
-
if (!isNaN(option.CorssCursorInfo.Left)) chart.ChartCorssCursor.ShowTextMode.Left=option.CorssCursorInfo.Left;
|
|
4639
|
-
if (!isNaN(option.CorssCursorInfo.Right)) chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;
|
|
4640
|
-
if (!isNaN(option.CorssCursorInfo.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;
|
|
4641
|
-
if (option.CorssCursorInfo.IsShowCorss===false) chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;
|
|
4642
4682
|
if (IFrameSplitOperator.IsBool(item.IsShowClose)) chart.ChartCorssCursor.IsShowClose = item.IsShowClose; //Y轴显示收盘价
|
|
4643
4683
|
if (IFrameSplitOperator.IsBool(item.IsOnlyDrawKLine)) chart.ChartCorssCursor.IsOnlyDrawKLine = item.IsOnlyDrawKLine; //Y轴显示收盘价
|
|
4644
4684
|
if (option.CorssCursorInfo.PressTime) chart.PressTime=option.CorssCursorInfo.PressTime; //长按显示十字光标的时间
|
|
4645
|
-
if (IFrameSplitOperator.IsNumber(option.CorssCursorInfo.HPenType)) chart.ChartCorssCursor.HPenType=option.CorssCursorInfo.HPenType;
|
|
4646
|
-
if (option.CorssCursorInfo.VPenType>0) chart.ChartCorssCursor.VPenType=option.CorssCursorInfo.VPenType;
|
|
4647
|
-
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
4648
4685
|
if (option.CorssCursorInfo.DateFormatType>0) chart.ChartCorssCursor.StringFormatX.DateFormatType=option.CorssCursorInfo.DateFormatType;
|
|
4649
4686
|
if (IFrameSplitOperator.IsBool(item.IsDrawXRangeBG)) chart.ChartCorssCursor.IsDrawXRangeBG=item.IsDrawXRangeBG;
|
|
4650
4687
|
if (IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime)) chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;
|
|
4651
4688
|
if (IFrameSplitOperator.IsNumber(item.TextHeight)) chart.ChartCorssCursor.TextHeight=item.TextHeight;
|
|
4652
|
-
|
|
4653
|
-
if (item.RightButton)
|
|
4654
|
-
{
|
|
4655
|
-
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
4656
|
-
}
|
|
4657
|
-
|
|
4658
|
-
if (item.BottomButton)
|
|
4659
|
-
{
|
|
4660
|
-
var subItem=item.BottomButton;
|
|
4661
|
-
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
4662
|
-
}
|
|
4663
|
-
|
|
4664
|
-
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
4665
|
-
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
4666
|
-
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
4667
|
-
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
4668
|
-
|
|
4669
|
-
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
4670
4689
|
|
|
4671
4690
|
if (item.RangeIncrease)
|
|
4672
4691
|
{
|
|
4673
4692
|
var subItem=item.RangeIncrease;
|
|
4674
4693
|
if (IFrameSplitOperator.IsBool(subItem.IsShow)) chart.ChartCorssCursor.StringFormatX.RangeIncrease.IsShow=subItem.IsShow;
|
|
4675
4694
|
if (IFrameSplitOperator.IsNumber(subItem.Formula)) chart.ChartCorssCursor.StringFormatX.RangeIncrease.Formula=subItem.Formula;
|
|
4676
|
-
|
|
4677
4695
|
}
|
|
4678
4696
|
}
|
|
4679
4697
|
|
|
@@ -5201,39 +5219,15 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5201
5219
|
if (option.PageInfo) chart.SetPageInfo(option.PageInfo);
|
|
5202
5220
|
|
|
5203
5221
|
chart.Create(windowsCount,option); //创建子窗口
|
|
5204
|
-
|
|
5205
|
-
if (option.CorssCursorInfo)
|
|
5222
|
+
this.SetCorssCursorConfig(chart, option);
|
|
5223
|
+
if (option.CorssCursorInfo) //分时图十字光标属性设置
|
|
5206
5224
|
{
|
|
5207
5225
|
var item=option.CorssCursorInfo;
|
|
5208
|
-
|
|
5209
|
-
if (!isNaN(option.CorssCursorInfo.Right)) chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;
|
|
5210
|
-
if (!isNaN(option.CorssCursorInfo.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;
|
|
5211
|
-
if (option.CorssCursorInfo.IsShowCorss===false) chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;
|
|
5226
|
+
|
|
5212
5227
|
if (option.CorssCursorInfo.RightTextFormat>0) chart.ChartCorssCursor.TextFormat.Right=option.CorssCursorInfo.RightTextFormat;
|
|
5213
5228
|
if (option.CorssCursorInfo.IsOnlyDrawMinute == true) chart.ChartCorssCursor.IsOnlyDrawMinute = option.CorssCursorInfo.IsOnlyDrawMinute; //Y轴显示收盘价
|
|
5214
5229
|
if (IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime)) chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;
|
|
5215
5230
|
|
|
5216
|
-
if (item.RightButton)
|
|
5217
|
-
{
|
|
5218
|
-
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
5219
|
-
}
|
|
5220
|
-
|
|
5221
|
-
if (item.BottomButton)
|
|
5222
|
-
{
|
|
5223
|
-
var subItem=item.BottomButton;
|
|
5224
|
-
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
5225
|
-
}
|
|
5226
|
-
|
|
5227
|
-
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
5228
|
-
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
5229
|
-
|
|
5230
|
-
if (IFrameSplitOperator.IsNumber(item.HPenType)) chart.ChartCorssCursor.HPenType=item.HPenType;
|
|
5231
|
-
if (IFrameSplitOperator.IsNumber(item.VPenType)) chart.ChartCorssCursor.VPenType=item.VPenType;
|
|
5232
|
-
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
5233
|
-
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
5234
|
-
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
5235
|
-
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
5236
|
-
|
|
5237
5231
|
if (item.TextStyle)
|
|
5238
5232
|
{
|
|
5239
5233
|
if (item.TextStyle.Right) //右侧输出样式
|
|
@@ -7149,6 +7143,7 @@ var JSCHART_DATA_FIELD_ID=
|
|
|
7149
7143
|
KLINE_COLOR_DATA:66, //K线自定义颜色数据
|
|
7150
7144
|
KLINE_DAY_EXTENDDATA:25,
|
|
7151
7145
|
KLINE_MINUTE_EXTENDDATA:25,
|
|
7146
|
+
KLINE_TICK_EXTENDDATA:25,
|
|
7152
7147
|
|
|
7153
7148
|
//OrderBook Heatmap
|
|
7154
7149
|
KLINE_HEATMAP:67,
|
|
@@ -64892,6 +64887,7 @@ function HQPriceStringFormat()
|
|
|
64892
64887
|
|
|
64893
64888
|
this.PriceFormatType=0; //主窗口格式 0=默认 1=科学计数
|
|
64894
64889
|
this.DataFormatType=0; //副图指标格式 0=默认 1=科学计数
|
|
64890
|
+
this.DecimalsConfig={ Value:2, Type:0 }; //小数设置, Value:小数位数 , Type: 0=默认 1=跟指标标题一致
|
|
64895
64891
|
|
|
64896
64892
|
this.GetEventCallback
|
|
64897
64893
|
|
|
@@ -64990,7 +64986,7 @@ function HQPriceStringFormat()
|
|
|
64990
64986
|
if (!this.Value) return false;
|
|
64991
64987
|
|
|
64992
64988
|
this.PercentageText=null;
|
|
64993
|
-
var defaultfloatPrecision=
|
|
64989
|
+
var defaultfloatPrecision=this.DecimalsConfig.Value; //价格小数位数
|
|
64994
64990
|
if (this.FrameID==0) //第1个窗口显示原始价格
|
|
64995
64991
|
{
|
|
64996
64992
|
var defaultfloatPrecision=GetfloatPrecision(this.Symbol);
|
|
@@ -65039,6 +65035,7 @@ function HQPriceStringFormat()
|
|
|
65039
65035
|
}
|
|
65040
65036
|
else if (this.FrameID==1)
|
|
65041
65037
|
{
|
|
65038
|
+
defaultfloatPrecision=this.GetIndexTitleFloatPrecision(this.FrameID);
|
|
65042
65039
|
if (this.DataFormatType==1)
|
|
65043
65040
|
{
|
|
65044
65041
|
this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
@@ -65071,6 +65068,7 @@ function HQPriceStringFormat()
|
|
|
65071
65068
|
}
|
|
65072
65069
|
else
|
|
65073
65070
|
{
|
|
65071
|
+
defaultfloatPrecision=this.GetIndexTitleFloatPrecision(this.FrameID);
|
|
65074
65072
|
if (this.DataFormatType==1) this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
65075
65073
|
else this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);
|
|
65076
65074
|
if (IFrameSplitOperator.IsNumber(this.RValue)) this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);
|
|
@@ -65116,6 +65114,23 @@ function HQPriceStringFormat()
|
|
|
65116
65114
|
return true;
|
|
65117
65115
|
}
|
|
65118
65116
|
|
|
65117
|
+
//获取指标标题小数位数
|
|
65118
|
+
this.GetIndexTitleFloatPrecision=function(frameID)
|
|
65119
|
+
{
|
|
65120
|
+
var dec=this.DecimalsConfig.Value;
|
|
65121
|
+
if (this.DecimalsConfig.Type===0) return dec;
|
|
65122
|
+
|
|
65123
|
+
if (frameID<0) return dec;
|
|
65124
|
+
if (!this.HQChart) return dec;
|
|
65125
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.HQChart.WindowIndex)) return dec;
|
|
65126
|
+
var item=this.HQChart.WindowIndex[frameID];
|
|
65127
|
+
if (!item) return dec;
|
|
65128
|
+
|
|
65129
|
+
if (IFrameSplitOperator.IsNumber(item.FloatPrecision)) dec=item.FloatPrecision;
|
|
65130
|
+
|
|
65131
|
+
return dec;
|
|
65132
|
+
}
|
|
65133
|
+
|
|
65119
65134
|
//深度图刻度
|
|
65120
65135
|
this.GetExtendPaintData=function(floatPrecision)
|
|
65121
65136
|
{
|
|
@@ -90272,14 +90287,26 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
90272
90287
|
{
|
|
90273
90288
|
var self=this;
|
|
90274
90289
|
var start=0;
|
|
90275
|
-
|
|
90290
|
+
var hisData=this.GetKData();
|
|
90291
|
+
var dateRange=hisData.GetDateRange();
|
|
90292
|
+
|
|
90276
90293
|
if (this.NetworkFilter)
|
|
90277
90294
|
{
|
|
90295
|
+
var kLineDrawType=this.GetKLineDrawType();
|
|
90278
90296
|
var obj=
|
|
90279
90297
|
{
|
|
90280
90298
|
Name:'KLineChartContainer::RequestTickRealtimeData', //类名::
|
|
90281
90299
|
Explain:'当天最新分笔数据',
|
|
90282
|
-
Request:
|
|
90300
|
+
Request:
|
|
90301
|
+
{
|
|
90302
|
+
Url:self.TickApiUrl,
|
|
90303
|
+
Data:
|
|
90304
|
+
{
|
|
90305
|
+
symbol:self.Symbol, period:this.Period, right:this.Right,
|
|
90306
|
+
dateRange:dateRange, klineDrawType:kLineDrawType
|
|
90307
|
+
},
|
|
90308
|
+
Type:'POST'
|
|
90309
|
+
},
|
|
90283
90310
|
Self:this,
|
|
90284
90311
|
PreventDefault:false
|
|
90285
90312
|
};
|
|
@@ -90292,29 +90319,14 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
90292
90319
|
|
|
90293
90320
|
if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
|
|
90294
90321
|
}
|
|
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
90322
|
}
|
|
90310
90323
|
|
|
90311
90324
|
this.RecvTickRealtimeData=function(data)
|
|
90312
90325
|
{
|
|
90313
|
-
|
|
90314
|
-
|
|
90315
|
-
else
|
|
90316
|
-
|
|
90317
|
-
if (!aryDayData || aryDayData.length<=0) return;
|
|
90326
|
+
var aryDayData=null;
|
|
90327
|
+
if (data.ver==2.0) aryDayData=KLineChartContainer.JsonDataToTickDataV2(data); //增量数据
|
|
90328
|
+
else aryDayData=KLineChartContainer.JsonDataToTickData(data); //增量数据
|
|
90329
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(aryDayData)) return;
|
|
90318
90330
|
|
|
90319
90331
|
var redraw=false; //强制重绘
|
|
90320
90332
|
if (data.redraw==true) redraw=true;
|
|
@@ -90324,7 +90336,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
90324
90336
|
var lastTime=0;
|
|
90325
90337
|
if (source.length>0) lastTime=source[source.length-1].Time;
|
|
90326
90338
|
var newCount=0;
|
|
90327
|
-
for(var i
|
|
90339
|
+
for(var i=0; i<aryDayData.length; ++i)
|
|
90328
90340
|
{
|
|
90329
90341
|
var item=aryDayData[i];
|
|
90330
90342
|
if (item.Time<=lastTime) continue;
|
|
@@ -95309,20 +95321,24 @@ KLineChartContainer.JsonDataToTickDataV2=function(data)
|
|
|
95309
95321
|
{
|
|
95310
95322
|
var aryDayData=[];
|
|
95311
95323
|
if (!IFrameSplitOperator.IsNonEmptyArray(data.data)) return aryDayData;
|
|
95312
|
-
|
|
95324
|
+
var extendDataIndex=JSCHART_DATA_FIELD_ID.KLINE_TICK_EXTENDDATA;
|
|
95313
95325
|
for(var i=0;i<data.data.length;++i)
|
|
95314
95326
|
{
|
|
95315
95327
|
var item = new HistoryData();
|
|
95316
|
-
var tick=data.data[i]; //[ date, time, yClose, price,
|
|
95328
|
+
var tick=data.data[i]; //[ date, time, yClose, price, vol, amount, flag,]
|
|
95317
95329
|
if (!tick) continue;
|
|
95318
95330
|
|
|
95319
95331
|
item.Date = tick[0];
|
|
95320
95332
|
item.Time=tick[1];
|
|
95321
95333
|
item.YClose = tick[2];
|
|
95322
95334
|
item.Low=item.High=item.Close=item.Open = tick[3];
|
|
95335
|
+
item.Vol = tick[4]; //原始单位股
|
|
95336
|
+
item.Amount = tick[5];
|
|
95337
|
+
item.Flag=tick[6];
|
|
95338
|
+
|
|
95323
95339
|
aryDayData.push(item);
|
|
95324
95340
|
|
|
95325
|
-
if (tick[
|
|
95341
|
+
if (tick[extendDataIndex]) item.ExtendData=tick[extendDataIndex];
|
|
95326
95342
|
}
|
|
95327
95343
|
|
|
95328
95344
|
return aryDayData;
|
|
@@ -118393,6 +118409,32 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
118393
118409
|
return result;
|
|
118394
118410
|
}
|
|
118395
118411
|
|
|
118412
|
+
//VARCAT6(A,B,C,D,E,F):将六个字符串A,B,C,D,E,F相加成一个字符串.
|
|
118413
|
+
//每个数据都进行序列运算,若用于多股选股,建议换用STRCAT6
|
|
118414
|
+
//用法: VARCAT6('多头',VAR2STR(C,2),' ',VAR2STR(O,2),' ',VAR2STR(MA(C,5),2))将六个字符串相加成一个字符串
|
|
118415
|
+
this.VARCAT6=function(data,data2,data3,data4,data5)
|
|
118416
|
+
{
|
|
118417
|
+
var aryData=[];
|
|
118418
|
+
if (Array.isArray(data) || IFrameSplitOperator.IsString(data)) aryData.push(data);
|
|
118419
|
+
if (Array.isArray(data2) || IFrameSplitOperator.IsString(data2)) aryData.push(data2);
|
|
118420
|
+
if (Array.isArray(data3) || IFrameSplitOperator.IsString(data3)) aryData.push(data3);
|
|
118421
|
+
if (Array.isArray(data4) || IFrameSplitOperator.IsString(data4)) aryData.push(data4);
|
|
118422
|
+
if (Array.isArray(data5) || IFrameSplitOperator.IsString(data5)) aryData.push(data5);
|
|
118423
|
+
|
|
118424
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(aryData)) return [];
|
|
118425
|
+
if (aryData.length==1) return data;
|
|
118426
|
+
|
|
118427
|
+
var tempData=this.VARCAT(aryData[0], aryData[1]);
|
|
118428
|
+
var result=tempData;
|
|
118429
|
+
for(var i=2;i<aryData.length;++i)
|
|
118430
|
+
{
|
|
118431
|
+
result=this.VARCAT(tempData,aryData[i]);
|
|
118432
|
+
tempData=result;
|
|
118433
|
+
}
|
|
118434
|
+
|
|
118435
|
+
return result;
|
|
118436
|
+
}
|
|
118437
|
+
|
|
118396
118438
|
//FINDSTR(A,B):在字符串A中查找字符串B,如果找到返回1,否则返回0.
|
|
118397
118439
|
//用法: FINDSTR('多头开仓','开仓')在字符串'多头开仓'中查找字符串'开仓',返回1
|
|
118398
118440
|
this.FINDSTR=function(data, data2)
|
|
@@ -118519,6 +118561,8 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
118519
118561
|
this.VAR2STR=function(data,n)
|
|
118520
118562
|
{
|
|
118521
118563
|
var result=[];
|
|
118564
|
+
var dec=0;
|
|
118565
|
+
if (IFrameSplitOperator.IsNumber(n)) dec=n;
|
|
118522
118566
|
if (Array.isArray(data))
|
|
118523
118567
|
{
|
|
118524
118568
|
for(var i=0;i<data.length;++i)
|
|
@@ -118526,13 +118570,13 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
118526
118570
|
result[i]=null;
|
|
118527
118571
|
var item=data[i];
|
|
118528
118572
|
if (this.IsNumber(item))
|
|
118529
|
-
result[i]=item.toFixed(
|
|
118573
|
+
result[i]=item.toFixed(dec);
|
|
118530
118574
|
}
|
|
118531
118575
|
}
|
|
118532
118576
|
else
|
|
118533
118577
|
{
|
|
118534
118578
|
if (this.IsNumber(data))
|
|
118535
|
-
result=data.toFixed(
|
|
118579
|
+
result=data.toFixed(dec);
|
|
118536
118580
|
}
|
|
118537
118581
|
|
|
118538
118582
|
return result;
|
|
@@ -120244,6 +120288,8 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
120244
120288
|
return this.VAR2STR(args[0], args[1]);
|
|
120245
120289
|
case "VARCAT":
|
|
120246
120290
|
return this.VARCAT(args[0], args[1]);
|
|
120291
|
+
case "VARCAT6":
|
|
120292
|
+
return this.VARCAT6(args[0], args[1],args[2], args[3],args[4], args[5]);
|
|
120247
120293
|
case "STRSPACE":
|
|
120248
120294
|
return this.STRSPACE(args[0]);
|
|
120249
120295
|
case "FINDSTR":
|
|
@@ -120456,7 +120502,8 @@ function JSDraw(errorHandler,symbolData)
|
|
|
120456
120502
|
var drawData=[];
|
|
120457
120503
|
var result={ DrawData:drawData, DrawType:'DRAWFLAGTEXT' };
|
|
120458
120504
|
if (!text) return result;
|
|
120459
|
-
|
|
120505
|
+
var bArrayText=Array.isArray(text); //是否是数组字符串
|
|
120506
|
+
|
|
120460
120507
|
if (Array.isArray(condition))
|
|
120461
120508
|
{
|
|
120462
120509
|
if (condition.length<=0) return result;
|
|
@@ -120467,14 +120514,18 @@ function JSDraw(errorHandler,symbolData)
|
|
|
120467
120514
|
drawData[i]=null;
|
|
120468
120515
|
|
|
120469
120516
|
if (isNaN(condition[i]) || !condition[i]) continue;
|
|
120517
|
+
|
|
120518
|
+
var outText=null;
|
|
120519
|
+
if (!bArrayText) outText=text;
|
|
120520
|
+
else if (bArrayText && text[i]) outText=text[i];
|
|
120470
120521
|
|
|
120471
120522
|
if (bSinglePrice)
|
|
120472
120523
|
{
|
|
120473
|
-
drawData[i]={ YValue:price, Text:
|
|
120524
|
+
drawData[i]={ YValue:price, Text:outText };
|
|
120474
120525
|
}
|
|
120475
120526
|
else
|
|
120476
120527
|
{
|
|
120477
|
-
if (IFrameSplitOperator.IsNumber(price[i])) drawData[i]={ YValue:price[i], Text:
|
|
120528
|
+
if (IFrameSplitOperator.IsNumber(price[i])) drawData[i]={ YValue:price[i], Text:outText };
|
|
120478
120529
|
}
|
|
120479
120530
|
}
|
|
120480
120531
|
}
|
|
@@ -120483,13 +120534,17 @@ function JSDraw(errorHandler,symbolData)
|
|
|
120483
120534
|
var bSinglePrice=IFrameSplitOperator.IsNumber(price);
|
|
120484
120535
|
for(var i=0;i<this.SymbolData.Data.Data.length;++i)
|
|
120485
120536
|
{
|
|
120537
|
+
var outText=null;
|
|
120538
|
+
if (!bArrayText) outText=text;
|
|
120539
|
+
else if (bArrayText && text[i]) outText=text[i];
|
|
120540
|
+
|
|
120486
120541
|
if (bSinglePrice)
|
|
120487
120542
|
{
|
|
120488
|
-
drawData[i]={ YValue:price, Text:
|
|
120543
|
+
drawData[i]={ YValue:price, Text:outText };
|
|
120489
120544
|
}
|
|
120490
120545
|
else
|
|
120491
120546
|
{
|
|
120492
|
-
if (IFrameSplitOperator.IsNumber(price[i])) drawData[i]={ YValue:price[i], Text:
|
|
120547
|
+
if (IFrameSplitOperator.IsNumber(price[i])) drawData[i]={ YValue:price[i], Text:outText };
|
|
120493
120548
|
}
|
|
120494
120549
|
}
|
|
120495
120550
|
}
|
|
@@ -130687,6 +130742,7 @@ function JSExplainer(ast,option)
|
|
|
130687
130742
|
["STRCAT", { Name:"STRCAT", Param:{ Count:2 }, ToString:function(args) { return `字符串相加`; } } ],
|
|
130688
130743
|
["STRCAT6",{ Name:"STRCAT6", Param:{ Dynamic:true }, ToString:function(args) { return `字符串相加`; } } ],
|
|
130689
130744
|
["VARCAT", { Name:"VARCAT", Param:{ Count:2 }, ToString:function(args) { return `字符串相加`; } } ],
|
|
130745
|
+
["VARCAT6", { Name:"VARCAT", Param:{ Dynamic:true }, ToString:function(args) { return `字符串相加`; } } ],
|
|
130690
130746
|
["STRSPACE", { Name:"STRSPACE", Param:{ Count:1 }, ToString:function(args) { return `字符串${args[0]}加一空格`; } } ],
|
|
130691
130747
|
["SUBSTR", { Name:"SUBSTR", Param:{ Count:3 }, ToString:function(args) { return `字符串${args[0]}中取一部分`; } } ],
|
|
130692
130748
|
["STRCMP", { Name:"STRCMP", Param:{ Count:2 }, ToString:function(args) { return `字符串${args[0]}和字符串${args[1]}比较`; } } ],
|
|
@@ -149627,7 +149683,7 @@ function ChartReport()
|
|
|
149627
149683
|
|
|
149628
149684
|
this.FormaTimeDrawInfo=function(column, stock, drawInfo, data)
|
|
149629
149685
|
{
|
|
149630
|
-
if (!IFrameSplitOperator.IsNumber(stock.Time)) return;
|
|
149686
|
+
if (!stock || !IFrameSplitOperator.IsNumber(stock.Time)) return;
|
|
149631
149687
|
|
|
149632
149688
|
if (column.ValueType==0) //0=hhmm 1=hhmmss 2=hhmmss.fff
|
|
149633
149689
|
{
|
|
@@ -149645,7 +149701,7 @@ function ChartReport()
|
|
|
149645
149701
|
|
|
149646
149702
|
this.FormaDateDrawInfo=function(column, stock, drawInfo, data)
|
|
149647
149703
|
{
|
|
149648
|
-
if (!IFrameSplitOperator.IsNumber(stock.Date)) return;
|
|
149704
|
+
if (!stock || !IFrameSplitOperator.IsNumber(stock.Date)) return;
|
|
149649
149705
|
|
|
149650
149706
|
if (column.FormatType==0)
|
|
149651
149707
|
drawInfo.Text=IFrameSplitOperator.FormatDateString(stock.Date,"YYYY-MM-DD");
|
|
@@ -155459,7 +155515,7 @@ function ScrollBarBGChart()
|
|
|
155459
155515
|
|
|
155460
155516
|
|
|
155461
155517
|
|
|
155462
|
-
var HQCHART_VERSION="1.1.
|
|
155518
|
+
var HQCHART_VERSION="1.1.15374";
|
|
155463
155519
|
|
|
155464
155520
|
function PrintHQChartVersion()
|
|
155465
155521
|
{
|
|
@@ -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:
|
|
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
|
|