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


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

   

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


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

主题:能够自定义函数再调用么

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


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
能够自定义函数再调用么  发帖心情 Post By:2012/7/31 0:38:13 [只看该作者]

文档没看完,不好意思直接问各位大虾了。

金字塔自动向QQ发送消息实例,公式可以加载VB函数,我自己VBS写了一个
Function GetPosition(sStrategy,sContract)
调试能通过

现在在公式系统里想调用函数 GetPosition,
PositionCount:=GetPosition('TEST','IF08');

编译没通过这句,是不是要先注册?
怎么注册呢?

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


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

使用公式编辑器上的,左边的自定义函数,右键“建立自定义函数”增加函数,然后把你上面的代码复制到向导生成的自定义函数体中。

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


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
  发帖心情 Post By:2012/7/31 11:14:45 [只看该作者]

依样画葫芦写了Function,结果后台预警系统表示GetPosition永远返回0,而且SetPosition根本不会写入仓位到文件,事实上连文件都没创建。
求指点。

 Function GetPosition(Formula,sStrategy,sContract)
    GetPosition=0

    file = "Z:\" & sStrategy & "_" & sContract  & ".txt"
    Set fs = CreateObject("Scripting.FileSystemObject")

    if fs.fileexists(file) then
        Set a = fs.OpenTextFile(file, 1)
        GetPosition = cint(a.ReadLine())
        a.Close
    end if
    
    Set fs = Nothing
    
End Function

Function SetPosition(Formula,sStrategy,sContract,iPosition)
    SetPosition=0
    
    file = "Z:\" & sStrategy & "_" & sContract  & ".txt"
    Set fs = CreateObject("Scripting.FileSystemObject")

    Set a = fs.OpenTextFile(file, 2, True)
    a.WriteLine(iPosition)
    a.Close
    
    Set fs = Nothing

End Function


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


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

调用 APPLICATION.MSGOU 函数,打印消息输出,看看语句的执行情况


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


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
  发帖心情 Post By:2012/7/31 13:39:05 [只看该作者]

我在预警公式系统里调用函数是这么写的:
PositionCount:=GetPosition('TEST','IF08');
SetPosition('TEST','IF08',PositionCount);

结果:
1.  application.msgout显示在预警模式下函数GetPosition被频繁调用,调用频率远大于1次每秒,汗!
2.  GetPosition输出两个参数sStrategy和sContract值分别为1,2
3. SetPosition没有任何输出,正确的说法是整个预警系统在调用SetPosition后停止了,再也没有任何application.msgout

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


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
  发帖心情 Post By:2012/7/31 13:45:25 [只看该作者]

 申明,现在用的还是 V2.75。
不知道是版本问题还是自己的用法有问题。

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


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
  发帖心情 Post By:2012/7/31 14:14:23 [只看该作者]

以下是引用Marcus在2012-7-31 13:39:05的发言:
我在预警公式系统里调用函数是这么写的:
PositionCount:=GetPosition('TEST','IF08');
SetPosition('TEST','IF08',PositionCount);

结果:
1.  application.msgout显示在预警模式下函数GetPosition被频繁调用,调用频率远大于1次每秒,汗!
2.  GetPosition输出两个参数sStrategy和sContract值分别为1,2
3. SetPosition没有任何输出,正确的说法是整个预警系统在调用SetPosition后停止了,再也没有任何application.msgout

修正最后一行,预警系统应该还在运行,只是没有任何application.msgout更新

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


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

PositionCount:=GetPosition('TEST','IF08');
SetPosition('TEST','IF08',PositionCount);

初步看了一下,是有问题的,因为金字塔的自定义函数只能传输数字,是不能传输字符串的


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


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
  发帖心情 Post By:2012/8/1 10:02:39 [只看该作者]

 今天早上在V2.9上试验了一下,调用GetPosition(10,10000)
发现第一个参数的确被传进去了,是10,第二个参数丢失,也就sContract被设置为空。???
不明白怎么会这样的
另外,依旧无法SetPosition,文件也创建不了。


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


加好友 发短信
等级:论坛游民 帖子:216 积分:1283 威望:0 精华:0 注册:2009/8/30 14:14:47
  发帖心情 Post By:2012/8/1 11:11:53 [只看该作者]

我的本意是只想在后台预警模式下记录当前策略的逻辑仓位,哪知道实现过程会这么波折。
用过全局变量,失败;用文件记录,失败;用自定义函数,参数不对又失败;

不了解内部运行框架无异于盲人摸象,不停地试错。

有几个问题:
1. 金字塔的后台预警,每个周期是否逐K线从头到尾运行一次?如果为真,我调用EXTGBDATA/SETGBDATA也是不是从头到尾读/写,相当于策略每个周期运行一次,然后最后才确定当前仓位?
2. 在提前N秒运行的模式下,N秒中每一秒都会逐K线头到尾运行一次么?如果信号不稳定,某秒开仓某秒平仓,金字塔怎么判断并最后选用那个周期的信号?注意如果每秒运行一次,每个周期逻辑仓位可能被反复擦写N次!这样很容易导致逻辑混乱。

 回到顶部
总数 14 1 2 下一页