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


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

   

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


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

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

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


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

Function GetPosition(Formula,sStrategy,sContract)
    '系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
   GetPosition=0
  
   APPLICATION.MsgOut "111111"

    file = "C:\" & 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
  
   APPLICATION.MsgOut "22222"
   
    file = "C:\" & 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

 

通过简单的这样调试,金字塔是可以都运行的。不清楚你那边为什么不可以

此外金字塔支持序列和逐K线模式,上面我是用序列模式调用的,因此就只调用一次,如果你用逐K线,那么它会连续调用多次。

上述你的VBS代码是通过参数传递来传递目录,但是金字塔不支持字符串自定义函数参数,因此是不会正常工作,但至少是都调用了。

 

如果你对金字塔的运行机制不了解,其实通过一些简单的调试工作就可以很容易明白的,建议你仔细并阅读
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332 问题4, 里面的调试技巧,重点阅读公式调试器,和日志记录这几种调试方法,不明白的地方,通过自己编写公式,然后结合调试技巧,就自然很容易明白金字塔的公式系统的各种运行机理。

 

此外参考

金字塔后台高级编程技巧

http://v.youku.com/v_show/id_XMjkyNjU3Mjc2.html 观看密码: bj123456

 

 

上述介绍的学习资料,希望你能认真的看一遍并能彻底理解,如果你不看,那么你日后就没法更深入的使用好金字塔



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

金字塔-技术部

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

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

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


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

谢谢指正!
 我现在用V2.90,默认的逐K线运行模式,估计后者是主要差别吧。

逐K线运行+仅刷最后一根K线,跟序列模式有啥区别?

我心里有个疑问,就是我要用到“提前N秒下单”的方法,同时在预警选项里选择了“走完一根K线以后”,那么序列模式从逻辑上理解可能有问题,不知道在这样的情况下是否要选择   逐K线运行+仅刷最后一根K线   这种模式呢?
[此贴子已经被作者于2012-8-1 16:25:34编辑过]

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


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

 谢谢版主,调试已经通过了,可以在序列模式下调试通过,明天再做实盘预警测试。

不过奇怪的是,在逐K线模式下SetPosition没被成功调用,因为没有任何调试语句输出;
作为对比,同样在在逐K线模式下GetPosition工作正常并输出调试语句。

 回到顶部
帅哥,在线噢!
admin
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

提前下单模式,与你的公式运行模式是没有什么区别的。两者互补干扰

逐K线下工作不正常,有可能是因为连续重复调用后,可能VBS引擎出现了运行错误导致

 


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