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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 修改了版主代码,发出全平模块(增加下信息资源)

   

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


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

主题:修改了版主代码,发出全平模块(增加下信息资源)

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


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
修改了版主代码,发出全平模块(增加下信息资源)  发帖心情 Post By:2013/5/27 11:06:36 [只看该作者]

function GetHoldStr(sAccount)
 dim i
 dim BuyHold
 dim BuyCost
 dim SellHold
 dim SellCost
 dim CurCode
 dim CurMarket
 
  On Error resume Next

 HoldingCount=Order.Holding2(sAccount)
  If HoldingCount>0 then
   For i=0 to HoldingCount-1
    Call Order.HoldingInfo2(i,BuyHolding,BuyCost,BuyTodayHolding,SellHolding,SellCost,SellTodayHolding,PNL,UseMargin,Code,Market,sAccount)
    CurCode=Code
    CurMarket=Market
    BuyHold=BuyHolding
    SellHold=SellHolding
    HoldStr=HoldStr & CurCode
    if BuyHold>0 then
      call order.sell(1,BuyHold,0,0,CurCode,CurMarket,sAccount,0)
    end if
    if SellHold>0 then 
      call order.sellshort(1,SellHold,0,0,CurCode,CurMarket,sAccount,0)   
    end if  
   Next
  End If 
End function
[此贴子已经被作者于2013-5-27 11:07:34编辑过]

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


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

说明详细一些,另外测试过了?

搞好了加精



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

金字塔-技术部

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

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

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


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2013/5/27 12:50:14 [只看该作者]

测试过了  稍后加上说明

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


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2013/5/27 13:28:40 [只看该作者]

'此模块中sAccount为传递账号,对按照某个时间(比如15:30)平全部仓位的用户可以直接调用此模块,用call语句就行。可以直接放在模块中 
'也可以复制代码到大家做需要的窗体中进行调用。


第一种:
'创建了一个窗体,加上一个按钮来触发,导入附件后就能使用


Sub UserForm1_CommandButton1_Click()
'输入账号
    call getholdstr(803156)
    
End Sub


'该模块主要用来保存宏主执行主函数,不要拿做他用



function GetHoldStr(sAccount)
'定义所需变量
 dim i
 dim BuyHold
 dim BuyCost
 dim SellHold
 dim SellCost
 dim CurCode
 dim CurMarket
 
  On Error resume Next
'索取持仓合约数
 HoldingCount=Order.Holding2(sAccount)
'遍历所有持仓,索取多空头和持仓合约
  If HoldingCount>0 then
   For i=0 to HoldingCount-1
    Call Order.HoldingInfo2(i,BuyHolding,BuyCost,BuyTodayHolding,SellHolding,SellCost,SellTodayHolding,PNL,UseMargin,Code,Market,sAccount)
    CurCode=Code
    CurMarket=Market
    BuyHold=BuyHolding
    SellHold=SellHolding
    HoldStr=HoldStr & CurCode
'取得多头持仓,按照事件返回的手数和相关信息进行平多
    if BuyHold>0 then
      call order.sell(1,BuyHold,0,0,CurCode,CurMarket,sAccount,0)
    end if
'取得空头持仓,按照事件返回的手数和相关信息进行平空
    if SellHold>0 then 
      call order.sellshort(1,SellHold,0,0,CurCode,CurMarket,sAccount,0)   
    end if  
   Next
  End If 
End function

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:userform1.rar




第二种 适合用vba做日内的,
'大家也可把function函数直接放到大家已经编辑好的代码中加上定时器来读取时间  (定时器到收盘15:00进行全平操作)  

sub application_vbastart()
   '设置定时器,每秒刷新 
      call application.SetTimer(1,1000)
end sub

sub application_timer(id)
    application.MsgOut(right(now,8))
    if  id=1 then 
    
    '输入自己要日内平仓时间 ,now函数返回的时间是有日期的 我们用right方法去掉日期。就顺利取得时分秒,^,^   
        
        if right(now,8)>="13:23:30" then 
    '输入自己的账号       
        call GetHoldStr(888)   
           
        end if 
        
        
    end if 
end sub




sub application_vbaend()
'删除定时器,释放资源
    call application.KillTimer(1)
    
end sub

'插入模块
function GetHoldStr(sAccount)
'定义所需变量
 dim i
 dim BuyHold
 dim BuyCost
 dim SellHold
 dim SellCost
 dim CurCode
 dim CurMarket
 
  On Error resume Next
'索取持仓合约数
 HoldingCount=Order.Holding2(sAccount)
'遍历所有持仓,索取多空头和持仓合约
  If HoldingCount>0 then
   For i=0 to HoldingCount-1
    Call Order.HoldingInfo2(i,BuyHolding,BuyCost,BuyTodayHolding,SellHolding,SellCost,SellTodayHolding,PNL,UseMargin,Code,Market,sAccount)
    CurCode=Code
    CurMarket=Market
    BuyHold=BuyHolding
    SellHold=SellHolding
    HoldStr=HoldStr & CurCode
'取得多头持仓,按照事件返回的手数和相关信息进行平多
    if BuyHold>0 then
      call order.sell(1,BuyHold,0,0,CurCode,CurMarket,sAccount,0)
    end if
'取得空头持仓,按照事件返回的手数和相关信息进行平空
    if SellHold>0 then 
      call order.sellshort(1,SellHold,0,0,CurCode,CurMarket,sAccount,0)   
    end if  
   Next
  End If 
End function

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:userform2.rar



[本帖被加为精华]
 回到顶部
帅哥哟,离线,有人找我吗?
guotx2010
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

看来我那个帖子已经深入人心了,还能做举一反三,进行修改了,扩展了,本人深感荣幸。希望有更多的人能熟练掌握vba开发。

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


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2013/5/29 14:15:23 [只看该作者]

是啊 版主的帖子帮助了很多人了,对你的贡献表示感谢

 回到顶部