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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 金字塔VBA常用对象使用范例

   

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


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

主题:金字塔VBA常用对象使用范例

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


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

是的,谢谢修正


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


加好友 发短信
等级:新手上路 帖子:23 积分:107 威望:0 精华:0 注册:2012/5/23 16:54:34
感谢无私分享!  发帖心情 Post By:2012/11/18 16:33:52 [只看该作者]

感谢楼主的无私分享!图片点击可在新窗口打开查看

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


加好友 发短信
等级:新手上路 帖子:30 积分:190 威望:0 精华:0 注册:2012/11/14 12:45:01
  发帖心情 Post By:2012/11/27 14:29:21 [只看该作者]

十分关注板主的无私贡献


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


加好友 发短信
等级:新手上路 帖子:92 积分:395 威望:0 精华:0 注册:2012/1/8 12:56:27
  发帖心情 Post By:2013/1/11 16:25:36 [只看该作者]

好贴顶起来

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


加好友 发短信
等级:新手上路 帖子:30 积分:161 威望:0 精华:0 注册:2013/1/12 17:15:35
  发帖心情 Post By:2013/1/14 10:39:03 [只看该作者]

非常好,感谢楼主

 回到顶部
帅哥哟,离线,有人找我吗?
老树新芽
  86楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:58 积分:227 威望:0 精华:0 注册:2011/12/21 19:59:25
  发帖心情 Post By:2013/4/27 18:56:33 [只看该作者]

感谢楼主的奉献,为我们节约了大量的时间和烟草。对于初学VBA的人来说,看了 office VBA和金字塔VBA教程之后,一动手还是出错,幸好有楼主这样的好心人。我遇到了几个问题,想请教。

 

一、OFFICE vba的变量有工程级、模块级和过程级,还有公有、私有概念。请问金字塔有没有这些概念。过程级变量不说了,我知道肯定不会有冲突。如果是过程之外的变量,那么是对当前模块有效,还是对所有模块有效?是对当前VBA工程有效?还是对整个工程有效?

 

二、对于代码调试我很头痛,关于调试模式基本不知所云。我干脆用执行模式,用MSGOUT输出来调试代码。我要重新修改代码时,按SHIFT+BREAK终止执行,但是带来一个很低级的问题:每次终止执行之后,光标就自动跑到模块的顶端去了,我需要花时间找到我的代码位置。有没有办法让光标停在我指定的位置?(好笑吧)

 

三、对于marketdata.gethistorydata()对象的引用,折腾了好久,反复测试才知道这个东东不能被设置两次引用,代码能过,但结果不对,跨周期、跨品种统统不行。后来发现论坛上对此有说明并有解决办法。但是我已经发现一个解决办法了,把要引用的两个HISTORYDATA对象,一个放在过程外面设置引用,一个放在过程内设置引用。我测试了几遍,似乎可以,我想知道,我的这个方法是不是正解之一。

 

我更想知道,是不是有且仅有HISTORYDATA对象引用会出现这样的问题,至于MINUTEDATA和REPORTDATA则没有这样的问题。直接告诉我答案吧!

 

四、终于折腾出一点结果了,又出了状况。我要把我自制的数据清除,结果死机。例:

SUB DELETEDATA

      Set History1 = marketdata.GetHistoryData(“IF13","ZJ",0)
      application.MsgOut History1.Count

       for I = 0 to  History1.Count-1
           CALL History1.RemoveAt(I)
      next
       application.MsgOut History1.Count
End Sub

 

可能是由于数据有十几万个,所以死机。但后来改成for I = 0 to  1000....next,能过,但是前后application.MsgOut History1.Count

输出结果一样,说明删除没有成功啊!是什么问题?


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


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

楼上你还是开个新帖子提交问题吧


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

金字塔-技术部

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

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

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


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

删除得从最后一个开始删除呀,倒序就行了。

SUB DELETEDATA

      Set History1 = marketdata.GetHistoryData(“IF13","ZJ",0)
      application.MsgOut History1.Count

       for I =
History1.Count-1 to 0 step -1  

           CALL History1.RemoveAt(I)
      next

      call history1.savedata("IF13","ZJ",1)   '保存

       Set History1 = marketdata.GetHistoryData(“IF13","ZJ",0)    '再次读取
       application.MsgOut History1.Count
End Sub

[此贴子已经被作者于2013-4-29 20:43:05编辑过]

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


加好友 发短信
等级:论坛游侠 帖子:252 积分:1001 威望:0 精华:0 注册:2010/2/15 16:47:58
  发帖心情 Post By:2013/6/11 11:35:10 [只看该作者]

(1)做一个账户跟踪程序,跟踪另一个账户的交易,就要用到这个事件,具体思路是有成交时,判断是哪一个账户成交,如果是你要监控的账户,就同步在另一个账户开同向的仓位。

希望楼主补充这个代码。


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


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

帐户跟踪不需要使用historyData对象的,使用Order_OrderStatusEx2来监控成交记录就行了,有成交才需要跟踪,判断是哪个账户的成交,如果是原始账户成交,就同步开另一个账户的挂单,使用order对象下单就行了。


代码类似于:

 

 

 if Status="Tradeing" then

    if Account="888888" then     '888888是原始账户

         if Aspect=0 and kaiping=0 then    '开多单

               Call Order.buy(1,filled,0,code,market,"999999",0)     '999999是被动跟踪的账户

         end if

         if Aspect=1 and kaiping=0 then    '开空单

               Call Order.sell(1,filled,0,code,market,"999999",0)     '999999是被动跟踪的账户

         end if

    end if

end if


 回到顶部
总数 108 1.. 上一页 2 3 4 5 6 7 8 9 10 11 下一页