Versione beta del libro online sulla programmazione MQL4 - di Sergey Kovalev (SK.) - pagina 11

 

a SK

1. Il tutorial è stato pubblicato come versione beta, cioè con un'offerta di critica.
2. Bene, ho sottolineato la frase e ho trovato la linea "tutti gli array sono statici per definizione".))) cioè questo non è il mio problema.
3. Se seguiamo arbitrariamente questa linea criticata del libro di testo presumibilmente tutti gli array per definizione sono statici, possiamo ottenere un errore di indirizzo "incorrred start position 0 for ArrayMinimum function" nel tracer
(questa singola linea non toglie nulla ai meriti del libro di testo, complimenti a te SK)
4) Quindi. Un array statico è, prima di tutto, nel senso dell'allocazione della memoria,
o no, ci può essere una nuova inizializzazione di ogni elemento.
Cosa vediamo in MQL4? Ad ogni chiamata ogni elemento è inizializzato ordinatamente con zero di default, esplicitamente dalla definizione.
Cioè i dati nei sottoprogrammi non sono memorizzati senza una predefinizione statica.
Significa che i sottoprogrammi MQL4 vengono eseguiti con allocazione dinamica della memoria variabile.
Tutte le variabili e tutti gli array senza dimensione esplicita nei sottoprogrammi MQL4 sono dinamici di default. Altrimenti, dovrebbero essere fissati con una descrizione statica.
5. Per esempio, l'allocazione dinamica della memoria è un'opportunità per dichiarare doppio a[][]...[]; con dimensioni vuote,
ma è necessario menzionare che il programmatore dovrebbe essere responsabile dell'indirizzamento.
(Nell'esempio precedente, la funzione standard è indirizzata da un vecchio riferimento e non rientra nei confini dell'array).

 
Korey:

a SK


OK.
 
La domanda è la seguente.

Il libro è scritto in russo. Gli sviluppatori dicono che la traduzione in inglese è in corso, e poi in cinese apparirà. Sono sicuro che solo le spiegazioni sono tradotte; nessuno ha intenzione di toccare il codice sorgente.

Molti programmatori per natura danno nomi comprensibili alle variabili della loro lingua, per esempio qui sul sito ho incontrato massiv (masiv), Koef e anche MuH_IIIuPuHa_KaHaJIa. Così, mentre sfogliavo un libro di testo, mi sono imbattuto nel seguente codice:




Cosa ha da dire un abitante di Chinatown guardando la variabile Tip? Noi sappiamo cos' è, ma cosa sanno gli altri?

( Trovato qui: https://book.mql4.com/ru/trading/orderclose )
 
Parabellum:
La domanda è la seguente.

Il libro è scritto in russo. Gli sviluppatori dicono che la traduzione in inglese è in corso, e poi in cinese apparirà. Sono sicuro che solo le spiegazioni sono tradotte; nessuno ha intenzione di toccare il codice sorgente.

Molti programmatori per natura danno nomi comprensibili alle variabili della loro lingua, per esempio qui sul sito ho incontrato massiv (masiv), Koef e anche MuH_IIIuPuHa_KaHaJIa. Così, mentre sfogliavo un libro di testo, mi sono imbattuto nel seguente codice:




Cosa ha da dire un abitante di Chinatown guardando la variabile Tip? Noi sappiamo cos' è, ma cosa sanno gli altri?

( Trovato qui: https://book.mql4.com/ru/trading/orderclose )

Grazie per il commento!
I nomi delle variabili negli esempi, naturalmente, non si toccheranno - in cinese, per esempio, il codice sorgente non usa geroglifici, hanno a che fare con l'alfabeto latino in ogni caso. Per capire il significato di questa variabile, l'"abitante di Chinatown" guarderà semplicemente il commento. Inoltre, gli abitanti dei paesi di lingua inglese non percepiranno nemmeno la parola Tip come "tipo". Perché "type" in inglese sarebbe type. E Tip è "tip" o anche "hint". Ma questo non impedisce loro di capire i codici degli sviluppatori di lingua russa. ))
 

Ma penso che un madrelingua dovrebbe comunque guardare i nomi delle variabili. Per non calpestare un rastrello. E se la variabile Tip - il suo suono è lo stesso della parola russa di tre lettere, che ha in mezzo la lettera U (.u.) . E se non lo è? Questo non renderà il libro più bello.

Può essere più semplice e più corretto.

int _OrdetType=OrderType();

se ( _OrdetType > 1 ) ....

 

Il presupposto è che il lettore penserà ancora un po'...

 

Qui https://book.mql4.com/ru/bui ld/lots mancano i segni di divisione

c'è

Lots_New=MathFloor(Free*Percent100One_Lot/Step)*Step;// Calcola

Abbiamo bisogno di

Lots_New=MathFloor(Free*Percent/100/One_Lot/Step)*Step;// Calcola


È un po' scomodo, credo di poter vedere il codice. Voglio prenderne una fetta, ma non tutta. Cioè copio quello che vedo nel buffer e lo incollo nel testo del mio programma. Ma non è inserito correttamente. Tutto il codice va su una sola linea. Il codice di fine linea nel libro e nell'editor MQL molto probabilmente non coincidono

 

Ecco un'altra piccola modifica.

https://book.mql4.com/ru/build/trading

C'è

il controllo switch() viene passato all'etichetta del caso 10 (blocco 2-3).


Bisogno di

.... (blocco 2).

 
Prival:

Qui https://book.mql4.com/ru/bui ld/lots mancano i segni di divisione

c'è

Lots_New=MathFloor(Free*Percent100One_Lot/Step)*Step;// Calcola

Abbiamo bisogno di

Lots_New=MathFloor(Free*Percent/100/One_Lot/Step)*Step;// Calcola


È un po' scomodo, credo di poter vedere il codice. Voglio prenderne una fetta, ma non tutta. Cioè copio quello che vedo nel buffer e lo incollo nel testo del mio programma. Ma non è inserito correttamente. Tutto il codice va su una sola linea. Il codice di fine linea nel libro e nell'editor MQL molto probabilmente non coincidono


Sì, sono gli stessi problemi di formattazione. Lo sistemeremo domani.

Grazie per aver trovato l'errore.

Ci sono file autenticati per tutti i codici finiti. Il codice nei file è ritenuto corretto. A proposito, può anche essere usato come riferimento per cercare errori di battitura e imprecisioni.

 
Prival:

Ecco un'altra piccola modifica.

https://book.mql4.com/ru/build/trading

C'è

il controllo switch() viene passato all'etichetta del caso 10 (blocco 2-3).


Bisogno di

.... (blocco 2).



Non c'è bisogno di correggere qui. Tutti i blocchi hanno un punto iniziale e uno finale. In questo caso 2 è l'inizio, 3 la fine.

Grazie comunque:)

Motivazione: