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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 这个VB程序怎么一键平不了所有仓呢

   

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


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

主题:这个VB程序怎么一键平不了所有仓呢

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


加好友 发短信
等级:新手上路 帖子:31 积分:213 威望:0 精华:0 注册:2012/12/2 15:00:02
这个VB程序怎么一键平不了所有仓呢  发帖心情 Post By:2013/3/13 9:42:18 [显示全部帖子]

function YiJianPinCangAll(sAccount)
 dim i
 dim BuyHold
 dim BuyCost
 dim SellHold
 dim SellCost
 dim CurCode
 dim CurMarket
' msgbox "当前持仓数:"&Order.Holding2(sAccount)
 
 while ( Order.Holding2(Account))
  On Error resume Next
  HoldStr=""
 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
         HoldStr=HoldStr & "  多单:+" & BuyHold & "手"
        call Sell(1,abs(BuyHolding),0,0,Code,Market,sAccount,0) '平多


       end if
          if SellHold>0 then
            HoldStr=HoldStr & "  空单:-" & SellHold & "手"
          call  SellShort(1,abs(SellHolding),0,0,Code,Market,sAccount,0)

          end if 
    HoldStr=HoldStr & " ,"
   Next
   HoldStr=Left(HoldStr,len(HoldStr)-1) '去掉了尾部,号
  End If
 ' GetHoldStr=HoldStr
wend
 DayClose_Label_ZhangHuJieGuo.Caption= "当前品种"&HoldStr &"平仓后,当前持仓数:"&Order.Holding2(sAccount)
   
End function


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


加好友 发短信
等级:新手上路 帖子:31 积分:213 威望:0 精华:0 注册:2012/12/2 15:00:02
  发帖心情 Post By:2013/3/13 10:03:50 [显示全部帖子]

一个品种都平不了仓

 


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


加好友 发短信
等级:新手上路 帖子:31 积分:213 威望:0 精华:0 注册:2012/12/2 15:00:02
  发帖心情 Post By:2013/3/13 10:04:01 [显示全部帖子]

好象没反应一样

 


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


加好友 发短信
等级:新手上路 帖子:31 积分:213 威望:0 精华:0 注册:2012/12/2 15:00:02
  发帖心情 Post By:2013/3/13 10:31:30 [显示全部帖子]

我就是按照上面的代码做的,就是多加了一个平仓语句,能读出帐户信息,但平不了仓,我是用按扭调用这个函数的

if BuyHold>0 then
         HoldStr=HoldStr & "  多单:+" & BuyHold & "手"
        call Sell(1,abs(BuyHolding),0,0,Code,Market,sAccount,0) '平多           平不了


       end if
          if SellHold>0 then
            HoldStr=HoldStr & "  空单:-" & SellHold & "手"
          call  SellShort(1,abs(SellHolding),0,0,Code,Market,sAccount,0)'平空      平不了

          end if 

 


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


加好友 发短信
等级:新手上路 帖子:31 积分:213 威望:0 精华:0 注册:2012/12/2 15:00:02
  发帖心情 Post By:2013/3/13 10:43:32 [显示全部帖子]

我是正式标准版用户,模拟资金帐号,用VB开仓没问题,上面的平仓就平不了。

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


加好友 发短信
等级:新手上路 帖子:31 积分:213 威望:0 精华:0 注册:2012/12/2 15:00:02
  发帖心情 Post By:2013/3/13 13:31:45 [显示全部帖子]

111111
666666

只有上面两行,其它几句都没有执行,怪事


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


加好友 发短信
等级:新手上路 帖子:31 积分:213 威望:0 精华:0 注册:2012/12/2 15:00:02
  发帖心情 Post By:2013/3/13 13:48:26 [显示全部帖子]

问题就出在这个循环上 我的本意是想如果因为什么原因,平仓指令发出后,结果没平成,就再次发命令平仓,有仓的条件就是的 while (Order.Holding2(sAccount)>0)

结果造成死循环了,仓也没平

 

我把这个循环去掉,结果也平不了仓,我晕倒

是不是VB不支持平仓啊,但我开仓怎么没问题呢

我是1800元的标准版客户,模拟资金帐户

[此贴子已经被作者于2013-3-13 13:50:13编辑过]

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


加好友 发短信
等级:新手上路 帖子:31 积分:213 威望:0 精华:0 注册:2012/12/2 15:00:02
  发帖心情 Post By:2013/3/13 13:56:57 [显示全部帖子]

 
function YiJianKaiCangAll()
 
 if Order.IsAccount("804044") then
   ' msgbox "804044已登录"
   ' DayClose_Label_ShuLiang.Caption=Order.Holding2( )
    else
    msgbox "804044未登录"
    end if
OrderSnMax  =       Order.Buy(1,DayClose_TextBox_MaxNum.Text,   0 ,0  ,DayClose_Label_MaxCode.Caption,   DayClose_TextBox_MaxShiChang.Text,"",  0) '开多
OrderSnCiMax=       Order.Buy(1,DayClose_TextBox_CiMaxNum.Text, 0 ,0  ,DayClose_Label_CiMaxCode.Caption, DayClose_TextBox_CiMaxShiChang.Text,"",0) '开多
OrderSnCiMin=  Order.BuyShort(1,DayClose_TextBox_CiMinNum.Text, 0 ,0  ,DayClose_Label_CiMinCode.Caption, DayClose_TextBox_CiMinShiChang.Text,"",0) '开空
OrderSnMin  =  Order.BuyShort(1,DayClose_TextBox_MinNum.Text,   0 ,0  ,DayClose_Label_MinCode.Caption,   DayClose_TextBox_MinShiChang.Text,"",0)
end function


function YiJianPinCangAll(sAccount)
 dim i
 dim BuyHold
 dim BuyCost
 dim SellHold
 dim SellCost
 dim CurCode
 dim CurMarket
' msgbox "当前持仓数:"&Order.Holding2(sAccount)

Application.MsgOut "当前持仓数:"&Order.Holding2(sAccount)
 
' while (Order.Holding2(sAccount)>0)    '去掉循环,也平不了仓
  On Error resume Next
  HoldStr=""
 HoldingCount=Order.Holding2(sAccount)

Application.MsgOut "222222"
  If HoldingCount>0 then
   For i=0 to HoldingCount-1

    Application.MsgOut "33333循环开始"
    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
         HoldStr=HoldStr & "  多单:+" & BuyHold & "手"
            call Sell(1,abs(BuyHolding),0,0,Code,Market,sAccount,0) '平多
'call Sell(1,3,0,0,"cu06",sq,sAccount,0) '平多   用这个固定的品种,也平不了,是不是不支持VB平仓啊
        Application.MsgOut "444444平多"
       end if
          if SellHold>0 then
            HoldStr=HoldStr & "  空单:-" & SellHold & "手"
      call  SellShort(1,abs(SellHolding),0,0,Code,Market,sAccount,0)

          Application.MsgOut "55555平空"

          end if 
    HoldStr=HoldStr & " ,"
   Next
   HoldStr=Left(HoldStr,len(HoldStr)-1) '去掉了尾部,号
  End If
 ' GetHoldStr=HoldStr
' wend
 DayClose_Label_ZhangHuJieGuo.Caption= "当前品种"&HoldStr &"平仓后,当前持仓数:"&Order.Holding2(sAccount)
  Application.MsgOut "666666"
End function

 

 

  

运行后结果

当前持仓数:4
222222
33333循环开始
55555平空
33333循环开始
55555平空
33333循环开始
444444平多
33333循环开始
444444平多
666666
再看仓位,一个都没平掉,我晕

[此贴子已经被作者于2013-3-13 13:57:24编辑过]

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


加好友 发短信
等级:新手上路 帖子:31 积分:213 威望:0 精华:0 注册:2012/12/2 15:00:02
  发帖心情 Post By:2013/3/13 14:07:46 [显示全部帖子]

把这个语句注释掉以后 On Error resume Next
  call Sell(1,abs(BuyHolding),0,0,Code,Market,sAccount,0) '平多
'call Sell(1,3,0,0,"cu06",sq,sAccount,0) '平多    这两个语句,立即报错,说是不能用调用错误,不能用括号什么的

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


加好友 发短信
等级:新手上路 帖子:31 积分:213 威望:0 精华:0 注册:2012/12/2 15:00:02
  发帖心情 Post By:2013/3/13 14:11:53 [显示全部帖子]

call Order.Sell(1,abs(BuyHolding),0,0,Code,Market,sAccount,0) '平多
前面要加一个Order

我晕,打到原因了

 但要写成,如果平仓不成功,反复平仓,怎么写啊?也就是要加上循环语句

[此贴子已经被作者于2013-3-13 14:12:39编辑过]

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