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
|
@@ -7544,6 +7544,32 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
7544
7544
|
return result;
|
|
7545
7545
|
}
|
|
7546
7546
|
|
|
7547
|
+
//VARCAT6(A,B,C,D,E,F):将六个字符串A,B,C,D,E,F相加成一个字符串.
|
|
7548
|
+
//每个数据都进行序列运算,若用于多股选股,建议换用STRCAT6
|
|
7549
|
+
//用法: VARCAT6('多头',VAR2STR(C,2),' ',VAR2STR(O,2),' ',VAR2STR(MA(C,5),2))将六个字符串相加成一个字符串
|
|
7550
|
+
this.VARCAT6=function(data,data2,data3,data4,data5)
|
|
7551
|
+
{
|
|
7552
|
+
var aryData=[];
|
|
7553
|
+
if (Array.isArray(data) || IFrameSplitOperator.IsString(data)) aryData.push(data);
|
|
7554
|
+
if (Array.isArray(data2) || IFrameSplitOperator.IsString(data2)) aryData.push(data2);
|
|
7555
|
+
if (Array.isArray(data3) || IFrameSplitOperator.IsString(data3)) aryData.push(data3);
|
|
7556
|
+
if (Array.isArray(data4) || IFrameSplitOperator.IsString(data4)) aryData.push(data4);
|
|
7557
|
+
if (Array.isArray(data5) || IFrameSplitOperator.IsString(data5)) aryData.push(data5);
|
|
7558
|
+
|
|
7559
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(aryData)) return [];
|
|
7560
|
+
if (aryData.length==1) return data;
|
|
7561
|
+
|
|
7562
|
+
var tempData=this.VARCAT(aryData[0], aryData[1]);
|
|
7563
|
+
var result=tempData;
|
|
7564
|
+
for(var i=2;i<aryData.length;++i)
|
|
7565
|
+
{
|
|
7566
|
+
result=this.VARCAT(tempData,aryData[i]);
|
|
7567
|
+
tempData=result;
|
|
7568
|
+
}
|
|
7569
|
+
|
|
7570
|
+
return result;
|
|
7571
|
+
}
|
|
7572
|
+
|
|
7547
7573
|
//FINDSTR(A,B):在字符串A中查找字符串B,如果找到返回1,否则返回0.
|
|
7548
7574
|
//用法: FINDSTR('多头开仓','开仓')在字符串'多头开仓'中查找字符串'开仓',返回1
|
|
7549
7575
|
this.FINDSTR=function(data, data2)
|
|
@@ -7670,6 +7696,8 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
7670
7696
|
this.VAR2STR=function(data,n)
|
|
7671
7697
|
{
|
|
7672
7698
|
var result=[];
|
|
7699
|
+
var dec=0;
|
|
7700
|
+
if (IFrameSplitOperator.IsNumber(n)) dec=n;
|
|
7673
7701
|
if (Array.isArray(data))
|
|
7674
7702
|
{
|
|
7675
7703
|
for(var i=0;i<data.length;++i)
|
|
@@ -7677,13 +7705,13 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
7677
7705
|
result[i]=null;
|
|
7678
7706
|
var item=data[i];
|
|
7679
7707
|
if (this.IsNumber(item))
|
|
7680
|
-
result[i]=item.toFixed(
|
|
7708
|
+
result[i]=item.toFixed(dec);
|
|
7681
7709
|
}
|
|
7682
7710
|
}
|
|
7683
7711
|
else
|
|
7684
7712
|
{
|
|
7685
7713
|
if (this.IsNumber(data))
|
|
7686
|
-
result=data.toFixed(
|
|
7714
|
+
result=data.toFixed(dec);
|
|
7687
7715
|
}
|
|
7688
7716
|
|
|
7689
7717
|
return result;
|
|
@@ -9395,6 +9423,8 @@ function JSAlgorithm(errorHandler,symbolData)
|
|
|
9395
9423
|
return this.VAR2STR(args[0], args[1]);
|
|
9396
9424
|
case "VARCAT":
|
|
9397
9425
|
return this.VARCAT(args[0], args[1]);
|
|
9426
|
+
case "VARCAT6":
|
|
9427
|
+
return this.VARCAT6(args[0], args[1],args[2], args[3],args[4], args[5]);
|
|
9398
9428
|
case "STRSPACE":
|
|
9399
9429
|
return this.STRSPACE(args[0]);
|
|
9400
9430
|
case "FINDSTR":
|
|
@@ -9607,7 +9637,8 @@ function JSDraw(errorHandler,symbolData)
|
|
|
9607
9637
|
var drawData=[];
|
|
9608
9638
|
var result={ DrawData:drawData, DrawType:'DRAWFLAGTEXT' };
|
|
9609
9639
|
if (!text) return result;
|
|
9610
|
-
|
|
9640
|
+
var bArrayText=Array.isArray(text); //是否是数组字符串
|
|
9641
|
+
|
|
9611
9642
|
if (Array.isArray(condition))
|
|
9612
9643
|
{
|
|
9613
9644
|
if (condition.length<=0) return result;
|
|
@@ -9618,14 +9649,18 @@ function JSDraw(errorHandler,symbolData)
|
|
|
9618
9649
|
drawData[i]=null;
|
|
9619
9650
|
|
|
9620
9651
|
if (isNaN(condition[i]) || !condition[i]) continue;
|
|
9652
|
+
|
|
9653
|
+
var outText=null;
|
|
9654
|
+
if (!bArrayText) outText=text;
|
|
9655
|
+
else if (bArrayText && text[i]) outText=text[i];
|
|
9621
9656
|
|
|
9622
9657
|
if (bSinglePrice)
|
|
9623
9658
|
{
|
|
9624
|
-
drawData[i]={ YValue:price, Text:
|
|
9659
|
+
drawData[i]={ YValue:price, Text:outText };
|
|
9625
9660
|
}
|
|
9626
9661
|
else
|
|
9627
9662
|
{
|
|
9628
|
-
if (IFrameSplitOperator.IsNumber(price[i])) drawData[i]={ YValue:price[i], Text:
|
|
9663
|
+
if (IFrameSplitOperator.IsNumber(price[i])) drawData[i]={ YValue:price[i], Text:outText };
|
|
9629
9664
|
}
|
|
9630
9665
|
}
|
|
9631
9666
|
}
|
|
@@ -9634,13 +9669,17 @@ function JSDraw(errorHandler,symbolData)
|
|
|
9634
9669
|
var bSinglePrice=IFrameSplitOperator.IsNumber(price);
|
|
9635
9670
|
for(var i=0;i<this.SymbolData.Data.Data.length;++i)
|
|
9636
9671
|
{
|
|
9672
|
+
var outText=null;
|
|
9673
|
+
if (!bArrayText) outText=text;
|
|
9674
|
+
else if (bArrayText && text[i]) outText=text[i];
|
|
9675
|
+
|
|
9637
9676
|
if (bSinglePrice)
|
|
9638
9677
|
{
|
|
9639
|
-
drawData[i]={ YValue:price, Text:
|
|
9678
|
+
drawData[i]={ YValue:price, Text:outText };
|
|
9640
9679
|
}
|
|
9641
9680
|
else
|
|
9642
9681
|
{
|
|
9643
|
-
if (IFrameSplitOperator.IsNumber(price[i])) drawData[i]={ YValue:price[i], Text:
|
|
9682
|
+
if (IFrameSplitOperator.IsNumber(price[i])) drawData[i]={ YValue:price[i], Text:outText };
|
|
9644
9683
|
}
|
|
9645
9684
|
}
|
|
9646
9685
|
}
|
|
@@ -19838,6 +19877,7 @@ function JSExplainer(ast,option)
|
|
|
19838
19877
|
["STRCAT", { Name:"STRCAT", Param:{ Count:2 }, ToString:function(args) { return `字符串相加`; } } ],
|
|
19839
19878
|
["STRCAT6",{ Name:"STRCAT6", Param:{ Dynamic:true }, ToString:function(args) { return `字符串相加`; } } ],
|
|
19840
19879
|
["VARCAT", { Name:"VARCAT", Param:{ Count:2 }, ToString:function(args) { return `字符串相加`; } } ],
|
|
19880
|
+
["VARCAT6", { Name:"VARCAT", Param:{ Dynamic:true }, ToString:function(args) { return `字符串相加`; } } ],
|
|
19841
19881
|
["STRSPACE", { Name:"STRSPACE", Param:{ Count:1 }, ToString:function(args) { return `字符串${args[0]}加一空格`; } } ],
|
|
19842
19882
|
["SUBSTR", { Name:"SUBSTR", Param:{ Count:3 }, ToString:function(args) { return `字符串${args[0]}中取一部分`; } } ],
|
|
19843
19883
|
["STRCMP", { Name:"STRCMP", Param:{ Count:2 }, ToString:function(args) { return `字符串${args[0]}和字符串${args[1]}比较`; } } ],
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -283,6 +283,49 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
283
283
|
if (IFrameSplitOperator.IsNumber(item.Count)) klineChart.PriceGap.Count=item.Count;
|
|
284
284
|
}
|
|
285
285
|
|
|
286
|
+
//设置十字光标
|
|
287
|
+
this.SetCorssCursorConfig=function(chart, option)
|
|
288
|
+
{
|
|
289
|
+
if (!option || !option.CorssCursorInfo) return;
|
|
290
|
+
|
|
291
|
+
var item=option.CorssCursorInfo;
|
|
292
|
+
if (IFrameSplitOperator.IsNumber(item.Left)) chart.ChartCorssCursor.ShowTextMode.Left=item.Left;
|
|
293
|
+
if (IFrameSplitOperator.IsNumber(item.Right)) chart.ChartCorssCursor.ShowTextMode.Right=item.Right;
|
|
294
|
+
if (IFrameSplitOperator.IsNumber(item.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=item.Bottom;
|
|
295
|
+
|
|
296
|
+
if (IFrameSplitOperator.IsBool(item.IsShowCorss)) chart.ChartCorssCursor.IsShowCorss=item.IsShowCorss;
|
|
297
|
+
|
|
298
|
+
if (IFrameSplitOperator.IsNumber(item.HPenType)) chart.ChartCorssCursor.HPenType=item.HPenType;
|
|
299
|
+
if (IFrameSplitOperator.IsNumber(item.VPenType)) chart.ChartCorssCursor.VPenType=item.VPenType;
|
|
300
|
+
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
301
|
+
|
|
302
|
+
if (item.RightButton)
|
|
303
|
+
{
|
|
304
|
+
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
if (item.BottomButton)
|
|
308
|
+
{
|
|
309
|
+
var subItem=item.BottomButton;
|
|
310
|
+
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
314
|
+
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
315
|
+
|
|
316
|
+
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
317
|
+
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
318
|
+
|
|
319
|
+
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
320
|
+
|
|
321
|
+
if (item.YDecimals) //Y轴文字小数位数
|
|
322
|
+
{
|
|
323
|
+
var subItem=item.YDecimals;
|
|
324
|
+
if (IFrameSplitOperator.IsNumber(subItem.Value)) chart.ChartCorssCursor.StringFormatY.DecimalsConfig.Value=subItem.Value;
|
|
325
|
+
if (IFrameSplitOperator.IsNumber(subItem.Type)) chart.ChartCorssCursor.StringFormatY.DecimalsConfig.Type=subItem.Type;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
286
329
|
//历史K线图
|
|
287
330
|
this.CreateKLineChartContainer=function(option)
|
|
288
331
|
{
|
|
@@ -536,48 +579,23 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
536
579
|
if (option.IsCorssOnlyDrawKLine===true) chart.ChartCorssCursor.IsOnlyDrawKLine=option.IsCorssOnlyDrawKLine;
|
|
537
580
|
if (option.CorssCursorTouchEnd===true) chart.CorssCursorTouchEnd = option.CorssCursorTouchEnd;
|
|
538
581
|
if (option.IsClickShowCorssCursor==true) chart.IsClickShowCorssCursor=option.IsClickShowCorssCursor;
|
|
539
|
-
|
|
582
|
+
this.SetCorssCursorConfig(chart, option);
|
|
583
|
+
if (option.CorssCursorInfo) //十字光标K线上的属性设置
|
|
540
584
|
{
|
|
541
585
|
var item=option.CorssCursorInfo;
|
|
542
|
-
if (!isNaN(option.CorssCursorInfo.Left)) chart.ChartCorssCursor.ShowTextMode.Left=option.CorssCursorInfo.Left;
|
|
543
|
-
if (!isNaN(option.CorssCursorInfo.Right)) chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;
|
|
544
|
-
if (!isNaN(option.CorssCursorInfo.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;
|
|
545
|
-
if (option.CorssCursorInfo.IsShowCorss===false) chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;
|
|
546
586
|
if (IFrameSplitOperator.IsBool(item.IsShowClose)) chart.ChartCorssCursor.IsShowClose = item.IsShowClose; //Y轴显示收盘价
|
|
547
587
|
if (IFrameSplitOperator.IsBool(item.IsOnlyDrawKLine)) chart.ChartCorssCursor.IsOnlyDrawKLine = item.IsOnlyDrawKLine; //Y轴显示收盘价
|
|
548
588
|
if (option.CorssCursorInfo.PressTime) chart.PressTime=option.CorssCursorInfo.PressTime; //长按显示十字光标的时间
|
|
549
|
-
if (IFrameSplitOperator.IsNumber(option.CorssCursorInfo.HPenType)) chart.ChartCorssCursor.HPenType=option.CorssCursorInfo.HPenType;
|
|
550
|
-
if (option.CorssCursorInfo.VPenType>0) chart.ChartCorssCursor.VPenType=option.CorssCursorInfo.VPenType;
|
|
551
|
-
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
552
589
|
if (option.CorssCursorInfo.DateFormatType>0) chart.ChartCorssCursor.StringFormatX.DateFormatType=option.CorssCursorInfo.DateFormatType;
|
|
553
590
|
if (IFrameSplitOperator.IsBool(item.IsDrawXRangeBG)) chart.ChartCorssCursor.IsDrawXRangeBG=item.IsDrawXRangeBG;
|
|
554
591
|
if (IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime)) chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;
|
|
555
592
|
if (IFrameSplitOperator.IsNumber(item.TextHeight)) chart.ChartCorssCursor.TextHeight=item.TextHeight;
|
|
556
|
-
|
|
557
|
-
if (item.RightButton)
|
|
558
|
-
{
|
|
559
|
-
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
560
|
-
}
|
|
561
|
-
|
|
562
|
-
if (item.BottomButton)
|
|
563
|
-
{
|
|
564
|
-
var subItem=item.BottomButton;
|
|
565
|
-
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
569
|
-
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
570
|
-
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
571
|
-
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
572
|
-
|
|
573
|
-
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
574
593
|
|
|
575
594
|
if (item.RangeIncrease)
|
|
576
595
|
{
|
|
577
596
|
var subItem=item.RangeIncrease;
|
|
578
597
|
if (IFrameSplitOperator.IsBool(subItem.IsShow)) chart.ChartCorssCursor.StringFormatX.RangeIncrease.IsShow=subItem.IsShow;
|
|
579
598
|
if (IFrameSplitOperator.IsNumber(subItem.Formula)) chart.ChartCorssCursor.StringFormatX.RangeIncrease.Formula=subItem.Formula;
|
|
580
|
-
|
|
581
599
|
}
|
|
582
600
|
}
|
|
583
601
|
|
|
@@ -1105,39 +1123,15 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
1105
1123
|
if (option.PageInfo) chart.SetPageInfo(option.PageInfo);
|
|
1106
1124
|
|
|
1107
1125
|
chart.Create(windowsCount,option); //创建子窗口
|
|
1108
|
-
|
|
1109
|
-
if (option.CorssCursorInfo)
|
|
1126
|
+
this.SetCorssCursorConfig(chart, option);
|
|
1127
|
+
if (option.CorssCursorInfo) //分时图十字光标属性设置
|
|
1110
1128
|
{
|
|
1111
1129
|
var item=option.CorssCursorInfo;
|
|
1112
|
-
|
|
1113
|
-
if (!isNaN(option.CorssCursorInfo.Right)) chart.ChartCorssCursor.ShowTextMode.Right=option.CorssCursorInfo.Right;
|
|
1114
|
-
if (!isNaN(option.CorssCursorInfo.Bottom)) chart.ChartCorssCursor.ShowTextMode.Bottom=option.CorssCursorInfo.Bottom;
|
|
1115
|
-
if (option.CorssCursorInfo.IsShowCorss===false) chart.ChartCorssCursor.IsShowCorss=option.CorssCursorInfo.IsShowCorss;
|
|
1130
|
+
|
|
1116
1131
|
if (option.CorssCursorInfo.RightTextFormat>0) chart.ChartCorssCursor.TextFormat.Right=option.CorssCursorInfo.RightTextFormat;
|
|
1117
1132
|
if (option.CorssCursorInfo.IsOnlyDrawMinute == true) chart.ChartCorssCursor.IsOnlyDrawMinute = option.CorssCursorInfo.IsOnlyDrawMinute; //Y轴显示收盘价
|
|
1118
1133
|
if (IFrameSplitOperator.IsBool(option.CorssCursorInfo.IsFixXLastTime)) chart.ChartCorssCursor.IsFixXLastTime=option.CorssCursorInfo.IsFixXLastTime;
|
|
1119
1134
|
|
|
1120
|
-
if (item.RightButton)
|
|
1121
|
-
{
|
|
1122
|
-
if (IFrameSplitOperator.IsBool(item.RightButton.Enable)) chart.ChartCorssCursor.RightButton.Enable=item.RightButton.Enable;
|
|
1123
|
-
}
|
|
1124
|
-
|
|
1125
|
-
if (item.BottomButton)
|
|
1126
|
-
{
|
|
1127
|
-
var subItem=item.BottomButton;
|
|
1128
|
-
if (IFrameSplitOperator.IsBool(subItem.Enable)) chart.ChartCorssCursor.BottomButton.Enable=subItem.Enable;
|
|
1129
|
-
}
|
|
1130
|
-
|
|
1131
|
-
if (IFrameSplitOperator.IsNumber(item.PriceFormatType)) chart.ChartCorssCursor.StringFormatY.PriceFormatType=item.PriceFormatType;
|
|
1132
|
-
if (IFrameSplitOperator.IsNumber(item.DataFormatType)) chart.ChartCorssCursor.StringFormatY.DataFormatType=item.DataFormatType;
|
|
1133
|
-
|
|
1134
|
-
if (IFrameSplitOperator.IsNumber(item.HPenType)) chart.ChartCorssCursor.HPenType=item.HPenType;
|
|
1135
|
-
if (IFrameSplitOperator.IsNumber(item.VPenType)) chart.ChartCorssCursor.VPenType=item.VPenType;
|
|
1136
|
-
if (IFrameSplitOperator.IsBool(item.EnableKeyboard)) chart.ChartCorssCursor.EnableKeyboard=item.EnableKeyboard;
|
|
1137
|
-
if (IFrameSplitOperator.IsBool(item.EnableDBClick)) chart.ChartCorssCursor.EnableDBClick=item.EnableDBClick;
|
|
1138
|
-
if (IFrameSplitOperator.IsBool(item.IsShowCorssPoint)) chart.ChartCorssCursor.CorssPointConfig.Enable=item.IsShowCorssPoint;
|
|
1139
|
-
if (IFrameSplitOperator.IsNumber(item.VLineType)) chart.ChartCorssCursor.VLineType=item.VLineType;
|
|
1140
|
-
|
|
1141
1135
|
if (item.TextStyle)
|
|
1142
1136
|
{
|
|
1143
1137
|
if (item.TextStyle.Right) //右侧输出样式
|
|
@@ -3053,6 +3047,7 @@ var JSCHART_DATA_FIELD_ID=
|
|
|
3053
3047
|
KLINE_COLOR_DATA:66, //K线自定义颜色数据
|
|
3054
3048
|
KLINE_DAY_EXTENDDATA:25,
|
|
3055
3049
|
KLINE_MINUTE_EXTENDDATA:25,
|
|
3050
|
+
KLINE_TICK_EXTENDDATA:25,
|
|
3056
3051
|
|
|
3057
3052
|
//OrderBook Heatmap
|
|
3058
3053
|
KLINE_HEATMAP:67,
|
|
@@ -60796,6 +60791,7 @@ function HQPriceStringFormat()
|
|
|
60796
60791
|
|
|
60797
60792
|
this.PriceFormatType=0; //主窗口格式 0=默认 1=科学计数
|
|
60798
60793
|
this.DataFormatType=0; //副图指标格式 0=默认 1=科学计数
|
|
60794
|
+
this.DecimalsConfig={ Value:2, Type:0 }; //小数设置, Value:小数位数 , Type: 0=默认 1=跟指标标题一致
|
|
60799
60795
|
|
|
60800
60796
|
this.GetEventCallback
|
|
60801
60797
|
|
|
@@ -60894,7 +60890,7 @@ function HQPriceStringFormat()
|
|
|
60894
60890
|
if (!this.Value) return false;
|
|
60895
60891
|
|
|
60896
60892
|
this.PercentageText=null;
|
|
60897
|
-
var defaultfloatPrecision=
|
|
60893
|
+
var defaultfloatPrecision=this.DecimalsConfig.Value; //价格小数位数
|
|
60898
60894
|
if (this.FrameID==0) //第1个窗口显示原始价格
|
|
60899
60895
|
{
|
|
60900
60896
|
var defaultfloatPrecision=GetfloatPrecision(this.Symbol);
|
|
@@ -60943,6 +60939,7 @@ function HQPriceStringFormat()
|
|
|
60943
60939
|
}
|
|
60944
60940
|
else if (this.FrameID==1)
|
|
60945
60941
|
{
|
|
60942
|
+
defaultfloatPrecision=this.GetIndexTitleFloatPrecision(this.FrameID);
|
|
60946
60943
|
if (this.DataFormatType==1)
|
|
60947
60944
|
{
|
|
60948
60945
|
this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
@@ -60975,6 +60972,7 @@ function HQPriceStringFormat()
|
|
|
60975
60972
|
}
|
|
60976
60973
|
else
|
|
60977
60974
|
{
|
|
60975
|
+
defaultfloatPrecision=this.GetIndexTitleFloatPrecision(this.FrameID);
|
|
60978
60976
|
if (this.DataFormatType==1) this.Text=IFrameSplitOperator.FormatValueThousandsString(this.Value,defaultfloatPrecision);
|
|
60979
60977
|
else this.Text=IFrameSplitOperator.FormatValueString(this.Value,defaultfloatPrecision,this.LanguageID);
|
|
60980
60978
|
if (IFrameSplitOperator.IsNumber(this.RValue)) this.RText=IFrameSplitOperator.FormatValueString(this.RValue,defaultfloatPrecision,this.LanguageID);
|
|
@@ -61020,6 +61018,23 @@ function HQPriceStringFormat()
|
|
|
61020
61018
|
return true;
|
|
61021
61019
|
}
|
|
61022
61020
|
|
|
61021
|
+
//获取指标标题小数位数
|
|
61022
|
+
this.GetIndexTitleFloatPrecision=function(frameID)
|
|
61023
|
+
{
|
|
61024
|
+
var dec=this.DecimalsConfig.Value;
|
|
61025
|
+
if (this.DecimalsConfig.Type===0) return dec;
|
|
61026
|
+
|
|
61027
|
+
if (frameID<0) return dec;
|
|
61028
|
+
if (!this.HQChart) return dec;
|
|
61029
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.HQChart.WindowIndex)) return dec;
|
|
61030
|
+
var item=this.HQChart.WindowIndex[frameID];
|
|
61031
|
+
if (!item) return dec;
|
|
61032
|
+
|
|
61033
|
+
if (IFrameSplitOperator.IsNumber(item.FloatPrecision)) dec=item.FloatPrecision;
|
|
61034
|
+
|
|
61035
|
+
return dec;
|
|
61036
|
+
}
|
|
61037
|
+
|
|
61023
61038
|
//深度图刻度
|
|
61024
61039
|
this.GetExtendPaintData=function(floatPrecision)
|
|
61025
61040
|
{
|
|
@@ -86176,14 +86191,26 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
86176
86191
|
{
|
|
86177
86192
|
var self=this;
|
|
86178
86193
|
var start=0;
|
|
86179
|
-
|
|
86194
|
+
var hisData=this.GetKData();
|
|
86195
|
+
var dateRange=hisData.GetDateRange();
|
|
86196
|
+
|
|
86180
86197
|
if (this.NetworkFilter)
|
|
86181
86198
|
{
|
|
86199
|
+
var kLineDrawType=this.GetKLineDrawType();
|
|
86182
86200
|
var obj=
|
|
86183
86201
|
{
|
|
86184
86202
|
Name:'KLineChartContainer::RequestTickRealtimeData', //类名::
|
|
86185
86203
|
Explain:'当天最新分笔数据',
|
|
86186
|
-
Request:
|
|
86204
|
+
Request:
|
|
86205
|
+
{
|
|
86206
|
+
Url:self.TickApiUrl,
|
|
86207
|
+
Data:
|
|
86208
|
+
{
|
|
86209
|
+
symbol:self.Symbol, period:this.Period, right:this.Right,
|
|
86210
|
+
dateRange:dateRange, klineDrawType:kLineDrawType
|
|
86211
|
+
},
|
|
86212
|
+
Type:'POST'
|
|
86213
|
+
},
|
|
86187
86214
|
Self:this,
|
|
86188
86215
|
PreventDefault:false
|
|
86189
86216
|
};
|
|
@@ -86196,29 +86223,14 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
86196
86223
|
|
|
86197
86224
|
if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
|
|
86198
86225
|
}
|
|
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
86226
|
}
|
|
86214
86227
|
|
|
86215
86228
|
this.RecvTickRealtimeData=function(data)
|
|
86216
86229
|
{
|
|
86217
|
-
|
|
86218
|
-
|
|
86219
|
-
else
|
|
86220
|
-
|
|
86221
|
-
if (!aryDayData || aryDayData.length<=0) return;
|
|
86230
|
+
var aryDayData=null;
|
|
86231
|
+
if (data.ver==2.0) aryDayData=KLineChartContainer.JsonDataToTickDataV2(data); //增量数据
|
|
86232
|
+
else aryDayData=KLineChartContainer.JsonDataToTickData(data); //增量数据
|
|
86233
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(aryDayData)) return;
|
|
86222
86234
|
|
|
86223
86235
|
var redraw=false; //强制重绘
|
|
86224
86236
|
if (data.redraw==true) redraw=true;
|
|
@@ -86228,7 +86240,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
86228
86240
|
var lastTime=0;
|
|
86229
86241
|
if (source.length>0) lastTime=source[source.length-1].Time;
|
|
86230
86242
|
var newCount=0;
|
|
86231
|
-
for(var i
|
|
86243
|
+
for(var i=0; i<aryDayData.length; ++i)
|
|
86232
86244
|
{
|
|
86233
86245
|
var item=aryDayData[i];
|
|
86234
86246
|
if (item.Time<=lastTime) continue;
|
|
@@ -91213,20 +91225,24 @@ KLineChartContainer.JsonDataToTickDataV2=function(data)
|
|
|
91213
91225
|
{
|
|
91214
91226
|
var aryDayData=[];
|
|
91215
91227
|
if (!IFrameSplitOperator.IsNonEmptyArray(data.data)) return aryDayData;
|
|
91216
|
-
|
|
91228
|
+
var extendDataIndex=JSCHART_DATA_FIELD_ID.KLINE_TICK_EXTENDDATA;
|
|
91217
91229
|
for(var i=0;i<data.data.length;++i)
|
|
91218
91230
|
{
|
|
91219
91231
|
var item = new HistoryData();
|
|
91220
|
-
var tick=data.data[i]; //[ date, time, yClose, price,
|
|
91232
|
+
var tick=data.data[i]; //[ date, time, yClose, price, vol, amount, flag,]
|
|
91221
91233
|
if (!tick) continue;
|
|
91222
91234
|
|
|
91223
91235
|
item.Date = tick[0];
|
|
91224
91236
|
item.Time=tick[1];
|
|
91225
91237
|
item.YClose = tick[2];
|
|
91226
91238
|
item.Low=item.High=item.Close=item.Open = tick[3];
|
|
91239
|
+
item.Vol = tick[4]; //原始单位股
|
|
91240
|
+
item.Amount = tick[5];
|
|
91241
|
+
item.Flag=tick[6];
|
|
91242
|
+
|
|
91227
91243
|
aryDayData.push(item);
|
|
91228
91244
|
|
|
91229
|
-
if (tick[
|
|
91245
|
+
if (tick[extendDataIndex]) item.ExtendData=tick[extendDataIndex];
|
|
91230
91246
|
}
|
|
91231
91247
|
|
|
91232
91248
|
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:
|
|
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
|
|