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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → pel公式调用VB自定义函数,传递字符串的问题

   

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


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

主题:pel公式调用VB自定义函数,传递字符串的问题

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


加好友 发短信
等级:新手上路 帖子:29 积分:115 威望:0 精华:0 注册:2011/2/21 19:58:55
pel公式调用VB自定义函数,传递字符串的问题  发帖心情 Post By:2013/9/13 13:08:09 [只看该作者]

VB自定义函数不支持传递字符串参数,搜索了好一会儿,可以用超全局变量解决。
但遇到问题,不能正常传递,
问题会出在哪儿了?

公式:
GLOBALVARIABLE:买入信号='买入';    //这里的‘字符串’是你自己取的变量名
testtxt();


自定义函数:
Function testtxt(Formula)
    '系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    testtxt=0
    MSG=document.getextData("买入信号") 
    MsgBox  "传递字符串:" & MSG
End Function

运行弹出的对话框提示:“传递字符串:100057”,最后变成了数字?

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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/9/13 13:36:23 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130911122009.jpg
图片点击可在新窗口打开查看


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
cthlj
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:29 积分:115 威望:0 精华:0 注册:2011/2/21 19:58:55
  发帖心情 Post By:2013/9/13 14:55:07 [只看该作者]

好吧,之前对字符串的问题,在论坛搜索过的,但没有找到解决办法。

王管应说的是这个帖子的10楼吧:http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=9511

if VBuy then

begin

  buy(1,1,limitr,VOP);       {开多}

  if islastbar and bb<>barpos then

   begin

      bb:= barpos;

      extgbdataSet('字符串','开多信号:'+numtostr(close,0));    //这里的‘字符串’是你自己取的变量名

      VQQM:=QQMSSG(close,open);

   end

end; 

在VBA的自定义函数中这样写:

   QQMSG=document.getextData("字符串")              '获取公式中设置的变量值

   Set obj = CreateObject("WWSCommon.TCGroup")
   call obj.TransMessage(QQNum, QQMSG)
   Set obj = Nothing

 

 

但根据这个方法,重新试了一下,还是不对,弹出窗口依然显示的是数字?

 

  if islastbar then
   begin
      extgbdataSet('买入信号','开多信号:'+numtostr(close,0));    //这里的‘字符串’是你自己取的变量名
      VQQM:=QQMSSG();
   end
   bb:1;

 

 

Function QQMSSG(Formula)
    '系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    QQMSSG=0
    QQMSG=document.getextData("字符串")              '获取公式中设置的变量值
    MsgBox QQMSG

End Function


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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/9/13 15:04:24 [只看该作者]

字符串的操作要用

 

EXTGBSTRING( )
EXTGBSTRINGSET( , )

 

这2个函数



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
cthlj
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:29 积分:115 威望:0 精华:0 注册:2011/2/21 19:58:55
  发帖心情 Post By:2013/9/13 17:32:23 [只看该作者]

感谢回复!

 

EXTGBSTRING( )和EXTGBSTRINGSET( , ) 是试过的,但是没有得到预期的结果,

是下面的代码有问题吗?

运行后,依然提示不对?郁闷!

  if islastbar then
   begin
      EXTGBSTRINGSET('买入信号','开多信号:'+numtostr(close,0));    //这里的‘字符串’是你自己取的变量名
      VQQM:=QQMSSG();
   end
   bb:1;

 

Function QQMSSG(Formula)
    '系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    QQMSSG=0
    QQMSG=document.GetExtString("买入信号")              '获取公式中设置的变量值
    MsgBox QQMSG

End Function


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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2013/9/13 17:36:14 [只看该作者]

你看看 工具菜单-》数据-》全局变量数据库,里面记录的对不对再说


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
cthlj
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:29 积分:115 威望:0 精华:0 注册:2011/2/21 19:58:55
  发帖心情 Post By:2013/9/13 21:44:02 [只看该作者]

原因终于搞清了,内牛满面:

在逐K线模式,使用EXTGBSTRINGSET( , )设定字符串型全局变量,在VB中用document.GetExtString()取值。

下面帖子的10楼给出的例程,只适用于数值型全局变量。

感谢王版,尽管没有直接指出问题在哪儿。


 回到顶部