如何使后台程序化交易的限价指令在条件没有发生变化时不撤单,谢谢!
后台交易系统;
开仓指令为LMT;
走完一根K线下单(逐K模式);
目前情况是在限价条件(价格)没有发生变化时,程序总是开仓等待个几秒,然后就撤单,然后下个周期开始时又继续报同一个价位的限价单,如何能使报单在条件没发生变化时不撤单呢?谢谢!
我用系统后台交易系统里的"MA均线交易指标"来测试,稍做修改只跑开仓,也是一样情况;
//条件判断
MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10);
CONDBUY:=MA5>MA10;
CONDSELL:=MA10>MA5;
//开仓和平仓
TBUY(CONDBUY AND TBUYHOLDINGEX( '','',0 )<1,1,LMT,CLOSE-20,0,'','');
TSELL(CONDSELL AND TSELLHOLDINGEX( '','',0 )<1,1,LMT,CLOSE+20,0,'','');
请问改怎么编写语句才能解决这个问题;我用TREMAINQTY\TCANCELEX也不能解决,或许是用的方法不对,请指教,谢谢!
写个撤单语句
tcancelex(dynainfo(207)<>tenterprice,0,'','')
貌似不行啊,原来的语句是不停的撤单,加了这个撤单语句,变成直接成交了,因为我在CLSOE的基础上加减了20,基本是无法立刻成交的;
还有这个撤单语句从字面上理解是动态时间不等于上一次开仓价格时撤单,不明白动态时间和上一次开仓价格有什么关系;
写错了,是dynainfo(7)
成交了和撤单有什么关系
成交说明报单成交了,没有未成交单,也就是没有撤单了
tcancelex(dynainfo(7)<>tenterprice,0,'',''),最新价不等于上一次开仓价格是条件,那么程序还有没有上一次开仓的情况怎么办呢?
//条件判断
MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10);
CONDBUY:=MA5>MA10;
CONDSELL:=MA10>MA5;
//开仓和平仓
TBUY(CONDBUY AND TBUYHOLDINGEX( '','',0 )<1,1,LMT,18900,0,'','');
TSELL(CONDSELL AND TSELLHOLDINGEX( '','',0 )<1,1,LMT,20000,0,'','');
我用橡胶来说,在接近涨跌停的位置各取20000和18900,按照交易系统的开仓要求,只要MA5>MA10,那么就按照18900的价位报单要求开多仓,只要MA5满足大于MA10的情况,那么应该是一直按照18900的价位挂着单的,现在的情况是没过几秒就撤单了;然后在下一个周期结束后又按照18900报单,然后再撤单;
看你代码没有撤单的语句,你在交易 下单设置 程式化交易 里面对撤单做下修改,让其不运作
//条件判断
MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10);
CONDBUY:=MA5>MA10;
CONDSELL:=MA10>MA5;
//开仓和平仓
TBUY(CONDBUY AND TBUYHOLDINGEX( '','',0 )<1,1,LMT,18900,0,'','');
TSELL(CONDSELL AND TSELLHOLDINGEX( '','',0 )<1,1,LMT,20000,0,'','');
如果这段代码里增加撤单语句来实现:
只要MA5>MA10,那么就按照18900的价位报单要求开多仓,只要MA5满足大于MA10的情况,一直按照18900的价位挂着单;
应该怎么编写呢?
谢谢咯!
MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10);
CONDBUY:=MA5>MA10;
CONDSELL:=MA10>MA5;
//开仓和平仓
TBUY(CONDBUY ,1,LMT,18900,0,'','');
TSELL(CONDSELL AND TSELLHOLDINGEX( '','',0 )<>0,1,LMT,20000,0,'','');
tcancelex(dynainfo(7)<>tenterprice,0,'','');
这样属于一根k线满足条件开一次,如果需要一根k线满足条件反复开仓要这样写
MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10);
CONDBUY:=MA5>MA10;
CONDSELL:=MA10>MA5;
//开仓和平仓
TBUY(CONDBUY ,1,LMT,18900,0,'',''),allowrepeat;
TSELL(CONDSELL AND TSELLHOLDINGEX( '','',0 )<>0,1,LMT,20000,0,'','');
tcancelex(dynainfo(7)<>tenterprice,0,'','');