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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 用VBA实现自定义函数的功能

   

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


  共有4797人关注过本帖树形打印复制链接

主题:用VBA实现自定义函数的功能

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


加好友 发短信
等级:新手上路 帖子:30 积分:161 威望:0 精华:0 注册:2013/1/12 17:15:35
用VBA实现自定义函数的功能  发帖心情 Post By:2013/3/14 14:26:17 [只看该作者]

在逐K线模式下,我想用VBA实现自定义一个函数,但函数想有多个参数返回(返回的个数也不固定),我想返回一个数组,不知道应该怎么写?

 回到顶部
帅哥哟,离线,有人找我吗?
rushtaotao
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2013/3/14 14:33:55 [只看该作者]

自定义函数中有例子,你肯定是要传递进去一个下标 返回出来一个值

Function CU_MA1(Formula,CLOSE,CYC)
   CU_MA1=0

    '防止公式逐周期模式时调用
    If Formula.WorkMode = 0 Then
        Exit Function 
    End If

    'CLOSE数组数据长度一定会与Formula.DataSize-1相等
    DataCount = UBound(CLOSE)
    If DataCount <> Formula.DataSize-1 Then
        Exit Function
    End If

    '定义一个计算返回的数组
    Dim ResultMa
    Redim ResultMa(DataCount)

    For i = Cyc-1 To Formula.DataSize-1
        Count = 0
        For k = i-(Cyc-1) To i
            Count = Count + CLOSE(k)
        Next
        ResultMa(i) = Count / Cyc
    Next

    '返回一个计算完毕的均线数组
    CU_MA1 = ResultMa
End Function

[此贴子已经被作者于2013-3-14 14:34:59编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
biggsun
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:30 积分:161 威望:0 精华:0 注册:2013/1/12 17:15:35
  发帖心情 Post By:2013/3/14 15:14:31 [只看该作者]

这个例子我看过,这个不是在序列模式下吗?

我想在逐K模式下运行。

另外,我想一个自定义函数,返回多个参数,而且返回参数的数目也不固定,比如返回压力位,只有在计算完成后,我才知道有几个压力位,每个压力位的位置,这样的要求能实现吗?

 

谢谢!!


 回到顶部
帅哥哟,离线,有人找我吗?
admin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2013/3/14 15:43:48 [只看该作者]

自定义函数在逐K线模式下无法返回数组。

 回到顶部
帅哥哟,离线,有人找我吗?
biggsun
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:30 积分:161 威望:0 精华:0 注册:2013/1/12 17:15:35
  发帖心情 Post By:2013/3/14 15:53:04 [只看该作者]

哦,多谢!

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2013/3/14 15:56:19 [只看该作者]

如果想有多个返回,只能借助数据库技术。

在VBA中将结果保存到数据库,调用自定自定义函数以后,用PEL读取VBA写入的数据库数据


 回到顶部