以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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
--  
谢谢,那二个范例肯定看了.
最近先忙别的,这个函数先放放