初学者的问题 MQL5 MT5 MetaTrader 5 - 页 642

 
paylesss:

谢谢!重新启动电脑有帮助!真可惜,我在这里坐了一上午))

现在更相关的是终端的构建,最好能记住你做了什么,使 全局变量失效。如果有可能重复这种情况,那就太好了。

 
Kirill Andreev:

写了一个猫头鹰,但由于某些原因,尾随止损没有发挥作用......可能的原因是什么?

为了让它工作,你需要把它放在OnTick中
 
Vladislav Andruschenko:
必须把它放在OnTick中才能发挥作用。
谢谢,我会试一试的!!!。
 

你好。

请帮助,我想修改所有的位置,除了最后一个,即 "最年轻 "的位置。我在哪里加或减一个


 int i; total = OrdersTotal();
          for(i = 0; i < total; i++)
             {
              if(OrderSelect(i, SELECT_BY_POS)   && OrderLots() == _Lots)
              {
              if (OrderType()==OP_BUY) 
              {
              if (OrderOpenPrice()!=OrderStopLoss()) 
              {
              ModifyOrder(-1,OrderOpenPrice() , -1);
              }
             } 
            }  
           }
 
mila.com:

你好。

请帮助,我想修改所有的位置,除了最后一个,即 "最年轻 "的位置。我在哪里加或减一个



 int i; total = OrdersTotal();
          for(i = 0; i < total-1; i++)
             {
              if(OrderSelect(i, SELECT_BY_POS)   && OrderLots() == _Lots)
              {
              if (OrderType()==OP_BUY) 
              {
              if (OrderOpenPrice()!=OrderStopLoss()) 
              {
              ModifyOrder(-1,OrderOpenPrice() , -1);
              }
             } 
            }  
           }


 
-Aleks-:
int i; total = OrdersTotal();
          for(i = 0; i < total-1; i++)
             {
              if(OrderSelect(i, SELECT_BY_POS)   && OrderLots() == _Lots)
              {
              if (OrderType()==OP_BUY) 
              {
              if (OrderOpenPrice()!=OrderStopLoss()) 
              {
              ModifyOrder(-1,OrderOpenPrice() , -1);
              }
             } 
            }  
           }

你确定你已经展示了一个可靠的方法来错过列表中的最后一个位置吗?

如果你实事求是地进行交易,你不担心排序会突然变成依赖性吗?

不过,IMHO,我们在这里需要两个周期--在第一个周期中,我们开盘时间 寻找最新鲜的位置,在第二个周期中,我们修改所有的位置,除了在第一个周期中找到的票。

 
mila.com:

你好。

请帮助,我想修改所有的位置,除了最后一个,即 "最年轻 "的位置。我在哪里加或减一个


我愿意这样做。

/********************Script program start function********************/
void OnStart()
{
 int i, t1, t2, clTicket, total = OrdersTotal();
  datetime d1, d2;
   double v1, v2, clVolume;
    for(i = total-1; i > 0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS))
       {
        t1 = OrderTicket();
         d1 = OrderOpenTime();
        v1 = OrderLots();
       }
      else continue;
        if(OrderSelect(i-1, SELECT_BY_POS))
         {
          t2 = OrderTicket();
           d2 = OrderOpenTime();
          v2 = OrderLots();
         }
        else continue;
        clTicket = d1 > d2 ? t1 : t2;
       clVolume = d1 > d2 ? v1 : v2;
      if(!OrderClose(clTicket, clVolume, OrderClosePrice(), 100)) // закрывает независимо от типа ордера OP_BUY или OP_SELL
       Print("фигня кака-та");
    }
}/********************************************************************/

我没有勾选它,我无法决定当我关闭下一个订单时,我的订单列表中是否会有一个 "缺口"。

如果有人能够解释这种 "差距 "出现的可能性,我将不胜感激......

为了保险起见,我们还插入了其他内容;如果有一个缺口,一个订单将被直接跳过。在我看来是这样。

 
Alexey Viktorov:

我愿意这样做。

不幸的是,这还没有经过测试,我无法弄清楚在下一个订单关闭后,订单列表中是否有一个 "洞"。

如果有人能够解释这种 "差距 "出现的可能性,我将不胜感激......

作为一种保险,插入了另一个继续;如果有一个缺口,它将简单地跳过一个订单。在我看来是这样的。

最初,这个问题是关于跳过 最后一个订单。而这正是你的起点。

你必须这样做。

for(int i = total-2; i >= 0; i--)

那么删除后就不会有空隙,最近的订单会被跳过。

 
Alexey Kozitsyn:

原来的问题是跳过 最后一个订单。这是你开始的地方。

你必须这样做。

那么删除后就不会有跳过,最近的订单会被跳过。

不是名单上的最后一位,但按时间来说是 "最年轻 "的一位。

虽然我也是一样不顾一切。问题是关于修改的,我正在写接近...而如果你简单地修改它,订单列表中就不会有漏洞......你只是可能需要添加变量并 它们赋值,而且必须检查参数以避免错误#1。好吧,米拉可以自己处理。

 
Alexey Kozitsyn:

原来的问题是跳过 最后一个订单。这是你开始的地方。

你必须这样做。

for(int i = total-2; i >= 0; i--)

那么删除后就不会有跳转,最近的订单会被跳过。

你怎么能确定 不会出现排序依赖,而错过错误的顺序呢?

再次,为了可靠地 准确找到最后一个订单,必须通过 开盘时间 来识别,而不是通过其在列表中的位置。