Suggerimenti per migliorare il MetaEditor - pagina 10

 
Yedelkin:

Ho chiesto di fare un esempio.

Stai dicendo che se un indicatore ha 10 buffer, puoi ottenere, per esempio, i valori del settimo buffer dell'indicatore dell'altro ieri con una sola riga in MQL4?

Uh-huh,https://docs.mql4.com/ru/indicators/icustom
iCustom - Документация на MQL4
  • docs.mql4.com
iCustom - Документация на MQL4
 
Renat:
Il sistema di accesso ai buffer degli indicatori in MQL5 è molto più efficace e veloce che in MQL4.

Non sto parlando di efficienza, ma di usabilità.

Non posso fare un wrapper universale per chiamare qualsiasi indicatore, ogni volta devo correggere qualche copia e poi inciampo su un codice ingombrante.

Se fosse stato diverso in 4, non ne staremmo discutendo affatto.

 

Il lavoro del programmatore è quello di risolvere i problemi in modo efficiente, non di ottenere una soluzione di una riga che è lenta in realtà, ma economica per il programmatore. In MQL4 non c'era la possibilità di ottenere un rapido accesso di massa ai dati degli indicatori, e in MQL5 c'è tale accesso.

Il Compositore dovrebbe smettere di postare sciocchezze. Infatti l'uomo non si rende conto che N chiamate in MQL4 sono N chiamate sincronizzate e costose in MQL5 rispetto alla richiesta di buffer una tantum in MQL5 seguita da un accesso istantaneo all'array locale senza sincronizzazione. Almeno pensate al costo della sincronizzazione attraverso le sezioni critiche su ogni chiamata di storia in MQL4 e passando attraverso un ciclo completo di accesso in una funzione di sistema complessa.

Se offrite una soluzione che è diverse volte più efficace dei vecchi metodi, sarà sicuramente più redditizia per il risultato finale. L'efficienza è più importante.

 

Ho capito. Ancora nessun esempio chiaro :) Ok, andiamo avanti. Come usare il tuo link per ottenere un array di una riga di valori del buffer del decimo indicatore dell'altro ieri?

Parole chiave: a) array, b) decimo indicatore buffer. :)

 
Renat:

Il compositore deve smettere di postare sciocchezze. Infatti l'uomo non capisce che...

Renate dovrebbe imparare a leggere. In effetti, non capisce né quello che viene scritto né la posizione degli scrittori.

Se spiego l'essenza di una posizione che capisco ad un altro membro del forum, non significa che aderisco a quella posizione. Inoltre, ho specificamente chiarito per i confusi che"è solo una questione di abitudine" e non c'è alcun problema.

 
Yedelkin:

Ho capito. Ancora nessun esempio chiaro :) Ok, andiamo avanti. Come usare il tuo link per ottenere un array di una riga di valori del buffer del decimo indicatore dell'altro ieri?

Parole chiave: a) array, b) decimo indicatore buffer).

Vuole che lo copi qui? Ecco a voi:

double val=iCustom( NULL, PERIOD_D1, "SampleInd", 9, 2 );

9 è l'indice del buffer (il decimo), 2 è l'indice della barra.

La variabile val è assegnata al valore del decimo buffer di indicatori dell'altro ieri.

Ho appena visto l'array nella tua domanda. Avresti potuto indicare la necessità di ottenere valori multipli in modo esplicito.

In questo caso, la risposta è no, non potete restituire un array da una stringa. Ma si può scrivere una semplice funzione che lo farà. Tuttavia, in questo caso non ci saranno quasi differenze rispetto a MQL5 - per ogni indicatore dovrete scrivere la vostra funzione.

 
Vedo la tua posizione come "una linea è ottima e tre sono pessime".

Non rispondete alle spiegazioni tecniche, non conoscete l'architettura interna dei due terminali, non conoscete il costo delle chiamate, ma criticate le soluzioni di chi non solo ha creato metodi di accesso efficaci, ma ne spiega anche le ragioni.
 

komposter:

Yedelkin:

komposter:

Yedelkin : Vuoi dire che se un indicatore ha 10 buffer, puoi ottenere, per esempio, ivalori del settimo buffer dell'indicatore dell'altro ieri con una sola riga in MQL4?

Uh-huh...


...Ok, andiamo oltre. Come posso usare il tuo link per ottenere un array dei valori del decimo indicatore buffer dell'altro ieri su una linea?

Parole chiave: a) array, b) decimo indicatore buffer).


Ho appena vistoun array nella tua domanda. Avresti potuto indicare la necessità di ottenere diversi valori in modo esplicito. In questo caso, la risposta è no, non si può restituire un array da una riga.

Capisco. La lettura disattenta della mia domanda sui"valori dell'altro ieri" ha portato a una risposta sbagliata. Così ho dovuto usare una tautologia come "arraydi valori" invece di"valori". La risposta corretta è finalmente data: non è possibile restituire ivalori del giorno prima di ieri da MQL4 con una sola riga.

komposter:

Devo copiarlo qui? Ecco a voi:

double val=iCustom( NULL, PERIOD_D1, "SampleInd", 9, 2 );

9 è l'indice del buffer (10°), 2 è l'indice della barra.

La variabile val è assegnata alvalore del buffer del decimo indicatore dell'altro ieri.

Come hai già capito, la domanda riguardava la pluralità dei "valori dell'altro ieri", e non è stato detto da nessuna parte che ivalori dell'altro ieri devono essere cercati per PERIOD_D1 (soprattutto se consideri che un periodo giornaliero per definizione non può contenere diversi valori dell'altro ieri per un buffer). Andare avanti. Naturalmente non sono un esperto di MQL4, ma la linea sopra citata non può essere formalmente considerata corretta. Per il link che hai citato dice che "L'indice della linea dell'indicatore. Può essere da 0 a 7". Ma per qualche ragione, senza ulteriori spiegazioni, lei cita buffer index == 9.

 
komposter:
Grazie per aver rivelato il soggetto!
 
Renat:
Capisco la sua posizione...

...non reagisci... non sai... critichi...
Renat, trova un altro specchio per il tuo dialogo. Addio.