您现在的位置:程序化交易>> 期货公式>> 金字塔等>> 金字塔知识>>正文内容

请问金字塔客服如何将这段策略放到VBA里面用 [金字塔]

  • 咨询内容:

    sub marketdata_reportnotify(reportdata) 
      dim multiplier
      dim mintick
      dim shortpercent
      dim longpercent
     
      dim buyhoding
      dim buytodayhoding
      dim sellhoding
      dim selltodayhoding
      dim buycost
      dim sellcost
      dim pnl
      dim usemargin
        
      dim orderid1
      dim consign1
      dim filled1
      dim remaining1
      dim ordertype1
      dim lmtprice1 
      
      dim orderid2
      dim consign2
      dim filled2
      dim remaining2
      dim ordertype2
      dim lmtprice2
      
       dim orderid3
      dim consign3
      dim filled3
      dim remaining3
      dim ordertype3
      dim lmtprice3
      
      dim orderid4
      dim consign4
      dim filled4
      dim remaining4
      dim ordertype4
      dim lmtprice4  
     
      lots=1
      account="888888" 
      
      code=reportdata.label
      market=reportdata.marketname
      
      t0=code&"_trend0"
      t1=code&"_trend1"
      
      mybarpos=code&"_barpos"  
      
      set md=marketdata.getminutedata(code,market)
      
      barpos=md.count-1
      
      if barpos<=document.getextdata(mybarpos) then 
      exit sub
      end if
      
      call document.setextdata(mybarpos,barpos)
      
      call document.setextdata(t1,document.getextdata(t0))
      
      if md.newprice(barpos)>md.newprice(barpos-1) then 
       call document.setextdata(t0,1)
      end if
      
      if md.newprice(barpos)<md.newprice(barpos-1) then 
       call document.setextdata(t0,-1)
      end if
     
      entrylongcond=document.getextdata(t0)=1 and document.getextdata(t1)=1 and md.newprice(barpos)>md.newprice(barpos-1)
      entryshortcond=document.getextdata(t0)=-1 and document.getextdata(t1)=-1 and md.newprice(barpos)<md.newprice(barpos-1)

    '  sleeptime=2
    '  
    '  actiontime=code&"_actiontime"
    '  
    '  if document.getextstring(actiontime)="" then 
    '    actiondiff=sleeptime
    '  else
    '    actiondiff=datediff("s",document.getextstring(actiontime),now)   
    '  end if 
    '  
    '  if actiondiff<sleeptime then 
    '    exit sub
    '  end if  
      
      call order.contract(code,market,multiplier,mintick,shortpercent,longpercent)
      call order.holdinginfobycode2(code,market,buyholding,buycost,buytodayholding,sellholding,sellcost,selltodayholding,pnl,usemargin,account)    

      call getpendingorder(orderid1,consign1,filled1,remaining1,0,ordertype1,lmtprice1,account,0,code,market)
      call getpendingorder(orderid2,consign2,filled2,remaining2,1,ordertype2,lmtprice2,account,2,code,market)
      call getpendingorder(orderid3,consign3,filled3,remaining3,1,ordertype3,lmtprice3,account,0,code,market)
      call getpendingorder(orderid4,consign4,filled4,remaining4,0,ordertype4,lmtprice4,account,2,code,market)
      
      'application.MsgOut("lmtprice1="&lmtprice1)
      application.MsgOut("lmtprice2="&lmtprice2)
      'application.MsgOut("lmtprice3="&lmtprice3)
      application.MsgOut("lmtprice4="&lmtprice4)
      
      a=orderid2>0 and md.askprice(barpos)<lmtprice2
      b=orderid4>0 and md.bidprice(barpos)>lmtprice4
      
      application.MsgOut("多头追价:"&a )
      application.MsgOut("空头追价:"&b )
      
      order.orderqueue=0
      
      offset=3*mintick   

      '多头条件成立时,将卖平和卖开未成交单撤单
      if entrylongcond then
       call order.cancelorder(orderid2)
       call order.cancelorder(orderid3)
       'call document.setextstring(actiontime,now)
      end if
      
      '空头条件成立时,将买开和买平未成交单撤单
      if entryshortcond then
       call order.cancelorder(orderid1)
       call order.cancelorder(orderid4)
       'call document.setextstring(actiontime,now)
      end if
      
      '多头开仓
      if buyholding=0 then
       if entrylongcond then
        if orderid1=0 then
         call order.buy(0,lots,md.bidprice(barpos),0,code,market,account,0)
         'call document.setextstring(actiontime,now)
        end if
       end if 
      end if   
      
      '多头平仓
      if buyholding>0 then   
       if entryshortcond then    
        if orderid2=0 then
         '多头止盈
         call order.sell(0,buyholding,md.askprice(barpos),0,code,market,account,0)
         'call document.setextstring(actiontime,now)
        end if    
       end if 
       
       '多头追价
       if orderid2>0 and md.askprice(barpos)<lmtprice2 then
        order.orderqueue=1
       call order.cancelorder(orderid2)
       call order.sell(0,buyholding,md.askprice(barpos),0,code,market,account,0)
       'call document.setextstring(actiontime,now)   
       end if
       
       '多头止损
       if buycost-md.bidprice(barpos)>=offset then
        order.orderqueue=1
        call order.cancelorder(orderid2)
        call order.sell(0,buyholding,md.bidprice(barpos),0,code,market,account,0)
        'call document.setextstring(actiontime,now)
       end if    
      end if 
      
      '空头开仓
      if sellholding=0 then   
       if entryshortcond then    
        if orderid3=0 then
         call order.buyshort(0,lots,md.askprice(barpos),0,code,market,account,0)
         'call document.setextstring(actiontime,now)
        end if  
       end if
      end if  
      
      '空头平仓
      if sellholding>0 then
       if entrylongcond then    
        if orderid4=0 then
         '空头止盈
         call order.sellshort(0,sellholding,md.bidprice(barpos),0,code,market,account,0)
         'call document.setextstring(actiontime,now)
        end if     
       end if 
       
       '空头追价
       if orderid4>0 and md.bidprice(barpos)>lmtprice4 then
        order.orderqueue=1
       call order.cancelorder(orderid4)
       call order.sellshort(0,sellholding,md.bidprice(barpos),0,code,market,account,0)
       'call document.setextstring(actiontime,now)   
       end if
       
       '空头止损
       if md.askprice(barpos)-sellcost>=offset then
        order.orderqueue=1
        call order.cancelorder(orderid4)
        call order.sellshort(0,sellholding,md.askprice(barpos),0,code,market,account,0)
        'call document.setextstring(actiontime,now)
       end if    
      end if
    end sub

    sub getpendingorder(myorderid,myconsign,myfilled,myremaining,myaction,myordertype,mylmtprice,myaccount,mykaiping,mycode,mymarket)
      dim orderid
      dim consign
      dim filled
      dim remaining
      dim action
      dim ordertype
      dim lmtprice
      dim account
      dim kaiping
      dim code
      dim market
      
      for i=0 to order.ordernum2-1
        call order.orderinfo2(i,orderid,consign,filled,remaining,action,ordertype,lmtprice,account,kaiping,code,market) 
            
        if code=mycode and market=mymarket and action=myaction and kaiping=mykaiping and account=myaccount then        
          myorderid=orderid
          myconsign=consign
          myfilled=filled
          myremaining=remaining
          myordertype=ordertype
          mylmtprice=lmtprice 
          exit for  
        else
          myorderid=0
          myconsign=0
          myfilled=0
          myremaining=0
          myordertype=0
          mylmtprice=0   
        end if
      next
    end sub

    sub test2()

    end sub


     

  • 金字塔客服:

    http://www.weistock.com/WeisoftHelp/vbarumenjiaocheng.htm

    看下这金字塔的vba如何进入编辑界面

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容