各位老大们,我是金字塔的使用新手,现遇到一个问题,我写了一个自定义函数计算某只股票的涨跌幅,然后想把它当做一个指标来显示,函数计算的值是正确的(我把结果写到文件看了一下,没问题),但是在附图上的显示明显不对,不知道为啥,哪位大神指点一下。一下是自定义函数和公式的代码:
Function ZHZDF(Formula)
'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
ZHZDF=0
dim fsObj
dim file
dim History
dim DataCount
dim LastClose
Set fsObj = CreateObject("Scripting.FileSystemObject")
Set file = fsObj.CreateTextFile("c:\test.txt", True)
Set History = marketdata.GetHistoryData("600036","SH",0)
DataCount=History.Count
Dim Result
Redim Result(DataCount)
For i=0 to DataCount-1
if i=0 then
LastClose=History.Close(i)
Result(i)=0
else
if DATEDIFF("d",History.Date(i-1),History.Date(i))>=1 then
LastClose=History.Close(i-1)
end if
Result(i)=(History.Close(i) - LastClose) / LastClose * 100
end if
file.WriteLine ("时间:" & History.Date(i) & " 昨收:" & LastClose & " 收价:" & History.Close(i) & " 涨跌:" & Result(i) )
Next
file.Close
ZHZDF=Result
End Function
公式:MA1:ZHZDF();
附上截图和日志此主题相关图片如下:pic.jpg
,从图上看涨跌幅大部分是负数,和日志文件不一样
下载信息 [文件大小: 下载次数: ] | |
![]() |
大神终于现身了,太感谢了。其实我的问题不是具体哪根K线跟哪根K线比的问题,我关注的问题是为啥自定义函数中返回的数组怎么样才能在副图中显示正确,根据日志文件中的数据和副图曲线中数字的对比,明显不一样。怎么样才能解决?
和写的文本不一致,文本的数据是对的
你的问题应该是数据的取值范围导致的,你的代码
Set History = marketdata.GetHistoryData("600036","SH",0)
这样表示的是从硬盘中读取数据,这样会导致从硬盘读取的数据跟你图表显示的在数据的起始时间是没法对齐的,如果你希望是按照你图表显示的完全对齐,那么你应该使用图表上的数据运算而不应该从硬盘读取。
Set Grid = Formula.ParentGrid
Set History = Grid.GetHistoryData