Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1917

 
Valeriy Yastremskiy #:

La domanda non riguardava questo. La funzione di Dimitri non restituisce un argomento per riferimento. Perché usare un argomento per riferimento? Sì, le aree locali potranno dichiarare una variabile in se stesse e ottenere una risposta alla variabile dopo la chiamata della funzione.

E questo è tutto?

Se una variabile è dichiarata globalmente, non dovrebbero esserci variabili con lo stesso nome. Se una funzione è chiamata da diverse funzioni, come nel vostro esempio, potete dimenticarvene e dichiarare una variabile con lo stesso nome in ogni funzione. Questo è conveniente...

 
Valeriy Yastremskiy #:

La domanda non riguardava questo. La funzione di Dimitri non restituisce un argomento per riferimento. Perché usare un argomento per riferimento? Sì, le aree locali potranno dichiarare una variabile in se stesse e ottenere una risposta alla variabile dopo la chiamata della funzione.

E questo è tutto?

1. Così la funzione internamente può cambiare e restituire qualsiasi variabile passata ad essa, non una specifica variabile globale.

2. In modo che la funzione non copi qualsiasi variabile di grandi dimensioni nella funzione - un array, una struttura, una stringa di testo...

 
Alexey Viktorov #:

Se una variabile è dichiarata globalmente, non dovrebbero esserci variabili con lo stesso nome. Se chiamate una funzione da diverse funzioni, come nel vostro esempio, potete lasciarla stare e dichiarare una variabile con lo stesso nome in ogni funzione. È conveniente...

Cioè è solo una questione di localizzazione dell'uso per le aree locali con gli stessi nomi di argomenti per riferimento. Beh, non molto, ma qualcosa c'è. Pensavo che ci fosse di più.

 
JRandomTrader #:

1. In modo che la funzione internamente possa cambiare e restituire qualsiasi variabile passata ad essa, non una specifica variabile globale.

2. Non copiare in una funzione qualche variabile di grandi dimensioni - una matrice, una struttura, una stringa di testo...

La domanda riguardava qualcos'altro. Nel terzo esempio, la tua 1a risposta. 2й. Non credo che sia una questione di essere in grado di cambiare i campi o gli elementi dell'entità. Nella maggior parte dei casi non sono costanti, quindi l'argomento del riferimento è ovvio per la maggior parte dei casi. MA se l'entità è costante, allora... ma gli sviluppatori hanno deciso di non preoccuparsi.

 
Valeriy Yastremskiy #:

Cioè è solo una questione di localizzare l'uso per aree locali con gli stessi nomi di argomenti per riferimento. Beh, non molto, ma qualcosa c'è. Pensavo che ci fosse di più.

Queste sono solo le cose con cui so di essere a mio agio. Sicuramente ci sono altri vantaggi, come la ridondanza della memoria o altro. Perché non lo chiede direttamente a Fedoseev?
 
Alexey Viktorov #:
Questo è solo ciò che conosco, ciò che è comodo per me. Sicuramente ci sono altri benefici, come la ridondanza della memoria o altro. Perché non lo chiede direttamente a Fedoseev?

Diverso livello di percezione))) Forse pecco io, le cose ovvie sono molto difficili da trasmettere agli altri))))

 
Valeriy Yastremskiy #:

È possibile fare con un solo argomento x dichiarando r in ambito globale.

Si può fare a meno di argomenti dichiarando x nello scope globale. Inoltre, è possibile non restituire il risultato, ma scriverlo in una variabile globale. Ma porterà alla confusione del codice, alla necessità di ricordare cosa e dove viene memorizzato, e con l'aumento del codice del programma trasformerà la vita del programmatore in un inferno.
 
Buon pomeriggio. Potreste dirmi cosa manca? Il mio scopo è quello di chiudere i primissimi scambi con un volume minimo. Attualmente sto selezionando solo gli ordini con un volume di 0,01.
     for(int i=0; i<OrdersTotal(); i++){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
       if(OrderLots()==0.01){ 
     OrderClose(OrderTicket(),0.01,OrderType()==OP_BUY?Bid:Ask,3,clrWhite);return;}}}    }

Se non da 0,01 allora devo selezionare gli ordini da 0,02 e così via. Come dovrebbe essere scritto questo punto?

 
Rustam Bikbulatov volume minimo. Il mio EA sta attualmente selezionando solo gli ordini con un volume di 0,01.

Se non da 0,01 allora devo selezionare gli ordini da 0,02 e così via. Come posso scrivere questo punto?

if(OrderLots()==0.01)

Davvero non lo vedi anche tu?

"Come controllare questo punto?" - bisogna calcolare il valore minimo del lotto 0,01.

Forse, lo slittamento dovrebbe essere specificato in punti, cioè 3*Point() e non 3

 
Rustam Bikbulatov volume minimo. Il mio robot sta selezionando solo gli ordini con un volume di 0,01.

Se non da 0,01 allora devo selezionare gli ordini da 0,02 e così via. Come posso scrivere questo punto?

Hai bisogno di 2 cicli: dovresti ottenere il volume minimo nel primo e chiuderlo nel secondo. E devi anche tener conto del fatto che quando chiudi gli ordini, questi vengono spostati di 1 posizione, quindi dovresti fare un ciclo dalla posizione massima a 0.
Motivazione: