そのため、アドバイザーがお金を稼ぐことができなくなります。 - ページ 6

 
valenok2003: ローマ、嘘をつくな、最初に書いたのは
while(OrderSelect(ticket,SELECT_BY_TICKET)==false)

間違っている。全体のサイクルがそうなっているのです。

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

確かに、コメントは間違っています。しかし、そのサイクルはまさに、注文が選択されるまで-100ミリ秒待つ、というものです。

Trueの場合、すでにチケットのあるオーダーがない(クローズしている)場合、Romaは 無限ループに入ります。ほとんどの場合、このチェックは先に行われます。

 
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ミリ秒待つ」というものだ。
そうそう、この記事で行を追加するのを忘れましたが、他の記事にもありますよ、この質問に対する完全な答えは...。
 

おいおい、いつになったら複合ifを書かないことを覚えるんだよ、行を増やすのも面倒だし、分析し始めたら壁に頭をぶつけるぞ。

それに、2回に分けるよりも時間がかかる

 
FAQ:

注文を選択した後、終了時刻を確認し、!=0なら既に終了していることは既に何度も書きました。

"そして、この人たちは私に鼻をほじることを教えてくれる..."

ああ、そういえば、今思い出したけど...。

この辺にあったら、コピーしてくれないかな...。のような時間制御で、「0でなければ...」「0に等しければ...」というように。なぜなら、クローズド・オーダーにのみクローズド・タイムが存在するからです...。