hqchart 1.1.15375 → 1.1.15390
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 +44 -25
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +97 -13
- package/src/jscommon/umychart.js +109 -23
- package/src/jscommon/umychart.report.js +84 -7
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +291 -44
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +291 -44
package/package.json
CHANGED
|
@@ -441,6 +441,24 @@ JSComplierHelper.GetConvertValueName=function(funcName)
|
|
|
441
441
|
|
|
442
442
|
return valueName;
|
|
443
443
|
}
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
//DYNAINFO() 转换
|
|
447
|
+
//["DYNA_NOW",null], //DYNA_NOW 现价 DYNAINFO(7) 即时行情数据 没有现价时(比如在开盘前),返回昨收盘价
|
|
448
|
+
//["DYNA_ZAF",null], //DYNA_ZAF 涨幅 DYNAINFO(14) 即时行情数据(沪深京早盘竞价期间使用匹配价的涨幅) 转换成幅度需要乘100
|
|
449
|
+
//["DYNA_LB", null], //DYNA_LB DYNAINFO(17) 量比 即时行情数据
|
|
450
|
+
//["DYNA_ZAS",null], //DYNA_ZAS DYNAINFO(24) 返回涨速 报价界面行情数据 转换成幅度需要乘100
|
|
451
|
+
//["SELLVOL", null], //返回内盘,即DYNAINFO(22) 即时行情数据
|
|
452
|
+
//["BUYVOL", null], //返回外盘,即DYNAINFO(21) 即时行情数据
|
|
453
|
+
const MAP_DYNAINFO_SHORTCUT=new Map(
|
|
454
|
+
[
|
|
455
|
+
['DYNA_NOW', { Name:"DYNA_NOW", ID:7 } ],
|
|
456
|
+
['DYNA_LB', { Name:"DYNA_LB", ID:17 } ],
|
|
457
|
+
['DYNA_ZAS', { Name:"DYNA_ZAS", ID:24 } ],
|
|
458
|
+
['SELLVOL', { Name:"SELLVOL", ID:22 }],
|
|
459
|
+
['BUYVOL', { Name:"BUYVOL", ID:21 } ],
|
|
460
|
+
]
|
|
461
|
+
);
|
|
444
462
|
|
|
445
463
|
|
|
446
464
|
|
|
@@ -1380,6 +1398,14 @@ function Node(ErrorHandler)
|
|
|
1380
1398
|
return;
|
|
1381
1399
|
}
|
|
1382
1400
|
|
|
1401
|
+
if (MAP_DYNAINFO_SHORTCUT.has(varName))
|
|
1402
|
+
{
|
|
1403
|
+
var item=MAP_DYNAINFO_SHORTCUT.get(varName);
|
|
1404
|
+
var item={ ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_LATEST_DATA, Args:[item.ID], FunctionName:varName };
|
|
1405
|
+
this.Dynainfo.push(item);
|
|
1406
|
+
return;
|
|
1407
|
+
}
|
|
1408
|
+
|
|
1383
1409
|
if (varName.indexOf('#')>0)
|
|
1384
1410
|
{
|
|
1385
1411
|
var aryWrods = varName.split('#');
|
|
@@ -12135,8 +12161,10 @@ var DYNAINFO_ARGUMENT_ID=
|
|
|
12135
12161
|
CLOSE:7,
|
|
12136
12162
|
VOL:8,
|
|
12137
12163
|
AMOUNT:10,
|
|
12164
|
+
UPDOWN:12, //DYNAINFO(12) 日涨跌 即时行情数据
|
|
12138
12165
|
AMPLITUDE:13, //振幅
|
|
12139
12166
|
INCREASE:14, //涨幅
|
|
12167
|
+
|
|
12140
12168
|
EXCHANGERATE:37, //换手率
|
|
12141
12169
|
};
|
|
12142
12170
|
|
|
@@ -12315,16 +12343,18 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
12315
12343
|
let stock=data.stock[0];
|
|
12316
12344
|
if (!stock) return;
|
|
12317
12345
|
|
|
12318
|
-
if (IFrameSplitOperator.IsNumber(stock.yclose)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.YCLOSE,stock.yclose);
|
|
12319
|
-
if (IFrameSplitOperator.IsNumber(stock.open)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.OPEN,stock.open);
|
|
12320
|
-
if (IFrameSplitOperator.IsNumber(stock.high)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.HIGH,stock.high);
|
|
12321
|
-
if (IFrameSplitOperator.IsNumber(stock.low)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.LOW,stock.low);
|
|
12322
|
-
if (IFrameSplitOperator.IsNumber(stock.price)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.CLOSE,stock.price);
|
|
12323
|
-
if (IFrameSplitOperator.IsNumber(stock.vol)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.VOL,stock.vol);
|
|
12324
|
-
if (IFrameSplitOperator.IsNumber(stock.amount)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.AMOUNT,stock.amount);
|
|
12325
|
-
if (IFrameSplitOperator.IsNumber(stock.increase)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.INCREASE,stock.increase);
|
|
12326
|
-
if (IFrameSplitOperator.IsNumber(stock.exchangerate)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.EXCHANGERATE,stock.exchangerate);
|
|
12327
|
-
if (IFrameSplitOperator.IsNumber(stock.amplitude)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.AMPLITUDE,stock.amplitude);
|
|
12346
|
+
if (IFrameSplitOperator.IsNumber(stock.yclose)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.YCLOSE),stock.yclose);
|
|
12347
|
+
if (IFrameSplitOperator.IsNumber(stock.open)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.OPEN),stock.open);
|
|
12348
|
+
if (IFrameSplitOperator.IsNumber(stock.high)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.HIGH),stock.high);
|
|
12349
|
+
if (IFrameSplitOperator.IsNumber(stock.low)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.LOW),stock.low);
|
|
12350
|
+
if (IFrameSplitOperator.IsNumber(stock.price)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.CLOSE),stock.price);
|
|
12351
|
+
if (IFrameSplitOperator.IsNumber(stock.vol)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.VOL),stock.vol);
|
|
12352
|
+
if (IFrameSplitOperator.IsNumber(stock.amount)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.AMOUNT),stock.amount);
|
|
12353
|
+
if (IFrameSplitOperator.IsNumber(stock.increase)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.INCREASE),stock.increase);
|
|
12354
|
+
if (IFrameSplitOperator.IsNumber(stock.exchangerate)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.EXCHANGERATE),stock.exchangerate);
|
|
12355
|
+
if (IFrameSplitOperator.IsNumber(stock.amplitude)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.AMPLITUDE),stock.amplitude);
|
|
12356
|
+
if (IFrameSplitOperator.IsNumber(stock.updown)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.UPDOWN),stock.updown);
|
|
12357
|
+
|
|
12328
12358
|
|
|
12329
12359
|
/*
|
|
12330
12360
|
this.LatestData={ Symbol:stock.symbol, Name:stock.name, Date:stock.date, Time:stock.time,
|
|
@@ -12349,7 +12379,7 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
12349
12379
|
if (IFrameSplitOperator.IsNumber(item.value) || IFrameSplitOperator.IsString(item.value))
|
|
12350
12380
|
{
|
|
12351
12381
|
JSConsole.Complier.Log(`[JSSymbolData::RecvLatestDataVer2] symbol=${symbol} DYNAINFO(${item.id})=${item.value}.`);
|
|
12352
|
-
this.LatestData.set(item.id, item.value);
|
|
12382
|
+
this.LatestData.set(this.GetLatestDataKey(item.id), item.value);
|
|
12353
12383
|
}
|
|
12354
12384
|
|
|
12355
12385
|
}
|
|
@@ -12357,9 +12387,48 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
12357
12387
|
JSConsole.Complier.Log('[JSSymbolData::RecvLatestDataVer2]', this.LatestData);
|
|
12358
12388
|
}
|
|
12359
12389
|
|
|
12360
|
-
this.GetLatestCacheData=function(
|
|
12390
|
+
this.GetLatestCacheData=function(dataID)
|
|
12391
|
+
{
|
|
12392
|
+
var key=this.GetLatestDataKey(dataID);
|
|
12393
|
+
if (!this.LatestData.has(key)) return null;
|
|
12394
|
+
|
|
12395
|
+
var data=this.LatestData.get(key);
|
|
12396
|
+
|
|
12397
|
+
//DYNAINFO(36) 自由流通换手率(序列数据,每个周期的数据不同,使用最新的自由流通股本) 转换成幅度需要乘100 比如DYNAINFO(36)>0.25表示换手超过25%
|
|
12398
|
+
//DYNAINFO(37) 换手率(序列数据,每个周期的数据不同,使用的流通股本为最近数据) 转换成幅度需要乘100 比如DYNAINFO(37)>0.1表示换手超过10%
|
|
12399
|
+
if (dataID==37 || dataID==36)
|
|
12400
|
+
{
|
|
12401
|
+
var value=null;
|
|
12402
|
+
if (IFrameSplitOperator.IsNumber(data)) value=data;
|
|
12403
|
+
else if (IFrameSplitOperator.IsNonEmptyArray(data) && IFrameSplitOperator.IsNumber(data[0])) value=data[0];
|
|
12404
|
+
else return null;
|
|
12405
|
+
|
|
12406
|
+
if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return null;
|
|
12407
|
+
|
|
12408
|
+
var aryData=[];
|
|
12409
|
+
for(var i=0;i<this.Data.Data.length;++i)
|
|
12410
|
+
{
|
|
12411
|
+
var kItem=this.Data.Data[i];
|
|
12412
|
+
aryData[i]=null;
|
|
12413
|
+
if (!kItem || !IFrameSplitOperator.IsNumber(kItem.Vol)) continue;
|
|
12414
|
+
|
|
12415
|
+
aryData[i]=kItem.Vol/value*100.0;// 换手率
|
|
12416
|
+
}
|
|
12417
|
+
|
|
12418
|
+
return aryData;
|
|
12419
|
+
}
|
|
12420
|
+
|
|
12421
|
+
|
|
12422
|
+
return data;
|
|
12423
|
+
}
|
|
12424
|
+
|
|
12425
|
+
this.GetDynaCacheData=function(name)
|
|
12361
12426
|
{
|
|
12362
|
-
if (
|
|
12427
|
+
if (MAP_DYNAINFO_SHORTCUT.has(name))
|
|
12428
|
+
{
|
|
12429
|
+
var item=MAP_DYNAINFO_SHORTCUT.get(name);
|
|
12430
|
+
return this.GetLatestCacheData(item.ID);
|
|
12431
|
+
}
|
|
12363
12432
|
|
|
12364
12433
|
return null;
|
|
12365
12434
|
}
|
|
@@ -17346,6 +17415,13 @@ function JSExecute(ast,option)
|
|
|
17346
17415
|
["TR", null], //真实波幅
|
|
17347
17416
|
["AUTOFILTER", null],
|
|
17348
17417
|
|
|
17418
|
+
["DYNA_NOW",null], //DYNA_NOW 现价 DYNAINFO(7) 即时行情数据 没有现价时(比如在开盘前),返回昨收盘价
|
|
17419
|
+
["DYNA_ZAF",null], //DYNA_ZAF 涨幅 DYNAINFO(14) 即时行情数据(沪深京早盘竞价期间使用匹配价的涨幅) 转换成幅度需要乘100
|
|
17420
|
+
["DYNA_LB", null], //DYNA_LB DYNAINFO(17) 量比 即时行情数据
|
|
17421
|
+
["DYNA_ZAS",null], //DYNA_ZAS DYNAINFO(24) 返回涨速 报价界面行情数据 转换成幅度需要乘100
|
|
17422
|
+
["SELLVOL", null], //返回内盘,即DYNAINFO(22) 即时行情数据
|
|
17423
|
+
["BUYVOL", null], //返回外盘,即DYNAINFO(21) 即时行情数据
|
|
17424
|
+
|
|
17349
17425
|
['LARGEINTRDVOL', null], //逐笔买入大单成交量,相当于L2_VOL(0,0)+L2_VOL(1,0),沪深京品种的资金流向,仅日线以上周期,用于特定版本
|
|
17350
17426
|
['LARGEOUTTRDVOL', null], //逐笔卖出大单成交量,相当于L2_VOL(0,1)+L2_VOL(1,1),沪深京品种的资金流向,仅日线以上周期,用于特定版本
|
|
17351
17427
|
["TRADENUM", null], //逐笔成交总单数,沪深京品种的资金流向,仅日线以上周期,用于特定版本
|
|
@@ -17678,6 +17754,14 @@ function JSExecute(ast,option)
|
|
|
17678
17754
|
return this.SymbolData.WEEKOFYEAR();
|
|
17679
17755
|
case "DAYSTOTODAY":
|
|
17680
17756
|
return this.SymbolData.DAYSTOTODAY();
|
|
17757
|
+
|
|
17758
|
+
case "DYNA_NOW":
|
|
17759
|
+
case "DYNA_ZAF":
|
|
17760
|
+
case "DYNA_LB":
|
|
17761
|
+
case "DYNA_ZAS":
|
|
17762
|
+
case "SELLVOL":
|
|
17763
|
+
case "BUYVOL":
|
|
17764
|
+
return this.SymbolData.GetDynaCacheData(name);
|
|
17681
17765
|
}
|
|
17682
17766
|
|
|
17683
17767
|
this.ThrowUnexpectedNode(node, '变量'+name+'不存在', name);
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -7076,7 +7076,7 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7076
7076
|
{
|
|
7077
7077
|
var item=this.OverlayChartPaint[i];
|
|
7078
7078
|
if (!item) continue;
|
|
7079
|
-
if (item.
|
|
7079
|
+
if (item.YInfoConfig.Type===0) continue;
|
|
7080
7080
|
var data=item.Data;
|
|
7081
7081
|
if (!data || !IFrameSplitOperator.IsNonEmptyArray(data.Data)) continue;
|
|
7082
7082
|
if (!IFrameSplitOperator.IsNumber(item.DrawKRange.Start) || !IFrameSplitOperator.IsNumber(item.DrawKRange.End)) continue;
|
|
@@ -7096,15 +7096,29 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
7096
7096
|
|
|
7097
7097
|
var endKLine=data.Data[item.DrawKRange.End];
|
|
7098
7098
|
var value=(endKLine.Close-startKLine.Close)/startKLine.Close*100;
|
|
7099
|
-
|
|
7099
|
+
var text="";
|
|
7100
|
+
if (item.YInfoConfig.Type===3)
|
|
7101
|
+
{
|
|
7102
|
+
var dec=GetfloatPrecision(item.Symbol); //小数位数
|
|
7103
|
+
text=endKLine.Close.toFixed(dec);
|
|
7104
|
+
}
|
|
7105
|
+
else if (item.YInfoConfig.Type===4)
|
|
7106
|
+
{
|
|
7107
|
+
text=value.toFixed(2)+"%";
|
|
7108
|
+
}
|
|
7109
|
+
else
|
|
7110
|
+
{
|
|
7111
|
+
continue;
|
|
7112
|
+
}
|
|
7113
|
+
|
|
7100
7114
|
var info=new CoordinateInfo();
|
|
7101
7115
|
info.Value=endKLine.Close/item.ShowRange.FirstOverlayOpen*item.ShowRange.FirstOpen;
|
|
7102
|
-
info.Message[1]=
|
|
7116
|
+
info.Message[1]=text
|
|
7103
7117
|
info.LineType=-1;
|
|
7104
|
-
info.Type=
|
|
7118
|
+
info.Type=4; //叠加股票
|
|
7105
7119
|
info.LineColor=item.Color;
|
|
7106
7120
|
info.TextColor=g_JSChartResource.FrameLatestPrice.OverlayTextColor;
|
|
7107
|
-
if (item.Title) info.Title=item.Title;
|
|
7121
|
+
if (item.Title && item.YInfoConfig.IsShowName) info.Title=item.Title;
|
|
7108
7122
|
frame.CustomHorizontalInfo.push(info);
|
|
7109
7123
|
}
|
|
7110
7124
|
}
|
|
@@ -8578,6 +8592,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8578
8592
|
return false;
|
|
8579
8593
|
}
|
|
8580
8594
|
|
|
8595
|
+
this.IsHScreenModel=function()
|
|
8596
|
+
{
|
|
8597
|
+
if (this.ClassName=="KLineChartHScreenContainer" || this.ClassName=="MinuteChartHScreenContainer") return true;
|
|
8598
|
+
|
|
8599
|
+
return false;
|
|
8600
|
+
}
|
|
8601
|
+
|
|
8581
8602
|
this.UpdatePointByCursorIndex=function(type) //type 1=根据十字光标更新 2=强制取消十字光标
|
|
8582
8603
|
{
|
|
8583
8604
|
if (type==1) //根据十字光标更新
|
|
@@ -8598,8 +8619,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8598
8619
|
pt.X=null;
|
|
8599
8620
|
}
|
|
8600
8621
|
}
|
|
8601
|
-
|
|
8602
|
-
this.
|
|
8622
|
+
|
|
8623
|
+
if (this.IsHScreenModel())
|
|
8624
|
+
{
|
|
8625
|
+
this.LastPoint.X=pt.Y;
|
|
8626
|
+
this.LastPoint.Y=pt.X;
|
|
8627
|
+
}
|
|
8628
|
+
else
|
|
8629
|
+
{
|
|
8630
|
+
this.LastPoint.X=pt.X;
|
|
8631
|
+
this.LastPoint.Y=pt.Y;
|
|
8632
|
+
}
|
|
8633
|
+
|
|
8603
8634
|
}
|
|
8604
8635
|
else if (type==2)
|
|
8605
8636
|
{
|
|
@@ -8619,8 +8650,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8619
8650
|
pt.Y=this.Frame.GetYFromData(close);
|
|
8620
8651
|
this.LastPoint.FrameID=0;
|
|
8621
8652
|
}
|
|
8622
|
-
|
|
8623
|
-
this.
|
|
8653
|
+
|
|
8654
|
+
if (this.IsHScreenModel())
|
|
8655
|
+
{
|
|
8656
|
+
this.LastPoint.X=pt.Y;
|
|
8657
|
+
this.LastPoint.Y=pt.X;
|
|
8658
|
+
}
|
|
8659
|
+
else
|
|
8660
|
+
{
|
|
8661
|
+
this.LastPoint.X=pt.X;
|
|
8662
|
+
this.LastPoint.Y=pt.Y;
|
|
8663
|
+
}
|
|
8664
|
+
|
|
8624
8665
|
}
|
|
8625
8666
|
}
|
|
8626
8667
|
|
|
@@ -27590,6 +27631,7 @@ function IChartPainting()
|
|
|
27590
27631
|
var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
|
|
27591
27632
|
var chartright=border.RightEx;
|
|
27592
27633
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
27634
|
+
if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return null;
|
|
27593
27635
|
|
|
27594
27636
|
if (isHScreen)
|
|
27595
27637
|
{
|
|
@@ -33926,13 +33968,19 @@ function ChartOverlayKLine()
|
|
|
33926
33968
|
this.CloseLineWidth=g_JSChartResource.CloseLineWidth;
|
|
33927
33969
|
this.ShowRange={ }; //K线显示范围 { Start:, End:, DataCount:, ShowCount: }
|
|
33928
33970
|
this.DrawKRange={ Start:null, End:null }; //当前屏K线的索引{ Start: , End:}
|
|
33929
|
-
this.
|
|
33971
|
+
this.YInfoConfig={ Type:0, IsShowName:false } //右侧Y轴自定刻度设置 0不显示 3=名字|最新价 4=名字|涨幅
|
|
33930
33972
|
|
|
33931
33973
|
this.SetOption=function(option)
|
|
33932
33974
|
{
|
|
33933
33975
|
if (!option) return;
|
|
33934
33976
|
if (IFrameSplitOperator.IsNumber(option.DrawType)) this.CustomDrawType=option.DrawType;
|
|
33935
|
-
if (IFrameSplitOperator.IsNumber(option.YInfoType)) this.
|
|
33977
|
+
if (IFrameSplitOperator.IsNumber(option.YInfoType)) this.YInfoConfig.Type=option.YInfoType;
|
|
33978
|
+
if (option.YInfo)
|
|
33979
|
+
{
|
|
33980
|
+
var item=option.YInfo;
|
|
33981
|
+
if (IFrameSplitOperator.IsNumber(item.Type)) this.YInfoConfig.Type=item.Type;
|
|
33982
|
+
if (IFrameSplitOperator.IsBool(item.IsShowName)) this.YInfoConfig.IsShowName=item.IsShowName;
|
|
33983
|
+
}
|
|
33936
33984
|
}
|
|
33937
33985
|
|
|
33938
33986
|
this.DrawKBar=function(firstOpen) //firstOpen 当前屏第1个显示数据
|
|
@@ -79450,6 +79498,13 @@ function JSChartResource()
|
|
|
79450
79498
|
CloseColor:"rgb(30,144,255)",
|
|
79451
79499
|
YCloseColor:"rgba(105,105,105,0.5)", //昨收线
|
|
79452
79500
|
AreaColor:'rgba(0,191,255,0.2)',
|
|
79501
|
+
|
|
79502
|
+
UpColor:"rgb(255,0,0)",
|
|
79503
|
+
UpAreaColor:"rgba(255,0,0,0.5)",
|
|
79504
|
+
DownColor:"rgb(0,128,0)",
|
|
79505
|
+
DownAreaColor:"rgba(0,128,0,0.5)",
|
|
79506
|
+
UnchangeColor:'rgb(90,90,90)',
|
|
79507
|
+
UnchangeAreaColor:'rgba(90,90,90,0.5)',
|
|
79453
79508
|
},
|
|
79454
79509
|
|
|
79455
79510
|
KLine:
|
|
@@ -80848,6 +80903,13 @@ function JSChartResource()
|
|
|
80848
80903
|
if (closeLine.CloseColor) this.Report.CloseLine.CloseColor=closeLine.CloseColor;
|
|
80849
80904
|
if (closeLine.YCloseColor) this.Report.CloseLine.YCloseColor=closeLine.YCloseColor;
|
|
80850
80905
|
if (closeLine.AreaColor) this.Report.CloseLine.AreaColor=closeLine.AreaColor;
|
|
80906
|
+
|
|
80907
|
+
if (closeLine.UpColor) this.Report.CloseLine.UpColor=closeLine.UpColor;
|
|
80908
|
+
if (closeLine.UpAreaColor) this.Report.CloseLine.UpAreaColor=closeLine.UpAreaColor;
|
|
80909
|
+
if (closeLine.DownColor) this.Report.CloseLine.DownColor=closeLine.DownColor;
|
|
80910
|
+
if (closeLine.DownAreaColor) this.Report.CloseLine.DownAreaColor=closeLine.DownAreaColor;
|
|
80911
|
+
if (closeLine.UnchangeColor) this.Report.CloseLine.UnchangeColor=closeLine.UnchangeColor;
|
|
80912
|
+
if (closeLine.UnchangeAreaColor) this.Report.CloseLine.UnchangeAreaColor=closeLine.UnchangeAreaColor;
|
|
80851
80913
|
}
|
|
80852
80914
|
|
|
80853
80915
|
if (item.KLine)
|
|
@@ -88046,8 +88108,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
88046
88108
|
{
|
|
88047
88109
|
Name:'KLineChartContainer::RequestOverlayHistoryData', //类名::
|
|
88048
88110
|
Explain:'叠加股票日K线数据',
|
|
88049
|
-
Request:
|
|
88050
|
-
|
|
88111
|
+
Request:
|
|
88112
|
+
{
|
|
88113
|
+
Url:self.KLineApiUrl,
|
|
88114
|
+
Data:
|
|
88115
|
+
{
|
|
88116
|
+
symbol: symbol, period:this.Period, count: dataCount.MaxRequestDataCount, first:{ date: firstDate },
|
|
88117
|
+
Main:{ Symbol:this.Symbol, Period:this.Period, Right:this.Right }
|
|
88118
|
+
},
|
|
88119
|
+
},
|
|
88051
88120
|
Self:this,
|
|
88052
88121
|
PreventDefault:false
|
|
88053
88122
|
};
|
|
@@ -88139,8 +88208,15 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
88139
88208
|
{
|
|
88140
88209
|
Name:'KLineChartContainer::RequestOverlayHistoryMinuteData', //类名::
|
|
88141
88210
|
Explain:'叠加股票分钟K线数据',
|
|
88142
|
-
Request:
|
|
88143
|
-
|
|
88211
|
+
Request:
|
|
88212
|
+
{
|
|
88213
|
+
Url:self.MinuteKLineApiUrl,
|
|
88214
|
+
Data:
|
|
88215
|
+
{
|
|
88216
|
+
symbol: symbol, period:this.Period, count: dataCount.MaxRequestMinuteDayCount, first:{ date: firstDate, time:firstTime },
|
|
88217
|
+
Main:{ Symbol:this.Symbol, Period:this.Period, Right:this.Right }
|
|
88218
|
+
},
|
|
88219
|
+
},
|
|
88144
88220
|
Self:this,
|
|
88145
88221
|
PreventDefault:false
|
|
88146
88222
|
};
|
|
@@ -93582,21 +93658,31 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
93582
93658
|
|
|
93583
93659
|
this.UpdatePointByCursorIndex=function()
|
|
93584
93660
|
{
|
|
93585
|
-
|
|
93661
|
+
var x=null, y=null;
|
|
93662
|
+
x=this.Frame.GetXFromIndex(this.CursorIndex);
|
|
93586
93663
|
|
|
93587
93664
|
var index=this.CursorIndex;
|
|
93588
93665
|
index=parseInt(index.toFixed(0));
|
|
93589
93666
|
var data=this.GetKData();
|
|
93590
|
-
if (data.DataOffset+index
|
|
93667
|
+
if (data.DataOffset+index<data.Data.length)
|
|
93591
93668
|
{
|
|
93592
|
-
|
|
93669
|
+
var item=data.Data[data.DataOffset+index];
|
|
93670
|
+
var close=null;
|
|
93671
|
+
if (item.Before) close=item.Before.Close;
|
|
93672
|
+
else close=item.Close;
|
|
93673
|
+
y=this.Frame.GetYFromData(close);
|
|
93593
93674
|
}
|
|
93594
|
-
var item=data.Data[data.DataOffset+index];
|
|
93595
|
-
var close=null;
|
|
93596
|
-
if (item.Before) close=item.Before.Close;
|
|
93597
|
-
else close=item.Close
|
|
93598
93675
|
|
|
93599
|
-
this.
|
|
93676
|
+
if (this.IsHScreenModel())
|
|
93677
|
+
{
|
|
93678
|
+
this.LastPoint.X=y;
|
|
93679
|
+
this.LastPoint.Y=x;
|
|
93680
|
+
}
|
|
93681
|
+
else
|
|
93682
|
+
{
|
|
93683
|
+
this.LastPoint.X=x;
|
|
93684
|
+
this.LastPoint.Y=y;
|
|
93685
|
+
}
|
|
93600
93686
|
this.LastPoint.FrameID=0;
|
|
93601
93687
|
}
|
|
93602
93688
|
|
|
@@ -5296,7 +5296,15 @@ function ChartReport()
|
|
|
5296
5296
|
{
|
|
5297
5297
|
CloseColor:g_JSChartResource.Report.CloseLine.CloseColor,
|
|
5298
5298
|
YCloseColor:g_JSChartResource.Report.CloseLine.YCloseColor,
|
|
5299
|
-
AreaColor:g_JSChartResource.Report.CloseLine.AreaColor
|
|
5299
|
+
AreaColor:g_JSChartResource.Report.CloseLine.AreaColor,
|
|
5300
|
+
|
|
5301
|
+
UpColor:g_JSChartResource.Report.CloseLine.UpColor,
|
|
5302
|
+
DownColor:g_JSChartResource.Report.CloseLine.DownColor,
|
|
5303
|
+
UnchangeColor:g_JSChartResource.Report.CloseLine.UnchangeColor,
|
|
5304
|
+
|
|
5305
|
+
UpAreaColor:g_JSChartResource.Report.CloseLine.UpAreaColor,
|
|
5306
|
+
DownAreaColor:g_JSChartResource.Report.CloseLine.DownAreaColor,
|
|
5307
|
+
UnchangeAreaColor:g_JSChartResource.Report.CloseLine.UnchangeAreaColor,
|
|
5300
5308
|
}
|
|
5301
5309
|
|
|
5302
5310
|
//K线配置
|
|
@@ -5607,6 +5615,7 @@ function ChartReport()
|
|
|
5607
5615
|
else if (item.Type==REPORT_COLUMN_ID.CLOSE_LINE_ID)
|
|
5608
5616
|
{
|
|
5609
5617
|
if (IFrameSplitOperator.IsBool(item.IsDrawArea)) colItem.IsDrawArea=item.IsDrawArea;
|
|
5618
|
+
if (IFrameSplitOperator.IsNumber(item.LineColorType)) colItem.LineColorType=item.LineColorType;
|
|
5610
5619
|
}
|
|
5611
5620
|
else if(item.Type==REPORT_COLUMN_ID.TIME_ID)
|
|
5612
5621
|
{
|
|
@@ -5735,7 +5744,7 @@ function ChartReport()
|
|
|
5735
5744
|
{ Type:REPORT_COLUMN_ID.VOL_IN_ID, Title:"内盘", TextAlign:"right", TextColor:g_JSChartResource.Report.DownTextColor, Width:null, MaxText:"8888.8擎" },
|
|
5736
5745
|
{ Type:REPORT_COLUMN_ID.VOL_OUT_ID, Title:"外盘", TextAlign:"right", TextColor:g_JSChartResource.Report.UpTextColor, Width:null, MaxText:"8888.8擎" },
|
|
5737
5746
|
|
|
5738
|
-
{ Type:REPORT_COLUMN_ID.CLOSE_LINE_ID, Title:"走势", TextAlign:"center", TextColor:g_JSChartResource.Report.CloseLineColor, Width:null, MaxText:"88888.88888" },
|
|
5747
|
+
{ Type:REPORT_COLUMN_ID.CLOSE_LINE_ID, Title:"走势", TextAlign:"center", TextColor:g_JSChartResource.Report.CloseLineColor, Width:null, MaxText:"88888.88888", LineColorType:0 },
|
|
5739
5748
|
|
|
5740
5749
|
|
|
5741
5750
|
{ Type:REPORT_COLUMN_ID.BUY_VOL_ID, Title:"买量", TextAlign:"right", TextColor:g_JSChartResource.Report.FieldColor.Vol, Width:null, MaxText:"8888.8擎" },
|
|
@@ -8774,8 +8783,7 @@ function ChartReport()
|
|
|
8774
8783
|
this.Canvas.setLineDash([]);
|
|
8775
8784
|
}
|
|
8776
8785
|
|
|
8777
|
-
|
|
8778
|
-
else this.Canvas.strokeStyle=this.CloseLineConfig.CloseColor;
|
|
8786
|
+
this.Canvas.strokeStyle=this.GetCloseLineColor(lineData, column);
|
|
8779
8787
|
|
|
8780
8788
|
var bFirstPoint=true;
|
|
8781
8789
|
var ptFirst={}; //第1个点
|
|
@@ -8813,8 +8821,7 @@ function ChartReport()
|
|
|
8813
8821
|
this.Canvas.lineTo(x,yCenter);
|
|
8814
8822
|
this.Canvas.lineTo(ptFirst.X,yCenter);
|
|
8815
8823
|
this.Canvas.closePath();
|
|
8816
|
-
var areaColor=this.
|
|
8817
|
-
if (lineData.AreaColor) areaColor=lineData.AreaColor;
|
|
8824
|
+
var areaColor=this.GetCloseAreaColor(lineData, column);
|
|
8818
8825
|
this.SetFillStyle(areaColor,left,top, left,bottom);
|
|
8819
8826
|
this.Canvas.fill();
|
|
8820
8827
|
}
|
|
@@ -8823,6 +8830,48 @@ function ChartReport()
|
|
|
8823
8830
|
this.Canvas.restore();
|
|
8824
8831
|
}
|
|
8825
8832
|
|
|
8833
|
+
this.GetCloseLineColor=function(lineData, column)
|
|
8834
|
+
{
|
|
8835
|
+
var color=this.CloseLineConfig.CloseColor;
|
|
8836
|
+
if (lineData.Color)
|
|
8837
|
+
{
|
|
8838
|
+
color=lineData.Color;
|
|
8839
|
+
}
|
|
8840
|
+
else if (column.LineColorType==1)
|
|
8841
|
+
{
|
|
8842
|
+
var color= this.CloseLineConfig.UnchangeColor;
|
|
8843
|
+
if (IFrameSplitOperator.IsNumber(lineData.YClose) && IFrameSplitOperator.IsNonEmptyArray(lineData.Data) && IFrameSplitOperator.IsNumber(lineData.Data[ lineData.Data.length -1 ]))
|
|
8844
|
+
{
|
|
8845
|
+
var lastValue=lineData.Data[ lineData.Data.length -1 ];
|
|
8846
|
+
if (lastValue>lineData.YClose) color=this.CloseLineConfig.UpColor;
|
|
8847
|
+
else if (lastValue<lineData.YClose) color=this.CloseLineConfig.DownColor;
|
|
8848
|
+
}
|
|
8849
|
+
}
|
|
8850
|
+
|
|
8851
|
+
return color;
|
|
8852
|
+
}
|
|
8853
|
+
|
|
8854
|
+
this.GetCloseAreaColor=function(lineData, column)
|
|
8855
|
+
{
|
|
8856
|
+
var color=this.CloseLineConfig.AreaColor;
|
|
8857
|
+
if (lineData.AreaColor)
|
|
8858
|
+
{
|
|
8859
|
+
color=lineData.AreaColor;
|
|
8860
|
+
}
|
|
8861
|
+
else if (column.LineColorType==1)
|
|
8862
|
+
{
|
|
8863
|
+
var color= this.CloseLineConfig.UnchangeAreaColor;
|
|
8864
|
+
if (IFrameSplitOperator.IsNumber(lineData.YClose) && IFrameSplitOperator.IsNonEmptyArray(lineData.Data) && IFrameSplitOperator.IsNumber(lineData.Data[ lineData.Data.length -1 ]))
|
|
8865
|
+
{
|
|
8866
|
+
var lastValue=lineData.Data[ lineData.Data.length -1 ];
|
|
8867
|
+
if (lastValue>lineData.YClose) color=this.CloseLineConfig.UpAreaColor;
|
|
8868
|
+
else if (lastValue<lineData.YClose) color=this.CloseLineConfig.DownAreaColor;
|
|
8869
|
+
}
|
|
8870
|
+
}
|
|
8871
|
+
|
|
8872
|
+
return color;
|
|
8873
|
+
}
|
|
8874
|
+
|
|
8826
8875
|
//klineData={ Data:[ open, high, low, close ] }
|
|
8827
8876
|
this.DrawKLine=function(klineData, column, rtItem, data)
|
|
8828
8877
|
{
|
|
@@ -8892,7 +8941,31 @@ function ChartReport()
|
|
|
8892
8941
|
var distanceWidth=this.KLineConfig.DistanceWidth;
|
|
8893
8942
|
var xOffset=left;
|
|
8894
8943
|
var x, xLeft, xRight;
|
|
8944
|
+
var drawCount=0;
|
|
8895
8945
|
for(var i=0;i<aryKLine.length;++i,xOffset+=(dataWidth+distanceWidth))
|
|
8946
|
+
{
|
|
8947
|
+
xLeft=xOffset;
|
|
8948
|
+
xRight=xOffset+dataWidth;
|
|
8949
|
+
x=xLeft+(xRight-xLeft)/2;
|
|
8950
|
+
if (xRight>right) break;
|
|
8951
|
+
drawCount++;
|
|
8952
|
+
}
|
|
8953
|
+
|
|
8954
|
+
var xOffset=left;
|
|
8955
|
+
var startIndex=0;
|
|
8956
|
+
if (aryKLine.length>drawCount)
|
|
8957
|
+
{
|
|
8958
|
+
high=null,low=null;
|
|
8959
|
+
startIndex=aryKLine.length-drawCount;
|
|
8960
|
+
for(var i=startIndex;i<aryKLine.length;++i)
|
|
8961
|
+
{
|
|
8962
|
+
var item=aryKLine[i];
|
|
8963
|
+
if (high==null || high<item.High) high=item.High;
|
|
8964
|
+
if (low==null || low>item.Low) low=item.Low;
|
|
8965
|
+
}
|
|
8966
|
+
}
|
|
8967
|
+
|
|
8968
|
+
for(var i=startIndex;i<aryKLine.length;++i,xOffset+=(dataWidth+distanceWidth))
|
|
8896
8969
|
{
|
|
8897
8970
|
var item=aryKLine[i];
|
|
8898
8971
|
xLeft=xOffset;
|
|
@@ -8980,7 +9053,11 @@ function ChartReport()
|
|
|
8980
9053
|
}
|
|
8981
9054
|
else
|
|
8982
9055
|
{
|
|
8983
|
-
|
|
9056
|
+
this.Canvas.beginPath();
|
|
9057
|
+
var xBar=x;
|
|
9058
|
+
this.Canvas.moveTo(ToFixedPoint(xBar),ToFixedPoint(yBarTop));
|
|
9059
|
+
this.Canvas.lineTo(ToFixedPoint(xBar),ToFixedPoint(yBarBottom));
|
|
9060
|
+
this.Canvas.stroke();
|
|
8984
9061
|
}
|
|
8985
9062
|
}
|
|
8986
9063
|
|