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).
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,...)
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;
}
Potrebbe essere più specifico?
ripartire da zero
Potrebbe essere più specifico?
ripartire da zero
Queste sono due opzioni equivalenti. Se per (i=1...) allora OrderSelect(i-1,...), se per (i=0,...) - OrderSelect(i,...)
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,...)
Grazie, ma la numerazione degli ordini da 0 a OrdersTotal()-1 è contabilizzata in OrderSelect(i-1,...)
Fare l'ordine inverso della ricerca ...
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
perché c'è un ulteriore ID graficoCHART_WINDOW_HANDLE, a cosa serve?
perché c'è un ulteriore ID graficoCHART_WINDOW_HANDLE, a cosa serve?
Errore durante l'esecuzione
Risultato: numero casuale (certamente non 3)