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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 自定义函数传入变量问题

   

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


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

主题:自定义函数传入变量问题

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


加好友 发短信
等级:新手上路 帖子:101 积分:530 威望:0 精华:0 注册:2011/12/9 19:43:29
自定义函数传入变量问题  发帖心情 Post By:2012/3/28 1:34:27 [只看该作者]

能否实现如下功能,如何实现:
 
写一个逐周期自定义函数CF(Formula, Series), series既可以传入C,又可以传入(H+L)/2等,这样才能体现函数的价值嘛:)

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


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2012/3/28 8:48:13 [只看该作者]

既然是参数,传入什么,不是你自己说了算了吗?

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


加好友 发短信
等级:新手上路 帖子:101 积分:530 威望:0 精华:0 注册:2011/12/9 19:43:29
  发帖心情 Post By:2012/3/28 11:44:15 [只看该作者]

 可是在K线模式下,函数中Series(n)的写法报错,是不是K线模式不能传入数组啊,还是我的写法有问题?

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


加好友 发短信
等级:新手上路 帖子:101 积分:530 威望:0 精华:0 注册:2011/12/9 19:43:29
  发帖心情 Post By:2012/3/28 11:48:18 [只看该作者]

比如说在K线模式下 UBound(Series)  类型不匹配,是不是说明Series不能是个数组啊。那我传入close、(H+L)/2也就不能达到所期望的那样了。

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


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

将你的公式调用方式,及VBA函数代码贴过来我们看看

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


加好友 发短信
等级:新手上路 帖子:101 积分:530 威望:0 精华:0 注册:2011/12/9 19:43:29
  发帖心情 Post By:2012/3/28 12:17:09 [只看该作者]

 很简单,比如我想求最近两个数据的最大值,如以下代码:

Function CU_HHV(Formula,Series)
    '改为逐周期调用
    If Formula.WorkMode = 1 Then
        Exit Function
    End If

    DataCount = UBound(Series)
    IF Series(DataCount) > Series(DataCount-1) THEN 'Function.Max(Series(DataCount), Series(DataCount-1))
        CU_HHV = Series(DataCount)
    ELSE
        CU_HHV = Series(DataCount - 1)
    END IF
End Function

调用的时如下:
CU_HHV(H)  求高点最大值
CU_HHV(L)  求低点点最大值

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


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

问题主要出在,在逐K线模式下,你传递过来的变量都是单值数据而非数组,

DataCount = UBound(Series)
你这样来调用取数组的数量大小是错误的,正确的方法是程序内部使用一个数组,保存传递过来的数据,然后进行对比


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


加好友 发短信
等级:新手上路 帖子:101 积分:530 威望:0 精华:0 注册:2011/12/9 19:43:29
  发帖心情 Post By:2012/3/28 13:43:09 [只看该作者]

不知您能看明白我的需求没,能不能帮忙写个小小的示例,关键代码即可。
即我想写一个函数能在逐K线模式下用,可传入不同变量(如Close、如High等),函数中可以调用这个变量不同时期的值以进行计算。
多谢!!

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


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

稍后给你做个范例


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


加好友 发短信
等级:新手上路 帖子:101 积分:530 威望:0 精华:0 注册:2011/12/9 19:43:29
  发帖心情 Post By:2012/3/28 14:28:51 [只看该作者]

非常感谢!!图片点击可在新窗口打开查看

 回到顶部
总数 24 1 2 3 下一页