这使顾问无法赚钱。 - 页 6

 
valenok2003: 罗马,不要撒谎,你第一次写的时候
while(OrderSelect(ticket,SELECT_BY_TICKET)==false)

错了。整个周期是这样的。

while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                Sleep(100);        

的确,这个评论是错误的。但循环完全是这样的:直到有一个订单被选中--等待100毫秒。

真,如果没有已经(关闭)的票据订单,罗马 将进入一个无限循环。最有可能的是,这种检查是提前完成的。

 
Roman.:

这个结构最初是在某人的帖子中,问题是:我如何知道一个订单的价格? 我在这个循环中使用的答案--见上文。

下面是这个问题 的答案。

你有它,罗曼。有时票回来了,订单却不见了。而且你会像个甜心一样挂在那里。

此外,它必须在那里。

// 如果订单没有 被选中

PS 你和我最近讨论了这个话题。

 

哦,来吧.....

你说会发生什么是什么意思?我完全不明白这个问题....

阅读文档--标准常数/错误--它说明了一切......

如果你找不到它--错误4108

 
valenok2003:



罗马,不要撒谎,你第一次写的时候

这个设计

while(OrderSelect(ticket,SELECT_BY_TICKET)==false)

是在线工作周期的一部分,我用它来获得所选订单的 特征。

// ------------------------------------------------Ищем наш ордер---------------------------------
   int orderType;
   for (int orderIndex = (OrdersTotal() - 1); orderIndex >= 0; orderIndex--)
   {
      if (!OrderSelect(orderIndex, SELECT_BY_POS))     continue;
      if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber)) continue;
      orderType = OrderType();
      if ((orderType != OP_BUY) && (orderType != OP_SELL)) continue;
          ticket = OrderTicket( );                         // Номер ордера
          orderLots = OrderLots();                         // Lots   
          orderProfit = OrderProfit() + OrderSwap();       // Profit
          Price = OrderOpenPrice();                        // Цена открытия рыночного ордера
          SL =  OrderStopLoss();                           // Значение StopLoss ордера
          TP = OrderTakeProfit();                          // Значение TakeProfit ордера          
          if (ticket>0)                                    // Если позиция открылась
              {
                while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                Sleep(100);                                 
                double OpenPrice=OrderOpenPrice();
       // Print("OrderTicket()=",OrderTicket(),  "OrderOpenTime()=",OrderOpenTime()); 
       // Print("TimeLocal()=",TimeLocal());                                                                    
                     //---------------------Запоминаем значения сл и тп ордера                     
                if (orderType == OP_BUY) 
                   {                
                     
                   }
            
                if (orderType == OP_SELL) 
                   {        
                     
                   }   
                            
               }
             
     // Проверка на предельную просадку      
      double loss = - ((orderProfit * 100.0) / AccountBalance());
      if (loss > MaxLoss)
      {
         Print ("MaxLoss");
         CloseAllOrders(MagicNumber);
         IsExpertFailed = true;
         return (0);
      }  
        
      return (0);
   }
   
 
 

我已经写了多少次,在选择一个订单,检查 关闭时间,如果!=0,那么该订单已经关闭。

"这些人还教我抠鼻子......"

 

而当它卡在你的周期中时...上帝的母亲。

Вот эта строка вашше не очем : if (!OrderSelect(orderIndex, SELECT_BY_POS)) continue;

 
FAQ:"这些人还教我如何挖鼻孔......"

我想到了这一点。

儿子无意中看到他的父母在做爱,心想:"而这些人还禁止我挖鼻孔......"。

 
Mathemat:

错了。整个周期是这样的。

的确,这个评论是错误的。但循环完全是这样的:直到有一个订单被选中,等待100毫秒。
是的,我忘了在这个帖子里加一句话,但在其他帖子里有一句,这个问题的完整答案是......
 

你什么时候才能学会不写复合的如果,你懒得加行,当你开始分析的时候,你可以把你的头往墙上砸。

此外,它需要的时间比两个单独的

 
FAQ:

我已经写了多少次,在选择一个订单后,检查关闭时间,如果!=0,那么该订单已经关闭。

"这些人还教我抠鼻子......"

是的,顺便说一句,我现在想起来了......

如果你在这里有任何东西,你可以复制...有一个时间控制,类似于--如果不等于/等于零......。因为只有关闭的订单才有关闭时间......