hqchart 1.1.13810 → 1.1.13816
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.NetworkFilterTest.vue.js +2 -2
- package/lib/umychart.vue.js +6 -37
- package/package.json +1 -1
- package/src/jscommon/umychart.NetworkFilterTest.js +39 -0
- package/src/jscommon/umychart.complier.js +12 -444
- package/src/jscommon/umychart.node/umychart.node.js +774 -1268
- package/src/jscommon/umychart.testdata.js +39 -0
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +13 -445
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.NetworkFilterTest.vue.js +39 -0
- package/src/jscommon/umychart.vue/umychart.vue.js +13 -445
|
@@ -5702,6 +5702,13 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
5702
5702
|
this.JSChartContainer.ChangeIndex(windowIndex,indexName,option);
|
|
5703
5703
|
}
|
|
5704
5704
|
|
|
5705
|
+
//切换一个窗口指标,包含叠加指标,以及这个窗口的属性
|
|
5706
|
+
this.ChangeIndexWindow=function(windowIndex, option)
|
|
5707
|
+
{
|
|
5708
|
+
if (this.JSChartContainer && typeof(this.JSChartContainer.ChangeIndexWindow)=='function')
|
|
5709
|
+
this.JSChartContainer.ChangeIndexWindow(windowIndex, option);
|
|
5710
|
+
}
|
|
5711
|
+
|
|
5705
5712
|
this.AddIndexWindow=function(indexName,option)
|
|
5706
5713
|
{
|
|
5707
5714
|
if (this.JSChartContainer && typeof(this.JSChartContainer.AddIndexWindow)=='function')
|
|
@@ -6693,6 +6700,8 @@ var JSCHART_MENU_ID=
|
|
|
6693
6700
|
CMD_SHOW_CORSS_LINE_ID:39, //显示十字光标线
|
|
6694
6701
|
CMD_ENABLE_POP_MINUTE_CHART_ID:40, //双击弹分时图
|
|
6695
6702
|
|
|
6703
|
+
CMD_CHANGE_INFO_POSITION_ID:41, //修改信息地雷位置
|
|
6704
|
+
|
|
6696
6705
|
|
|
6697
6706
|
CMD_REPORT_CHANGE_BLOCK_ID:60, //报价列表 切换板块ID
|
|
6698
6707
|
CMD_REPORT_COLUMN_SORT_ID:61, //报价列表 表头排序 Arg[列序号, 排序方向]
|
|
@@ -10980,6 +10989,8 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
10980
10989
|
if (!paint) return;
|
|
10981
10990
|
|
|
10982
10991
|
var data=this.ChartPaint[0].Data;
|
|
10992
|
+
var count=data.Data.length;
|
|
10993
|
+
if (end>=count) end=count-1;
|
|
10983
10994
|
var startItem=data.Data[start];
|
|
10984
10995
|
var endItem=data.Data[end];
|
|
10985
10996
|
|
|
@@ -11007,6 +11018,12 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
11007
11018
|
this.Frame.ResetXSplit();
|
|
11008
11019
|
}
|
|
11009
11020
|
|
|
11021
|
+
this.ResetFrameYCustomSplit=function(windowIndex)
|
|
11022
|
+
{
|
|
11023
|
+
if (typeof(this.Frame.ResetYCustomSplit)=='function')
|
|
11024
|
+
this.Frame.ResetYCustomSplit(windowIndex);
|
|
11025
|
+
}
|
|
11026
|
+
|
|
11010
11027
|
this.UpdateFrameMaxMinV2=function()
|
|
11011
11028
|
{
|
|
11012
11029
|
var mapFrame=new Map(); //key=frameid, value:{ ChartPaint:[] }
|
|
@@ -13520,6 +13537,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
13520
13537
|
}
|
|
13521
13538
|
}
|
|
13522
13539
|
break;
|
|
13540
|
+
case JSCHART_MENU_ID.CMD_CHANGE_INFO_POSITION_ID:
|
|
13541
|
+
if (param==null) return false;
|
|
13542
|
+
var klineChart=this.ChartPaint[0];
|
|
13543
|
+
if (!klineChart) return false;
|
|
13544
|
+
klineChart.InfoPosition=param;
|
|
13545
|
+
this.Draw();
|
|
13546
|
+
break;
|
|
13523
13547
|
}
|
|
13524
13548
|
}
|
|
13525
13549
|
|
|
@@ -13694,6 +13718,101 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
13694
13718
|
this.ChartDragSelectRect.SetSecondPoint(ptEnd.X, ptEnd.Y);
|
|
13695
13719
|
this.ChartDragSelectRect.Draw();
|
|
13696
13720
|
}
|
|
13721
|
+
|
|
13722
|
+
//切换窗口指标 option={ Window:{}, OverlayIndex:[], Frame:{ }}
|
|
13723
|
+
this.ChangeIndexWindow=function(windowIndex, option)
|
|
13724
|
+
{
|
|
13725
|
+
JSConsole.Chart.Log('[KLineChartContainer::ChangeIndexWindow] windowIndex, option', windowIndex, option);
|
|
13726
|
+
if (windowIndex<0 || windowIndex>=this.Frame.SubFrame.length) return false;
|
|
13727
|
+
if (!option) return false;
|
|
13728
|
+
|
|
13729
|
+
var frame=this.Frame.SubFrame[windowIndex];
|
|
13730
|
+
if (option.Delete)
|
|
13731
|
+
{
|
|
13732
|
+
var item=option.Delete;
|
|
13733
|
+
if (item.Window===true) this.DeleteIndexPaint(windowIndex); //删除主指标
|
|
13734
|
+
if (item.Overlay===true) this.DeleteWindowsOverlayIndex(windowIndex); //清空叠加指标
|
|
13735
|
+
}
|
|
13736
|
+
|
|
13737
|
+
//清空标题栏
|
|
13738
|
+
var titleIndex=windowIndex+1;
|
|
13739
|
+
this.TitlePaint[titleIndex].Data=[];
|
|
13740
|
+
this.TitlePaint[titleIndex].Title=null;
|
|
13741
|
+
|
|
13742
|
+
if (option.Window) //主指标
|
|
13743
|
+
{
|
|
13744
|
+
this.DeleteIndexPaint(windowIndex); //删除主指标
|
|
13745
|
+
|
|
13746
|
+
var item=option.Window;
|
|
13747
|
+
|
|
13748
|
+
if (item.Script) //自定义指标脚本
|
|
13749
|
+
{
|
|
13750
|
+
this.WindowIndex[windowIndex]=new ScriptIndex(item.Name,item.Script,item.Args,item); //脚本执行
|
|
13751
|
+
}
|
|
13752
|
+
else if (item.API) //后台指标
|
|
13753
|
+
{
|
|
13754
|
+
var apiItem=item.API;
|
|
13755
|
+
this.WindowIndex[windowIndex]=new APIScriptIndex(apiItem.Name,apiItem.Script,apiItem.Args,item);
|
|
13756
|
+
}
|
|
13757
|
+
else
|
|
13758
|
+
{
|
|
13759
|
+
var indexID=item.Index;
|
|
13760
|
+
var indexItem=JSIndexMap.Get(indexID);
|
|
13761
|
+
if (indexItem)
|
|
13762
|
+
{
|
|
13763
|
+
this.WindowIndex[windowIndex]=indexItem.Create();
|
|
13764
|
+
this.CreateWindowIndex(windowIndex);
|
|
13765
|
+
}
|
|
13766
|
+
else
|
|
13767
|
+
{
|
|
13768
|
+
var systemScript = new JSIndexScript();
|
|
13769
|
+
var indexInfo = systemScript.Get(indexID);
|
|
13770
|
+
if (indexInfo)
|
|
13771
|
+
{
|
|
13772
|
+
JSIndexScript.ModifyAttribute(indexInfo,item);
|
|
13773
|
+
this.WindowIndex[windowIndex]=new ScriptIndex(indexInfo.Name,indexInfo.Script,indexInfo.Args,indexInfo); //脚本执行
|
|
13774
|
+
}
|
|
13775
|
+
}
|
|
13776
|
+
}
|
|
13777
|
+
|
|
13778
|
+
this.SetSubFrameAttribute(frame, item, option.Frame);
|
|
13779
|
+
}
|
|
13780
|
+
|
|
13781
|
+
//叠加指标
|
|
13782
|
+
var aryOverlayIndex=[];
|
|
13783
|
+
if (IFrameSplitOperator.IsNonEmptyArray(option.OverlayIndex))
|
|
13784
|
+
{
|
|
13785
|
+
this.DeleteWindowsOverlayIndex(windowIndex); //清空叠加指标
|
|
13786
|
+
|
|
13787
|
+
for(var i=0;i<option.OverlayIndex.length;++i)
|
|
13788
|
+
{
|
|
13789
|
+
var item=option.OverlayIndex[i];
|
|
13790
|
+
if (item.Index) item.IndexName=item.Index;
|
|
13791
|
+
item.WindowIndex=windowIndex;
|
|
13792
|
+
if (item.Windows>=0) item.WindowIndex=item.Windows;
|
|
13793
|
+
|
|
13794
|
+
var overlay=this.CreateOverlayWindowsIndex(item);
|
|
13795
|
+
if (!overlay) continue;
|
|
13796
|
+
|
|
13797
|
+
aryOverlayIndex.push({ WindowsIndex:item.WindowIndex, Overlay:overlay });
|
|
13798
|
+
}
|
|
13799
|
+
}
|
|
13800
|
+
|
|
13801
|
+
//刷新指标
|
|
13802
|
+
var bindData=this.ChartPaint[0].Data;
|
|
13803
|
+
this.BindIndexData(windowIndex,bindData); //请求主指标
|
|
13804
|
+
|
|
13805
|
+
for(var i=0;i<aryOverlayIndex.length;++i) //请求叠加指标
|
|
13806
|
+
{
|
|
13807
|
+
var item=aryOverlayIndex[i];
|
|
13808
|
+
this.BindOverlayIndexData(item.Overlay,item.WindowsIndex,bindData);
|
|
13809
|
+
}
|
|
13810
|
+
|
|
13811
|
+
this.UpdataDataoffset(); //更新数据偏移
|
|
13812
|
+
this.ResetFrameXYSplit();
|
|
13813
|
+
this.UpdateFrameMaxMin(); //调整坐标最大 最小值
|
|
13814
|
+
this.Draw();
|
|
13815
|
+
}
|
|
13697
13816
|
}
|
|
13698
13817
|
|
|
13699
13818
|
function GetDevicePixelRatio()
|
|
@@ -13930,6 +14049,9 @@ function CoordinateInfo()
|
|
|
13930
14049
|
//百分比 { PriceColor:, PercentageColor:, SplitColor:, Font: }
|
|
13931
14050
|
//自定义刻度 { Custom:{ Position: 1=强制内部 }}
|
|
13932
14051
|
this.AreaData; //区域: { Start:, End:, BGColor:, Position:[0=左, 1=右] }
|
|
14052
|
+
|
|
14053
|
+
//不在当前屏范围
|
|
14054
|
+
//this.OutRange={ BGColor:"", TextColor:, BorderColor: TopYOffset:, BottomYOffset: }
|
|
13933
14055
|
}
|
|
13934
14056
|
|
|
13935
14057
|
|
|
@@ -16114,11 +16236,177 @@ function AverageWidthFrame()
|
|
|
16114
16236
|
return { MaxWidth:width, Text:aryText };
|
|
16115
16237
|
}
|
|
16116
16238
|
|
|
16239
|
+
this.DrawOutRangeCustomItem=function(item, mapTextRect)
|
|
16240
|
+
{
|
|
16241
|
+
if (this.IsHScreen===true) return;
|
|
16242
|
+
if (!this.IsShow && !this.IsYDrawMainFrame) return;
|
|
16243
|
+
if (!item.Message[1] && !item.Message[0]) return;
|
|
16244
|
+
if (!item.OutRange) return;
|
|
16245
|
+
var position=0; //1=top 2=bottom
|
|
16246
|
+
if (item.Value>this.HorizontalMax) position=1;
|
|
16247
|
+
else if (item.Value<this.HorizontalMin) position=2;
|
|
16248
|
+
else return;
|
|
16249
|
+
|
|
16250
|
+
this.Canvas.save();
|
|
16251
|
+
var outRange=item.OutRange;
|
|
16252
|
+
var border=this.GetBorder();
|
|
16253
|
+
var left=border.Left;
|
|
16254
|
+
var right=border.Right;
|
|
16255
|
+
var bottom=border.Bottom;
|
|
16256
|
+
var top=border.Top;
|
|
16257
|
+
var borderRight = this.ChartBorder.Right;
|
|
16258
|
+
var borderLeft = this.ChartBorder.Left;
|
|
16259
|
+
var titleHeight = this.ChartBorder.TitleHeight;
|
|
16260
|
+
|
|
16261
|
+
if (this.IsHScreen)
|
|
16262
|
+
{
|
|
16263
|
+
borderLeft=this.ChartBorder.Top;
|
|
16264
|
+
borderRight=this.ChartBorder.Bottom;
|
|
16265
|
+
top=border.Top;
|
|
16266
|
+
bottom=border.Bottom;
|
|
16267
|
+
}
|
|
16268
|
+
|
|
16269
|
+
var pixelTatio = GetDevicePixelRatio();
|
|
16270
|
+
var defaultTextHeight=18*pixelTatio;
|
|
16271
|
+
var textHeight=defaultTextHeight;
|
|
16272
|
+
|
|
16273
|
+
if (item.Message[0] && borderLeft>=10)
|
|
16274
|
+
{
|
|
16275
|
+
if (item.Font != null) this.Canvas.font = item.Font;
|
|
16276
|
+
var textInfo=this.GetCustomItemTextInfo(item,true,pixelTatio);
|
|
16277
|
+
var textWidth=textInfo.MaxWidth;
|
|
16278
|
+
var itemLeft=left-textWidth;
|
|
16279
|
+
var fontHeight=this.GetFontHeight();
|
|
16280
|
+
var textHeight=fontHeight>defaultTextHeight? fontHeight:defaultTextHeight;
|
|
16281
|
+
this.Canvas.textAlign = "right";
|
|
16282
|
+
this.Canvas.textBaseline = "middle";
|
|
16283
|
+
|
|
16284
|
+
var yText=null;
|
|
16285
|
+
if (position==1)
|
|
16286
|
+
{
|
|
16287
|
+
yText=border.TopEx;
|
|
16288
|
+
if (IFrameSplitOperator.IsNumber(outRange.TopYOffset)) yText+=outRange.TopYOffset;
|
|
16289
|
+
}
|
|
16290
|
+
else if (position==2)
|
|
16291
|
+
{
|
|
16292
|
+
yText=border.BottomEx+textHeight;
|
|
16293
|
+
if (IFrameSplitOperator.IsNumber(outRange.BottomYOffset)) yText+=outRange.BottomYOffset;
|
|
16294
|
+
}
|
|
16295
|
+
|
|
16296
|
+
for(var i=0;i<textInfo.Text.length;++i)
|
|
16297
|
+
{
|
|
16298
|
+
var itemText=textInfo.Text[i];
|
|
16299
|
+
var rtBG={ Left:itemLeft, Width:itemText.Width, Bottom:yText, Height:textHeight };
|
|
16300
|
+
rtBG.Top=rtBG.Bottom-rtBG.Height;
|
|
16301
|
+
rtBG.Right=rtBG.Left+rtBG.Width;
|
|
16302
|
+
|
|
16303
|
+
if (item.ExtendLine && item.ExtendLine[0]) //右侧延长线
|
|
16304
|
+
{
|
|
16305
|
+
var exLine=item.ExtendLine[0];
|
|
16306
|
+
if (IFrameSplitOperator.IsNumber(exLine.Width))
|
|
16307
|
+
{
|
|
16308
|
+
var yLine=rtBG.Bottom;
|
|
16309
|
+
if (position==2) yLine=rtBG.Top;
|
|
16310
|
+
var lineType=item.LineType;
|
|
16311
|
+
if (IFrameSplitOperator.IsNumber(outRange.ExtendLine.Type)) lineType=outRange.ExtendLine.Type;
|
|
16312
|
+
if (i==0) this.DrawLine(left,left-exLine.Width,yLine,item.LineColor,lineType,item);
|
|
16313
|
+
|
|
16314
|
+
rtBG.Left-=exLine.Width;
|
|
16315
|
+
rtBG.Right-=exLine.Width;
|
|
16316
|
+
}
|
|
16317
|
+
}
|
|
16318
|
+
|
|
16319
|
+
this.Canvas.fillStyle=outRange.BGColor;
|
|
16320
|
+
this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);
|
|
16321
|
+
if (outRange.Border && outRange.Border.Color)
|
|
16322
|
+
{
|
|
16323
|
+
if (IFrameSplitOperator.IsNonEmptyArray(outRange.Border.LineDash))
|
|
16324
|
+
this.Canvas.setLineDash(outRange.Border.LineDash); //虚线
|
|
16325
|
+
|
|
16326
|
+
this.Canvas.strokeStyle = outRange.Border.Color;
|
|
16327
|
+
this.Canvas.strokeRect(ToFixedPoint(rtBG.Left), ToFixedPoint(rtBG.Top), ToFixedRect(rtBG.Width), ToFixedRect(rtBG.Height));
|
|
16328
|
+
}
|
|
16329
|
+
|
|
16330
|
+
this.Canvas.fillStyle = outRange.TextColor;
|
|
16331
|
+
this.Canvas.fillText(itemText.Text, rtBG.Right - 1*pixelTatio, rtBG.Top+rtBG.Height/2+1*pixelTatio);
|
|
16332
|
+
|
|
16333
|
+
yText+=textHeight+1;
|
|
16334
|
+
}
|
|
16335
|
+
|
|
16336
|
+
}
|
|
16337
|
+
else if (item.Message[1] && borderRight>=10)
|
|
16338
|
+
{
|
|
16339
|
+
if (item.Font != null) this.Canvas.font = item.Font;
|
|
16340
|
+
var textInfo=this.GetCustomItemTextInfo(item,false,pixelTatio);
|
|
16341
|
+
var textWidth=textInfo.MaxWidth;
|
|
16342
|
+
var itemRight=right+textWidth;
|
|
16343
|
+
var fontHeight=this.GetFontHeight();
|
|
16344
|
+
var textHeight=fontHeight>defaultTextHeight? fontHeight:defaultTextHeight;
|
|
16345
|
+
this.Canvas.textAlign = "left";
|
|
16346
|
+
this.Canvas.textBaseline = "middle";
|
|
16347
|
+
|
|
16348
|
+
var yText=null;
|
|
16349
|
+
if (position==1)
|
|
16350
|
+
{
|
|
16351
|
+
yText=border.TopEx;
|
|
16352
|
+
if (IFrameSplitOperator.IsNumber(outRange.TopYOffset)) yText+=outRange.TopYOffset;
|
|
16353
|
+
}
|
|
16354
|
+
else if (position==2)
|
|
16355
|
+
{
|
|
16356
|
+
yText=border.BottomEx+textHeight;
|
|
16357
|
+
if (IFrameSplitOperator.IsNumber(outRange.BottomYOffset)) yText+=outRange.BottomYOffset;
|
|
16358
|
+
}
|
|
16359
|
+
|
|
16360
|
+
for(var i=0;i<textInfo.Text.length;++i)
|
|
16361
|
+
{
|
|
16362
|
+
var itemText=textInfo.Text[i];
|
|
16363
|
+
var rtBG={ Right:itemRight, Width:itemText.Width, Bottom:yText, Height:textHeight };
|
|
16364
|
+
rtBG.Top=rtBG.Bottom-rtBG.Height;
|
|
16365
|
+
rtBG.Left=rtBG.Right-rtBG.Width;
|
|
16366
|
+
|
|
16367
|
+
if (item.ExtendLine && item.ExtendLine[1]) //右侧延长线
|
|
16368
|
+
{
|
|
16369
|
+
var exLine=item.ExtendLine[1];
|
|
16370
|
+
if (IFrameSplitOperator.IsNumber(exLine.Width))
|
|
16371
|
+
{
|
|
16372
|
+
var yLine=rtBG.Bottom;
|
|
16373
|
+
if (position==2) yLine=rtBG.Top;
|
|
16374
|
+
var lineType=item.LineType;
|
|
16375
|
+
if (IFrameSplitOperator.IsNumber(outRange.ExtendLine.Type)) lineType=outRange.ExtendLine.Type;
|
|
16376
|
+
if (i==0) this.DrawLine(right,right+exLine.Width,yLine,item.LineColor,lineType,item);
|
|
16377
|
+
|
|
16378
|
+
rtBG.Left+=exLine.Width;
|
|
16379
|
+
rtBG.Right+=exLine.Width;
|
|
16380
|
+
}
|
|
16381
|
+
}
|
|
16382
|
+
|
|
16383
|
+
this.Canvas.fillStyle=outRange.BGColor;
|
|
16384
|
+
this.Canvas.fillRect(rtBG.Left,rtBG.Top,rtBG.Width,rtBG.Height);
|
|
16385
|
+
if (outRange.Border && outRange.Border.Color)
|
|
16386
|
+
{
|
|
16387
|
+
if (IFrameSplitOperator.IsNonEmptyArray(outRange.Border.LineDash))
|
|
16388
|
+
this.Canvas.setLineDash(outRange.Border.LineDash); //虚线
|
|
16389
|
+
|
|
16390
|
+
this.Canvas.strokeStyle = outRange.Border.Color;
|
|
16391
|
+
this.Canvas.strokeRect(ToFixedPoint(rtBG.Left), ToFixedPoint(rtBG.Top), ToFixedRect(rtBG.Width), ToFixedRect(rtBG.Height));
|
|
16392
|
+
}
|
|
16393
|
+
|
|
16394
|
+
this.Canvas.fillStyle = outRange.TextColor;
|
|
16395
|
+
this.Canvas.fillText(itemText.Text, rtBG.Left + 1*pixelTatio, rtBG.Top+rtBG.Height/2+1*pixelTatio);
|
|
16396
|
+
|
|
16397
|
+
yText+=textHeight+1;
|
|
16398
|
+
}
|
|
16399
|
+
}
|
|
16400
|
+
|
|
16401
|
+
this.Canvas.restore();
|
|
16402
|
+
}
|
|
16403
|
+
|
|
16117
16404
|
this.DrawCustomItem=function(item, mapTextRect) //显示自定义Y刻度
|
|
16118
16405
|
{
|
|
16119
16406
|
if (!item.Message[1] && !item.Message[0]) return;
|
|
16120
16407
|
if (item.Value>this.HorizontalMax || item.Value<this.HorizontalMin)
|
|
16121
16408
|
{
|
|
16409
|
+
this.DrawOutRangeCustomItem(item, mapTextRect);
|
|
16122
16410
|
this.SendDrawCountDownEvent( { IsShow:false } );
|
|
16123
16411
|
return;
|
|
16124
16412
|
}
|
|
@@ -16255,6 +16543,18 @@ function AverageWidthFrame()
|
|
|
16255
16543
|
var textLeft=left-(textWidth-itemText.Width);
|
|
16256
16544
|
}
|
|
16257
16545
|
|
|
16546
|
+
|
|
16547
|
+
if (item.ExtendLine && item.ExtendLine[0]) //右侧延长线
|
|
16548
|
+
{
|
|
16549
|
+
var exLine=item.ExtendLine[0];
|
|
16550
|
+
if (IFrameSplitOperator.IsNumber(exLine.Width))
|
|
16551
|
+
{
|
|
16552
|
+
if (i==0) this.DrawLine(left,left-exLine.Width,y,item.LineColor,item.LineType,item);
|
|
16553
|
+
textLeft-=exLine.Width;
|
|
16554
|
+
rectLeft-=exLine.Width
|
|
16555
|
+
}
|
|
16556
|
+
}
|
|
16557
|
+
|
|
16258
16558
|
if (emptyBGColor)
|
|
16259
16559
|
{
|
|
16260
16560
|
this.Canvas.fillStyle=emptyBGColor;
|
|
@@ -20971,6 +21271,7 @@ function OverlayKLineFrame()
|
|
|
20971
21271
|
if (!item.Message[1] && !item.Message[0]) return;
|
|
20972
21272
|
if (item.Value>this.HorizontalMax || item.Value<this.HorizontalMin)
|
|
20973
21273
|
{
|
|
21274
|
+
//this.DrawOutRangeCustomItem(item, mapTextRect);
|
|
20974
21275
|
this.SendDrawCountDownEvent( { IsShow:false } );
|
|
20975
21276
|
return;
|
|
20976
21277
|
}
|
|
@@ -23453,6 +23754,24 @@ function HQTradeFrame()
|
|
|
23453
23754
|
}
|
|
23454
23755
|
}
|
|
23455
23756
|
|
|
23757
|
+
this.ResetYCustomSplit=function(windowIndex)
|
|
23758
|
+
{
|
|
23759
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.SubFrame)) return;
|
|
23760
|
+
|
|
23761
|
+
if (IFrameSplitOperator.IsNumber(windowIndex) && windowIndex>=0)
|
|
23762
|
+
{
|
|
23763
|
+
var item=this.SubFrame[windowIndex];
|
|
23764
|
+
if (item.Frame) item.Frame.YCustomSplit=true;
|
|
23765
|
+
}
|
|
23766
|
+
else
|
|
23767
|
+
{
|
|
23768
|
+
for(var i=0;i<this.SubFrame.length;++i)
|
|
23769
|
+
{
|
|
23770
|
+
this.SubFrame[i].Frame.YCustomSplit=true;
|
|
23771
|
+
}
|
|
23772
|
+
}
|
|
23773
|
+
}
|
|
23774
|
+
|
|
23456
23775
|
//清空Y轴坐标的最大最小值
|
|
23457
23776
|
this.ClearYCoordinateMaxMin=function(windowIndex)
|
|
23458
23777
|
{
|
|
@@ -36995,9 +37314,11 @@ function ChartStickLine()
|
|
|
36995
37314
|
else this.Canvas.lineWidth=GetDevicePixelRatio();
|
|
36996
37315
|
this.Canvas.strokeStyle=this.Color;
|
|
36997
37316
|
}
|
|
36998
|
-
else if(this.Width==0)
|
|
37317
|
+
else if(this.Width==0) //宽度时0,使用宽度1
|
|
36999
37318
|
{
|
|
37000
37319
|
this.SetEmptyBar();
|
|
37320
|
+
this.Canvas.lineWidth=GetDevicePixelRatio();
|
|
37321
|
+
this.Canvas.strokeStyle=this.Color;
|
|
37001
37322
|
}
|
|
37002
37323
|
else if (this.Width==3 || this.Width==50) //3和50 K线宽度
|
|
37003
37324
|
{
|
|
@@ -47608,6 +47929,17 @@ function RectSelectPaint()
|
|
|
47608
47929
|
this.AreaColor=g_JSChartResource.RectSelect.AreaColor; //面积
|
|
47609
47930
|
this.SubAreaColor=g_JSChartResource.RectSelect.SubAreaColor;
|
|
47610
47931
|
|
|
47932
|
+
//标记图标
|
|
47933
|
+
this.MarkConfig=
|
|
47934
|
+
{
|
|
47935
|
+
Family:g_JSChartResource.RectSelect.Mark.Family,
|
|
47936
|
+
Text:g_JSChartResource.RectSelect.Mark.Text,
|
|
47937
|
+
Color:g_JSChartResource.RectSelect.Mark.Color,
|
|
47938
|
+
Size:g_JSChartResource.RectSelect.Mark.Size,
|
|
47939
|
+
IsShow:false,
|
|
47940
|
+
Position: { Index:g_JSChartResource.RectSelect.Mark.Position.Index, Top:g_JSChartResource.RectSelect.Mark.Position.Top }
|
|
47941
|
+
}
|
|
47942
|
+
|
|
47611
47943
|
this.FirstPoint;
|
|
47612
47944
|
this.SecondPoint;
|
|
47613
47945
|
this.CenterPoint;
|
|
@@ -47655,6 +47987,17 @@ function RectSelectPaint()
|
|
|
47655
47987
|
if (IFrameSplitOperator.IsNumber(item.Position)) this.ShowRangeText.Position=item.Position;
|
|
47656
47988
|
if (IFrameSplitOperator.IsNumber(item.SubPosition)) this.ShowRangeText.SubPosition=item.SubPosition;
|
|
47657
47989
|
}
|
|
47990
|
+
|
|
47991
|
+
if (option.Mark)
|
|
47992
|
+
{
|
|
47993
|
+
var item=option.Mark;
|
|
47994
|
+
if (IFrameSplitOperator.IsBool(item.IsShow)) this.MarkConfig.IsShow=item.IsShow;
|
|
47995
|
+
if (item.Position)
|
|
47996
|
+
{
|
|
47997
|
+
if (IFrameSplitOperator.IsNumber(item.Position.Index)) this.MarkConfig.Position.Index=item.Position.Index;
|
|
47998
|
+
if (item.Position.Top) this.MarkConfig.Position.Top=item.Position.Top;
|
|
47999
|
+
}
|
|
48000
|
+
}
|
|
47658
48001
|
}
|
|
47659
48002
|
}
|
|
47660
48003
|
|
|
@@ -48127,6 +48470,7 @@ function RectSelectPaint()
|
|
|
48127
48470
|
|
|
48128
48471
|
this.DrawLines(aryLines);
|
|
48129
48472
|
this.DrawArea(startPoint, endPoint, startDate, startEnd, this.AreaColor);
|
|
48473
|
+
this.DrawMark(startPoint, endPoint);
|
|
48130
48474
|
|
|
48131
48475
|
if (this.SubClient && this.SubClient.Start && this.SubClient.End)
|
|
48132
48476
|
{
|
|
@@ -48360,6 +48704,45 @@ function RectSelectPaint()
|
|
|
48360
48704
|
if (IFrameSplitOperator.IsNumber(type)) this.DragRect.push( {Rect:rtArea, Type:type} );
|
|
48361
48705
|
}
|
|
48362
48706
|
}
|
|
48707
|
+
|
|
48708
|
+
this.DrawMark=function(startPoint,endPoint)
|
|
48709
|
+
{
|
|
48710
|
+
if (!startPoint ||!endPoint) return;
|
|
48711
|
+
|
|
48712
|
+
if (!this.ChartFrame || !this.ChartFrame.SubFrame) return;
|
|
48713
|
+
var subFrame=this.ChartFrame.SubFrame[0].Frame;
|
|
48714
|
+
if (!subFrame) return;
|
|
48715
|
+
|
|
48716
|
+
if (!this.MarkConfig) return;
|
|
48717
|
+
var config=this.MarkConfig;
|
|
48718
|
+
if (!config.IsShow) return;
|
|
48719
|
+
|
|
48720
|
+
var font=`${config.Size}px ${config.Family}`;
|
|
48721
|
+
this.Canvas.font=font;
|
|
48722
|
+
var top=null;
|
|
48723
|
+
switch(config.Position.Top)
|
|
48724
|
+
{
|
|
48725
|
+
case "TopEx":
|
|
48726
|
+
top=subFrame.ChartBorder.GetTopEx();
|
|
48727
|
+
break;
|
|
48728
|
+
case "Top":
|
|
48729
|
+
top=subFrame.ChartBorder.GetTop();
|
|
48730
|
+
break;
|
|
48731
|
+
case "TopTitle":
|
|
48732
|
+
top=subFrame.ChartBorder.GetTopTitle();
|
|
48733
|
+
break;
|
|
48734
|
+
default:
|
|
48735
|
+
return;
|
|
48736
|
+
}
|
|
48737
|
+
|
|
48738
|
+
var xText=startPoint.X;
|
|
48739
|
+
var yText=top;
|
|
48740
|
+
|
|
48741
|
+
this.Canvas.textAlign="center";
|
|
48742
|
+
this.Canvas.textBaseline="bottom";
|
|
48743
|
+
this.Canvas.fillStyle=config.Color;
|
|
48744
|
+
this.Canvas.fillText(config.Text,xText,yText);
|
|
48745
|
+
}
|
|
48363
48746
|
}
|
|
48364
48747
|
|
|
48365
48748
|
//鼠标拖动选中区域
|
|
@@ -72488,6 +72871,8 @@ function JSChartResource()
|
|
|
72488
72871
|
RangeTextSubColor:"rgb(255,255,255)",
|
|
72489
72872
|
RangeTextSubFont:12*GetDevicePixelRatio() +"px 微软雅黑",
|
|
72490
72873
|
RangeTextSubBGColor:'rgb(54,54,54)',
|
|
72874
|
+
|
|
72875
|
+
Mark:{ Family:'iconfont', Text:'\ue695' , Color:'rgb(250,0,0)', Size:15*GetDevicePixelRatio(), Position:{ Index:0, Top:"TopEx" } }
|
|
72491
72876
|
}
|
|
72492
72877
|
|
|
72493
72878
|
//选中图形
|
|
@@ -73344,6 +73729,20 @@ function JSChartResource()
|
|
|
73344
73729
|
if (item.RangeTextSubColor) this.RectSelect.RangeTextSubColor=item.RangeTextSubColor;
|
|
73345
73730
|
if (item.RangeTextSubFont) this.RectSelect.RangeTextSubFont=item.RangeTextSubFont;
|
|
73346
73731
|
if (item.RangeTextSubBGColor) this.RectSelect.RangeTextSubBGColor=item.RangeTextSubBGColor;
|
|
73732
|
+
|
|
73733
|
+
if (item.Mark)
|
|
73734
|
+
{
|
|
73735
|
+
var subItem=item.Mark;
|
|
73736
|
+
if (subItem.Family) this.RectSelect.Mark.Family=subItem.Family;
|
|
73737
|
+
if (subItem.Text) this.RectSelect.Mark.Text=subItem.Text;
|
|
73738
|
+
if (subItem.Color) this.RectSelect.Mark.Color=subItem.Color;
|
|
73739
|
+
if (IFrameSplitOperator.IsNumber(subItem.Size)) this.RectSelect.Mark.Size=subItem.Size;
|
|
73740
|
+
if (subItem.Position)
|
|
73741
|
+
{
|
|
73742
|
+
if (subItem.Position.Top) this.RectSelect.Mark.Position.Top=subItem.Position.Top;
|
|
73743
|
+
if (IFrameSplitOperator.IsNumber(subItem.Position.Index)) this.RectSelect.Mark.Position.Index=subItem.Position.Index;
|
|
73744
|
+
}
|
|
73745
|
+
}
|
|
73347
73746
|
}
|
|
73348
73747
|
|
|
73349
73748
|
if (style.RectDrag)
|
|
@@ -75919,6 +76318,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
75919
76318
|
if (!this.PopMinuteChart) return;
|
|
75920
76319
|
if (!data.Tooltip || !data.Chart) return;
|
|
75921
76320
|
|
|
76321
|
+
var pixelRatio=GetDevicePixelRatio();
|
|
75922
76322
|
var rtClient=this.UIElement.getBoundingClientRect();
|
|
75923
76323
|
var rtScroll=GetScrollPosition();
|
|
75924
76324
|
|
|
@@ -75928,7 +76328,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
75928
76328
|
var date=data.Tooltip.Data.Date;
|
|
75929
76329
|
var symbol=data.Chart.Symbol;
|
|
75930
76330
|
|
|
75931
|
-
this.PopMinuteChart.Show({ Date:date, Symbol:symbol, Data:data.Tooltip.Data }, x,y);
|
|
76331
|
+
this.PopMinuteChart.Show({ Date:date, Symbol:symbol, Data:data.Tooltip.Data }, x/pixelRatio,y/pixelRatio);
|
|
75932
76332
|
}
|
|
75933
76333
|
|
|
75934
76334
|
|
|
@@ -80529,6 +80929,7 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
80529
80929
|
var klineType=klineChart.DrawType;
|
|
80530
80930
|
var bThinAKBar=klineChart.IsThinAKBar;
|
|
80531
80931
|
var priceGap=klineChart.PriceGap; //缺口配置信息
|
|
80932
|
+
var infoPosition=klineChart.InfoPosition;
|
|
80532
80933
|
var coordinateType=null, yCoordinateType=null; //坐标类型
|
|
80533
80934
|
var mainFrame=null;
|
|
80534
80935
|
if (this.Frame.SubFrame[0] && this.Frame.SubFrame[0].Frame) mainFrame=this.Frame.SubFrame[0].Frame;
|
|
@@ -80638,6 +81039,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
80638
81039
|
{ Name:"大宗交易", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["大宗交易", !aryKLineInfo.includes("BlockTrading")]}, Checked:aryKLineInfo.includes("BlockTrading") },
|
|
80639
81040
|
{ Name:"龙虎榜", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["龙虎榜", !aryKLineInfo.includes("TradeDetail")]}, Checked:aryKLineInfo.includes("TradeDetail") },
|
|
80640
81041
|
{ Name:"互动易", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_KLINE_INFO_ID, Args:["互动易", !aryKLineInfo.includes("InvestorInfo")]}, Checked:aryKLineInfo.includes("InvestorInfo") },
|
|
81042
|
+
{ Name:JSPopMenu.SEPARATOR_LINE_NAME },
|
|
81043
|
+
{
|
|
81044
|
+
Name:"显示位置",
|
|
81045
|
+
SubMenu:
|
|
81046
|
+
[
|
|
81047
|
+
{ Name:"底部", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INFO_POSITION_ID, Args:[1]}, Checked:infoPosition===1 },
|
|
81048
|
+
{ Name:"K线上", Data:{ ID: JSCHART_MENU_ID.CMD_CHANGE_INFO_POSITION_ID, Args:[0]}, Checked:infoPosition===0 },
|
|
81049
|
+
]
|
|
81050
|
+
},
|
|
81051
|
+
|
|
80641
81052
|
]
|
|
80642
81053
|
},
|
|
80643
81054
|
{
|
|
@@ -83248,6 +83659,8 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
83248
83659
|
if (end>=count) end=count-1;
|
|
83249
83660
|
var endItem=data.Data[end];
|
|
83250
83661
|
|
|
83662
|
+
if (!startItem || !endItem) return;
|
|
83663
|
+
|
|
83251
83664
|
JSConsole.Chart.Log('[MinuteChartContainer::UpdateSelectRect]',startItem,endItem);
|
|
83252
83665
|
paint.SetPoint(startItem, { Index:0 });
|
|
83253
83666
|
paint.SetPoint(endItem, { Index:1 });
|
|
@@ -92285,56 +92698,29 @@ function PforecastInfo()
|
|
|
92285
92698
|
|
|
92286
92699
|
if (this.NetworkFilter(hqChart, obj)) return; //已被上层替换,不调用默认的网络请求
|
|
92287
92700
|
|
|
92288
|
-
|
|
92289
|
-
JSNetwork.HttpRequest({
|
|
92290
|
-
url: url,
|
|
92291
|
-
data:
|
|
92292
|
-
{
|
|
92293
|
-
"field": ["pforecast.type","pforecast.reportdate","fweek"],
|
|
92294
|
-
"condition":
|
|
92295
|
-
[
|
|
92296
|
-
{"item":["pforecast.reportdate","int32","gte",this.StartDate]}
|
|
92297
|
-
],
|
|
92298
|
-
"symbol": [param.HQChart.Symbol],
|
|
92299
|
-
"start":0,
|
|
92300
|
-
"end":this.MaxRequestDataCount,
|
|
92301
|
-
},
|
|
92302
|
-
type:"post",
|
|
92303
|
-
dataType: "json",
|
|
92304
|
-
async:true,
|
|
92305
|
-
success: function (recvData)
|
|
92306
|
-
{
|
|
92307
|
-
self.RecvData(recvData,param);
|
|
92308
|
-
}
|
|
92309
|
-
});
|
|
92310
|
-
|
|
92701
|
+
console.warn("[PforecastInfo::RequestData] NetworkFilter error.");
|
|
92311
92702
|
return true;
|
|
92312
92703
|
}
|
|
92313
92704
|
|
|
92314
92705
|
this.RecvData=function(recvData,param)
|
|
92315
92706
|
{
|
|
92316
|
-
if (recvData.
|
|
92317
|
-
if (recvData.stock[0].stockday.length<=0) return;
|
|
92707
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(recvData.report)) return;
|
|
92318
92708
|
|
|
92319
|
-
for(var i
|
|
92709
|
+
for(var i=0; i<recvData.report.length; ++i)
|
|
92320
92710
|
{
|
|
92321
|
-
var item=recvData.
|
|
92322
|
-
|
|
92711
|
+
var item=recvData.report[i];
|
|
92712
|
+
var infoData=new KLineInfoData();
|
|
92713
|
+
infoData.Date= item.date;
|
|
92714
|
+
infoData.Title=item.title;
|
|
92715
|
+
infoData.InfoType=KLINE_INFO_TYPE.PFORECAST;
|
|
92716
|
+
infoData.ExtendData={ Type:item.title, ReportDate:item.reportdate}
|
|
92717
|
+
if(item.fweek) //未来周涨幅
|
|
92323
92718
|
{
|
|
92324
|
-
|
|
92325
|
-
|
|
92326
|
-
infoData.
|
|
92327
|
-
infoData.Title=dataItem.type;
|
|
92328
|
-
infoData.InfoType=KLINE_INFO_TYPE.PFORECAST;
|
|
92329
|
-
infoData.ExtendData={ Type:dataItem.type, ReportDate:dataItem.reportdate}
|
|
92330
|
-
if(item.fweek) //未来周涨幅
|
|
92331
|
-
{
|
|
92332
|
-
infoData.ExtendData.FWeek={};
|
|
92333
|
-
if (item.fweek.week1!=null) infoData.ExtendData.FWeek.Week1=item.fweek.week1;
|
|
92334
|
-
if (item.fweek.week4!=null) infoData.ExtendData.FWeek.Week4=item.fweek.week4;
|
|
92335
|
-
}
|
|
92336
|
-
this.Data.push(infoData);
|
|
92719
|
+
infoData.ExtendData.FWeek={};
|
|
92720
|
+
if (item.fweek.week1!=null) infoData.ExtendData.FWeek.Week1=item.fweek.week1;
|
|
92721
|
+
if (item.fweek.week4!=null) infoData.ExtendData.FWeek.Week4=item.fweek.week4;
|
|
92337
92722
|
}
|
|
92723
|
+
this.Data.push(infoData);
|
|
92338
92724
|
}
|
|
92339
92725
|
|
|
92340
92726
|
param.HQChart.UpdataChartInfo();
|
|
@@ -92366,34 +92752,15 @@ function ResearchInfo()
|
|
|
92366
92752
|
|
|
92367
92753
|
if (this.NetworkFilter(hqChart, obj)) return; //已被上层替换,不调用默认的网络请求
|
|
92368
92754
|
|
|
92369
|
-
|
|
92370
|
-
JSNetwork.HttpRequest({
|
|
92371
|
-
url: url,
|
|
92372
|
-
data:
|
|
92373
|
-
{
|
|
92374
|
-
"filed": ["releasedate","researchdate","level","symbol","id",'type'],
|
|
92375
|
-
"querydate":{"StartDate":this.StartDate,"EndDate":this.GetToday()},
|
|
92376
|
-
"symbol": [param.HQChart.Symbol],
|
|
92377
|
-
"start":0,
|
|
92378
|
-
"end":this.MaxRequestDataCount,
|
|
92379
|
-
},
|
|
92380
|
-
type:"post",
|
|
92381
|
-
dataType: "json",
|
|
92382
|
-
async:true,
|
|
92383
|
-
success: function (recvData)
|
|
92384
|
-
{
|
|
92385
|
-
self.RecvData(recvData,param);
|
|
92386
|
-
}
|
|
92387
|
-
});
|
|
92388
|
-
|
|
92755
|
+
console.warn("[ResearchInfo::RequestData] NetworkFilter error.");
|
|
92389
92756
|
return true;
|
|
92390
92757
|
}
|
|
92391
92758
|
|
|
92392
92759
|
this.RecvData=function(recvData,param)
|
|
92393
92760
|
{
|
|
92394
|
-
if (recvData.list
|
|
92761
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(recvData.list)) return;
|
|
92395
92762
|
|
|
92396
|
-
for(var i
|
|
92763
|
+
for(var i=0;i<recvData.list.length; ++i)
|
|
92397
92764
|
{
|
|
92398
92765
|
var item=recvData.list[i];
|
|
92399
92766
|
var infoData=new KLineInfoData();
|
|
@@ -93287,204 +93654,206 @@ function ChangeIndexDialog(divElement)
|
|
|
93287
93654
|
}
|
|
93288
93655
|
}
|
|
93289
93656
|
|
|
93290
|
-
|
|
93291
|
-
function KLineInfoTooltip(divElement)
|
|
93657
|
+
function MinuteSelectRectDialog(divElement)
|
|
93292
93658
|
{
|
|
93293
93659
|
this.newMethod=IDivDialog; //派生
|
|
93294
93660
|
this.newMethod(divElement);
|
|
93295
93661
|
delete this.newMethod;
|
|
93296
93662
|
|
|
93297
|
-
this.
|
|
93298
|
-
this.
|
|
93299
|
-
this.
|
|
93663
|
+
this.SelectData;
|
|
93664
|
+
this.Dialog;
|
|
93665
|
+
this.HQChart;
|
|
93666
|
+
this.RectSelectPaint;
|
|
93300
93667
|
|
|
93668
|
+
//隐藏窗口
|
|
93669
|
+
this.Close=function()
|
|
93670
|
+
{
|
|
93671
|
+
if (this.Dialog)
|
|
93672
|
+
{
|
|
93673
|
+
this.DivElement.removeChild(this.Dialog);
|
|
93674
|
+
this.Dialog=null;
|
|
93675
|
+
this.ID=null;
|
|
93676
|
+
}
|
|
93677
|
+
|
|
93678
|
+
if (this.RectSelectPaint) this.RectSelectPaint.PreventClose=false;
|
|
93679
|
+
}
|
|
93680
|
+
|
|
93681
|
+
//创建
|
|
93301
93682
|
this.Create=function()
|
|
93302
93683
|
{
|
|
93303
93684
|
this.ID=Guid();
|
|
93304
|
-
|
|
93305
93685
|
var div=document.createElement('div');
|
|
93306
|
-
div.className='jchart-
|
|
93686
|
+
div.className='jchart-select-statistics-box';
|
|
93307
93687
|
div.id=this.ID;
|
|
93308
|
-
div.innerHTML=
|
|
93688
|
+
div.innerHTML=
|
|
93689
|
+
"<div class='parameter jchart-select-section'>\
|
|
93690
|
+
<div class='parameter-header'>\
|
|
93691
|
+
<span>分时图区间统计</span>\
|
|
93692
|
+
<strong id='close' class='icon iconfont icon-close'></strong>\
|
|
93693
|
+
</div>\
|
|
93694
|
+
<div class='parameter-content'>统计数据</div>\
|
|
93695
|
+
<div class='parameter-footer'>\
|
|
93696
|
+
<button id='close' class='submit' >确定</button>\
|
|
93697
|
+
</div>\
|
|
93698
|
+
</div>";
|
|
93699
|
+
|
|
93309
93700
|
this.DivElement.appendChild(div);
|
|
93310
|
-
|
|
93701
|
+
this.Dialog=div;
|
|
93311
93702
|
|
|
93703
|
+
//关闭按钮
|
|
93704
|
+
$("#"+this.ID+" #close").click(
|
|
93705
|
+
{
|
|
93706
|
+
divBox:this,
|
|
93707
|
+
},
|
|
93708
|
+
function(event)
|
|
93709
|
+
{
|
|
93710
|
+
event.data.divBox.Close();
|
|
93711
|
+
});
|
|
93712
|
+
}
|
|
93312
93713
|
|
|
93313
|
-
this.
|
|
93714
|
+
this.BindData=function()
|
|
93314
93715
|
{
|
|
93315
|
-
var
|
|
93316
|
-
var
|
|
93317
|
-
|
|
93716
|
+
var hqData=this.SelectData.Data;
|
|
93717
|
+
var start=this.SelectData.Start;
|
|
93718
|
+
var end=this.SelectData.End;
|
|
93719
|
+
this.HQChart.UpdateSelectRect(start,end);
|
|
93720
|
+
if (this.RectSelectPaint) this.RectSelectPaint.PreventClose=true;
|
|
93721
|
+
|
|
93722
|
+
var showData=
|
|
93723
|
+
{
|
|
93724
|
+
Open:0,Close:0,High:0,Low:0, //起始价格, 结束价格, 最高, 最低
|
|
93725
|
+
Vol:0, Amount:0,
|
|
93726
|
+
Date:
|
|
93727
|
+
{
|
|
93728
|
+
Start:{Time:null, Date:null },
|
|
93729
|
+
End:{ Time:null, Date:null }
|
|
93730
|
+
},
|
|
93731
|
+
Count:0,
|
|
93732
|
+
}
|
|
93733
|
+
|
|
93734
|
+
for(var i=start; i<=end && i<hqData.Data.length; ++i)
|
|
93318
93735
|
{
|
|
93319
|
-
var item=
|
|
93320
|
-
|
|
93321
|
-
if(infoType==KLINE_INFO_TYPE.PFORECAST)
|
|
93322
|
-
{
|
|
93323
|
-
var reportDate=item.ExtendData.ReportDate;
|
|
93324
|
-
var year=parseInt(reportDate/10000); //年份
|
|
93325
|
-
var day=reportDate%10000; //比较 这个去掉年份的日期
|
|
93326
|
-
var reportType;
|
|
93327
|
-
if(day == 1231){
|
|
93328
|
-
reportType = "年报"
|
|
93329
|
-
}else if(day == 331){
|
|
93330
|
-
reportType = "一季度报"
|
|
93331
|
-
}else if(day == 630){
|
|
93332
|
-
reportType = "半年度报"
|
|
93333
|
-
}else if(day == 930){
|
|
93334
|
-
reportType = "三季度报"
|
|
93335
|
-
}
|
|
93336
|
-
|
|
93337
|
-
var weekData="";
|
|
93338
|
-
if (item.ExtendData.FWeek)
|
|
93339
|
-
{
|
|
93340
|
-
if (item.ExtendData.FWeek.Week1!=null) weekData+="一周后涨幅:<i class='increase' style='color:"+this.GetColor(item.ExtendData.FWeek.Week1.toFixed(2))+"'>"+ item.ExtendData.FWeek.Week1.toFixed(2)+"%</i>";
|
|
93341
|
-
if (item.ExtendData.FWeek.Week4!=null) weekData+=" 四周后涨幅:<i class='increase' style='color:"+this.GetColor(item.ExtendData.FWeek.Week4.toFixed(2))+"'>"+ item.ExtendData.FWeek.Week4.toFixed(2)+"%</i>";
|
|
93342
|
-
if (weekData.length>0) weekData="<br/> <i class='prorecast-week'>"+weekData+"</i>";
|
|
93343
|
-
}
|
|
93344
|
-
var strDate=item.Date.toString();
|
|
93345
|
-
var strNew=strDate.substring(0,4)+"-"+strDate.substring(4,6)+"-"+strDate.substring(6,8); //转换时间格式
|
|
93346
|
-
strText+="<span>"+strNew+" "+year+reportType+item.Title+" "+weekData+"</span>";
|
|
93347
|
-
|
|
93348
|
-
}
|
|
93349
|
-
else if (infoType==KLINE_INFO_TYPE.RESEARCH) //调研单独处理
|
|
93350
|
-
{
|
|
93351
|
-
var levels=item.ExtendData.Level;
|
|
93352
|
-
var recPerson=[];
|
|
93353
|
-
if(levels.length==0){
|
|
93354
|
-
recPerson = "<i>无</i>"
|
|
93355
|
-
}else{
|
|
93356
|
-
for(var j in levels)
|
|
93357
|
-
{
|
|
93358
|
-
if(levels[j]==0){
|
|
93359
|
-
recPerson+="<i style='color:#00a0e9'>证券代表 </i>";
|
|
93360
|
-
}else if(levels[j]==1){
|
|
93361
|
-
recPerson+="<i>董秘 </i>";
|
|
93362
|
-
}else if(levels[j]==2){
|
|
93363
|
-
recPerson+="<i style='color:#00a0e9'>总经理 </i>";
|
|
93364
|
-
}else if(levels[j]==3){
|
|
93365
|
-
recPerson+="<i style='color:#00a0e9'>董事长 </i>";
|
|
93366
|
-
}
|
|
93367
|
-
}
|
|
93368
|
-
}
|
|
93369
|
-
var strDate=item.Date.toString();
|
|
93370
|
-
var strNew=strDate.substring(0,4)+"-"+strDate.substring(4,6)+"-"+strDate.substring(6,8); //转换时间格式
|
|
93371
|
-
strText+="<span>"+strNew+" 接待: "+recPerson+"</span>";
|
|
93372
|
-
}else if(infoType==KLINE_INFO_TYPE.BLOCKTRADING)
|
|
93373
|
-
{
|
|
93374
|
-
var showPriceInfo = item.ExtendData;
|
|
93375
|
-
var strDate=item.Date.toString();
|
|
93376
|
-
var strNew=strDate.substring(0,4)+"-"+strDate.substring(4,6)+"-"+strDate.substring(6,8); //转换时间格式
|
|
93377
|
-
strText+="<span><i class='date-tipbox'>"+strNew+"</i> <i class='tipBoxTitle'>成交价: "+showPriceInfo.Price.toFixed(2)+"</i><i class='tipBoxTitle'>收盘价: "+showPriceInfo.ClosePrice.toFixed(2)+
|
|
93378
|
-
"</i><br/><i class='rate-discount tipBoxTitle'>溢折价率: <strong style='color:"+ this.GetColor(showPriceInfo.Premium.toFixed(2))+"'>"+
|
|
93379
|
-
showPriceInfo.Premium.toFixed(2)+"%</strong></i><i class='tipBoxTitle'>成交量(万股): "+showPriceInfo.Vol.toFixed(2)+"</i></span>";
|
|
93380
|
-
}
|
|
93381
|
-
else if (infoType==KLINE_INFO_TYPE.TRADEDETAIL) //龙虎榜
|
|
93382
|
-
{
|
|
93383
|
-
/*var detail=[
|
|
93384
|
-
"日价格涨幅偏离值达到9.89%",
|
|
93385
|
-
"日价格涨幅偏离值达格涨幅偏离值达格涨幅偏离值达到9.89%"
|
|
93386
|
-
]*/
|
|
93387
|
-
var detail=item.ExtendData.Detail;
|
|
93388
|
-
//格式:日期 上榜原因: detail[0].TypeExplain
|
|
93389
|
-
// detail[1].TypeExplain
|
|
93390
|
-
// 一周后涨幅: xx 四周后涨幅: xx
|
|
93391
|
-
var str=strOld.toString();
|
|
93392
|
-
var strNew=str.substring(0,4)+"-"+str.substring(4,6)+"-"+str.substring(6,8); //转换时间格式
|
|
93393
|
-
var reasons = [];
|
|
93394
|
-
for(var i in detail){
|
|
93395
|
-
reasons += "<i>"+detail[i].TypeExplain+"</i><br/>"
|
|
93396
|
-
// reasons += detail[i] + "<br/>"
|
|
93397
|
-
}
|
|
93398
|
-
|
|
93399
|
-
strText = "<span><i class='trade-time'>"+strNew+" 上榜原因: </i><i class='reason-list'>"+reasons+"</i><br/><i class='trade-detall'>一周后涨幅: <strong style='color:"+
|
|
93400
|
-
this.GetColor(item.ExtendData.FWeek.Week1.toFixed(2))+"'>"+ item.ExtendData.FWeek.Week1.toFixed(2)+
|
|
93401
|
-
"%</strong> 四周后涨幅: <strong style='color:"+this.GetColor(item.ExtendData.FWeek.Week4.toFixed(2))+";'>"+
|
|
93402
|
-
item.ExtendData.FWeek.Week4.toFixed(2)+"%</strong></i></span>";
|
|
93403
|
-
}
|
|
93404
|
-
else
|
|
93736
|
+
var item=hqData.Data[i];
|
|
93737
|
+
if (i==start)
|
|
93405
93738
|
{
|
|
93406
|
-
|
|
93407
|
-
|
|
93408
|
-
|
|
93739
|
+
showData.Date.Start.Date=item.Date;
|
|
93740
|
+
showData.Date.Start.Time=item.Time;
|
|
93741
|
+
showData.Open=item.Close;
|
|
93742
|
+
showData.High=item.High;
|
|
93743
|
+
showData.Low=item.Low;
|
|
93409
93744
|
}
|
|
93745
|
+
|
|
93746
|
+
showData.Date.End.Date=item.Date;
|
|
93747
|
+
showData.Date.End.Time=item.Time;
|
|
93748
|
+
showData.Close=item.Close;
|
|
93749
|
+
showData.Vol+=item.Vol;
|
|
93750
|
+
showData.Amount+=item.Amount;
|
|
93751
|
+
++showData.Count;
|
|
93752
|
+
if (showData.High<item.High) showData.High=item.High;
|
|
93753
|
+
if(showData.Low>item.Low) showData.Low=item.Low;
|
|
93410
93754
|
}
|
|
93411
|
-
var titleInnerBox = $(".title-length").html(strText);
|
|
93412
93755
|
|
|
93413
|
-
|
|
93756
|
+
if (showData.Count<=0) return false;
|
|
93414
93757
|
|
|
93415
|
-
|
|
93416
|
-
if(
|
|
93417
|
-
|
|
93758
|
+
if (showData.Vol>0) showData.AvPrice=showData.Amount/showData.Vol; //均价
|
|
93759
|
+
if (showData.Open>0)
|
|
93760
|
+
{
|
|
93761
|
+
showData.Increase = (showData.Close - showData.Open) / showData.Open *100; //区间涨幅
|
|
93762
|
+
showData.Amplitude = (showData.High - showData.Low) / showData.Open * 100; //区间振幅
|
|
93418
93763
|
}
|
|
93419
|
-
}
|
|
93420
93764
|
|
|
93765
|
+
// JSConsole.Chart.Log('[KLineSelectRectDialog::BindData]', showData);
|
|
93766
|
+
var defaultfloatPrecision=GetfloatPrecision(this.SelectData.Symbol);
|
|
93767
|
+
var startDate=IFrameSplitOperator.FormatDateString(showData.Date.Start.Date);
|
|
93768
|
+
var endDate=IFrameSplitOperator.FormatDateString(showData.Date.End.Date);
|
|
93769
|
+
startDate+=' '+IFrameSplitOperator.FormatTimeString(showData.Date.Start.Time,"HH:MM");
|
|
93770
|
+
endDate+=" "+IFrameSplitOperator.FormatTimeString(showData.Date.End.Time,"HH:MM");
|
|
93771
|
+
|
|
93772
|
+
var startLeftClass="",startRightClass="",endLeftClass="",endRightClass="";
|
|
93773
|
+
if(start<=0) startLeftClass = "BtnBackground";
|
|
93774
|
+
if(start >= end) {
|
|
93775
|
+
startRightClass = "BtnBackground";
|
|
93776
|
+
endLeftClass = "BtnBackground";
|
|
93777
|
+
}
|
|
93778
|
+
if(end >= hqData.Data.length - 1) endRightClass = "BtnBackground";
|
|
93421
93779
|
|
|
93422
|
-
|
|
93423
|
-
|
|
93424
|
-
|
|
93425
|
-
|
|
93426
|
-
|
|
93780
|
+
var div=document.createElement('div');
|
|
93781
|
+
div.className='jchart-select-table-right';
|
|
93782
|
+
div.innerHTML=
|
|
93783
|
+
'<div class="jchart-select-date">\n' +
|
|
93784
|
+
' <span>开始: '+ startDate +'<i class="start-date-left '+ startLeftClass +'"><</i><i class="start-date-right '+ startRightClass +'">></i></span>\n' +
|
|
93785
|
+
' <span>结束: '+ endDate +'<i class="end-date-left '+ endLeftClass +'"><</i><i class="end-date-right '+ endRightClass +'">></i></span>\n' +
|
|
93786
|
+
' <span>总个数: '+ showData.Count +'</span>\n' +
|
|
93787
|
+
' </div>\n' +
|
|
93788
|
+
' <table>\n' +
|
|
93789
|
+
' <tr><td><strong>起始价: </strong><span>'+ showData.Open.toFixed(defaultfloatPrecision) +'</span></td>' +
|
|
93790
|
+
' <td><strong>终止价: </strong><span>'+ showData.Close.toFixed(defaultfloatPrecision) +'</span></td>' +
|
|
93791
|
+
' <td><strong>均价: </strong><span>'+ (IFrameSplitOperator.IsNumber(showData.AvPrice) ? showData.AvPrice.toFixed(defaultfloatPrecision):"--.--") +'</span></td></tr>\n' +
|
|
93792
|
+
' <tr><td><strong>最低价: </strong><span>'+ showData.Low.toFixed(defaultfloatPrecision) +'</span></td>' +
|
|
93793
|
+
' <td><strong>最高价: </strong><span>'+ showData.High.toFixed(defaultfloatPrecision) +'</span></td>' +
|
|
93794
|
+
' <td><strong>涨跌幅: </strong><span class="'+ IFrameSplitOperator.FormatValueColor(showData.Increase) +'">'+ showData.Increase.toFixed(2) +'%</span></td></tr>\n' +
|
|
93795
|
+
' <tr><td><strong>振幅: </strong><span>'+ showData.Amplitude.toFixed(2) +'%</span></td>' +
|
|
93796
|
+
' <td><strong>成交量: </strong><span>'+ IFrameSplitOperator.FormatValueString(showData.Vol,2) +'股</span></td>' +
|
|
93797
|
+
' <td><strong>金额: </strong><span>'+ IFrameSplitOperator.FormatValueString(showData.Amount,2) +'元</span></td></tr>\n' +
|
|
93798
|
+
' </table>';
|
|
93799
|
+
|
|
93800
|
+
$(".parameter-content").html(div);
|
|
93801
|
+
this.BindEvent();
|
|
93802
|
+
|
|
93803
|
+
return true;
|
|
93427
93804
|
}
|
|
93428
93805
|
|
|
93429
|
-
|
|
93430
|
-
this.Show=function(left,top,width,height,tooltip,times)
|
|
93806
|
+
this.BindEvent = function ()
|
|
93431
93807
|
{
|
|
93432
|
-
|
|
93433
|
-
|
|
93434
|
-
|
|
93435
|
-
|
|
93436
|
-
|
|
93808
|
+
var _self = this;
|
|
93809
|
+
if(_self.SelectData.Start > 0){
|
|
93810
|
+
$(".jchart-select-date .start-date-left").click(function () {
|
|
93811
|
+
_self.SelectData.Start--;
|
|
93812
|
+
_self.BindData();
|
|
93813
|
+
_self.HQChart.UpdateSelectRect(_self.SelectData.Start,_self.SelectData.End);
|
|
93814
|
+
})
|
|
93815
|
+
}
|
|
93816
|
+
if(_self.SelectData.Start < _self.SelectData.End){
|
|
93817
|
+
$(".jchart-select-date .start-date-right").click(function () {
|
|
93818
|
+
_self.SelectData.Start++;
|
|
93819
|
+
_self.BindData();
|
|
93820
|
+
_self.HQChart.UpdateSelectRect(_self.SelectData.Start,_self.SelectData.End);
|
|
93821
|
+
})
|
|
93822
|
+
$(".jchart-select-date .end-date-left").click(function () {
|
|
93823
|
+
_self.SelectData.End--;
|
|
93824
|
+
_self.BindData();
|
|
93825
|
+
_self.HQChart.UpdateSelectRect(_self.SelectData.Start,_self.SelectData.End);
|
|
93826
|
+
})
|
|
93827
|
+
}
|
|
93828
|
+
if(_self.SelectData.End < _self.SelectData.Data.Data.length - 1){
|
|
93829
|
+
$(".jchart-select-date .end-date-right").click(function () {
|
|
93830
|
+
_self.SelectData.End++;
|
|
93831
|
+
_self.BindData();
|
|
93832
|
+
_self.HQChart.UpdateSelectRect(_self.SelectData.Start,_self.SelectData.End);
|
|
93833
|
+
})
|
|
93437
93834
|
}
|
|
93438
|
-
|
|
93439
|
-
if (this.TimeOut!=null)
|
|
93440
|
-
clearTimeout(this.TimeOut); //清空上一次的定时器,防止定时器不停的被调用
|
|
93441
|
-
|
|
93442
|
-
//设置窗口定时隐藏
|
|
93443
|
-
this.TimeOut=setTimeout(toolHide,times);
|
|
93444
|
-
|
|
93445
93835
|
}
|
|
93446
93836
|
|
|
93447
93837
|
|
|
93838
|
+
//显示
|
|
93448
93839
|
this.DoModal=function(event)
|
|
93449
93840
|
{
|
|
93450
93841
|
var chart=event.data.Chart;
|
|
93451
|
-
|
|
93452
|
-
|
|
93453
|
-
|
|
93454
|
-
|
|
93455
|
-
|
|
93456
|
-
if (
|
|
93457
|
-
|
|
93458
|
-
tooltip.BindInfoList(infoType,infoList);
|
|
93459
|
-
|
|
93460
|
-
var left=event.pageX;
|
|
93461
|
-
var top=event.pageY+10;
|
|
93462
|
-
var widthTool=380;
|
|
93463
|
-
var heightTool=$("#"+tooltip.ID).height();
|
|
93464
|
-
|
|
93465
|
-
if((left + widthTool) > chart.UIElement.getBoundingClientRect().width){
|
|
93466
|
-
left = left - widthTool;
|
|
93467
|
-
}
|
|
93468
|
-
/*if(top+heightTool>chart.UIElement.getBoundingClientRect().height){
|
|
93469
|
-
top=top-heightTool-45;
|
|
93470
|
-
}*/
|
|
93842
|
+
if (this.ID==null) this.Create(); //第1次 需要创建div
|
|
93843
|
+
this.SelectData=event.data.SelectData;
|
|
93844
|
+
this.RectSelectPaint=event.data.RectSelectPaint;
|
|
93845
|
+
this.HQChart=chart;
|
|
93846
|
+
this.HQChart.HideSelectRect();
|
|
93847
|
+
if (!this.BindData()) return;
|
|
93471
93848
|
|
|
93472
|
-
|
|
93849
|
+
this.Show(); //通过CSS居中显示
|
|
93473
93850
|
}
|
|
93474
93851
|
|
|
93475
|
-
//鼠标离开
|
|
93476
|
-
this.Leave=function(event)
|
|
93477
|
-
{
|
|
93478
|
-
var chart=event.data.Chart;
|
|
93479
|
-
var tooltip=chart.KLineInfoTooltip;
|
|
93480
|
-
|
|
93481
|
-
if(!tooltip || tooltip.ID==null) return;
|
|
93482
93852
|
|
|
93483
|
-
tooltip.Hide();
|
|
93484
|
-
}
|
|
93485
93853
|
}
|
|
93486
93854
|
|
|
93487
|
-
|
|
93855
|
+
//区间统计
|
|
93856
|
+
function KLineSelectRectDialog(divElement)
|
|
93488
93857
|
{
|
|
93489
93858
|
this.newMethod=IDivDialog; //派生
|
|
93490
93859
|
this.newMethod(divElement);
|
|
@@ -93502,7 +93871,6 @@ function MinuteSelectRectDialog(divElement)
|
|
|
93502
93871
|
{
|
|
93503
93872
|
this.DivElement.removeChild(this.Dialog);
|
|
93504
93873
|
this.Dialog=null;
|
|
93505
|
-
this.ID=null;
|
|
93506
93874
|
}
|
|
93507
93875
|
|
|
93508
93876
|
if (this.RectSelectPaint) this.RectSelectPaint.PreventClose=false;
|
|
@@ -93518,12 +93886,13 @@ function MinuteSelectRectDialog(divElement)
|
|
|
93518
93886
|
div.innerHTML=
|
|
93519
93887
|
"<div class='parameter jchart-select-section'>\
|
|
93520
93888
|
<div class='parameter-header'>\
|
|
93521
|
-
<span
|
|
93889
|
+
<span>区间统计</span>\
|
|
93522
93890
|
<strong id='close' class='icon iconfont icon-close'></strong>\
|
|
93523
93891
|
</div>\
|
|
93524
93892
|
<div class='parameter-content'>统计数据</div>\
|
|
93525
93893
|
<div class='parameter-footer'>\
|
|
93526
93894
|
<button id='close' class='submit' >确定</button>\
|
|
93895
|
+
<button id='match' class='submit' >形态匹配</button>\
|
|
93527
93896
|
</div>\
|
|
93528
93897
|
</div>";
|
|
93529
93898
|
|
|
@@ -93539,6 +93908,16 @@ function MinuteSelectRectDialog(divElement)
|
|
|
93539
93908
|
{
|
|
93540
93909
|
event.data.divBox.Close();
|
|
93541
93910
|
});
|
|
93911
|
+
|
|
93912
|
+
//形态匹配
|
|
93913
|
+
$("#"+this.ID+" #match").click(
|
|
93914
|
+
{
|
|
93915
|
+
divBox:this,
|
|
93916
|
+
},
|
|
93917
|
+
function(event)
|
|
93918
|
+
{
|
|
93919
|
+
event.data.divBox.KLineMatch();
|
|
93920
|
+
});
|
|
93542
93921
|
}
|
|
93543
93922
|
|
|
93544
93923
|
this.BindData=function()
|
|
@@ -93551,7 +93930,7 @@ function MinuteSelectRectDialog(divElement)
|
|
|
93551
93930
|
|
|
93552
93931
|
var showData=
|
|
93553
93932
|
{
|
|
93554
|
-
Open:0,Close:0,High:0,Low:0,
|
|
93933
|
+
Open:0,Close:0,High:0,Low:0, YClose:0,
|
|
93555
93934
|
Vol:0, Amount:0,
|
|
93556
93935
|
Date:
|
|
93557
93936
|
{
|
|
@@ -93559,6 +93938,7 @@ function MinuteSelectRectDialog(divElement)
|
|
|
93559
93938
|
End:{ Time:null, Date:null }
|
|
93560
93939
|
},
|
|
93561
93940
|
Count:0,
|
|
93941
|
+
KLine:{ Up:0,Down:0,Unchanged:0 } //阳线|阴线|平线
|
|
93562
93942
|
}
|
|
93563
93943
|
|
|
93564
93944
|
for(var i=start; i<=end && i<hqData.Data.length; ++i)
|
|
@@ -93568,9 +93948,10 @@ function MinuteSelectRectDialog(divElement)
|
|
|
93568
93948
|
{
|
|
93569
93949
|
showData.Date.Start.Date=item.Date;
|
|
93570
93950
|
showData.Date.Start.Time=item.Time;
|
|
93571
|
-
showData.Open=item.
|
|
93951
|
+
showData.Open=item.Open;
|
|
93572
93952
|
showData.High=item.High;
|
|
93573
93953
|
showData.Low=item.Low;
|
|
93954
|
+
showData.YClose=item.YClose;
|
|
93574
93955
|
}
|
|
93575
93956
|
|
|
93576
93957
|
showData.Date.End.Date=item.Date;
|
|
@@ -93581,21 +93962,32 @@ function MinuteSelectRectDialog(divElement)
|
|
|
93581
93962
|
++showData.Count;
|
|
93582
93963
|
if (showData.High<item.High) showData.High=item.High;
|
|
93583
93964
|
if(showData.Low>item.Low) showData.Low=item.Low;
|
|
93965
|
+
if (item.Close>item.Open) ++showData.KLine.Up;
|
|
93966
|
+
else if (item.Close<item.Open) ++showData.KLine.Down;
|
|
93967
|
+
else ++showData.KLine.Unchanged;
|
|
93584
93968
|
}
|
|
93585
93969
|
|
|
93586
93970
|
if (showData.Vol>0) showData.AvPrice=showData.Amount/showData.Vol; //均价
|
|
93587
|
-
if (item.
|
|
93971
|
+
if (item.YClose>0)
|
|
93588
93972
|
{
|
|
93589
|
-
showData.Increase = (showData.Close - showData.
|
|
93590
|
-
showData.Amplitude = (showData.High - showData.Low) / showData.
|
|
93973
|
+
showData.Increase = (showData.Close - showData.YClose) / showData.YClose *100; //涨幅
|
|
93974
|
+
showData.Amplitude = (showData.High - showData.Low) / showData.YClose * 100; //振幅
|
|
93591
93975
|
}
|
|
93592
93976
|
|
|
93593
93977
|
// JSConsole.Chart.Log('[KLineSelectRectDialog::BindData]', showData);
|
|
93594
93978
|
var defaultfloatPrecision=GetfloatPrecision(this.SelectData.Symbol);
|
|
93595
93979
|
var startDate=IFrameSplitOperator.FormatDateString(showData.Date.Start.Date);
|
|
93596
93980
|
var endDate=IFrameSplitOperator.FormatDateString(showData.Date.End.Date);
|
|
93597
|
-
|
|
93598
|
-
|
|
93981
|
+
if (ChartData.IsMinutePeriod(this.HQChart.Period))
|
|
93982
|
+
{
|
|
93983
|
+
startDate+=' '+IFrameSplitOperator.FormatTimeString(showData.Date.Start.Time,"HH:MM");
|
|
93984
|
+
endDate+=" "+IFrameSplitOperator.FormatTimeString(showData.Date.End.Time,"HH:MM");
|
|
93985
|
+
}
|
|
93986
|
+
else if (ChartData.IsSecondPeriod(this.HQChart.Period) || ChartData.IsTickPeriod(this.HQChart.Period))
|
|
93987
|
+
{
|
|
93988
|
+
startDate+=' '+IFrameSplitOperator.FormatTimeString(showData.Date.Start.Time,"HH:MM:SS");
|
|
93989
|
+
endDate+=" "+IFrameSplitOperator.FormatTimeString(showData.Date.End.Time,"HH:MM:SS");
|
|
93990
|
+
}
|
|
93599
93991
|
|
|
93600
93992
|
var startLeftClass="",startRightClass="",endLeftClass="",endRightClass="";
|
|
93601
93993
|
if(start<=0) startLeftClass = "BtnBackground";
|
|
@@ -93614,8 +94006,8 @@ function MinuteSelectRectDialog(divElement)
|
|
|
93614
94006
|
' <span>总个数: '+ showData.Count +'</span>\n' +
|
|
93615
94007
|
' </div>\n' +
|
|
93616
94008
|
' <table>\n' +
|
|
93617
|
-
' <tr><td><strong>起始价: </strong><span>'+ showData.
|
|
93618
|
-
' <td><strong
|
|
94009
|
+
' <tr><td><strong>起始价: </strong><span>'+ showData.YClose.toFixed(defaultfloatPrecision) +'</span></td>' +
|
|
94010
|
+
' <td><strong>最终价: </strong><span>'+ showData.Close.toFixed(defaultfloatPrecision) +'</span></td>' +
|
|
93619
94011
|
' <td><strong>均价: </strong><span>'+ (IFrameSplitOperator.IsNumber(showData.AvPrice) ? showData.AvPrice.toFixed(defaultfloatPrecision):"--.--") +'</span></td></tr>\n' +
|
|
93620
94012
|
' <tr><td><strong>最低价: </strong><span>'+ showData.Low.toFixed(defaultfloatPrecision) +'</span></td>' +
|
|
93621
94013
|
' <td><strong>最高价: </strong><span>'+ showData.High.toFixed(defaultfloatPrecision) +'</span></td>' +
|
|
@@ -93623,234 +94015,16 @@ function MinuteSelectRectDialog(divElement)
|
|
|
93623
94015
|
' <tr><td><strong>振幅: </strong><span>'+ showData.Amplitude.toFixed(2) +'%</span></td>' +
|
|
93624
94016
|
' <td><strong>成交量: </strong><span>'+ IFrameSplitOperator.FormatValueString(showData.Vol,2) +'股</span></td>' +
|
|
93625
94017
|
' <td><strong>金额: </strong><span>'+ IFrameSplitOperator.FormatValueString(showData.Amount,2) +'元</span></td></tr>\n' +
|
|
94018
|
+
' <tr><td><strong>阴线: </strong><span>'+ showData.KLine.Up +'</span></td>' +
|
|
94019
|
+
' <td><strong>阳线: </strong><span>'+ showData.KLine.Down +'</span></td>' +
|
|
94020
|
+
' <td><strong>平线: </strong><span>'+ showData.KLine.Unchanged +'</span></td></tr>\n' +
|
|
93626
94021
|
' </table>';
|
|
93627
94022
|
|
|
93628
94023
|
$(".parameter-content").html(div);
|
|
93629
94024
|
this.BindEvent();
|
|
93630
94025
|
}
|
|
93631
94026
|
|
|
93632
|
-
this.BindEvent = function ()
|
|
93633
|
-
{
|
|
93634
|
-
var _self = this;
|
|
93635
|
-
if(_self.SelectData.Start > 0){
|
|
93636
|
-
$(".jchart-select-date .start-date-left").click(function () {
|
|
93637
|
-
_self.SelectData.Start--;
|
|
93638
|
-
_self.BindData();
|
|
93639
|
-
_self.HQChart.UpdateSelectRect(_self.SelectData.Start,_self.SelectData.End);
|
|
93640
|
-
})
|
|
93641
|
-
}
|
|
93642
|
-
if(_self.SelectData.Start < _self.SelectData.End){
|
|
93643
|
-
$(".jchart-select-date .start-date-right").click(function () {
|
|
93644
|
-
_self.SelectData.Start++;
|
|
93645
|
-
_self.BindData();
|
|
93646
|
-
_self.HQChart.UpdateSelectRect(_self.SelectData.Start,_self.SelectData.End);
|
|
93647
|
-
})
|
|
93648
|
-
$(".jchart-select-date .end-date-left").click(function () {
|
|
93649
|
-
_self.SelectData.End--;
|
|
93650
|
-
_self.BindData();
|
|
93651
|
-
_self.HQChart.UpdateSelectRect(_self.SelectData.Start,_self.SelectData.End);
|
|
93652
|
-
})
|
|
93653
|
-
}
|
|
93654
|
-
if(_self.SelectData.End < _self.SelectData.Data.Data.length - 1){
|
|
93655
|
-
$(".jchart-select-date .end-date-right").click(function () {
|
|
93656
|
-
_self.SelectData.End++;
|
|
93657
|
-
_self.BindData();
|
|
93658
|
-
_self.HQChart.UpdateSelectRect(_self.SelectData.Start,_self.SelectData.End);
|
|
93659
|
-
})
|
|
93660
|
-
}
|
|
93661
|
-
}
|
|
93662
|
-
|
|
93663
|
-
|
|
93664
|
-
//显示
|
|
93665
|
-
this.DoModal=function(event)
|
|
93666
|
-
{
|
|
93667
|
-
var chart=event.data.Chart;
|
|
93668
|
-
if (this.ID==null) this.Create(); //第1次 需要创建div
|
|
93669
|
-
this.SelectData=event.data.SelectData;
|
|
93670
|
-
this.RectSelectPaint=event.data.RectSelectPaint;
|
|
93671
|
-
this.HQChart=chart;
|
|
93672
|
-
this.HQChart.HideSelectRect();
|
|
93673
|
-
this.BindData();
|
|
93674
|
-
|
|
93675
|
-
this.Show(); //通过CSS居中显示
|
|
93676
|
-
}
|
|
93677
|
-
|
|
93678
|
-
|
|
93679
|
-
}
|
|
93680
|
-
|
|
93681
|
-
//区间统计
|
|
93682
|
-
function KLineSelectRectDialog(divElement)
|
|
93683
|
-
{
|
|
93684
|
-
this.newMethod=IDivDialog; //派生
|
|
93685
|
-
this.newMethod(divElement);
|
|
93686
|
-
delete this.newMethod;
|
|
93687
|
-
|
|
93688
|
-
this.SelectData;
|
|
93689
|
-
this.Dialog;
|
|
93690
|
-
this.HQChart;
|
|
93691
|
-
this.RectSelectPaint;
|
|
93692
|
-
|
|
93693
|
-
//隐藏窗口
|
|
93694
|
-
this.Close=function()
|
|
93695
|
-
{
|
|
93696
|
-
if (this.Dialog)
|
|
93697
|
-
{
|
|
93698
|
-
this.DivElement.removeChild(this.Dialog);
|
|
93699
|
-
this.Dialog=null;
|
|
93700
|
-
}
|
|
93701
|
-
|
|
93702
|
-
if (this.RectSelectPaint) this.RectSelectPaint.PreventClose=false;
|
|
93703
|
-
}
|
|
93704
|
-
|
|
93705
|
-
//创建
|
|
93706
|
-
this.Create=function()
|
|
93707
|
-
{
|
|
93708
|
-
this.ID=Guid();
|
|
93709
|
-
var div=document.createElement('div');
|
|
93710
|
-
div.className='jchart-select-statistics-box';
|
|
93711
|
-
div.id=this.ID;
|
|
93712
|
-
div.innerHTML=
|
|
93713
|
-
"<div class='parameter jchart-select-section'>\
|
|
93714
|
-
<div class='parameter-header'>\
|
|
93715
|
-
<span>区间统计</span>\
|
|
93716
|
-
<strong id='close' class='icon iconfont icon-close'></strong>\
|
|
93717
|
-
</div>\
|
|
93718
|
-
<div class='parameter-content'>统计数据</div>\
|
|
93719
|
-
<div class='parameter-footer'>\
|
|
93720
|
-
<button id='close' class='submit' >确定</button>\
|
|
93721
|
-
<button id='match' class='submit' >形态匹配</button>\
|
|
93722
|
-
</div>\
|
|
93723
|
-
</div>";
|
|
93724
|
-
|
|
93725
|
-
this.DivElement.appendChild(div);
|
|
93726
|
-
this.Dialog=div;
|
|
93727
|
-
|
|
93728
|
-
//关闭按钮
|
|
93729
|
-
$("#"+this.ID+" #close").click(
|
|
93730
|
-
{
|
|
93731
|
-
divBox:this,
|
|
93732
|
-
},
|
|
93733
|
-
function(event)
|
|
93734
|
-
{
|
|
93735
|
-
event.data.divBox.Close();
|
|
93736
|
-
});
|
|
93737
|
-
|
|
93738
|
-
//形态匹配
|
|
93739
|
-
$("#"+this.ID+" #match").click(
|
|
93740
|
-
{
|
|
93741
|
-
divBox:this,
|
|
93742
|
-
},
|
|
93743
|
-
function(event)
|
|
93744
|
-
{
|
|
93745
|
-
event.data.divBox.KLineMatch();
|
|
93746
|
-
});
|
|
93747
|
-
}
|
|
93748
|
-
|
|
93749
|
-
this.BindData=function()
|
|
93750
|
-
{
|
|
93751
|
-
var hqData=this.SelectData.Data;
|
|
93752
|
-
var start=this.SelectData.Start;
|
|
93753
|
-
var end=this.SelectData.End;
|
|
93754
|
-
this.HQChart.UpdateSelectRect(start,end);
|
|
93755
|
-
if (this.RectSelectPaint) this.RectSelectPaint.PreventClose=true;
|
|
93756
|
-
|
|
93757
|
-
var showData=
|
|
93758
|
-
{
|
|
93759
|
-
Open:0,Close:0,High:0,Low:0, YClose:0,
|
|
93760
|
-
Vol:0, Amount:0,
|
|
93761
|
-
Date:
|
|
93762
|
-
{
|
|
93763
|
-
Start:{Time:null, Date:null },
|
|
93764
|
-
End:{ Time:null, Date:null }
|
|
93765
|
-
},
|
|
93766
|
-
Count:0,
|
|
93767
|
-
KLine:{ Up:0,Down:0,Unchanged:0 } //阳线|阴线|平线
|
|
93768
|
-
}
|
|
93769
|
-
|
|
93770
|
-
for(var i=start; i<=end && i<hqData.Data.length; ++i)
|
|
93771
|
-
{
|
|
93772
|
-
var item=hqData.Data[i];
|
|
93773
|
-
if (i==start)
|
|
93774
|
-
{
|
|
93775
|
-
showData.Date.Start.Date=item.Date;
|
|
93776
|
-
showData.Date.Start.Time=item.Time;
|
|
93777
|
-
showData.Open=item.Open;
|
|
93778
|
-
showData.High=item.High;
|
|
93779
|
-
showData.Low=item.Low;
|
|
93780
|
-
showData.YClose=item.YClose;
|
|
93781
|
-
}
|
|
93782
|
-
|
|
93783
|
-
showData.Date.End.Date=item.Date;
|
|
93784
|
-
showData.Date.End.Time=item.Time;
|
|
93785
|
-
showData.Close=item.Close;
|
|
93786
|
-
showData.Vol+=item.Vol;
|
|
93787
|
-
showData.Amount+=item.Amount;
|
|
93788
|
-
++showData.Count;
|
|
93789
|
-
if (showData.High<item.High) showData.High=item.High;
|
|
93790
|
-
if(showData.Low>item.Low) showData.Low=item.Low;
|
|
93791
|
-
if (item.Close>item.Open) ++showData.KLine.Up;
|
|
93792
|
-
else if (item.Close<item.Open) ++showData.KLine.Down;
|
|
93793
|
-
else ++showData.KLine.Unchanged;
|
|
93794
|
-
}
|
|
93795
|
-
|
|
93796
|
-
if (showData.Vol>0) showData.AvPrice=showData.Amount/showData.Vol; //均价
|
|
93797
|
-
if (item.YClose>0)
|
|
93798
|
-
{
|
|
93799
|
-
showData.Increase = (showData.Close - showData.YClose) / showData.YClose *100; //涨幅
|
|
93800
|
-
showData.Amplitude = (showData.High - showData.Low) / showData.YClose * 100; //振幅
|
|
93801
|
-
}
|
|
93802
|
-
|
|
93803
|
-
// JSConsole.Chart.Log('[KLineSelectRectDialog::BindData]', showData);
|
|
93804
|
-
var defaultfloatPrecision=GetfloatPrecision(this.SelectData.Symbol);
|
|
93805
|
-
var startDate=IFrameSplitOperator.FormatDateString(showData.Date.Start.Date);
|
|
93806
|
-
var endDate=IFrameSplitOperator.FormatDateString(showData.Date.End.Date);
|
|
93807
|
-
if (ChartData.IsMinutePeriod(this.HQChart.Period))
|
|
93808
|
-
{
|
|
93809
|
-
startDate+=' '+IFrameSplitOperator.FormatTimeString(showData.Date.Start.Time,"HH:MM");
|
|
93810
|
-
endDate+=" "+IFrameSplitOperator.FormatTimeString(showData.Date.End.Time,"HH:MM");
|
|
93811
|
-
}
|
|
93812
|
-
else if (ChartData.IsSecondPeriod(this.HQChart.Period) || ChartData.IsTickPeriod(this.HQChart.Period))
|
|
93813
|
-
{
|
|
93814
|
-
startDate+=' '+IFrameSplitOperator.FormatTimeString(showData.Date.Start.Time,"HH:MM:SS");
|
|
93815
|
-
endDate+=" "+IFrameSplitOperator.FormatTimeString(showData.Date.End.Time,"HH:MM:SS");
|
|
93816
|
-
}
|
|
93817
|
-
|
|
93818
|
-
var startLeftClass="",startRightClass="",endLeftClass="",endRightClass="";
|
|
93819
|
-
if(start<=0) startLeftClass = "BtnBackground";
|
|
93820
|
-
if(start >= end) {
|
|
93821
|
-
startRightClass = "BtnBackground";
|
|
93822
|
-
endLeftClass = "BtnBackground";
|
|
93823
|
-
}
|
|
93824
|
-
if(end >= hqData.Data.length - 1) endRightClass = "BtnBackground";
|
|
93825
|
-
|
|
93826
|
-
var div=document.createElement('div');
|
|
93827
|
-
div.className='jchart-select-table-right';
|
|
93828
|
-
div.innerHTML=
|
|
93829
|
-
'<div class="jchart-select-date">\n' +
|
|
93830
|
-
' <span>开始: '+ startDate +'<i class="start-date-left '+ startLeftClass +'"><</i><i class="start-date-right '+ startRightClass +'">></i></span>\n' +
|
|
93831
|
-
' <span>结束: '+ endDate +'<i class="end-date-left '+ endLeftClass +'"><</i><i class="end-date-right '+ endRightClass +'">></i></span>\n' +
|
|
93832
|
-
' <span>总个数: '+ showData.Count +'</span>\n' +
|
|
93833
|
-
' </div>\n' +
|
|
93834
|
-
' <table>\n' +
|
|
93835
|
-
' <tr><td><strong>起始价: </strong><span>'+ showData.YClose.toFixed(defaultfloatPrecision) +'</span></td>' +
|
|
93836
|
-
' <td><strong>最终价: </strong><span>'+ showData.Close.toFixed(defaultfloatPrecision) +'</span></td>' +
|
|
93837
|
-
' <td><strong>均价: </strong><span>'+ (IFrameSplitOperator.IsNumber(showData.AvPrice) ? showData.AvPrice.toFixed(defaultfloatPrecision):"--.--") +'</span></td></tr>\n' +
|
|
93838
|
-
' <tr><td><strong>最低价: </strong><span>'+ showData.Low.toFixed(defaultfloatPrecision) +'</span></td>' +
|
|
93839
|
-
' <td><strong>最高价: </strong><span>'+ showData.High.toFixed(defaultfloatPrecision) +'</span></td>' +
|
|
93840
|
-
' <td><strong>涨跌幅: </strong><span class="'+ IFrameSplitOperator.FormatValueColor(showData.Increase) +'">'+ showData.Increase.toFixed(2) +'%</span></td></tr>\n' +
|
|
93841
|
-
' <tr><td><strong>振幅: </strong><span>'+ showData.Amplitude.toFixed(2) +'%</span></td>' +
|
|
93842
|
-
' <td><strong>成交量: </strong><span>'+ IFrameSplitOperator.FormatValueString(showData.Vol,2) +'股</span></td>' +
|
|
93843
|
-
' <td><strong>金额: </strong><span>'+ IFrameSplitOperator.FormatValueString(showData.Amount,2) +'元</span></td></tr>\n' +
|
|
93844
|
-
' <tr><td><strong>阴线: </strong><span>'+ showData.KLine.Up +'</span></td>' +
|
|
93845
|
-
' <td><strong>阳线: </strong><span>'+ showData.KLine.Down +'</span></td>' +
|
|
93846
|
-
' <td><strong>平线: </strong><span>'+ showData.KLine.Unchanged +'</span></td></tr>\n' +
|
|
93847
|
-
' </table>';
|
|
93848
|
-
|
|
93849
|
-
$(".parameter-content").html(div);
|
|
93850
|
-
this.BindEvent();
|
|
93851
|
-
}
|
|
93852
|
-
|
|
93853
|
-
this.BindEvent = function () {
|
|
94027
|
+
this.BindEvent = function () {
|
|
93854
94028
|
var _self = this;
|
|
93855
94029
|
if(_self.SelectData.Start > 0){
|
|
93856
94030
|
$(".jchart-select-date .start-date-left").click(function () {
|
|
@@ -97025,6 +97199,7 @@ function FuturesTimeData()
|
|
|
97025
97199
|
[MARKET_SUFFIX_NAME.CZCE + '-SA', {Time:6,Decimal:0, Name:"纯碱"}],
|
|
97026
97200
|
[MARKET_SUFFIX_NAME.CZCE + '-PF', {Time:6,Decimal:0, Name:"短纤"}],
|
|
97027
97201
|
[MARKET_SUFFIX_NAME.CZCE + '-PK', {Time:0,Decimal:0, Name:"花生"}],
|
|
97202
|
+
[MARKET_SUFFIX_NAME.CZCE + '-PR', {Time:6,Decimal:0, Name:"瓶片"}],
|
|
97028
97203
|
|
|
97029
97204
|
|
|
97030
97205
|
//中期所
|
|
@@ -99859,20 +100034,17 @@ function Node(ErrorHandler)
|
|
|
99859
100034
|
return;
|
|
99860
100035
|
}
|
|
99861
100036
|
|
|
99862
|
-
|
|
99863
|
-
|
|
99864
|
-
var item={ ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_GPJYVALUE, Args:args, FunctionName:callee.Name };
|
|
99865
|
-
if (token) item.Token={ Index:token.Start, Line:token.LineNumber };
|
|
99866
|
-
this.FunctionData.push(item);
|
|
99867
|
-
return;
|
|
99868
|
-
}
|
|
99869
|
-
|
|
99870
|
-
if (callee.Name=="SCJYVALUE")
|
|
100037
|
+
//专业财务数据
|
|
100038
|
+
for(var i=0;i<JS_ARRAY_PROFESSIONAL_FINANCE.length;++i)
|
|
99871
100039
|
{
|
|
99872
|
-
var
|
|
99873
|
-
if (
|
|
99874
|
-
|
|
99875
|
-
|
|
100040
|
+
var financeItem=JS_ARRAY_PROFESSIONAL_FINANCE[i];
|
|
100041
|
+
if (financeItem.Name==callee.Name)
|
|
100042
|
+
{
|
|
100043
|
+
var item={ ID:financeItem.JobID, Args:args, FunctionName:callee.Name };
|
|
100044
|
+
if (token) item.Token={ Index:token.Start, Line:token.LineNumber };
|
|
100045
|
+
this.FunctionData.push(item);
|
|
100046
|
+
return;
|
|
100047
|
+
}
|
|
99876
100048
|
}
|
|
99877
100049
|
|
|
99878
100050
|
if (callee.Name==='MARGIN')
|
|
@@ -112872,54 +113044,6 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
112872
113044
|
return financeData.get(id);
|
|
112873
113045
|
}
|
|
112874
113046
|
|
|
112875
|
-
this.GetFinOne=function(jobItem)
|
|
112876
|
-
{
|
|
112877
|
-
var aryArgs=this.JobArgumentsToArray(jobItem, 3);
|
|
112878
|
-
var key=this.GetStockDataKey(jobItem,aryArgs);
|
|
112879
|
-
if (this.StockData.has(key)) return this.Execute.RunNextJob();
|
|
112880
|
-
var self=this;
|
|
112881
|
-
if (this.NetworkFilter)
|
|
112882
|
-
{
|
|
112883
|
-
var dateRange=this.Data.GetDateRange();
|
|
112884
|
-
var obj=
|
|
112885
|
-
{
|
|
112886
|
-
Name:'JSSymbolData::GetFinOne', //类名::
|
|
112887
|
-
Explain:'财务数据FINONE(ID,Y,MMDD)',
|
|
112888
|
-
JobID:jobItem.ID,
|
|
112889
|
-
Request:{ Url:self.StockHistoryDayApiUrl, Type:'POST', Data:{ Args:aryArgs, symbol: this.Symbol, daterange:dateRange } },
|
|
112890
|
-
Self:this,
|
|
112891
|
-
PreventDefault:false
|
|
112892
|
-
};
|
|
112893
|
-
this.NetworkFilter(obj, function(recvData)
|
|
112894
|
-
{
|
|
112895
|
-
self.RecvStockValue(recvData,jobItem,key,1);
|
|
112896
|
-
self.Execute.RunNextJob();
|
|
112897
|
-
});
|
|
112898
|
-
|
|
112899
|
-
if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
|
|
112900
|
-
}
|
|
112901
|
-
|
|
112902
|
-
var apiDownload=new DownloadFinOneData(
|
|
112903
|
-
{
|
|
112904
|
-
Job:jobItem,
|
|
112905
|
-
Symbol:this.Symbol,
|
|
112906
|
-
Url:this.StockHistoryDayApiUrl,
|
|
112907
|
-
Args:aryArgs,
|
|
112908
|
-
DataKey:key,
|
|
112909
|
-
Callback:function(recvData, jobItem, key)
|
|
112910
|
-
{
|
|
112911
|
-
self.RecvStockValue(recvData, jobItem, key,1);
|
|
112912
|
-
self.Execute.RunNextJob();
|
|
112913
|
-
},
|
|
112914
|
-
ErrorCallback:function(strError)
|
|
112915
|
-
{
|
|
112916
|
-
self.AddStockValueError(key,strError);
|
|
112917
|
-
}
|
|
112918
|
-
});
|
|
112919
|
-
|
|
112920
|
-
apiDownload.Download();
|
|
112921
|
-
}
|
|
112922
|
-
|
|
112923
113047
|
this.GetStockDataKey=function(jobItem, aryArgs)
|
|
112924
113048
|
{
|
|
112925
113049
|
var key=jobItem.FunctionName;
|
|
@@ -112937,55 +113061,6 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
112937
113061
|
return key;
|
|
112938
113062
|
}
|
|
112939
113063
|
|
|
112940
|
-
this.GetFinValue=function(jobItem)
|
|
112941
|
-
{
|
|
112942
|
-
var aryArgs=this.JobArgumentsToArray(jobItem, 1);
|
|
112943
|
-
var lID=aryArgs[0];
|
|
112944
|
-
var key=this.GetStockDataKey(jobItem,aryArgs);
|
|
112945
|
-
if (this.StockData.has(key)) return this.Execute.RunNextJob();
|
|
112946
|
-
var self=this;
|
|
112947
|
-
if (this.NetworkFilter)
|
|
112948
|
-
{
|
|
112949
|
-
var dateRange=this.Data.GetDateRange();
|
|
112950
|
-
var obj=
|
|
112951
|
-
{
|
|
112952
|
-
Name:'JSSymbolData::GetFinValue', //类名::
|
|
112953
|
-
Explain:'财务数据FINVALUE(ID)',
|
|
112954
|
-
JobID:jobItem.ID,
|
|
112955
|
-
Request:{ Url:self.StockHistoryDayApiUrl, Type:'POST', Data:{ id:lID, symbol: this.Symbol, daterange:dateRange } },
|
|
112956
|
-
Self:this,
|
|
112957
|
-
PreventDefault:false
|
|
112958
|
-
};
|
|
112959
|
-
this.NetworkFilter(obj, function(recvData)
|
|
112960
|
-
{
|
|
112961
|
-
self.RecvStockValue(recvData,jobItem,key,0);
|
|
112962
|
-
self.Execute.RunNextJob();
|
|
112963
|
-
});
|
|
112964
|
-
|
|
112965
|
-
if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
|
|
112966
|
-
}
|
|
112967
|
-
|
|
112968
|
-
var apiDownload=new DownloadFinValueData(
|
|
112969
|
-
{
|
|
112970
|
-
Job:jobItem,
|
|
112971
|
-
Symbol:this.Symbol,
|
|
112972
|
-
Url:this.StockHistoryDayApiUrl,
|
|
112973
|
-
Args:aryArgs,
|
|
112974
|
-
DataKey:key,
|
|
112975
|
-
Callback:function(recvData, jobItem, key)
|
|
112976
|
-
{
|
|
112977
|
-
self.RecvStockValue(recvData, jobItem, key,0);
|
|
112978
|
-
self.Execute.RunNextJob();
|
|
112979
|
-
},
|
|
112980
|
-
ErrorCallback:function(strError)
|
|
112981
|
-
{
|
|
112982
|
-
self.AddStockValueError(key,strError);
|
|
112983
|
-
}
|
|
112984
|
-
});
|
|
112985
|
-
|
|
112986
|
-
apiDownload.Download();
|
|
112987
|
-
}
|
|
112988
|
-
|
|
112989
113064
|
this.GetFinance=function(jobItem)
|
|
112990
113065
|
{
|
|
112991
113066
|
var aryArgs=this.JobArgumentsToArray(jobItem, 1);
|
|
@@ -113038,74 +113113,41 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
113038
113113
|
apiDownload.Download();
|
|
113039
113114
|
}
|
|
113040
113115
|
|
|
113041
|
-
this.
|
|
113116
|
+
this.GetProFinance=function(jobItem)
|
|
113042
113117
|
{
|
|
113043
|
-
var
|
|
113044
|
-
var
|
|
113045
|
-
|
|
113046
|
-
|
|
113047
|
-
var self=this;
|
|
113048
|
-
//TYPE:为1表示做平滑处理,没有数据的周期返回上一周期的值;为0表示不做平滑处理
|
|
113049
|
-
var dataType=aryArgs[2]==1?0:2;
|
|
113050
|
-
if (this.NetworkFilter)
|
|
113118
|
+
var jobID=jobItem.ID;
|
|
113119
|
+
var finder=null;
|
|
113120
|
+
for(var i=0;i<JS_ARRAY_PROFESSIONAL_FINANCE.length;++i)
|
|
113051
113121
|
{
|
|
113052
|
-
var
|
|
113053
|
-
|
|
113122
|
+
var item=JS_ARRAY_PROFESSIONAL_FINANCE[i];
|
|
113123
|
+
if (item.JobID==jobID)
|
|
113054
113124
|
{
|
|
113055
|
-
|
|
113056
|
-
|
|
113057
|
-
|
|
113058
|
-
Request:{ Url:self.StockHistoryDayApiUrl, Type:'POST', Data:{ Args:aryArgs, symbol: this.Symbol, daterange:dateRange } },
|
|
113059
|
-
Self:this,
|
|
113060
|
-
PreventDefault:false
|
|
113061
|
-
};
|
|
113062
|
-
this.NetworkFilter(obj, function(recvData)
|
|
113063
|
-
{
|
|
113064
|
-
self.RecvStockValue(recvData,jobItem,key,dataType);
|
|
113065
|
-
self.Execute.RunNextJob();
|
|
113066
|
-
});
|
|
113067
|
-
|
|
113068
|
-
if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
|
|
113125
|
+
finder=item;
|
|
113126
|
+
break;
|
|
113127
|
+
}
|
|
113069
113128
|
}
|
|
113070
113129
|
|
|
113071
|
-
|
|
113072
|
-
{
|
|
113073
|
-
Job:jobItem,
|
|
113074
|
-
Symbol:this.Symbol,
|
|
113075
|
-
Url:this.StockHistoryDayApiUrl,
|
|
113076
|
-
Args:aryArgs,
|
|
113077
|
-
DataKey:key,
|
|
113078
|
-
Callback:function(recvData, jobItem, key)
|
|
113079
|
-
{
|
|
113080
|
-
self.RecvStockValue(recvData, jobItem, key,dataType);
|
|
113081
|
-
self.Execute.RunNextJob();
|
|
113082
|
-
},
|
|
113083
|
-
ErrorCallback:function(strError)
|
|
113084
|
-
{
|
|
113085
|
-
self.AddStockValueError(key,strError);
|
|
113086
|
-
}
|
|
113087
|
-
});
|
|
113130
|
+
if (!finder) return this.Execute.RunNextJob();
|
|
113088
113131
|
|
|
113089
|
-
|
|
113090
|
-
}
|
|
113091
|
-
|
|
113092
|
-
this.GetSCJYValue=function(jobItem)
|
|
113093
|
-
{
|
|
113094
|
-
var aryArgs=this.JobArgumentsToArray(jobItem, 3);
|
|
113132
|
+
var aryArgs=this.JobArgumentsToArray(jobItem, finder.ArgCount);
|
|
113095
113133
|
var key=this.GetStockDataKey(jobItem,aryArgs);
|
|
113096
113134
|
if (this.StockData.has(key)) return this.Execute.RunNextJob();
|
|
113097
113135
|
|
|
113098
113136
|
var self=this;
|
|
113099
|
-
|
|
113100
|
-
|
|
113137
|
+
var dataType=0;
|
|
113138
|
+
if ([JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_GPJYVALUE,JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SCJYVALUE,JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_BKJYVALUE].includes(jobID))
|
|
113139
|
+
{
|
|
113140
|
+
dataType=aryArgs[2]==1?0:2; //TYPE:为1表示做平滑处理,没有数据的周期返回上一周期的值;为0表示不做平滑处理
|
|
113141
|
+
}
|
|
113142
|
+
|
|
113101
113143
|
if (this.NetworkFilter)
|
|
113102
113144
|
{
|
|
113103
113145
|
var dateRange=this.Data.GetDateRange();
|
|
113104
113146
|
var obj=
|
|
113105
113147
|
{
|
|
113106
|
-
Name:
|
|
113107
|
-
Explain:
|
|
113108
|
-
JobID:
|
|
113148
|
+
Name:finder.FuncName, //类名::
|
|
113149
|
+
Explain:finder.Explain,
|
|
113150
|
+
JobID:jobID,
|
|
113109
113151
|
Request:{ Url:self.StockHistoryDayApiUrl, Type:'POST', Data:{ Args:aryArgs, symbol: this.Symbol, daterange:dateRange } },
|
|
113110
113152
|
Self:this,
|
|
113111
113153
|
PreventDefault:false
|
|
@@ -113119,25 +113161,7 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
113119
113161
|
if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求
|
|
113120
113162
|
}
|
|
113121
113163
|
|
|
113122
|
-
|
|
113123
|
-
{
|
|
113124
|
-
Job:jobItem,
|
|
113125
|
-
Symbol:this.Symbol,
|
|
113126
|
-
Url:this.StockHistoryDayApiUrl,
|
|
113127
|
-
Args:aryArgs,
|
|
113128
|
-
DataKey:key,
|
|
113129
|
-
Callback:function(recvData, jobItem, key)
|
|
113130
|
-
{
|
|
113131
|
-
self.RecvStockValue(recvData, jobItem, key,dataType);
|
|
113132
|
-
self.Execute.RunNextJob();
|
|
113133
|
-
},
|
|
113134
|
-
ErrorCallback:function(strError)
|
|
113135
|
-
{
|
|
113136
|
-
self.AddStockValueError(key,strError);
|
|
113137
|
-
}
|
|
113138
|
-
});
|
|
113139
|
-
|
|
113140
|
-
apiDownload.Download();
|
|
113164
|
+
JSConsole.Chart.Warn(`[JSSymbolData::GetProFinance] ${finder.FuncName} Not implemented.`);
|
|
113141
113165
|
}
|
|
113142
113166
|
|
|
113143
113167
|
this.GetVariantData=function(jobItem)
|
|
@@ -115137,6 +115161,11 @@ var JS_EXECUTE_JOB_ID=
|
|
|
115137
115161
|
JOB_DOWNLOAD_GPJYVALUE:304, //引用股票交易类数据 GPJYVALUE(ID,N,TYPE),ID为数据编号,N表示第几个数据,TYPE:为1表示做平滑处理,没有数据的周期返回上一周期的值;为0表示不做平滑处理
|
|
115138
115162
|
JOB_DOWNLOAD_VARIANT:305, //CAPITAL , TOTALCAPITAL, EXCHANGE
|
|
115139
115163
|
JOB_DOWNLOAD_SCJYVALUE:306, //引用市场总的交易类数据.SCJYVALUE(ID,N,TYPE),ID为数据编号,N表示第几个数据,TYPE:为1表示做平滑处理,没有数据的周期返回上一周期的值;为0表示不做平滑处理
|
|
115164
|
+
JOB_DOWNLOAD_GPJYONE:307, //GPJYONE(ID,N,Y,MMDD),ID为数据编号,N表示第几个数据(取1或2),Y和MMDD表示年和月日. 如果Y为0,MMDD为0,表示最新数据,MMDD为1,2,3...,表示倒数第2,3,4...个数据
|
|
115165
|
+
JOB_DOWNLOAD_SCJYONE:308, //SCJYONE(ID,N,Y,MMDD),ID为数据编号,N表示第几个数据(取1或2),Y和MMDD表示年和月日.如果Y为0,MMDD为0,表示最新数据,MMDD为1,2,3...,表示倒数第2,3,4...个数据
|
|
115166
|
+
JOB_DOWNLOAD_BKJYVALUE:309, //BKJYVALUE(ID,N,TYPE),ID为数据编号,N表示第几个数据(取1或2),TYPE:为1表示做平滑处理,没有数据的周期返回上一周期的值;为0表示不做平滑处理;2表示没有数据则为0.
|
|
115167
|
+
JOB_DOWNLOAD_BKJYONE:310, //BKJYONE(ID,N,Y,MMDD),ID为数据编号,N表示第几个数据(取1或2),Y和MMDD表示年和月日.如果Y为0,MMDD为0,表示最新数据,MMDD为1,2,3...,表示倒数第2,3,4...个数据
|
|
115168
|
+
|
|
115140
115169
|
|
|
115141
115170
|
|
|
115142
115171
|
|
|
@@ -115333,6 +115362,46 @@ var JS_EXECUTE_JOB_ID=
|
|
|
115333
115362
|
|
|
115334
115363
|
};
|
|
115335
115364
|
|
|
115365
|
+
|
|
115366
|
+
//专业财务数据
|
|
115367
|
+
var JS_ARRAY_PROFESSIONAL_FINANCE=
|
|
115368
|
+
[
|
|
115369
|
+
{
|
|
115370
|
+
Name:"GPJYVALUE", JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_GPJYVALUE,
|
|
115371
|
+
Explain:"股票交易类数据GPJYVALUE(ID,N,TYPE)", FuncName:"JSSymbolData::GetGPJYValue", ArgCount:3
|
|
115372
|
+
},
|
|
115373
|
+
{
|
|
115374
|
+
Name:"GPJYONE", JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_GPJYONE,
|
|
115375
|
+
Explain:"股票交易类数据GPJYONE(ID,N,Y,MMDD)", FuncName:"JSSymbolData::GetGPJYOne", ArgCount:4
|
|
115376
|
+
},
|
|
115377
|
+
{
|
|
115378
|
+
Name:"SCJYVALUE", JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SCJYVALUE,
|
|
115379
|
+
Explain:"市场交易类数据SCJYVALUE(ID,N,TYPE)", FuncName:"JSSymbolData::GetSCJYValue",ArgCount:3
|
|
115380
|
+
},
|
|
115381
|
+
{
|
|
115382
|
+
Name:"SCJYONE", JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SCJYONE,
|
|
115383
|
+
Explain:"市场交易类数据SCJYONE(ID,N,Y,MMDD)", FuncName:"JSSymbolData::GetSCJYOne",ArgCount:4
|
|
115384
|
+
},
|
|
115385
|
+
{
|
|
115386
|
+
Name:"BKJYVALUE", JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_BKJYVALUE,
|
|
115387
|
+
Explain:"板块交易类数据BKJYVALUE(ID,N,TYPE)", FuncName:"JSSymbolData::GetBKJYValue",ArgCount:3
|
|
115388
|
+
},
|
|
115389
|
+
{
|
|
115390
|
+
Name:"BKJYONE", JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_BKJYONE,
|
|
115391
|
+
Explain:"板块交易类数据BKJYONE(ID,N,Y,MMDD)", FuncName:"JSSymbolData::GetBKJYOne",ArgCount:4
|
|
115392
|
+
},
|
|
115393
|
+
{
|
|
115394
|
+
Name:"FINVALUE", JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINVALUE,
|
|
115395
|
+
Explain:"财务数据FINVALUE(ID)", FuncName:"JSSymbolData::GetFinValue",ArgCount:1
|
|
115396
|
+
},
|
|
115397
|
+
{
|
|
115398
|
+
Name:"FINONE", JobID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINONE,
|
|
115399
|
+
Explain:"财务数据FINONE(ID,Y,MMDD)", FuncName:"JSSymbolData::GetFinOne",ArgCount:3
|
|
115400
|
+
}
|
|
115401
|
+
|
|
115402
|
+
|
|
115403
|
+
];
|
|
115404
|
+
|
|
115336
115405
|
function JSExecute(ast,option)
|
|
115337
115406
|
{
|
|
115338
115407
|
this.AST=ast; //语法树
|
|
@@ -115539,16 +115608,19 @@ function JSExecute(ast,option)
|
|
|
115539
115608
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SECTION_SF:
|
|
115540
115609
|
return this.SymbolData.GetSectionFinanceData(jobItem); //财务截面报告数据
|
|
115541
115610
|
|
|
115542
|
-
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINONE:
|
|
115543
|
-
return this.SymbolData.GetFinOne(jobItem);
|
|
115544
|
-
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINVALUE:
|
|
115545
|
-
return this.SymbolData.GetFinValue(jobItem);
|
|
115546
115611
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINANCE:
|
|
115547
115612
|
return this.SymbolData.GetFinance(jobItem);
|
|
115613
|
+
|
|
115614
|
+
//专业财务数据
|
|
115615
|
+
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINONE:
|
|
115616
|
+
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_FINVALUE:
|
|
115548
115617
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_GPJYVALUE:
|
|
115549
|
-
|
|
115618
|
+
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_GPJYONE:
|
|
115550
115619
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SCJYVALUE:
|
|
115551
|
-
|
|
115620
|
+
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SCJYONE:
|
|
115621
|
+
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_BKJYVALUE:
|
|
115622
|
+
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_BKJYONE:
|
|
115623
|
+
return this.SymbolData.GetProFinance(jobItem);
|
|
115552
115624
|
|
|
115553
115625
|
case JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_VARIANT: //CAPITAL, TOTALCAPITAL
|
|
115554
115626
|
return this.SymbolData.GetVariantData(jobItem);
|
|
@@ -116908,11 +116980,15 @@ function JSExecute(ast,option)
|
|
|
116908
116980
|
node.Out=this.SymbolData.GetStockCacheData( {FunctionName:funcName, Args:args, ArgCount:3, Node:node } );
|
|
116909
116981
|
break;
|
|
116910
116982
|
case "GPJYVALUE":
|
|
116911
|
-
node.Out=this.SymbolData.GetStockCacheData( {FunctionName:funcName, Args:args, ArgCount:3, Node:node } );
|
|
116912
|
-
break;
|
|
116913
116983
|
case "SCJYVALUE":
|
|
116984
|
+
case "BKJYVALUE":
|
|
116914
116985
|
node.Out=this.SymbolData.GetStockCacheData( {FunctionName:funcName, Args:args, ArgCount:3, Node:node } );
|
|
116915
116986
|
break;
|
|
116987
|
+
case "GPJYONE":
|
|
116988
|
+
case "SCJYONE":
|
|
116989
|
+
case "BKJYONE":
|
|
116990
|
+
node.Out=this.SymbolData.GetStockCacheData( {FunctionName:funcName, Args:args, ArgCount:4, Node:node } );
|
|
116991
|
+
break;
|
|
116916
116992
|
case "MARGIN":
|
|
116917
116993
|
node.Out=this.SymbolData.GetMarginCacheData(args[0],node);
|
|
116918
116994
|
break;
|
|
@@ -121101,6 +121177,9 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
121101
121177
|
case SCRIPT_CHART_NAME.OVERLAY_BARS:
|
|
121102
121178
|
this.CreateStackedBar(hqChart,windowIndex,item,i);
|
|
121103
121179
|
break;
|
|
121180
|
+
case "DRAWCOLORKLINE":
|
|
121181
|
+
this.CreateDrawColorKLine(hqChart,windowIndex,item,i);
|
|
121182
|
+
break;
|
|
121104
121183
|
|
|
121105
121184
|
default:
|
|
121106
121185
|
{
|
|
@@ -121718,6 +121797,24 @@ function OverlayScriptIndex(name,script,args,option)
|
|
|
121718
121797
|
frame.ChartPaint.push(chart);
|
|
121719
121798
|
}
|
|
121720
121799
|
|
|
121800
|
+
this.CreateDrawColorKLine=function(hqChart,windowIndex,varItem,id)
|
|
121801
|
+
{
|
|
121802
|
+
var overlayIndex=this.OverlayIndex;
|
|
121803
|
+
var frame=overlayIndex.Frame;
|
|
121804
|
+
let chart=new ChartColorKline();
|
|
121805
|
+
chart.Canvas=hqChart.Canvas;
|
|
121806
|
+
chart.Name=varItem.Name;
|
|
121807
|
+
chart.DrawName="DRAWCOLORKLINE";
|
|
121808
|
+
chart.ChartBorder=frame.Frame.ChartBorder;
|
|
121809
|
+
chart.ChartFrame=frame.Frame;
|
|
121810
|
+
chart.Identify=overlayIndex.Identify;
|
|
121811
|
+
|
|
121812
|
+
chart.Data.Data=varItem.Draw.DrawData;
|
|
121813
|
+
if (IFrameSplitOperator.IsBool(varItem.Draw.IsEmptyBar)) chart.IsEmptyBar=varItem.Draw.IsEmptyBar;
|
|
121814
|
+
if (varItem.Draw.Color) chart.Color=varItem.Draw.Color;
|
|
121815
|
+
frame.ChartPaint.push(chart);
|
|
121816
|
+
}
|
|
121817
|
+
|
|
121721
121818
|
//创建图标
|
|
121722
121819
|
this.CreateIcon=function(hqChart,windowIndex,varItem,id)
|
|
121723
121820
|
{
|
|
@@ -122954,6 +123051,8 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
122954
123051
|
if (IFrameSplitOperator.IsBool(item.isshow)) outVarItem.IsShow = item.isshow; //是否绘制线段
|
|
122955
123052
|
if (item.isexdata==true) outVarItem.IsExData = true;
|
|
122956
123053
|
if (item.BreakPoint) outVarItem.BreakPoint=item.BreakPoint;
|
|
123054
|
+
if (item.UpColor) outVarItem.UpColor=item.UpColor;
|
|
123055
|
+
if (item.DownColor) outVarItem.DownColor=item.DownColor;
|
|
122957
123056
|
if (IFrameSplitOperator.IsBool(item.isDotLine)) outVarItem.IsDotLine = item.isDotLine;
|
|
122958
123057
|
if (IFrameSplitOperator.IsNonEmptyArray(item.lineDash)) outVarItem.LineDash=item.lineDash;
|
|
122959
123058
|
if (IFrameSplitOperator.IsBool(item.isSingleLine)) outVarItem.IsSingleLine=item.isSingleLine;
|
|
@@ -123215,6 +123314,19 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
123215
123314
|
|
|
123216
123315
|
result.push(outVarItem);
|
|
123217
123316
|
}
|
|
123317
|
+
else if (draw.DrawType=="DRAWCOLORKLINE")
|
|
123318
|
+
{
|
|
123319
|
+
drawItem.Name=draw.Name;
|
|
123320
|
+
drawItem.Type=draw.Type;
|
|
123321
|
+
drawItem.DrawType=draw.DrawType;
|
|
123322
|
+
drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);
|
|
123323
|
+
|
|
123324
|
+
outVarItem.Draw=drawItem;
|
|
123325
|
+
if (draw.Color) drawItem.Color=draw.Color;
|
|
123326
|
+
if (IFrameSplitOperator.IsBool(draw.IsEmptyBar)) drawItem.IsEmptyBar=draw.IsEmptyBar;
|
|
123327
|
+
|
|
123328
|
+
result.push(outVarItem);
|
|
123329
|
+
}
|
|
123218
123330
|
else
|
|
123219
123331
|
{
|
|
123220
123332
|
var find=g_ScriptIndexChartFactory.Get(draw.DrawType); //外部挂接
|
|
@@ -123429,6 +123541,9 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
123429
123541
|
if (item.BreakPoint) outVarItem.BreakPoint=item.BreakPoint;
|
|
123430
123542
|
if (item.UpColor) outVarItem.UpColor=item.UpColor;
|
|
123431
123543
|
if (item.DownColor) outVarItem.DownColor=item.DownColor;
|
|
123544
|
+
if (IFrameSplitOperator.IsBool(item.isDotLine)) outVarItem.IsDotLine = item.isDotLine;
|
|
123545
|
+
if (IFrameSplitOperator.IsNonEmptyArray(item.lineDash)) outVarItem.LineDash=item.lineDash;
|
|
123546
|
+
if (IFrameSplitOperator.IsBool(item.isSingleLine)) outVarItem.IsSingleLine=item.isSingleLine;
|
|
123432
123547
|
|
|
123433
123548
|
result.push(outVarItem);
|
|
123434
123549
|
}
|
|
@@ -123569,6 +123684,19 @@ function APIScriptIndex(name,script,args,option, isOverlay)
|
|
|
123569
123684
|
|
|
123570
123685
|
result.push(outVarItem);
|
|
123571
123686
|
}
|
|
123687
|
+
else if (draw.DrawType=="DRAWCOLORKLINE")
|
|
123688
|
+
{
|
|
123689
|
+
drawItem.Name=draw.Name;
|
|
123690
|
+
drawItem.Type=draw.Type;
|
|
123691
|
+
drawItem.DrawType=draw.DrawType;
|
|
123692
|
+
drawItem.DrawData=this.FittingArray(draw.DrawData,date,time,hqChart,1);
|
|
123693
|
+
|
|
123694
|
+
outVarItem.Draw=drawItem;
|
|
123695
|
+
if (draw.Color) drawItem.Color=draw.Color;
|
|
123696
|
+
if (IFrameSplitOperator.IsBool(draw.IsEmptyBar)) drawItem.IsEmptyBar=draw.IsEmptyBar;
|
|
123697
|
+
|
|
123698
|
+
result.push(outVarItem);
|
|
123699
|
+
}
|
|
123572
123700
|
else
|
|
123573
123701
|
{
|
|
123574
123702
|
var find=g_ScriptIndexChartFactory.Get(draw.DrawType); //外部挂接
|
|
@@ -123855,349 +123983,6 @@ ScriptIndexConsole.SetDomain = function (domain, cacheDomain) //修改API地
|
|
|
123855
123983
|
JSComplier.SetDomain(domain,cacheDomain);
|
|
123856
123984
|
}
|
|
123857
123985
|
|
|
123858
|
-
//////////////////////////////////////////////////////////////////////////////////////////////
|
|
123859
|
-
//内置财务数据下载
|
|
123860
|
-
//
|
|
123861
|
-
function DownloadFinValueData(obj)
|
|
123862
|
-
{
|
|
123863
|
-
this.Url=obj.Url;
|
|
123864
|
-
this.Job=obj.Job;
|
|
123865
|
-
this.Symbol=obj.Symbol;
|
|
123866
|
-
this.Args=obj.Args;
|
|
123867
|
-
this.DataKey=obj.DataKey;
|
|
123868
|
-
this.RecvCallback=obj.Callback;
|
|
123869
|
-
this.ErrorCallback=obj.ErrorCallback;
|
|
123870
|
-
|
|
123871
|
-
this.Download=function()
|
|
123872
|
-
{
|
|
123873
|
-
var self=this;
|
|
123874
|
-
var fieldList=this.GetFieldList();
|
|
123875
|
-
if (!fieldList)
|
|
123876
|
-
{
|
|
123877
|
-
message=`${this.Job.FunctionName}(${this.Args[0]}) can't support.`;
|
|
123878
|
-
this.ErrorCallback(message);
|
|
123879
|
-
self.RecvCallback(null, self.Job, self.DataKey);
|
|
123880
|
-
return;
|
|
123881
|
-
}
|
|
123882
|
-
|
|
123883
|
-
//请求数据
|
|
123884
|
-
JSNetwork.HttpRequest({
|
|
123885
|
-
url: this.Url,
|
|
123886
|
-
data:
|
|
123887
|
-
{
|
|
123888
|
-
"field": fieldList,
|
|
123889
|
-
"symbol": [this.Symbol],
|
|
123890
|
-
"condition":[ {"item":["finance","doc","exists","true"]}] ,
|
|
123891
|
-
"start": 0,
|
|
123892
|
-
"end": 200
|
|
123893
|
-
},
|
|
123894
|
-
type:"post",
|
|
123895
|
-
dataType: "json",
|
|
123896
|
-
async:true,
|
|
123897
|
-
success: function (recvData)
|
|
123898
|
-
{
|
|
123899
|
-
var data=self.ToHQChartData(recvData);
|
|
123900
|
-
if (data) //排序
|
|
123901
|
-
data.sort(function (a, b) { return (a.Date - b.Date) });
|
|
123902
|
-
|
|
123903
|
-
self.RecvCallback(data, self.Job, self.DataKey);
|
|
123904
|
-
}
|
|
123905
|
-
});
|
|
123906
|
-
}
|
|
123907
|
-
|
|
123908
|
-
this.ToHQChartData=function(recvData)
|
|
123909
|
-
{
|
|
123910
|
-
if (!recvData.stock || recvData.stock.length!=1) return null;
|
|
123911
|
-
|
|
123912
|
-
var aryData=[];
|
|
123913
|
-
var setDate=new Set(); //有重复数据 去掉
|
|
123914
|
-
var stock=recvData.stock[0];
|
|
123915
|
-
for(var i in stock.stockday)
|
|
123916
|
-
{
|
|
123917
|
-
var item=stock.stockday[i];
|
|
123918
|
-
if (item.announcement1)
|
|
123919
|
-
{
|
|
123920
|
-
var hqchartItem=this.ToHQChartItemData(item.announcement1, item.finance1, item);
|
|
123921
|
-
if (hqchartItem && !setDate.has(hqchartItem.Date))
|
|
123922
|
-
{
|
|
123923
|
-
aryData.push(hqchartItem);
|
|
123924
|
-
setDate.add(hqchartItem.Date);
|
|
123925
|
-
}
|
|
123926
|
-
}
|
|
123927
|
-
|
|
123928
|
-
if (item.announcement2)
|
|
123929
|
-
{
|
|
123930
|
-
var hqchartItem=this.ToHQChartItemData(item.announcement2, item.finance2, item);
|
|
123931
|
-
if (hqchartItem && !setDate.has(hqchartItem.Date))
|
|
123932
|
-
{
|
|
123933
|
-
aryData.push(hqchartItem);
|
|
123934
|
-
setDate.add(hqchartItem.Date);
|
|
123935
|
-
}
|
|
123936
|
-
}
|
|
123937
|
-
|
|
123938
|
-
if (item.announcement3)
|
|
123939
|
-
{
|
|
123940
|
-
var hqchartItem=this.ToHQChartItemData(item.announcement3, item.finance3, item);
|
|
123941
|
-
if (hqchartItem && !setDate.has(hqchartItem.Date))
|
|
123942
|
-
{
|
|
123943
|
-
aryData.push(hqchartItem);
|
|
123944
|
-
setDate.add(hqchartItem.Date);
|
|
123945
|
-
}
|
|
123946
|
-
}
|
|
123947
|
-
|
|
123948
|
-
if (item.announcement4)
|
|
123949
|
-
{
|
|
123950
|
-
var hqchartItem=this.ToHQChartItemData(item.announcement4, item.finance4, item);
|
|
123951
|
-
if (hqchartItem && !setDate.has(hqchartItem.Date))
|
|
123952
|
-
{
|
|
123953
|
-
aryData.push(hqchartItem);
|
|
123954
|
-
setDate.add(hqchartItem.Date);
|
|
123955
|
-
}
|
|
123956
|
-
}
|
|
123957
|
-
}
|
|
123958
|
-
|
|
123959
|
-
return aryData;
|
|
123960
|
-
}
|
|
123961
|
-
|
|
123962
|
-
//{ Date:日期 , Value:数值 }
|
|
123963
|
-
this.ToHQChartItemData=function(announcement, finance, sourceItem)
|
|
123964
|
-
{
|
|
123965
|
-
var id=this.Args[0];
|
|
123966
|
-
var date=announcement.year*10000;
|
|
123967
|
-
var quarter=announcement.quarter;
|
|
123968
|
-
switch(quarter)
|
|
123969
|
-
{
|
|
123970
|
-
case 1:
|
|
123971
|
-
date+=331;
|
|
123972
|
-
break;
|
|
123973
|
-
case 2:
|
|
123974
|
-
date+=630;
|
|
123975
|
-
break;
|
|
123976
|
-
case 3:
|
|
123977
|
-
date+=930;
|
|
123978
|
-
break;
|
|
123979
|
-
case 4:
|
|
123980
|
-
date+=1231;
|
|
123981
|
-
break;
|
|
123982
|
-
default:
|
|
123983
|
-
return null;
|
|
123984
|
-
}
|
|
123985
|
-
|
|
123986
|
-
var result={ Date:date, Value:0 };
|
|
123987
|
-
switch(id)
|
|
123988
|
-
{
|
|
123989
|
-
case 0:
|
|
123990
|
-
result.Value=date%1000000; //0--返回报告期(YYMMDD格式),150930表示为2015年第三季
|
|
123991
|
-
break;
|
|
123992
|
-
case 1:
|
|
123993
|
-
result.Value=finance.persearning;
|
|
123994
|
-
break;
|
|
123995
|
-
case 3:
|
|
123996
|
-
result.Value=finance.peruprofit;
|
|
123997
|
-
break;
|
|
123998
|
-
case 4:
|
|
123999
|
-
result.Value=finance.pernetasset;
|
|
124000
|
-
break;
|
|
124001
|
-
case 5:
|
|
124002
|
-
result.Value=finance.percreserve;
|
|
124003
|
-
break;
|
|
124004
|
-
case 6:
|
|
124005
|
-
result.Value=finance.woewa;
|
|
124006
|
-
break;
|
|
124007
|
-
case 7:
|
|
124008
|
-
result.Value=finance.perccfo;
|
|
124009
|
-
break;
|
|
124010
|
-
case 8:
|
|
124011
|
-
result.Value=finance.monetaryfunds;
|
|
124012
|
-
break;
|
|
124013
|
-
case 11:
|
|
124014
|
-
result.Value=finance.areceivable;
|
|
124015
|
-
break;
|
|
124016
|
-
}
|
|
124017
|
-
|
|
124018
|
-
return result;
|
|
124019
|
-
}
|
|
124020
|
-
|
|
124021
|
-
this.GetFieldList=function()
|
|
124022
|
-
{
|
|
124023
|
-
var id=this.Args[0];
|
|
124024
|
-
switch(id)
|
|
124025
|
-
{
|
|
124026
|
-
case 0:
|
|
124027
|
-
return ["finance.date"];
|
|
124028
|
-
case 1: //persearning 每股收益
|
|
124029
|
-
return ["finance.persearning"];
|
|
124030
|
-
case 3: //peruprofit 每股未分配利润
|
|
124031
|
-
return ["finance.peruprofit"];
|
|
124032
|
-
case 4: //pernetasset 每股净资产
|
|
124033
|
-
return ["finance.pernetasset"];
|
|
124034
|
-
case 5: //percreserve 每股资本公积金
|
|
124035
|
-
return ["finance.percreserve"];
|
|
124036
|
-
case 6: //woewa 加权平均净资产收益
|
|
124037
|
-
return ["finance.woewa"];
|
|
124038
|
-
case 7: //perccfo 每股经营性现金流
|
|
124039
|
-
return ["finance.perccfo"];
|
|
124040
|
-
case 8: //monetaryfunds 货币资金
|
|
124041
|
-
return ["finance.monetaryfunds"];
|
|
124042
|
-
case 11: //areceivable 应收账款
|
|
124043
|
-
return ["finance.areceivable"];
|
|
124044
|
-
default:
|
|
124045
|
-
return null;
|
|
124046
|
-
}
|
|
124047
|
-
}
|
|
124048
|
-
}
|
|
124049
|
-
|
|
124050
|
-
/////////////////////////////////////////////////////////
|
|
124051
|
-
// 内置财务数据下载 某一期的数据
|
|
124052
|
-
//
|
|
124053
|
-
function DownloadFinOneData(obj)
|
|
124054
|
-
{
|
|
124055
|
-
this.newMethod=DownloadFinValueData; //派生
|
|
124056
|
-
this.newMethod(obj);
|
|
124057
|
-
delete this.newMethod;
|
|
124058
|
-
|
|
124059
|
-
this.Download=function()
|
|
124060
|
-
{
|
|
124061
|
-
var self=this;
|
|
124062
|
-
var fieldList=this.GetFieldList();
|
|
124063
|
-
if (!fieldList)
|
|
124064
|
-
{
|
|
124065
|
-
message=`${this.Job.FunctionName}(${this.Args[0]}, ${this.Args[1]}, ${this.Args[2]}) can't support.`;
|
|
124066
|
-
this.ErrorCallback(message);
|
|
124067
|
-
self.RecvCallback(null, self.Job, self.DataKey);
|
|
124068
|
-
return;
|
|
124069
|
-
}
|
|
124070
|
-
|
|
124071
|
-
var aryCondition=[ {"item":["finance","doc","exists","true"] } ];
|
|
124072
|
-
|
|
124073
|
-
var year=this.Args[1];
|
|
124074
|
-
var month=this.Args[2];
|
|
124075
|
-
var dataIndex=0;
|
|
124076
|
-
var dataEnd=3;
|
|
124077
|
-
var preYear=null;
|
|
124078
|
-
if (year==0 && month==0) //如果Y和MMDD都为0,表示最新的财报;
|
|
124079
|
-
{
|
|
124080
|
-
|
|
124081
|
-
}
|
|
124082
|
-
else if (year==0 && month<300) //如果Y为0,MMDD为小于300的数字,表示最近一期向前推MMDD期的数据,如果是331,630,930,1231这些,表示最近一期的对应季报的数据;
|
|
124083
|
-
{
|
|
124084
|
-
dataIndex=month;
|
|
124085
|
-
dataEnd=200;
|
|
124086
|
-
}
|
|
124087
|
-
else if (month==0 && year<1000) //如果Y为0,MMDD为小于300的数字,表示最近一期向前推MMDD期的数据,如果是331,630,930,1231这些,表示最近一期的对应季报的数据;
|
|
124088
|
-
{
|
|
124089
|
-
preYear=year;
|
|
124090
|
-
}
|
|
124091
|
-
else if (year>1909)
|
|
124092
|
-
{
|
|
124093
|
-
if (month==331)
|
|
124094
|
-
{
|
|
124095
|
-
aryCondition=
|
|
124096
|
-
[
|
|
124097
|
-
{"item":["announcement1.year","int32","eq",year]},
|
|
124098
|
-
{"item":["finance1","doc","exists","true"]}
|
|
124099
|
-
];
|
|
124100
|
-
|
|
124101
|
-
fieldList.push("announcement1.year");
|
|
124102
|
-
fieldList.push("announcement1.quarter");
|
|
124103
|
-
}
|
|
124104
|
-
else if (month==630)
|
|
124105
|
-
{
|
|
124106
|
-
aryCondition=
|
|
124107
|
-
[
|
|
124108
|
-
{"item":["announcement2.year","int32","eq",year]},
|
|
124109
|
-
{"item":["finance2","doc","exists","true"]}
|
|
124110
|
-
];
|
|
124111
|
-
|
|
124112
|
-
fieldList.push("announcement2.year");
|
|
124113
|
-
fieldList.push("announcement2.quarter");
|
|
124114
|
-
}
|
|
124115
|
-
else if (month==930)
|
|
124116
|
-
{
|
|
124117
|
-
aryCondition=
|
|
124118
|
-
[
|
|
124119
|
-
{"item":["announcement3.year","int32","eq",year]},
|
|
124120
|
-
{"item":["finance3","doc","exists","true"]}
|
|
124121
|
-
];
|
|
124122
|
-
|
|
124123
|
-
fieldList.push("announcement4.year");
|
|
124124
|
-
fieldList.push("announcement4.quarter");
|
|
124125
|
-
}
|
|
124126
|
-
else
|
|
124127
|
-
{
|
|
124128
|
-
aryCondition=
|
|
124129
|
-
[
|
|
124130
|
-
{"item":["announcement4.year","int32","eq",year]},
|
|
124131
|
-
{"item":["finance4","doc","exists","true"]}
|
|
124132
|
-
];
|
|
124133
|
-
|
|
124134
|
-
fieldList.push("announcement4.year");
|
|
124135
|
-
fieldList.push("announcement4.quarter");
|
|
124136
|
-
}
|
|
124137
|
-
}
|
|
124138
|
-
|
|
124139
|
-
//请求数据
|
|
124140
|
-
JSNetwork.HttpRequest({
|
|
124141
|
-
url: this.Url,
|
|
124142
|
-
data:
|
|
124143
|
-
{
|
|
124144
|
-
"field": fieldList,
|
|
124145
|
-
"symbol": [this.Symbol],
|
|
124146
|
-
"condition":aryCondition,
|
|
124147
|
-
"start": 0,
|
|
124148
|
-
"end": dataEnd
|
|
124149
|
-
},
|
|
124150
|
-
type:"post",
|
|
124151
|
-
dataType: "json",
|
|
124152
|
-
async:true,
|
|
124153
|
-
success: function (recvData)
|
|
124154
|
-
{
|
|
124155
|
-
var data=self.ToHQChartData(recvData);
|
|
124156
|
-
var result=null;
|
|
124157
|
-
if (data && data.length>0)
|
|
124158
|
-
{
|
|
124159
|
-
data.sort(function (a, b) { return (b.Date-a.Date) });
|
|
124160
|
-
if (preYear==null)
|
|
124161
|
-
result=data[dataIndex]; //返回一个数据
|
|
124162
|
-
else
|
|
124163
|
-
result=self.GetPreYearData(data, preYear);
|
|
124164
|
-
}
|
|
124165
|
-
self.RecvCallback(result, self.Job, self.DataKey);
|
|
124166
|
-
}
|
|
124167
|
-
});
|
|
124168
|
-
}
|
|
124169
|
-
|
|
124170
|
-
this.GetPreYearData=function(data, preYear)
|
|
124171
|
-
{
|
|
124172
|
-
//331,630,930,1231这些,表示最近一期的对应季报的数据;
|
|
124173
|
-
if (preYear==331 || preYear==630|| preYear==930 || preYear==1231)
|
|
124174
|
-
{
|
|
124175
|
-
for(var i in data)
|
|
124176
|
-
{
|
|
124177
|
-
var item=data[i];
|
|
124178
|
-
if (item.Date%10000==preYear) return item;
|
|
124179
|
-
}
|
|
124180
|
-
}
|
|
124181
|
-
else
|
|
124182
|
-
{
|
|
124183
|
-
//如果MMDD为0,Y为一数字,表示最近一期向前推Y年的同期数据;
|
|
124184
|
-
var month=data[0].Date%1000;
|
|
124185
|
-
for(var i=1, j=0; i<data.length ;++i)
|
|
124186
|
-
{
|
|
124187
|
-
var item=data[i];
|
|
124188
|
-
if (item.Date%10000==month)
|
|
124189
|
-
{
|
|
124190
|
-
++j;
|
|
124191
|
-
if (j==preYear) return item;
|
|
124192
|
-
}
|
|
124193
|
-
}
|
|
124194
|
-
|
|
124195
|
-
return null;
|
|
124196
|
-
}
|
|
124197
|
-
}
|
|
124198
|
-
}
|
|
124199
|
-
|
|
124200
|
-
|
|
124201
123986
|
function DownloadFinanceData(obj)
|
|
124202
123987
|
{
|
|
124203
123988
|
this.Url=obj.Url;
|
|
@@ -124486,285 +124271,6 @@ function DownloadFinanceData(obj)
|
|
|
124486
124271
|
}
|
|
124487
124272
|
}
|
|
124488
124273
|
|
|
124489
|
-
function DownloadGPJYValue(obj)
|
|
124490
|
-
{
|
|
124491
|
-
this.Url=obj.Url;
|
|
124492
|
-
this.RealtimeUrl=obj.RealtimeUrl;
|
|
124493
|
-
this.Job=obj.Job;
|
|
124494
|
-
this.Symbol=obj.Symbol;
|
|
124495
|
-
this.Args=obj.Args;
|
|
124496
|
-
this.DataKey=obj.DataKey;
|
|
124497
|
-
this.RecvCallback=obj.Callback;
|
|
124498
|
-
this.ErrorCallback=obj.ErrorCallback;
|
|
124499
|
-
|
|
124500
|
-
this.Download=function()
|
|
124501
|
-
{
|
|
124502
|
-
var self=this;
|
|
124503
|
-
var fieldList=this.GetFieldList();
|
|
124504
|
-
if (!fieldList)
|
|
124505
|
-
{
|
|
124506
|
-
message=`${this.Job.FunctionName}(${this.Args[0]}, ${this.Args[1]}, ${this.Args[2]}) can't support.`;
|
|
124507
|
-
this.ErrorCallback(message);
|
|
124508
|
-
self.RecvCallback(null, self.Job, self.DataKey, true);
|
|
124509
|
-
return;
|
|
124510
|
-
}
|
|
124511
|
-
|
|
124512
|
-
//请求数据
|
|
124513
|
-
JSNetwork.HttpRequest({
|
|
124514
|
-
url: this.Url,
|
|
124515
|
-
data:
|
|
124516
|
-
{
|
|
124517
|
-
"field": fieldList,
|
|
124518
|
-
"symbol": [this.Symbol],
|
|
124519
|
-
"orderfield":"date",
|
|
124520
|
-
"order":-1,
|
|
124521
|
-
"start":0,
|
|
124522
|
-
"end":5
|
|
124523
|
-
},
|
|
124524
|
-
type:"post",
|
|
124525
|
-
dataType: "json",
|
|
124526
|
-
async:true,
|
|
124527
|
-
success: function (recvData)
|
|
124528
|
-
{
|
|
124529
|
-
var data=self.ToHQChartData(recvData);
|
|
124530
|
-
if (data && data.length>0)
|
|
124531
|
-
{
|
|
124532
|
-
data.sort(function (a, b) { return (a.Date-b.Date) });
|
|
124533
|
-
}
|
|
124534
|
-
self.RecvCallback(data, self.Job, self.DataKey);
|
|
124535
|
-
}
|
|
124536
|
-
});
|
|
124537
|
-
}
|
|
124538
|
-
|
|
124539
|
-
this.GetFieldList=function()
|
|
124540
|
-
{
|
|
124541
|
-
var id=this.Args[0];
|
|
124542
|
-
switch(id)
|
|
124543
|
-
{
|
|
124544
|
-
case 1: //1--股东人数 股东户数(户)
|
|
124545
|
-
return ["shareholder", "date", "symbol"];
|
|
124546
|
-
case 2: //2--龙虎榜 买入总计(万元) 卖出总计(万元)
|
|
124547
|
-
return ["tradedetail.buy","tradedetail.sell", "date", "symbol"];
|
|
124548
|
-
case 3: //3--融资融券1 融资余额(万元) 融券余量(股)
|
|
124549
|
-
return ["margin","date", "symbol"];
|
|
124550
|
-
case 4: //4--大宗交易 成交均价(元) 成交额(万元)
|
|
124551
|
-
return ["blocktrading.amount","blocktrading.price","date", "symbol"]
|
|
124552
|
-
default:
|
|
124553
|
-
return null;
|
|
124554
|
-
}
|
|
124555
|
-
}
|
|
124556
|
-
|
|
124557
|
-
this.ToHQChartData=function(recvData)
|
|
124558
|
-
{
|
|
124559
|
-
if (!recvData.stock || recvData.stock.length!=1) return null;
|
|
124560
|
-
|
|
124561
|
-
var aryData=[];
|
|
124562
|
-
var setDate=new Set(); //有重复数据 去掉
|
|
124563
|
-
var stock=recvData.stock[0];
|
|
124564
|
-
var id=this.Args[0];
|
|
124565
|
-
var subID=this.Args[1];
|
|
124566
|
-
for(var i in stock.stockday)
|
|
124567
|
-
{
|
|
124568
|
-
var item=stock.stockday[i];
|
|
124569
|
-
|
|
124570
|
-
var hqchartItem=this.ToHQChartItemData(item,id,subID);
|
|
124571
|
-
if (hqchartItem && !setDate.has(hqchartItem.Date))
|
|
124572
|
-
{
|
|
124573
|
-
aryData.push(hqchartItem);
|
|
124574
|
-
setDate.add(hqchartItem.Date);
|
|
124575
|
-
}
|
|
124576
|
-
}
|
|
124577
|
-
|
|
124578
|
-
return aryData;
|
|
124579
|
-
}
|
|
124580
|
-
|
|
124581
|
-
this.ToHQChartItemData=function(item, id, subID)
|
|
124582
|
-
{
|
|
124583
|
-
if (!item) return null;
|
|
124584
|
-
var date=item.date;
|
|
124585
|
-
switch(id)
|
|
124586
|
-
{
|
|
124587
|
-
case 1:
|
|
124588
|
-
if (!item.shareholder) return null;
|
|
124589
|
-
return { Date:date, Value:item.shareholder.count };
|
|
124590
|
-
case 2:
|
|
124591
|
-
if (!item.tradedetail && item.tradedetail[0]) return null;
|
|
124592
|
-
if (subID==0)
|
|
124593
|
-
return { Date:date, Value:item.tradedetail[0].buy };
|
|
124594
|
-
else
|
|
124595
|
-
return { Date:date, Value:item.tradedetail[0].sell };
|
|
124596
|
-
case 3:
|
|
124597
|
-
if (!item.margin) return null;
|
|
124598
|
-
if (subID==0)
|
|
124599
|
-
{
|
|
124600
|
-
if (item.margin.buy)
|
|
124601
|
-
return { Date:date, Value:item.margin.buy.balance };
|
|
124602
|
-
}
|
|
124603
|
-
else
|
|
124604
|
-
{
|
|
124605
|
-
if (item.margin.sell)
|
|
124606
|
-
return { Date:date, Value:item.margin.sell.balance };
|
|
124607
|
-
}
|
|
124608
|
-
return null;
|
|
124609
|
-
case 4:
|
|
124610
|
-
if (!item.blocktrading) return null;
|
|
124611
|
-
if (subID==0)
|
|
124612
|
-
return { Date:date, Value:item.blocktrading.price };
|
|
124613
|
-
else
|
|
124614
|
-
return { Date:date, Value:item.blocktrading.amount };
|
|
124615
|
-
default:
|
|
124616
|
-
return null;
|
|
124617
|
-
}
|
|
124618
|
-
}
|
|
124619
|
-
}
|
|
124620
|
-
|
|
124621
|
-
|
|
124622
|
-
|
|
124623
|
-
/*
|
|
124624
|
-
引用市场总的交易类数据.如果指标支持云数据函数,则不需要[专业财务数据]下载.
|
|
124625
|
-
SCJYVALUE(ID,N,TYPE),ID为数据编号,N表示第几个数据,TYPE:为1表示做平滑处理,没有数据的周期返回上一周期的值;为0表示不做平滑处理
|
|
124626
|
-
|
|
124627
|
-
市场交易类数据函数,数据编号如下:
|
|
124628
|
-
1--融资融券 沪深融资余额(万元) 沪深融券余额(万元)
|
|
124629
|
-
2--陆股通资金流入 沪股通流入金额(亿元) 深股通流入金额(亿元)
|
|
124630
|
-
3--沪深涨停股个数 涨停股个数 曾涨停股个数 [注:该指标展示20160926日之后的数据]
|
|
124631
|
-
4--沪深跌停股个数 跌停股个数 曾跌停股个数
|
|
124632
|
-
5--上证50股指期货 净持仓(手)[注:该指标展示20171009日之后的数据]
|
|
124633
|
-
6--沪深300股指期货 净持仓(手) [注:该指标展示20171009日之后的数据]
|
|
124634
|
-
7--中证500股指期货 净持仓(手) [注:该指标展示20171009日之后的数据]
|
|
124635
|
-
8--ETF基金规模数据 ETF基金规模(亿) ETF净申赎(亿)
|
|
124636
|
-
9--每周新增投资者 新增投资者(万户)
|
|
124637
|
-
10--增减持统计 增持额(万元) 减持额(万元)[注:部分公司公告滞后,造成每天查看的数据可能会不一样]
|
|
124638
|
-
11--大宗交易 溢价的大宗交易额(万元) 折价的大宗交易额(万元)
|
|
124639
|
-
12--限售解禁 限售解禁计划额(亿元) 限售解禁股份实际上市金额(亿元)[注:该指标展示201802月之后的数据;部分股票的解禁日期延后,造成不同日期提取的某天的计划额可能不同]
|
|
124640
|
-
13--分红 市场总分红额(亿元)[注:除权派息日的A股市场总分红额]
|
|
124641
|
-
14--募资 市场总募资额(亿元)[注:发行日期/除权日期的首发、配股和增发的总募资额]
|
|
124642
|
-
15--打板资金 封板成功资金(亿元) 封板失败资金(亿元) [注:该指标展示20160926日之后的数据]
|
|
124643
|
-
*/
|
|
124644
|
-
function DownloadSCJYValue(obj)
|
|
124645
|
-
{
|
|
124646
|
-
this.Url=obj.Url;
|
|
124647
|
-
//this.RealtimeUrl=obj.RealtimeUrl;
|
|
124648
|
-
this.Job=obj.Job;
|
|
124649
|
-
this.Symbol=obj.Symbol;
|
|
124650
|
-
this.Args=obj.Args;
|
|
124651
|
-
this.DataKey=obj.DataKey;
|
|
124652
|
-
this.RecvCallback=obj.Callback;
|
|
124653
|
-
this.ErrorCallback=obj.ErrorCallback;
|
|
124654
|
-
|
|
124655
|
-
this.Download=function()
|
|
124656
|
-
{
|
|
124657
|
-
var self=this;
|
|
124658
|
-
var query=this.GetQueryCondtion();
|
|
124659
|
-
if (!query)
|
|
124660
|
-
{
|
|
124661
|
-
message=`${this.Job.FunctionName}(${this.Args[0]}, ${this.Args[1]}, ${this.Args[2]}) can't support.`;
|
|
124662
|
-
this.ErrorCallback(message);
|
|
124663
|
-
self.RecvCallback(null, self.Job, self.DataKey, true);
|
|
124664
|
-
return;
|
|
124665
|
-
}
|
|
124666
|
-
|
|
124667
|
-
//请求数据
|
|
124668
|
-
JSNetwork.HttpRequest({
|
|
124669
|
-
url: this.Url,
|
|
124670
|
-
data:
|
|
124671
|
-
{
|
|
124672
|
-
"field": query.Field,
|
|
124673
|
-
"symbol": query.Symbol,
|
|
124674
|
-
"condition":query.Cond ,
|
|
124675
|
-
"start": 0,
|
|
124676
|
-
"end": 2000
|
|
124677
|
-
},
|
|
124678
|
-
type:"post",
|
|
124679
|
-
dataType: "json",
|
|
124680
|
-
async:true,
|
|
124681
|
-
success: function (recvData)
|
|
124682
|
-
{
|
|
124683
|
-
var data=self.ToHQChartData(recvData);
|
|
124684
|
-
if (data) //排序
|
|
124685
|
-
data.sort(function (a, b) { return (a.Date - b.Date) });
|
|
124686
|
-
|
|
124687
|
-
self.RecvCallback(data, self.Job, self.DataKey);
|
|
124688
|
-
}
|
|
124689
|
-
});
|
|
124690
|
-
|
|
124691
|
-
}
|
|
124692
|
-
|
|
124693
|
-
this.GetQueryCondtion=function()
|
|
124694
|
-
{
|
|
124695
|
-
var day=new Date();
|
|
124696
|
-
var endDate=day.getFullYear()*10000+(day.getMonth()+1)*100+day.getDate();
|
|
124697
|
-
day.setDate(day.getDate()-100); //取最近1000条数据
|
|
124698
|
-
var startDate=day.getFullYear()*10000+(day.getMonth()+1)*100+day.getDate()
|
|
124699
|
-
var id=this.Args[0];
|
|
124700
|
-
switch(id)
|
|
124701
|
-
{
|
|
124702
|
-
case 1:
|
|
124703
|
-
var data=
|
|
124704
|
-
{
|
|
124705
|
-
Symbol:["CNA.ci"],
|
|
124706
|
-
Field:["margin"],
|
|
124707
|
-
Cond:
|
|
124708
|
-
[
|
|
124709
|
-
{"item":["date","int32","gte",startDate.toString(),"lte",endDate.toString()]},
|
|
124710
|
-
{"item":["margin","doc","exists","true"]}
|
|
124711
|
-
]
|
|
124712
|
-
}
|
|
124713
|
-
return data;
|
|
124714
|
-
}
|
|
124715
|
-
}
|
|
124716
|
-
|
|
124717
|
-
this.ToHQChartData=function(recvData)
|
|
124718
|
-
{
|
|
124719
|
-
if (!recvData.stock || recvData.stock.length!=1) return null;
|
|
124720
|
-
|
|
124721
|
-
var aryData=[];
|
|
124722
|
-
var setDate=new Set(); //有重复数据 去掉
|
|
124723
|
-
var stock=recvData.stock[0];
|
|
124724
|
-
var id=this.Args[0];
|
|
124725
|
-
var subID=this.Args[1];
|
|
124726
|
-
for(var i in stock.stockday)
|
|
124727
|
-
{
|
|
124728
|
-
var item=stock.stockday[i];
|
|
124729
|
-
|
|
124730
|
-
var hqchartItem=this.ToHQChartItemData(item,id,subID);
|
|
124731
|
-
if (hqchartItem && !setDate.has(hqchartItem.Date))
|
|
124732
|
-
{
|
|
124733
|
-
aryData.push(hqchartItem);
|
|
124734
|
-
setDate.add(hqchartItem.Date);
|
|
124735
|
-
}
|
|
124736
|
-
}
|
|
124737
|
-
|
|
124738
|
-
return aryData;
|
|
124739
|
-
}
|
|
124740
|
-
|
|
124741
|
-
this.ToHQChartItemData=function(item, id, subID)
|
|
124742
|
-
{
|
|
124743
|
-
if (!item) return null;
|
|
124744
|
-
var date=item.date;
|
|
124745
|
-
var subItem=null;
|
|
124746
|
-
switch(id)
|
|
124747
|
-
{
|
|
124748
|
-
case 1:
|
|
124749
|
-
if (!item.margin) return null;
|
|
124750
|
-
subItem=item.margin;
|
|
124751
|
-
if (subID==1)
|
|
124752
|
-
{
|
|
124753
|
-
if (!subItem.buy || !IFrameSplitOperator.IsNumber(subItem.buy.balance)) return null;
|
|
124754
|
-
return { Date:date, Value:subItem.buy.balance }
|
|
124755
|
-
}
|
|
124756
|
-
else
|
|
124757
|
-
{
|
|
124758
|
-
if (!IFrameSplitOperator.IsNumber(subItem.sell.balance)) return null;
|
|
124759
|
-
return { Date:date, Value:subItem.sell.balance }
|
|
124760
|
-
}
|
|
124761
|
-
|
|
124762
|
-
default:
|
|
124763
|
-
return null;
|
|
124764
|
-
}
|
|
124765
|
-
}
|
|
124766
|
-
}
|
|
124767
|
-
|
|
124768
124274
|
function DownloadGroupData(obj)
|
|
124769
124275
|
{
|
|
124770
124276
|
this.Url=obj.Url;
|