我想编写一个求第N大(小)值的自定义函数,但是报错.最开始我想用任意序列数组"x"代替参数"close",报错(类型不匹配,注意:如果不使用该函数就不会报错,但一旦在公式指标中使用了则会报错),然后又参照vba编程帮助中的Function CU_MA1(Formula,CLOSE,Cyc)
函数改成close,还是不行,虽然这个示例函数是运行在序列模式下,但是帮助也没说不能在逐K线模式下使用序列数组作参数呀.请问如果我一定要让该函数运行在逐k模式下,该怎么修改?
另外请问,为什么ubound(close)也不能使用,也会报错(类型不匹配)?
Function imaxmin(Formula,close,n,m,ai)
'求序列数组x在n周期第m大/小的值,ai:判断是求最大值还是最小值,1为求最大值,0为求最小值
If Formula.WorkMode = 1 then
Exit Function
End If
DataCount =Formula.IndexData' UBound(x)
if DataCount<n-1 or m>n or n<1 or m<1 then
imaxmin= close(DataCount)
exit function
end if
Dim d
Set d = CreateObject("Stock.Array")
for i=DataCount-(n-1) to DataCount
d.AddBack(x(i))
next
d.sort(0)
if ai=1 then
j=n-m
else
j=m-1
end if
imaxmin=d.getat(j)
set d=nothing
End Function
金字塔不是自带了 CU_MA1和CU_MA2 分别代表序列模式和逐K线模式的范例了?
你没仔细看看?
报错的原因可能是你在逐K线模式去调用序列模式下的自定义函数,由于不是数组,当然是不行