GLOBALVARIABLE:duotou=0;
IF duotou=0 THEN BEGIN
tsellshort(tholding2<0,0,mkt);
tbuy(tholding2=0,100000,mkt);
SLEEP(3000);
chicang:=if(tholding2>0,tholding2,0);
jinchangjia:=tenterprice;
tsell(duotou=0 and tholding2>0,chicang,stp,jinchangjia-0.0003);
SLEEP(1000);
tbuyshort(duotou=0 ,chicang,lmt,jinchangjia+0.0003);
duotou:=1;
END
IF THOLDING2<=0 THEN BEGIN
TCANCEL( 1, 0);
DUOTOU:=0;
END
问题是绿色背景语句不断执行,每个一分钟k线运行收到数据又会发送一笔限价委托,无视全局变量的条件。
另外多头持仓下,tholding可用持仓居然会变成负数,每发送一笔限价委托可用持仓累计负增长(图中kdj后面的keyong)。如何才能实现我的想法,请老师们指点。
后台某条件符合后买入做多,同时挂上一个止损单、一个止盈单,待成交其中的一个后则撤销另一个而已。
不设置不成交撤单追价的功能。
没看明白你的意思。
我是说等止损止盈成交了一个后再把另一个没成交的撤掉。
不知我一楼的代码写的有没有错误,按逻辑应该能看懂,但我实践起来就发现挂止盈单的会不断委托去挂。一个多头仓位只需要挂一个止损及一个止盈啊。ib的挂单都挂到服务器上去的。
开仓后同时下两个平仓单,然后判断当只有一个单是未成交状态的时候,撤单
金字塔还能判断未成交状态里的是几笔委托单没成交?两笔没成交的话不撤,一笔没成交才撤?
我写得语句从逻辑上看也应该没有问题,但却因为挂的是一单止损、会多单止盈而不对。如果语句逻辑没有错误,是不是应该是其他问题呢?
老师说的也很简明扼要,但就是让我不明白啊,要不你给写个测试代码 ,纸账户上跑去试试?
一手交易,
还是满足条件就下单,下止损单
随便设个条件: 比如5日均线上穿10日均线,市价买进1份欧元美元(比如1楼的成交价1.28690,数量为100000),成交后在1.28660挂上止损卖单,在1.28720挂上止盈卖单。
当价格达到1.28660或者1.28720都会卖出平仓,平仓后则把另一个没成交的挂单给撤单。
注:这里的止盈止损单都是挂到ib服务器上的。如果有本地到达这个止损止盈的价格再下单也可以,请给一个示范测试代码。