找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
首页论坛EAHub 外汇论坛
查看: 25|回复: 0

一键平仓脚本为什么平仓只能平一半?

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-27 22:47:00 | 显示全部楼层 |阅读模式
这是个一键平仓脚本,执行中发现了一个问题,每次平仓只能平一半,今天研究了一下发现问题,出在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("平仓成功");
                                 
                          }
            
                      }
                }     复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EAHub外汇论坛

GMT+8, 2026-10-9 15:30 , Processed in 0.060202 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表