请教:下面代码意图与结果严重不符,请老师指点:
一、建立一个框架“myFrame”,有主K线图“KMain”
在“myFrame”的“myFrame_Paint()”事件中加载下面的“mainfunc1()”方法
二、代码如下:
\'变量定义
public myGrid, myHistoryData
Set myGrid = myFrame.GetGridByName("KMain")
Set myHistoryData = myGrid.GetHistoryData()
dim intCount,intPos
public arrayLHigh(), arrayPels()'arrayLHigh是向上突破极限,arrayPels取K线在屏幕上位置
intCount=myGrid.DataCount
redim arrayLHigh(intCount), arrayPels(intCount)
\'函数设计意图:根据价格变化,画出相应的向上突破极限,便于看图时作出判断
Function MoveLimit2()
MoveLimit2=0
for intPos=1 to intCount
If intPos=1 Then
arrayLHigh(intPos)=myHistoryData.High(intPos)*1.1 \'如果是第一根K线,突破极限设为此K线最高价1.1倍
ElseIf myHistoryData.high(intPos)<arrayLHigh(intPos-1) and myHistoryData.high(intPos)>myHistoryData.high(intPos-1) Then
arrayLHigh(intPos)=arrayLHigh(intPos-1) \'如果当前最高价小于上一周期突破极限,且大于上一周期最高价,则此周期突破极限等于上一周期
Else
arrayLHigh(intPos)=myHistoryData.High(intPos)*1.1 \'否则,突破极限设为此K线最高价1.1倍
End If
arrayPels(intPos)=myGrid.PelsByPos(intPos) \'取X坐标
if(myGrid.PtInGrid( arrayPels(intPos), myHistoryData.High(intPos))) then
myGrid.DrawLine arrayPels(intPos-1), arrayLHigh(intPos-1), arrayPels(intPos), arrayLHigh(intPos), vbRed, 2, 0
end if
Next
End Function
Function mainfunc1()
if myGrid.DataType<>1 then
msgbox "当前窗口不是K线窗口,不宜进行分析,此功能退出!", "重要提示!"
exit Function
end if
if myGrid.Type<>0 then
msgbox "当前窗口不是主图窗口,不宜进行分析,此功能退出!", "重要提示!"
exit Function
end if
msgbox "当前限高为:"& arrayLHigh(intCount) &vbNewLine _
&"当前X坐标为:"& arrayPels(intCount) &vbNewLine _
&"当前Y坐标为:"& myHistorydata.high(intPos)
MoveLimit2
End Function
三、希望得到的结果是:向上突破极限随价格变动不断变化。

此主题相关图片如下:02.png

实际结果是:在图的最上面有一条线,与实际价格严重脱离。

此主题相关图片如下:01.png

谢谢。