半轮沧海 发表于 2022-6-13 22:57:54

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

这是个一键平仓脚本,执行中发现了一个问题,每次平仓只能平一半,今天研究了一下发现问题,出在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("平仓成功");
                                 
                        }
            
                      }
                }   

pengjhl 发表于 2022-6-14 00:39:22

谢谢分享

nanaliu 发表于 2022-6-14 00:54:41

路过。。看看先。。。。

banruo 发表于 2022-6-14 06:33:15

看看先。。。。

彩虹桥 发表于 2022-6-14 10:33:46

确实牛逼

ea12213 发表于 2022-6-14 11:11:30

谢谢分享

6669 发表于 2022-6-14 11:45:49

谢谢分享

紫竹青荷 发表于 2022-6-14 11:51:47

路过了解一下

qwe11 发表于 2022-6-14 12:34:34

路过了解一下,好

amwwfndn 发表于 2022-6-14 14:36:41

谢谢分享

jongjongyoshen 发表于 2022-6-14 14:37:40

路过。。看看先。。。

bin 发表于 2022-6-17 08:02:09

谢谢分享

南岭彭于晏 发表于 2022-6-20 09:39:58

路过看看

jrjr168 发表于 2022-6-28 00:12:55

不错,感谢分享

skykey3 发表于 2022-6-28 14:33:44

能盈利就是好东西

owen09099 发表于 2022-6-28 22:21:56

这个while的用法的确比if好

jongjongyoshen 发表于 2022-6-28 22:53:29

看看。。了解下。。。

mic 发表于 2022-6-28 22:54:21

谢谢分享

wangddtt 发表于 2022-6-29 15:43:09

就是往前平仓和往后平仓的问题,我也碰过这个坑

huxu8777 发表于 2022-6-29 23:25:24

这个while的用法的确比if好
页: [1] 2
查看完整版本: 一键平仓脚本为什么平仓只能平一半?