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


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

   

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


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

主题:VB自定义函数问题

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


加好友 发短信
等级:论坛游侠 帖子:131 积分:0 威望:0 精华:0 注册:2016/8/27 12:09:41
VB自定义函数问题  发帖心情 Post By:2016/10/10 9:48:35 [只看该作者]

1.软件的示例 DefaultProject--模块--Function下第一个例子 Function TriangleShape(Formula,Cyc,SCyc,ECyc)每次打开管理面板--高级 都报 编译错误--1002.我仔细检查过似乎没有语法错误,即使把函数体移除,只保留一个空壳还是同样报错。如图

图片点击可在新窗口打开查看此主题相关图片如下:1001.png
图片点击可在新窗口打开查看

 

2.示例函数 CU_MA1和CU_MA2,我编入指标公式,测试正常,但在技术分析界面始终显示为0. 在VB中用MsgBox 显示从金字塔中读取数据正常,如图


图片点击可在新窗口打开查看此主题相关图片如下:1002.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:1003.png
图片点击可在新窗口打开查看

 

请问是哪里出问题呢?谢谢


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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2016/10/10 13:55:33 [只看该作者]

TriangleShape这个函数你自己胡乱修改他源代码了,原始代码是这样的。

Function TriangleShape(Formula,Cyc,SCyc,ECyc)

'    'msgbox cyc & "-" & scyc & "-" & ecyc

' '该函数计算当前位置图形是否是三角形突破,如果是则返回1,否则返回0。该函数只有在选股时才能使用。

' TriangleShape=0

' '如果是分时数据或者分笔成交那么直接返回

' If Formula.ParentGrid.DataType = 0 or Formula.ParentGrid.CycType = 10 Then

'  Exit Function

' End If

vba启动了没,切换品种试试呢,另外直接在函数里把返回值强制返回一个比如10再看看。


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


加好友 发短信
等级:论坛游侠 帖子:131 积分:0 威望:0 精华:0 注册:2016/8/27 12:09:41
  发帖心情 Post By:2016/10/10 16:46:51 [只看该作者]

1.第一个问题,我那个改动是故意的,就是看看没有函数主题的时候是否报错,结果当然是报错。我把程序重装一遍,保证没有改动,还是这样。不过我估计问题是这样:我的系统是64位,不小心装了32位的金字塔,现在改为64位,出现新问题:进入调试,提示“你必须安装windows脚本调试补丁....”“已成功安装....”,重启机器,再来,还是同样的问题。请指教该如何做?

 

2.安装64位后,自定义函数可以用了,显示的效果和预期的一样!


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


加好友 发短信
等级:论坛游侠 帖子:131 积分:0 威望:0 精华:0 注册:2016/8/27 12:09:41
  发帖心情 Post By:2016/10/10 17:00:36 [只看该作者]

64位VB启动后不能停止,停下再启动就报出现异常(如图)。32位的则没有这个问题


图片点击可在新窗口打开查看此主题相关图片如下:1004.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2016/10/10 17:11:38 [只看该作者]

按照说明,重新建一个项目试试呢

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


加好友 发短信
等级:论坛游侠 帖子:131 积分:0 威望:0 精华:0 注册:2016/8/27 12:09:41
  发帖心情 Post By:2016/10/10 17:40:04 [只看该作者]

如果停止后不运行 工具--开始调试,那么再启动是正常的;如果运行了 工具--开始调试,就会出现上面提示“启动VBS引擎时出现异常”。新建项目的测试也是一样的。

 

可能在那个脚本调试补丁上,如何补呢? 提示安装成功,但每次又提示安装。


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


加好友 发短信
等级:论坛游侠 帖子:131 积分:0 威望:0 精华:0 注册:2016/8/27 12:09:41
  发帖心情 Post By:2016/10/11 8:37:57 [只看该作者]

基本上折腾清楚了 :

     1. 4.00版32位不能调用自定义函数,64位启动VB有问题(如果启动过调试);

     2. 3.92版64位启动VB有问题(如果启动过调试),32位可以用,虽然调试基本不能用,只是帮助发现语法错误;

     3. 暂时只好用3.92x86。


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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2016/10/11 9:01:10 [只看该作者]

1、不要去用那个调试工具,一般调试我们都建议自己在代码里插入msgout进行输出查看的

 


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


加好友 发短信
等级:论坛游侠 帖子:131 积分:0 威望:0 精华:0 注册:2016/8/27 12:09:41
  发帖心情 Post By:2016/10/11 9:49:04 [只看该作者]

明白了,不用调试工具,开市的时候64位的能正常运行,32位的又不行的。

谢谢!


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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2016/10/11 10:25:50 [只看该作者]

和32没关系的,你本地新建一个项目然后新建默认自定义函数输出


此主题相关图片如下:qv{l_k_xa8g(gu}$1wp6@5x.png
按此在新窗口浏览图片

 

 

可以通过两种方法添加自定义函数:

1、在公式编辑器界面中,鼠标在“函数”解释定义区单击右键,然后选择“添加自定义函数”。

2、在Visual Basic工程管理器中选择Function模块,进入Visual Basic编辑界面,然后选择“插入”菜单中的“过程”。

有关自定义函数的格式

每个自定义函数都会有一个Formula对象,即使没有参数的自定义函数也至少有这么一个对象参数存在。每次公式系统执行遇到自定义函数的时候,会不断的依次调用它,直至整个公式解释完毕。

注意:请不要试图在Function模块中直接添加自定义函数,因为这样系统不会承认他。

[此贴子已经被作者于2016-10-11 10:26:32编辑过]

 回到顶部