Lo que impide que el asesor gane dinero. - página 6

 
valenok2003: Roma, no mientas, la primera vez que escribiste
while(OrderSelect(ticket,SELECT_BY_TICKET)==false)

No es así. Todo el ciclo es así:

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

Es cierto que el comentario es erróneo. Pero el ciclo es exactamente así: hasta que se selecciona una orden - espera 100 milisegundos.

Verdadero, si no hay ningún pedido con ticket ya (cerrado), Roma entrará en un bucle infinito. Lo más probable es que esta comprobación se haga antes.

 
Roman.:

Esta construcción fue originalmente en el post de alguien con la pregunta: ¿Cómo puedo saber el precio de un pedido? la respuesta que he utilizado en este bucle - ver arriba.

Aquí está la respuesta a esa pregunta:

Ahí lo tienes, Roman. A veces el billete vuelve y el pedido desaparece. Y te colgarás como un bombón.

Además, tiene que estar ahí.

// Si la orden NO está seleccionada

PS Usted y yo discutimos este tema recientemente.

 

Oh, vamos.....

¿A qué te refieres con lo que va a pasar? No entiendo en absoluto esta pregunta....

Lea el documento - constantes estándar/errores - lo dice todo...

Si no lo encuentras - error 4108

 
valenok2003:



Roma, no mientas, la primera vez que escribiste

este diseño

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

es una parte del ciclo para trabajar en línea, lo uso para obtener las características de la orden seleccionada

// ------------------------------------------------Ищем наш ордер---------------------------------
   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);
   }
   
 
 

Ya he escrito cuantas veces, después de seleccionar una orden, comprueba la hora de cierre, si !=0 entonces la orden ya está cerrada.

"Y esta gente me enseña a hurgarme la nariz..."

 

Y cuando se atasca en su ciclo... Mamá querida.

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

 
FAQ: "Y esta gente me enseña a hurgarme la nariz..."

Me viene a la mente:

El hijo presencia accidentalmente a sus padres teniendo sexo y piensa: "Y esta gente todavía me prohíbe hurgarme la nariz...".

 
Mathemat:

No es así. Todo el ciclo es así:

Es cierto que el comentario es erróneo. Pero el ciclo es exactamente así: hasta que se selecciona una orden, espera 100 milisegundos.
Sí, me olvidé de añadir una línea en este post, pero hay una en otros posts, donde está la respuesta completa a esta pregunta...
 

Hombre, cuando vas a aprender a no escribir ifs compuestos, te da pereza añadir una línea, y cuando te pongas a analizarlo te vas a dar la cabeza contra la pared.

Y además, lleva más tiempo que dos

 
FAQ:

Ya he escrito cuantas veces, después de seleccionar una orden, comprueba la hora de cierre, si !=0 entonces la orden ya está cerrada.

"Y esta gente me enseña a hurgarme la nariz..."

Sí, por cierto, ahora estoy recordando...

Si tienes alguno por aquí, puedes copiarlo... con un control de tiempo, algo así como - si no es igual a/igual a cero... porque sólo las órdenes cerradas tienen una hora de cierre...