-- 作者:z7c9
-- 发布时间:2013/3/24 22:52:37
-- [原创]高频交易
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
|