以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- 关于一个自定义函数的编写 (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=71063) |
-- 作者:dwjgwsm -- 发布时间:2014/10/16 21:43:34 -- 关于一个自定义函数的编写 我想编写一个求第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 |
-- 作者:dwjgwsm -- 发布时间:2014/10/17 8:22:47 -- d.AddBack(x(i))那里忘了修改,但是改过来还是不对 |
-- 作者:dwjgwsm -- 发布时间:2014/10/17 14:34:37 -- 怎么没人回复啊 |
-- 作者:dwjgwsm -- 发布时间:2014/10/20 13:27:14 -- ?? |
-- 作者:王锋 -- 发布时间:2014/10/20 23:04:59 -- 金字塔不是自带了 CU_MA1和CU_MA2 分别代表序列模式和逐K线模式的范例了? 你没仔细看看?
报错的原因可能是你在逐K线模式去调用序列模式下的自定义函数,由于不是数组,当然是不行 |
-- 作者:dwjgwsm -- 发布时间:2014/10/21 15:57:15 -- 谢谢,那二个范例肯定看了. 最近先忙别的,这个函数先放放
|