一键平仓脚本为什么平仓只能平一半?
这是个一键平仓脚本,执行中发现了一个问题,每次平仓只能平一半,今天研究了一下发现问题,出在if循环上。看下面的代码。如果现在有4笔订单要平仓,那么在下面的代码是这样的执行的。
1、OrdersTotal()>0),判断订单4笔大于0
2、遍历4笔订单
问题就出在这里。当平掉两笔订单后i等于2,这时OrdersTotal()=2,关键是OrdersTotal(),这也是变化的数字,不再是当时的4.当i=OrdersTotal()时,程序自然就执行不下去了。这时只需要把if换成while就能解决问题。
if 只做判断,判断一次之后,便不会再回来了
while 的话,循环,直到结果为false,才跳出来
//--------------------------------------------------------------------------------------------------
if(OrdersTotal()>0)
{
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==1)
{
if(OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),100,clrNONE)==1)
print("平仓成功");
}
}
} 谢谢分享 路过。。看看先。。。。 看看先。。。。 确实牛逼 谢谢分享 谢谢分享 路过了解一下 路过了解一下,好 谢谢分享 路过。。看看先。。。 谢谢分享 路过看看 不错,感谢分享 能盈利就是好东西 这个while的用法的确比if好 看看。。了解下。。。 谢谢分享 就是往前平仓和往后平仓的问题,我也碰过这个坑 这个while的用法的确比if好
页:
[1]
2