欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 关于一个自定义函数的编写

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3265人关注过本帖平板打印复制链接

主题:关于一个自定义函数的编写

帅哥哟,离线,有人找我吗?
dwjgwsm
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
关于一个自定义函数的编写  发帖心情 Post By: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

 回到顶部