以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  板块同步效果和想象的不一样,请指教。  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=13524)

--  作者:明心
--  发布时间:2012/8/7 18:27:52
--  板块同步效果和想象的不一样,请指教。

板块同步效果和想象的不一样,请高手帮忙看看问题出现在哪里?


\'全局变量
dtss\'多头系数,自己填写。测试时,可以随便给个数字
ktss\'空头系数,同上


\'-----------------------------------------同步平掉多余的多单
sub tongbu_pingduo()

  Set b = CreateObject("stock.block") 

    ccsl = order.Holding2()
    for i =0 to ccsl-1
      Call Order.HoldingInfo2(i,BuyHolding,BuyCost,BuyTodayHolding,SellHolding,SellCost,SellTodayHolding,PNL,UseMargin,Code,Market)
              
      if BuyHolding >  0  then
         b.Open "商品多头", 1 
            mxpc =0
            For k = 0 To b.Count - 1 
              mxcode = b.GetStockCode(k)
              if code = mxcode then
                 pc = 1  
              else
                 pc = 0          
              end if
              mxpc = mxpc+pc  
            Next 
            
          if mxpc =0 then 
              Call Order.sell(1,BuyHolding,0,0,Code,Market,"",0) 
          end if
          
          if mxpc = 1 and BuyHolding>dtss then 
             Call Order.sell(1,BuyHolding-dtss,0,0,Code,Market,"",0) 
          end if
         
       end if 
    next
    application.MsgOut ccsl&"多余多单已经平掉!"
    
 end sub
 
 \'-------------------------------------同步平掉多余的空单
 sub tongbu_pingkong() 

  Set b = CreateObject("stock.block") 

    ccsl = order.Holding2()
    for i =0 to ccsl-1
      Call Order.HoldingInfo2(i,BuyHolding,BuyCost,BuyTodayHolding,SellHolding,SellCost,SellTodayHolding,PNL,UseMargin,Code,Market)
            
      if SellHolding >  0  then
         b.Open "商品空头", 1 
            mxpc =0
            For k = 0 To b.Count - 1 
              mxcode = b.GetStockCode(k)
              if code = mxcode then
                 pc = 1     
              else
                 pc = 0        
              end if
              mxpc = mxpc+pc  
            Next 
            
          if mxpc =0 then 
              Call Order.sellshort(1,SellHolding,0,0,Code,Market,"",0) 
          end if
          if mxpc =1 and SellHolding>ktss then 
              Call Order.sellshort(1,SellHolding-ktss,0,0,Code,Market,"",0) 
          end if
         
       end if 
    next
    application.MsgOut ccsl&"多余空单已经平掉!"
    
 end sub

 \'-------------------------------------同步补足多单
 
  sub tongbu_kaiduo() 

  Set b = CreateObject("stock.block") 
      b.Open "商品多头", 1 
      For k = 0 To b.Count - 1 
          mxcode = b.GetStockCode(k)
          
          ccsl = order.Holding2()
          mxpc = 0
          for i =0 to ccsl-1
              Call Order.HoldingInfo2(i,BuyHolding,BuyCost,BuyTodayHolding,SellHolding,SellCost,SellTodayHolding,PNL,UseMargin,Code,Market)
              if code = mxcode then
                 pc = 1
              else
                 pc = 0                              
              end if
              mxpc = mxpc+pc  
          Next 
            
          if mxpc =0 then 
              Call Order.buy(1,dtss,0,0,Code,Market,"",0) 
          end if
          if mxpc =1 and BuyHolding<dtss then 
              Call Order.buy(1,dtss-BuyHolding,0,0,Code,Market,"",0) 
          end if
     next
    
    application.MsgOut ccsl&"多单已补足!"
    
 end sub
 
  \'-------------------------------------同步补足空单
 
  sub tongbu_kaikong() 

  Set b = CreateObject("stock.block") 
      b.Open "商品空头", 1 
      For k = 0 To b.Count - 1 
          mxcode = b.GetStockCode(k)
          
          ccsl = order.Holding2()
          mxpc = 0
          for i =0 to ccsl-1
              Call Order.HoldingInfo2(i,BuyHolding,BuyCost,BuyTodayHolding,SellHolding,SellCost,SellTodayHolding,PNL,UseMargin,Code,Market)
              if code = mxcode then
                 pc = 1
              else
                 pc = 0                              
              end if
              mxpc = mxpc+pc  
          Next 
            
          if mxpc =0 then 
              Call Order.buyshort(1,ktss,0,0,Code,Market,"",0) 
          end if
          if mxpc =1 and SellHolding<ktss then 
              Call Order.buyshort(1,ktss-SellHolding,0,0,Code,Market,"",0) 
          end if         
      next
    
    application.MsgOut ccsl&"空单已补足!"
    
 end sub
 
 \'------------------------------------同步

sub duichongtongbu()
       
    call tongbu_pingduo()
    call tongbu_pingkong()
    
    call tongbu_kaiduo() 
    call tongbu_kaikong()
end sub

--  作者:王锋
--  发布时间:2012/8/7 19:50:35
--  
出什么问题了?
--  作者:明心
--  发布时间:2012/8/8 11:06:54
--  
账户里的品种是能平掉,但是不该平的也平了。板块里有的,开不了仓。总结起来就是板块和账户没有能同步。
--  作者:王锋
--  发布时间:2012/8/8 11:24:30
--  

这个问题没法帮你解决,只能你自己通过输出日志的办法,自己调试了