Errori, bug, domande - pagina 1914

 
nys2000:

Potrebbe essere più specifico?


ripartire da zero

 
nys2000:

Potrebbe essere più specifico?

for(i=1; i <=OrdersTotal(); i++) Gli ordini in questa lista sono numerati da zero a OrdersTotal()-1 compreso (che Artem Trishkin mi scusi, ha appena accorciato l'attesa per nys2000).
 
Aleksei Beliakov:

ripartire da zero


Queste sono due opzioni equivalenti. Se per (i=1...) allora OrderSelect(i-1,...), se per (i=0,...) - OrderSelect(i,...)

 
Vladimir:
for(i=1; i <=OrdersTotal(); i++) Gli ordini in questa lista sono numerati da zero a OrdersTotal()-1 compreso (che Artem Trishkin mi scusi, ha appena accorciato l'attesa per nys2000).

Grazie, ma la numerazione degli ordini da 0 a OrdersTotal()-1 è presa in considerazione in OrderSelect(i-1,...)

 
int OrdersTotalT(int _type)
  {
   int _total=0;
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
     {

      bool select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol() && OrderType()==_type)
        {
           _total++;
        }
     }
   return(_total);
  }
 
nys2000:

Grazie, ma la numerazione degli ordini da 0 a OrdersTotal()-1 è contabilizzata in OrderSelect(i-1,...)


Fare l'ordine inverso della ricerca ...

 
nys2000:

Ecco un semplice codice come questo:

Al momento dell'avvio della funzione, due posizioni Buy sono aperte. La funzione stampa due volte la presenza di due ordini: Passaggio 1, Passaggio 2.

Rimuoviamo i commenti ed eseguiamo di nuovo la funzione. Prende vigorosamente un ordine di acquisto, dichiara "Passaggio #1" e lascia il ciclo. Il messaggio "Passaggio #2" non appare.

Qual è la magia?


1. i=1, abbiamo calcolato gli ordini ... condizione verificata 1<= 2 ? sì. Selezionato e chiuso l'ordine.

2. i++ (i=2)

3. OrdersTotal()=1 <---------- chiudendo l'ordine all'interno del ciclo ha effettivamente cambiato la condizione per uscire dal ciclo

4. 2<=1 ? no <----------- qui la vostra "magia" e di conseguenza uscite dal ciclo

void CloseAllOrders()
{
bool Ans;
int total=OrdersTotal();
   for(int i=1; i <=total; i++)     
      {      
      Print("Проход № ", i);      
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
         {  
         if (OrderSymbol() != Symbol())
            continue;
         if (OrderType()==0)
             {
//            Ans=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble(Bid,Digits),25);
             }           
         if (OrderType()==1)
             {
//            Ans=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble(Ask,Digits),25);
             } 
         }
      }      
         
return;
   
}
 

perché c'è un ulteriore ID graficoCHART_WINDOW_HANDLE, a cosa serve?

 
Konstantin:

perché c'è un ulteriore ID graficoCHART_WINDOW_HANDLE, a cosa serve?

Presumo che l'ID del grafico sia per l'ambiente mql e HWND sia per winapi.
 

Errore durante l'esecuzione

int f( int t )
{
union U {
        U( int t ) : t1( t ) {}
        int t2;
        int t1;
};
	U u( t );
        return u.t2;
}
void OnStart()
{
        Print( f( 3 ));
}

Risultato: numero casuale (certamente non 3)