以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  自定义函数的几个问题  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=4182)

--  作者:grecian
--  发布时间:2010/11/28 18:47:30
--  自定义函数的几个问题
 金字塔软件管理员:
     您好。下面关于自定义函数的几个问题,希望可以解答一下,谢谢。
     (1)自定义函数下调用标准函数
          a)以前在论坛曾经问过"自定义函数中是否可以直接调用标准函数",被告知有部分函数是可以的。
            我现在想知道,自定义函数下可以直接调用的标准函数有多少。(例如,CLOSE),最好能够告诉一下,能在什么地方查询到。
          b)对于自定义函数下可以直接调用的CLOSE,如果不做传入,会报错,说类型不匹配,在此请问一下是否可以在自定义函数下直接调用CLOSE。
          c)如果传入的话我们知道CLOSE是一个序列函数,也就是说是一个数组。那么此时CLOSE(i),是会出现数据的。
            但是我想请问一下,这里的i的含义是什么。
          d)在论坛文章http://www.weistock.com/bbs/dispbbs.asp?BoardID=5&ID=158&replyID=&skin=1中我看到了自定义函数的Formula:
            它应该是自定义函数生成时候自动加入的(并非参数),它有自己的属性,分别是:
               Formula.WorkMode,
               Formula.ParentGrid.GetHistoryData,
               Formula.IndexData,
               Formula.DataSize,
            能否解释一下这些属性的含义,最好能够告知在什么地方能够看到文档,可以在编程的时候进行查询。
      (2)自定义函数和全局变量设置函数EXTGBDATASET
          自定义函数中可以不可以使用全局变量设置函数EXTGBDATASET,全局变量设置函数EXTGBDATASET是否只可以设定10个,就是0-9。
      (3)在程序化交易系统中的函数调用
          在程序化交易系统中,想调用函数是否一定需要自定义函数。另外想请问一下,自定义函数是否支持递归调用。
           


--  作者:BNF
--  发布时间:2010/11/29 11:37:09
--  

据我了解,自定义函数是vba,而不是pel,所以数据引用不同。

另外补充个问题:在pel执行中含有vba自定义函数,而同时有vba宏在运行,那自定义函数是直接就进行计算,还是必须等宏执行完才计算。谢谢!


--  作者:BNF
--  发布时间:2010/11/29 17:36:45
--  
以下是引用grecian在2010-11-28 18:47:30的发言:
 金字塔软件管理员:
     您好。下面关于自定义函数的几个问题,希望可以解答一下,谢谢。
     (1)自定义函数下调用标准函数
          a)以前在论坛曾经问过"自定义函数中是否可以直接调用标准函数",被告知有部分函数是可以的。
            我现在想知道,自定义函数下可以直接调用的标准函数有多少。(例如,CLOSE),最好能够告诉一下,能在什么地方查询到。
          b)对于自定义函数下可以直接调用的CLOSE,如果不做传入,会报错,说类型不匹配,在此请问一下是否可以在自定义函数下直接调用CLOSE。
          c)如果传入的话我们知道CLOSE是一个序列函数,也就是说是一个数组。那么此时CLOSE(i),是会出现数据的。
            但是我想请问一下,这里的i的含义是什么。
          d)在论坛文章http://www.weistock.com/bbs/dispbbs.asp?BoardID=5&ID=158&replyID=&skin=1中我看到了自定义函数的Formula:
            它应该是自定义函数生成时候自动加入的(并非参数),它有自己的属性,分别是:
               Formula.WorkMode,
               Formula.ParentGrid.GetHistoryData,
               Formula.IndexData,
               Formula.DataSize,
            能否解释一下这些属性的含义,最好能够告知在什么地方能够看到文档,可以在编程的时候进行查询。
      (2)自定义函数和全局变量设置函数EXTGBDATASET
          自定义函数中可以不可以使用全局变量设置函数EXTGBDATASET,全局变量设置函数EXTGBDATASET是否只可以设定10个,就是0-9。
      (3)在程序化交易系统中的函数调用
          在程序化交易系统中,想调用函数是否一定需要自定义函数。另外想请问一下,自定义函数是否支持递归调用。
           

其实所有的问题,你只要看作是vba的function就会非常容易的理解了


--  作者:admin
--  发布时间:2010/12/1 22:33:44
--  
帮助-》编程信息
--  作者:admin
--  发布时间:2010/12/2 15:34:36
--  

1)

a: 自定义函数使用的是VBS脚本语言,与PEL的交互只能通过参数传递方式,故PEL的函数功能大都需要用户自行编写,少数统计函数可以直接使用,具体请参阅 帮助-》编程信息

b: 可以在VBA代码里直接取行情的CLOSE数据,不用参数传递,自定义函数中直接取收盘价,例子很多,请楼主参考 http://www.weistock.com/bbs/dispbbs.asp?boardid=5&Id=158 教程里,逐周期模式的自定义函数做法。

c: 自定义的函数参数传递,由于公式系统的模式不同,分序列和逐周期,对于序列模式,参数是数组,对于逐周期,参数是单值数据。请参考上面的教程。

d:帮助-》编程信息

 

 (2)自定义函数和全局变量设置函数EXTGBDATASET
不限制数量,EXTGBDATASET的设置,请参考编程信息中的Document对象

(3)在程序化交易系统中的函数调用
  程式化交易不一定非要自定义函数,只有在PEL无法描述的某些复杂的操作我们采用VBA的自定义函数进行扩充