软件名称: |
下单组件挂价发出委托,3秒不成交的话撤单,以对价再发出委托 源码[文华财经公式] |
整理时间: |
2015-07-11 |
 |
界面语言: |
简体中文 |
软件类型: |
文华公式 |
运行环境: |
Win9X/Win2000/WinXP/Win2003/Win7/Win8/Win10 |
授权方式: |
共享软件 |
软件大小: |
0 Bytes |
软件等级: |
 |
软件登陆: |
admin |
作 者 : |
58gu.com小编 |
官方网址: |
官方站 |
程序演示: |
演示 |
软件简介: |
|
下面这个下单组件,目的是实现“挂价发出委托,3秒不成交的话撤单,以对价再发出委托”,半年前我曾经发过到论坛,经过一个多星期的讨论和更新,最后文华员工的答复是软件存在BUG,没法实现~ 现在不知道能不能实现,上星期再次测试,结果是模型可以发出开、平仓信号,但是没有发出任何具体委托。 因为,我这个下单组件,估计80%用文华实盘的人都会用到,到时候正常使用的话可以写到文华下单组件的示范里面供更多人使用~ 源码如下: VAR Price,M,N; VAR BKID,SKID,BPID,SPID,SPKID1,BPKID1,SPKID2,BPKID2;//定义BKID,SKID,BPID,SPID VAR LastWithDrawFinsh; VAR LastState; VAR KNALL;//目标总开仓数 VOID MAIN() // { //KPN设为按照模型信号 M=0;//发出信号时,0为挂价委托,1为对价委托,>=2为超价委托 N=1;//再委托的委托价参数,0为挂价委托,1为对价委托,>=2为超价委托 Price=Price(F_DealCode());// BKID=ReadGlobalStr("BKID"); SKID=ReadGlobalStr("SKID"); BPID=ReadGlobalStr("BPID"); SPID=ReadGlobalStr("SPID"); BPKID1=ReadGlobalStr("BPKID1"); SPKID1=ReadGlobalStr("SPKID1"); BPKID2=ReadGlobalStr("BPKID2"); SPKID2=ReadGlobalStr("SPKID2"); KNALL=ReadGlobal("KNALL"); //下面是3秒没有成交,撤单。 LastWithDrawFinsh=ReadGlobal("LASTWITHDRAW"); IF(T_IsNoOrder()!=1 ) //有挂单的情况 { //查询挂单然后进行撤单 IF(CurrentTime()-LastOrderTime()==3 && LastWithDrawFinsh==1) //如果3秒有委托未成交,全撤,下次进入会重新下委托 { IF(F_Sig()==BK) //如果取出的信号为BP { IF(T_IsNoOrder()==0) { MessageOut("BK撤单到了!"); T_DeleteOrder(BKID); LastState=0; // } } IF(F_Sig()==SK) //如果取出的信号为SP { IF(T_IsNoOrder()==0) { MessageOut("SK撤单到了!"); T_DeleteOrder(SKID); LastState=0; } } IF(F_Sig()==BP) //如果取出的信号为BP { IF(T_SellPosition(F_DealCode())>0&&T_IsNoOrder()==0) { MessageOut("BP撤单到了!"); T_DeleteOrder(BPID); LastState=0; // } } IF(F_Sig()==SP) //如果取出的信号为SP { IF(T_BuyPosition(F_DealCode())>0&&T_IsNoOrder()==0) { MessageOut("SP撤单到了!"); T_DeleteOrder(SPID); LastState=0; } } IF(F_Sig()==SPK) //如果取出的信号为SP { IF(T_IsNoOrder()==0) { MessageOut("SPK撤单到了!"); T_DeleteOrder(SPKID1); T_DeleteOrder(SPKID2); LastState=0; } } IF(F_Sig()==BPK) //如果取出的信号为BP { IF(T_IsNoOrder()==0) { MessageOut("BPK撤单到了!"); T_DeleteOrder(BPKID1); T_DeleteOrder(BPKID2); LastState=0; // } } LastWithDrawFinsh=0; } WriteGlobal("LASTWITHDRAW", LastWithDrawFinsh); RETURN; } LastWithDrawFinsh=1; IF(F_FreshSig()==1)//刷新现有的信号,有新信号 { SEND(); } ELSE IF(F_FreshSig()==0)//如果是处理过的信号 { IF((T_OrderState(BKID)==2||T_OrderState(SKID)==2||T_OrderState(BPID)==2||T_OrderState(SPID)==2||T_OrderState(BPKID1)==2||T_OrderState(SPKID1)==2||T_OrderState(BPKID2)==2||T_OrderState(SPKID2)==2||T_OrderState(BKID)==3||T_OrderState(SKID)==3||T_OrderState(BPID)==3||T_OrderState(SPID)==3||T_OrderState(BPKID1)==3||T_OrderState(SPKID1)==3||T_OrderState(BPKID2)==3||T_OrderState(SPKID2)==3)&&LastState==0)//如果委托撤单 { RESEND(); LastState=1; } } WriteGlobalStr("BKID",BKID); WriteGlobalStr("SKID",SKID); WriteGlobalStr("BPID",BPID); WriteGlobalStr("SPID",SPID); WriteGlobalStr("BPKID1",BPKID1); WriteGlobalStr("SPKID1",SPKID1); WriteGlobalStr("BPKID2",BPKID2); WriteGlobalStr("SPKID2",SPKID2); WriteGlobal("LASTSTATE", LastState); WriteGlobal("LASTWITHDRAW", LastWithDrawFinsh); WriteGlobal("KNALL",KNALL); } VOID SEND() { IF(F_Sig()==BPK && F_SigValid()==1)//如果取出的信号为BPK 且信号不是消失状态 { IF(F_SellPosition()!=0) { MessageOut("信号BPK生效,平掉所有卖仓"); BPKID1=T_ReduceSellOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*M,0); //平掉所有空头持仓 } IF(F_BuyPosition()>=0)// { MessageOut("信号BPK生效,开仓"); KNALL=F_SigVol()+F_BuyPosition(); BPKID2=T_AddBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*M,F_SigVol()+F_BuyPosition()); //补充持仓 } } IF(F_Sig()==SPK && F_SigValid()==1)//如果取出的信号为SPK 且信号不是消失状态 { IF(F_BuyPosition()!=0) { SPKID1=T_ReduceBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*M,0); //平掉所有多头持仓 } IF(F_SellPosition()>=0)//如果买仓为0,不存在止赢止损问题,直接开仓 { KNALL=F_SigVol()+F_SellPosition(); SPKID2=T_AddSellOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*M,F_SigVol()+F_SellPosition()); //补充空头持仓 } } IF(F_Sig()==BP && F_SigValid()==1)//如果取出的信号为BP 且信号不是消失状态 { IF(F_SellPosition()!=0) { MessageOut("信号BP生效,平掉所有卖仓"); BPID=T_ReduceSellOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*M,0); //平掉所有空头持仓 } } IF(F_Sig()==SP && F_SigValid()==1)//如果取出的信号为SP 且信号不是消失状态 { IF(F_BuyPosition()!=0) { SPID=T_ReduceBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*M,0); //平掉所有多头持仓 } } IF(F_Sig()==BK && F_SigValid()==1)//如果取出的信号为BK 且信号不是消失状态 { IF(F_BuyPosition()>=0 && F_SellPosition()==0)//判断是不是部分成交 { MessageOut("信号BK生效,开仓"); KNALL=F_SigVol()+F_BuyPosition(); BKID=T_AddBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*M,F_SigVol()+F_BuyPosition()); // } } IF(F_Sig()==SK && F_SigValid()==1)//如果取出的信号为SK 且信号不是消失状态 { IF(F_SellPosition()>=0 && F_BuyPosition()==0)//如果买仓为0,不存在止赢止损问题,直接开仓 { KNALL=F_SigVol()+F_SellPosition(); SKID=T_AddSellOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*M,F_SigVol()+F_SellPosition()); // } } } VOID RESEND() { IF(F_Sig()==BPK && F_SigValid()==1)//如果取出的信号为BPK 且信号不是消失状态 { IF(F_SellPosition()!=0) { MessageOut("信号BPK生效,平掉所有卖仓"); BPKID1=T_ReduceSellOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*N,0); //平掉所有空头持仓 } IF(F_BuyPosition()<=KNALL)//判断是不是部分成交 { MessageOut("信号BPK生效,开仓"); BPKID2=T_AddBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*N,KNALL); //补充持仓 } } IF(F_Sig()==SPK && F_SigValid()==1)//如果取出的信号为SPK 且信号不是消失状态 { IF(F_BuyPosition()!=0) { SPKID1=T_ReduceBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*N,0); //平掉所有多头持仓 } IF(F_SellPosition()<=KNALL)//如果买仓为0,不存在止赢止损问题,直接开仓 { SPKID2=T_AddSellOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*N,KNALL); //补充空头持仓 } } IF(F_Sig()==BP && F_SigValid()==1)//如果取出的信号为BP 且信号不是消失状态 { IF(F_SellPosition()!=0) { MessageOut("信号BP生效,平掉所有卖仓"); BPID=T_ReduceSellOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*N,0); //平掉所有空头持仓 } } IF(F_Sig()==SP && F_SigValid()==1)//如果取出的信号为SP 且信号不是消失状态 { IF(F_BuyPosition()!=0) { SPID=T_ReduceBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*N,0); //平掉所有多头持仓 } } IF(F_Sig()==BK && F_SigValid()==1)//如果取出的信号为BK 且信号不是消失状态 { IF(F_BuyPosition()<=KNALL && F_SellPosition()==0)//判断是不是部分成交 { MessageOut("信号BK生效,开仓"); BKID=T_AddBuyOpiTo(F_DealCode(), Offers(F_DealCode(),"bid1")+MinPrice(F_DealCode())*N,KNALL); //补多仓 } } IF(F_Sig()==SK && F_SigValid()==1)//如果取出的信号为SK 且信号不是消失状态 { IF(F_SellPosition()<=KNALL && F_BuyPosition()==0)//如果买仓为0,不存在止赢止损问题,直接开仓 { SKID=T_AddSellOpiTo(F_DealCode(), Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*N,KNALL); //补空仓 } } } |
下载地址: |
[ 下载地址1 ] |
下载帮助: |
发表评论 加入收藏夹 错误报告 |
相关软件: |
小月操盘线 一条能让你赚到钱的线沉船寻宝副图:无未来函数,有明显的买卖提示。爆涨前夜选股指标自用的一个主图公式庄家逃跑监控指标通达信 黄色立柱T+0分时指标 及选股 预警公式通达信起爆位置指标公式拔地而起!!!祝你股海扬帆!超准趋势线(源码 副图 通达信 贴图 说明)通达信抄底指标 |
下载说明: |
⊙推荐使用网际快车下载本站软件,使用 WinRAR v3.10 以上版本解压本站软件。
⊙如果这个软件总是不能下载的请点击报告错误,谢谢合作!!
⊙下载本站资源,如果服务器暂不能下载请过一段时间重试!
⊙如果遇到什么问题,请到本站论坛去咨寻,我们将在那里提供更多
、更好的资源!
⊙本站提供的一些商业软件是供学习研究之用,如用于商业用途,请购买正版。 |
|
|
|