hqchart 1.1.12614 → 1.1.12627

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.
@@ -30520,6 +30520,108 @@ function ChartSingleText()
30520
30520
  }
30521
30521
 
30522
30522
 
30523
+ function ChartTradeIcon()
30524
+ {
30525
+ this.newMethod=IChartPainting; //派生
30526
+ this.newMethod();
30527
+ delete this.newMethod;
30528
+
30529
+ this.ClassName='ChartTradeIcon'; //类名
30530
+ this.TextAlign='center';
30531
+ this.TextBaseline='middle';
30532
+ this.SVG={ Family:"iconfont", Size:12 };
30533
+ this.AryIcon;
30534
+
30535
+ this.Draw=function()
30536
+ {
30537
+ if (!this.IsShow || this.ChartFrame.IsMinSize || !this.IsVisible) return;
30538
+ if (this.IsShowIndexTitleOnly()) return;
30539
+ if (this.IsHideScriptIndex()) return;
30540
+
30541
+ if(!this.Data || !this.Data.Data) return;
30542
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon)) return;
30543
+
30544
+ this.Canvas.font=`${this.SVG.Size}px ${this.SVG.Family}`;
30545
+ this.Canvas.textAlign=this.TextAlign;
30546
+ this.Canvas.textBaseline='middle';
30547
+ var yOffset=0;
30548
+ if (this.TradeType=="BUY" || this.TradeType=="BUYSHORT")
30549
+ {
30550
+ this.Canvas.textBaseline="bottom";
30551
+ yOffset=-2;
30552
+ }
30553
+ else if (this.TradeType=="SELL" || this.TradeType=="SELLSHORT")
30554
+ {
30555
+ this.Canvas.textBaseline="top";
30556
+ yOffset+2;
30557
+ }
30558
+
30559
+ var bHScreen=(this.ChartFrame.IsHScreen===true);
30560
+ var dataWidth=this.ChartFrame.DataWidth;
30561
+ var distanceWidth=this.ChartFrame.DistanceWidth;
30562
+ var chartright=this.ChartBorder.GetRight();
30563
+ if (bHScreen) chartright=this.ChartBorder.GetBottom();
30564
+ var xPointCount=this.ChartFrame.XPointCount;
30565
+ var border=this.ChartFrame.GetBorder();
30566
+ var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;
30567
+
30568
+ for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j,xOffset+=(dataWidth+distanceWidth))
30569
+ {
30570
+ var value=this.Data.Data[i];
30571
+ if (!IFrameSplitOperator.IsNumber(value)) continue;
30572
+ if (value<=0) continue;
30573
+
30574
+ var iconItem=this.AryIcon[i];
30575
+ if (!IFrameSplitOperator.IsNumber(iconItem.Value) || !iconItem.Icon) continue;
30576
+
30577
+ var left=xOffset;
30578
+ var right=xOffset+dataWidth;
30579
+ if (right>chartright) break;
30580
+
30581
+
30582
+ var x=left+(right-left)/2;
30583
+ var y=this.GetYFromData(iconItem.Value, false);
30584
+
30585
+ this.Canvas.fillStyle=iconItem.Color;
30586
+ this.Canvas.fillText(iconItem.Icon,x,y+yOffset);
30587
+ }
30588
+ }
30589
+
30590
+ this.GetMaxMin=function()
30591
+ {
30592
+ var range={Max:null, Min:null };
30593
+ if(!this.Data || !this.Data.Data) return range;
30594
+ if (!IFrameSplitOperator.IsNonEmptyArray(this.AryIcon)) return range;
30595
+
30596
+ var xPointCount=this.ChartFrame.XPointCount;
30597
+ var start=this.Data.DataOffset;
30598
+ if (this.ChartFrame.GlobalOption && this.ChartFrame.GlobalOption.IsValueFullRange)
30599
+ {
30600
+ start=0;
30601
+ xPointCount=this.Data.Data.length;
30602
+ }
30603
+
30604
+ for(var i=start,j=0;i<this.Data.Data.length && j<xPointCount;++i,++j)
30605
+ {
30606
+ var value=this.Data.Data[i];
30607
+ if (!IFrameSplitOperator.IsNumber(value)) continue;
30608
+ if (value<=0) continue;
30609
+
30610
+ var iconItem=this.AryIcon[i];
30611
+ if (!IFrameSplitOperator.IsNumber(iconItem.Value) || !iconItem.Icon) continue;
30612
+
30613
+ if (range.Max==null) range.Max=iconItem.Value;
30614
+ else if (range.Max<iconItem.Value) range.Max=iconItem.Value;
30615
+
30616
+ if (range.Min==null) range.Min=iconItem.Value;
30617
+ else if (range.Min>iconItem.Value) range.Min=iconItem.Value;
30618
+ }
30619
+
30620
+ return range;
30621
+ }
30622
+ }
30623
+
30624
+
30523
30625
  function ChartDrawText()
30524
30626
  {
30525
30627
  this.newMethod=IChartPainting; //派生
@@ -51187,7 +51289,7 @@ function IChartDrawPicture()
51187
51289
  //xStep,yStep 移动的偏移量
51188
51290
  this.Move=function(xStep,yStep)
51189
51291
  {
51190
- if (this.Status!=20) return fasle;
51292
+ if (this.Status!=20) return false;
51191
51293
  if (!this.Frame) return false;
51192
51294
  var data=this.Frame.Data;
51193
51295
  if (!data) return false;
@@ -54612,7 +54714,7 @@ function ChartDrawPictureParallelChannel()
54612
54714
  //xStep,yStep 移动的偏移量
54613
54715
  this.Move=function(xStep,yStep)
54614
54716
  {
54615
- if (this.Status!=20) return fasle;
54717
+ if (this.Status!=20) return false;
54616
54718
  if (!this.Frame) return false;
54617
54719
  var data=this.Frame.Data;
54618
54720
  if (!data) return false;
@@ -74051,34 +74153,55 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
74051
74153
  this.RequestData();
74052
74154
  }
74053
74155
 
74054
- //叠加股票
74156
+ //叠加股票 symbol支持数据 ["600000.sh", "0000001.sz"]
74055
74157
  this.OverlaySymbol=function(symbol,option)
74056
74158
  {
74057
- for(var i=0; i<this.OverlayChartPaint.length; ++i)
74159
+ var arySymbol=null;
74160
+ if (IFrameSplitOperator.IsString(symbol)) arySymbol=[symbol];
74161
+ else if (Array.isArray(symbol)) arySymbol=symbol;
74162
+ if (!IFrameSplitOperator.IsNonEmptyArray(arySymbol)) return false;
74163
+
74164
+ var aryNewSymbol=[];
74165
+ for(var i=0, j=0;i<arySymbol.length;++i)
74058
74166
  {
74059
- var item=this.OverlayChartPaint[i];
74060
- if (item.Symbol==symbol)
74167
+ var strSymbol=arySymbol[i];
74168
+ var bFind=false;
74169
+ for(j=0;j<this.OverlayChartPaint.length; ++j)
74061
74170
  {
74062
- console.warn(`[MinuteChartContainer::OverlaySymbol] overlay symbol=${symbol} exist.`);
74063
- return false;
74171
+ var item=this.OverlayChartPaint[j];
74172
+ if (item.Symbol==strSymbol)
74173
+ {
74174
+ bFind=true;
74175
+ console.warn(`[MinuteChartContainer::OverlaySymbol] overlay symbol=${strSymbol} exist.`);
74176
+ break;
74177
+ }
74064
74178
  }
74179
+
74180
+ if (!bFind) aryNewSymbol.push(strSymbol);
74065
74181
  }
74066
74182
 
74067
- var paint=new ChartOverlayMinutePriceLine();
74068
- paint.Canvas=this.Canvas;
74069
- paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;
74070
- paint.ChartFrame=this.Frame.SubFrame[0].Frame;
74071
- paint.Name="Overlay-Minute";
74072
- paint.Symbol=symbol;
74073
- paint.Identify=`Overlay-Minute-${symbol}`;
74074
- if (option && option.Color) paint.Color=option.Color; //外部设置颜色
74075
- else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];
74076
- ++g_JSChartResource.OverlaySymbol.Random;
74077
- paint.MainData=this.SourceData; //绑定主图数据
74183
+ if (!IFrameSplitOperator.IsNonEmptyArray(arySymbol)) return true;
74078
74184
 
74079
- if (paint.SetOption) paint.SetOption(option);
74185
+ for(var i=0;i<aryNewSymbol.length;++i)
74186
+ {
74187
+ var strSymbol=aryNewSymbol[i];
74080
74188
 
74081
- this.OverlayChartPaint.push(paint);
74189
+ var paint=new ChartOverlayMinutePriceLine();
74190
+ paint.Canvas=this.Canvas;
74191
+ paint.ChartBorder=this.Frame.SubFrame[0].Frame.ChartBorder;
74192
+ paint.ChartFrame=this.Frame.SubFrame[0].Frame;
74193
+ paint.Name="Overlay-Minute";
74194
+ paint.Symbol=strSymbol;
74195
+ paint.Identify=`Overlay-Minute-${strSymbol}`;
74196
+ if (option && option.Color) paint.Color=option.Color; //外部设置颜色
74197
+ else paint.Color=g_JSChartResource.OverlaySymbol.Color[g_JSChartResource.OverlaySymbol.Random%g_JSChartResource.OverlaySymbol.Color.length];
74198
+ ++g_JSChartResource.OverlaySymbol.Random;
74199
+ paint.MainData=this.SourceData; //绑定主图数据
74200
+
74201
+ if (paint.SetOption) paint.SetOption(option);
74202
+
74203
+ this.OverlayChartPaint.push(paint);
74204
+ }
74082
74205
 
74083
74206
  if (this.DayCount<=1) this.RequestOverlayMinuteData(); //请求数据
74084
74207
  else this.RequestOverlayHistoryMinuteData();
@@ -78,7 +78,14 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
78
78
  'VARP':FUNCTION_NAME,'NDAY':FUNCTION_NAME,'UPNDAY':FUNCTION_NAME,'DOWNNDAY':FUNCTION_NAME,'LONGCROSS':FUNCTION_NAME,'EXISTR':FUNCTION_NAME,
79
79
  'RELATE':FUNCTION_NAME,'COVAR':FUNCTION_NAME,'HHVBARS':FUNCTION_NAME,'LLVBARS':FUNCTION_NAME,'BETA':FUNCTION_NAME,
80
80
  'DRAWKLINE_IF':FUNCTION_NAME,'BACKSET':FUNCTION_NAME,'SARTURN':FUNCTION_NAME,'SAR':FUNCTION_NAME,'REVERSE':FUNCTION_NAME,'SUMBARS':FUNCTION_NAME,
81
- 'MEMA':FUNCTION_NAME,'WMA':FUNCTION_NAME,"STRLEN":FUNCTION_NAME,
81
+ 'MEMA':FUNCTION_NAME,'WMA':FUNCTION_NAME,"STRLEN":FUNCTION_NAME,"TMA":FUNCTION_NAME,"HV":FUNCTION_NAME,"HOD":FUNCTION_NAME,"LV":FUNCTION_NAME,
82
+ "VALUEWHEN":FUNCTION_NAME,"TESTSKIP":FUNCTION_NAME,"IFC":FUNCTION_NAME,"IFN":FUNCTION_NAME,"RGB":FUNCTION_NAME,"RGBX":FUNCTION_NAME,
83
+ "SYSPARAM":FUNCTION_NAME,"CALCSTOCKINDEX":FUNCTION_NAME,"STKINDI":FUNCTION_NAME,"RGBA":FUNCTION_NAME,
84
+
85
+ "ISUP":DATA_NAME,"ISEQUAL":DATA_NAME,"ISDOWN":DATA_NAME,
86
+
87
+ "XMOVE":FUNCTION_NAME,"YMOVE":FUNCTION_NAME,"UPCOLOR":FUNCTION_NAME,"DOWNCOLOR":FUNCTION_NAME,
88
+ "STRFORMAT":FUNCTION_NAME,
82
89
 
83
90
  //动态行情函数
84
91
  "DYNAINFO":FUNCTION_NAME,
@@ -93,16 +100,20 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
93
100
  'NEWS':FUNCTION_NAME,
94
101
 
95
102
  //日期类
96
- 'DATE':DATA_NAME,'MONTH':DATA_NAME,'YEAR':DATA_NAME,
103
+ 'DATE':DATA_NAME,'MONTH':DATA_NAME,'YEAR':DATA_NAME,"PERIOD":DATA_NAME,'TIME':DATA_NAME,'TIME2':DATA_NAME, "WEEKDAY":DATA_NAME,
104
+ "WEEKOFYEAR":DATA_NAME,"MACHINEDATE":DATA_NAME,"MACHINETIME":DATA_NAME,"MACHINEWEEK":DATA_NAME,"DAYSTOTODAY":DATA_NAME,
105
+ "FROMOPEN":DATA_NAME,"TOTALFZNUM":DATA_NAME,
106
+ "DATETODAY":FUNCTION_NAME,"DAYTODATE":FUNCTION_NAME,"TIMETOSEC":FUNCTION_NAME,"SECTOTIME":FUNCTION_NAME,
97
107
 
98
108
  //绘图函数
99
109
  'DRAWTEXT':FUNCTION_NAME,'STICKLINE':FUNCTION_NAME,'DRAWBAND':FUNCTION_NAME,'DRAWKLINE':FUNCTION_NAME,
100
110
  'PLOYLINE':FUNCTION_NAME,'POLYLINE':FUNCTION_NAME,'DRAWNUMBER':FUNCTION_NAME,'DRAWICON':FUNCTION_NAME,'SUPERDRAWTEXT':FUNCTION_NAME,
111
+
101
112
 
102
113
  //个股行情数据
103
114
  "CLOSE":DATA_NAME, "C":DATA_NAME,"VOL":DATA_NAME, "V":DATA_NAME,
104
115
  "OPEN":DATA_NAME, "O":DATA_NAME, "HIGH":DATA_NAME, "H":DATA_NAME, "LOW":DATA_NAME,"L":DATA_NAME,"AMOUNT":DATA_NAME,
105
- "CURRBARSCOUNT":DATA_NAME,
116
+ "CURRBARSCOUNT":DATA_NAME, "VOLINSTK":DATA_NAME, "ZSTJJ":DATA_NAME, "OPI":DATA_NAME,
106
117
 
107
118
  //大盘数据
108
119
  "INDEXA":DATA_NAME,"INDEXC":DATA_NAME,"INDEXH":DATA_NAME,"INDEXL":DATA_NAME,"INDEXO":DATA_NAME,"INDEXV":DATA_NAME,'INDEXADV':DATA_NAME,'INDEXDEC':DATA_NAME,
@@ -112,7 +123,17 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
112
123
  'LINETHICK1':LINE_WIDTH_NAME,'LINETHICK2':LINE_WIDTH_NAME,'LINETHICK3':LINE_WIDTH_NAME,'LINETHICK4':LINE_WIDTH_NAME,'LINETHICK5':LINE_WIDTH_NAME,
113
124
  'LINETHICK6':LINE_WIDTH_NAME,'LINETHICK7':LINE_WIDTH_NAME,'LINETHICK8':LINE_WIDTH_NAME,'LINETHICK9':LINE_WIDTH_NAME,'LINETHICK10':LINE_WIDTH_NAME,
114
125
 
126
+ //字体大小
127
+ "FONTSIZE10":LINE_WIDTH_NAME,"FONTSIZE11":LINE_WIDTH_NAME,"FONTSIZE12":LINE_WIDTH_NAME,"FONTSIZE4":LINE_WIDTH_NAME,"FONTSIZE15":LINE_WIDTH_NAME,
128
+ "FONTSIZE16":LINE_WIDTH_NAME,"FONTSIZE17":LINE_WIDTH_NAME,"FONTSIZE18":LINE_WIDTH_NAME,"FONTSIZE9":LINE_WIDTH_NAME,"FONTSIZE20":LINE_WIDTH_NAME,
129
+ "FONTSIZE21":LINE_WIDTH_NAME,"FONTSIZE22":LINE_WIDTH_NAME,"FONTSIZE23":LINE_WIDTH_NAME,"FONTSIZE24":LINE_WIDTH_NAME,"FONTSIZE25":LINE_WIDTH_NAME,
130
+
131
+ "VALIGN0":LINE_WIDTH_NAME,"VALIGN1":LINE_WIDTH_NAME,"VALIGN2":LINE_WIDTH_NAME,
132
+
115
133
  'COLORSTICK':DRAW_NAME,'CIRCLEDOT':DRAW_NAME,'POINTDOT':DRAW_NAME,'LINESTICK':DRAW_NAME,'STICK':DRAW_NAME,'NODRAW':DRAW_NAME,
134
+ "LINEAREA":DRAW_NAME,
135
+
136
+ "BUY":DRAW_NAME,"SELL":DRAW_NAME,"SELLSHORT":DRAW_NAME,"BUYSHORT":DRAW_NAME,"TIPICON":DRAW_NAME,
116
137
 
117
138
  //颜色
118
139
  'COLORYELLOW':COLORYELLOW,'COLORBLACK':COLORBLACK,'COLORBLUE':COLORBLUE,'COLORGREEN':COLORGREEN,'COLORCYAN':COLORCYAN,'COLORRED':COLORRED,