"Errore "Non tutti i percorsi di controllo restituiscono un valore

 

Ciao, sto cercando di codificare il mio sistema però dopo la compilazione restituisce il "non tutti i percorsi di controllo restituiscono un valore" e quando faccio doppio clic mostra il suo nel seguente blocco, qualcuno potrebbe per favore indicare il problema.

Grazie in anticipo

bool CalculateCurrentSellOrders(string symbol)
  {
   int sells=0;
   for (int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_SELL) sells++;
        }
      }
   if(sells>0) return(true);
  }
 
Siladeh:

Ciao, sto cercando di codificare il mio sistema però dopo la compilazione restituisce il "non tutti i percorsi di controllo restituiscono un valore" e quando faccio doppio clic mostra il suo nel seguente blocco, qualcuno potrebbe indicare il problema.

Grazie in anticipo


Problema risolto


Rimuovi #Proprietà rigorosa

 
Siladeh:

Problema risolto


Rimuovere la #Proprietà rigorosa


Questo è un work around, aggiungi 1 linea in più

   if(sells>0) return(true);
   else     return(false);  // Add this line
 
GumRai:


Questo è un work around, aggiungi 1 linea in più


Grazie amico
 
O il più semplice:
return( sells>0 );
// if(sells>0) return(true);                
// else     return(false);  // Add this line
 

WHRoeder - continuo a togliere più righe dal mio codice grazie ai tuoi consigli. Avrei fatto esattamente la stessa cosa di GumRai. Grazie!

 
GumRai:


Questo è un work around, aggiungi 1 linea in più


Ciao GumRai, solo per il gusto della conversazione, non hai davvero bisogno dell'altro lì dentro, giusto? )

   if(sells>0) return(true);
   return(false); 
 
Siladeh:

Ciao, sto cercando di codificare il mio sistema però dopo la compilazione restituisce il "non tutti i percorsi di controllo restituiscono un valore" e quando faccio doppio clic mostra il suo nel seguente blocco, qualcuno potrebbe per favore indicare il problema.

Grazie in anticipo

Potresti ricevere un avviso per OrderSelect se non controlli il risultato.

bool CalculateCurrentSellOrders(string symbol)
  {
   int sells=0;
   for (int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
        Print("OrderSelect() failed with error : "+GetLastError());
      if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MAGICMA)continue;
      if(OrderType()==OP_SELL) sells++;
     }
   if(sells>0) return(true);
   return(false);
  }


Spero che aiuti

 
thrdel:


Ciao GumRai, solo per il gusto della conversazione, non hai davvero bisogno dell'altro lì dentro, giusto? )


No, hai ragione.

WHRoeders post sopra il tuo è ancora più semplice per ottenere la stessa cosa

 
GumRai:


No, hai ragione.

Il post di WHRoeders sopra il tuo è ancora più semplice per ottenere la stessa cosa


Vero, ma solo per situazioni particolari come questa. L'altro modo è più generale, indipendentemente da quante e quali siano le condizioni, se nessuna di esse ritorna vera, restituirà false.

È, devo ammettere, una soluzione elegante per questo particolare esempio.

 
thrdel:

...

e se non si usa :

Spero che sia d'aiuto

Non c'è bisogno di aggiungere -1 poiché la condizione è
i<OrdersTotal()
Se si aggiunge -1 si perde 1 elemento dell'array.