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


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

   

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


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

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

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


加好友 发短信
等级:论坛游民 帖子:132 积分:775 威望:0 精华:0 注册:2011/12/27 11:53:44
  发帖心情 Post By:2012/5/17 8:28:36 [只看该作者]

严重要求加精,强大到无法想象,楼主就是我的偶像!!!

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


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

本周末继续讲解order对象,其中,OrderStatusEx2是重头戏,这个事件威力无穷,值得好好聊聊。

 

9、OrderStatusEx2事件

 

    Order对象的OrderStatusEx和OrderStatusEx2的区别是,后者返回了交易账户。我个人更喜欢使用后者,可以精确指定对那个帐户的交易情况进行处理。

 

    从帮助文字可以看出,这个事件监控订单的变化情况,从下单、撤单、成交等都可以实时回传给你的,通过这个事件,你可以做很多事件的。

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

    这个实例等我闲下来整理一下代码,可以奉献给大家,敬请期待。

    (2)可以做一个将成交记录实时写到Excel的程序,这样你就可以清楚地看到你当前的交易,盈亏计算也可以在excel中完成。

    这个实例,我已经公布在论坛了,有兴趣的可以看看:http://www.weistock.com/bbs/dispbbs.asp?boardid=5&Id=10234

    (3)用在套利策略中,可以用来处理单腿交易等。

    (4)其他需要监控账户变动情况,如:下单后多长时间不成交撤单,你需要记录下单的时间,然后比较最新时间与该时间的间隔来确定是否需要撤单。

 

    需要说明一下金字塔返回的订单状态:

    1)Submitted:是已经提交订单。

    2)Filled:是已经成交的订单。

    3)Tradeing:是成交回报,可能filled状态的单成交时分多次成交,那么这个状态的单就会有多个。

    4)Cancelled:是已经取消的单

 

    下面是一个将成交情况存入全局变量的实例

 

Sub ORDER_OrderStatusEx2(OrderID, Status, Filled, Remaining, Price, Code, Market, OrderType, Aspect, Kaiping,Account, AccountType)
 '账户类型 0 IB 1 CTP 2 金仕达
    Dim sStatus       '成交状态
 If AccountType=0 then
  sAccType="0.IB"
 ElseIf AccountType=1 then
  sAccType="1.CTP"
 ElseIf AccountType=2 then
  sAccType="2.金士达"
 End if 
  
 If AccountType=0 then
  sStatus="FILLED"
 ElseIf AccountType=1 then
  sStatus="TRADEING"
 ElseIf AccountType=2 then
  sStatus="FILLED"
 End if

 If UCase(Status)="FILLED" then  '只跟踪成交的单 
  if Aspect=0 and Kaiping=0 then '买入
   Call Document.SetExtString("Order-Buy-time",time)     '成交时间
   Call Document.SetExtData("Order-B-Price",Price)   '成交价格
   Call Document.SetExtData("Order-B-Vol",Filled)   '成交手数
   Call Document.SetExtData("Order-B-OrderID",OrderID)  '成交单号
  end if
  if Aspect=1 and Kaiping=0 then '卖出
   Call Document.SetExtString("Order-S-time" ,time)     '成交时间
   Call Document.SetExtData("Order-S-Price",Price)   '成交价格
   Call Document.SetExtData("Order-S-Vol",Filled)   '成交手数
   Call Document.SetExtData("Order-S-OrderID",OrderID)  '成交单号
  end if
  if Aspect=1 and Kaiping>0 then '卖平
   Call Document.SetExtString("Order-Sp-time",time)     '成交时间
   Call Document.SetExtData("Order-Sp-Price",Price)  '成交价格
   Call Document.SetExtData("Order-Sp-Vol",Filled)   '成交手数
   Call Document.SetExtData("Order-Sp-OrderID",OrderID) '成交单号
  end if
  if Aspect=0 and Kaiping>0 then '买平
   Call Document.SetExtString("Order-Bp-time",time)    '成交时间
   Call Document.SetExtData("Order-Bp-Price",Price) '成交价格
   Call Document.SetExtData("Order-Bp-Vol",Filled)  '成交手数
  end if
 End if 
End Sub  

把这段代码复制到你的金字塔vba模块中,试着下几个单,然后可以看看全局变量中是否有下单时间、成交价格、成交手数、成交单号这些变量。

 

 

 

[此贴子已经被作者于2012-5-19 14:04:29编辑过]

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


加好友 发短信
等级:论坛游民 帖子:103 积分:677 威望:0 精华:0 注册:2012/3/22 8:13:33
  发帖心情 Post By:2012/5/21 17:18:06 [只看该作者]

好贴,支持!!!

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


加好友 发短信
等级:论坛游民 帖子:132 积分:775 威望:0 精华:0 注册:2011/12/27 11:53:44
  发帖心情 Post By:2012/5/22 20:36:11 [只看该作者]

有空就来顶一下

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


加好友 发短信
等级:论坛游民 帖子:132 积分:775 威望:0 精华:0 注册:2011/12/27 11:53:44
  发帖心情 Post By:2012/5/26 6:30:48 [只看该作者]

来看看,有没有更新

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


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

思考题:

 

    Order对象可以用于做成交记录写入Excel或数据库,但要想计算出每一笔交易的盈亏却要费不少脑力的,你需要找到针对本笔平仓记录对应的开仓记录,而开仓记录的确认可以采取先开先平和后开先平的两种方式来确定,金字塔本身的平仓盈亏计算就是采用先开先平来计算的,大家说说怎么找到当初那个开仓单呢?找到开仓单才能知道你的开仓价呀,有开仓价和平仓价,计算盈亏才好啊。

    附加思考:你开仓的时候如果是开多手,而且是一次性同一个价位成交,可是平仓的时候是分多次、多个价位成交的,你怎么计算本单交易的盈亏呢?

 


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


加好友 发短信
等级:黑侠 帖子:618 积分:2624 威望:0 精华:0 注册:2010/4/25 15:17:16
  发帖心情 Post By:2012/5/26 12:09:45 [只看该作者]

好帖 要顶!!

 

烟灰速速高薪聘请吧

 

加强这一块的培训指导等等工作

 

多数人都不知道这么强大的功能


 回到顶部
帅哥哟,离线,有人找我吗?
五星旗手
  28楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:8 积分:29 威望:0 精华:0 注册:2012/3/2 15:17:33
  发帖心情 Post By:2012/5/26 15:36:35 [只看该作者]

刚刚来到金字塔论坛 ,不知道同一个模型加上止损止赢与不加止损止赢测试的结果是否一样。

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


加好友 发短信
等级:论坛游民 帖子:132 积分:775 威望:0 精华:0 注册:2011/12/27 11:53:44
  发帖心情 Post By:2012/5/26 16:27:07 [只看该作者]

同一个模型加上止损止赢与不加止损止赢测试的结果不一样

 回到顶部
美女呀,离线,留言给我吧!
妞妞
  30楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:35 积分:111 威望:0 精华:0 注册:2012/5/26 17:01:08
  发帖心情 Post By:2012/5/26 18:01:26 [只看该作者]

学习一下,谢谢!

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