if taccount( 4)+taccount(30)-taccount(31)>10*MINDIFF and holding<0 then
begin
sellshort(1,1,market);
settradesign(0);
end
if taccount( 4)+taccount(30)-taccount(31)>10*MINDIFF and holding>0 then
begin
sell(1,1,market);
settradesign(0);
end
账户净盈利 10*MINDIFF以上,强平多单或空单,并终止程序化交易。
以上提示,信号会消失和漏单,请问,应该怎么写?
没法终止交易,这个settradesign函数主要用于限制图表中的历史信号,
taccount一般用于后台,图表中会造成信号严重闪烁的。
你自己的需求。是什么?
我的需求是,账户达到了一定的盈利,如有单,就强平,同时停止再开新仓。即,平仓盈亏-手续费+浮动盈亏>2000,则停止交易。如有单,则全部强平。谢谢
VARIABLE:flag=0;
把你所有的开平仓条件都加上and flag=0 作为标志判断
if 开仓条件and flag=0 then begin
开仓语句。
end
if OPENPROFIT>2000 and flag=0 then begin
sell();
SELLSHORT()
flag:=1;
end
在你需要的时候把flag重置为0。
老师,加and flag=0,没有问题,但加if句子,同样会信号消失,且这句只计算浮动盈亏,没有计算平仓盈亏和手续费。
我的需求是,在开启程序化后,无论它成交多少次的开平,只要账户达到净盈利2000,就停止再开仓。如有持仓,也马上强平。
当浮动盈亏,平仓盈亏,和手续费都为0时,才能再次有效开启程序化交易。
也可以说,账户达到净盈利2000,就止盈。
如不能控制停止交易,就做暂时性强平也可以。也就是说,当程序化开启后,不论它成交多少次的开平仓,只要账户达到2000的盈利,就强平。
可以以恒指为例,日内交易,账户达到2000港币净盈利,就停止交易(或暂时强平)