Discussione sull’articolo "Scambio di Dati tra Indicatori: È Facile" - pagina 2

 
<br/ translate="no">

...L'unica domanda è come convertire un puntatore in un intero. Qui ci viene in aiuto la Dynamic Link Library, ovvero le capacità di conversione dei tipi di dati in C++. Poiché i puntatori in C++ sono un tipo di dati a quattro byte, è conveniente usare il tipo int a quattro byte per i nostri scopi...

Se non sbaglio, l'autore parla di conversione implicita dei tipi. È un articolo molto istruttivo - grazie all'autore.

Volevo anche aggiungere che se si deve creare un metodo SetPtr, non si può fare a meno di una conversione di tipo esplicita.

Avrà un aspetto simile a questo

double* SetPtr(int a)
{
  double* a1 = reinterpret_cast <double* > (a);
  return(a1);
}

In generale, MQL5 beneficerebbe molto se i puntatori fossero ampiamente riconosciuti e utilizzati.

 

In generale, MQL5 trarrebbe grandi benefici se i puntatori fossero ampiamente riconosciuti e utilizzati.

Aggiungerei a questo elenco la gestione delle eccezioni, i costruttori con parametri e l'ereditarietà multipla.

Ma per qualche motivo gli sviluppatori pensano che non siamo abbastanza intelligenti da sfruttare tutte queste caratteristiche e che ci faremo solo del male.

Anche se tutti questi elementi sono strumenti standard dell'OOP e non hanno mai danneggiato nessuno.

Ho l'impressione (da parte mia) che non siano semplicemente in grado di implementare questi meccanismi in modo affidabile.

È triste che qualcuno abbia deciso che qui non si può fare.

 

Ho notato che con le nuove build di MT4 la funzione SetIndicatorValue() non funziona, ma GetIndicatorValue() sì. È una mia impressione o c'è qualcosa nelle nuove build (credo che il cambiamento sia avvenuto da qualche parte dopo la build 225) che ha interrotto questa funzione? Se è così, qualche suggerimento su come far funzionare le metodologie di questo articolo sulle nuove build di MT4? Il fatto che le vecchie versioni non siano più supportate mi crea un problema a questo proposito, in quanto vorrei che i calcoli degli indicatori avvenissero solo una volta, in un EA, ma venissero comunque visualizzati sui grafici spingendo i valori calcolati nei puntatori dei buffer degli indicatori. (Tra l'altro, sono stato molto felice di trovare questo articolo e di poterne applicare le tecniche - grazie per averlo scritto).

Ho notato che nelle note di rilascio della build 392 di MT4 del 17/3/2011 si legge: "3. Rimosso il ricalcolo non necessario degli indicatori quando vengono visualizzati su un grafico". Questo miglioramento annulla di fatto la necessità delle tecniche descritte in questo articolo, in quanto l'utilizzo di indicatori personalizzati nel modo in cui sono stati concepiti non sarà più lento rispetto all'utilizzo delle tecniche basate sul puntatore insegnate in questo articolo? Grazie.

 
brisully:

Ho notato che con le nuove build di MT4 la funzione SetIndicatorValue() non funziona, ma GetIndicatorValue() sì. È una mia impressione o c'è qualcosa nelle nuove build (credo che il cambiamento sia avvenuto da qualche parte dopo la build 225) che ha interrotto questa funzione? Se è così, qualche suggerimento su come far funzionare le metodologie di questo articolo sulle nuove build di MT4? Il fatto che le vecchie versioni non siano più supportate mi crea un problema a questo proposito, in quanto vorrei che i calcoli degli indicatori avvenissero solo una volta, in un EA, ma venissero comunque visualizzati sui grafici spingendo i valori calcolati nei puntatori dei buffer degli indicatori. (Tra l'altro, sono stato molto felice di trovare questo articolo e di poterne applicare le tecniche - grazie per averlo scritto).

Ho notato che nelle note di rilascio della build 392 di MT4 del 17/3/2011 si legge: "3. Rimosso il ricalcolo non necessario degli indicatori quando vengono visualizzati su un grafico". Questo miglioramento annulla di fatto la necessità delle tecniche descritte in questo articolo, in quanto l'utilizzo di indicatori personalizzati nel modo in cui sono stati concepiti non sarà più lento rispetto all'utilizzo delle tecniche basate sul puntatore insegnate in questo articolo? Grazie.

Sembra che mi sia sbagliato e che i file degli indicatori allegati all'articolo funzionino nelle nuove build di MT4. Mi dispiace per il falso allarme e grazie ancora per questo lavoro.
 
Zhunko:

Quanto è complicato!...

Con l'aiuto di Ilnur un anno fa ho scritto una libreria in MQL4 per lavorare con la memoria. È possibile allocare memoria, spostare puntatori, scrivere e leggere, trasferire il nome di un'area di memoria a qualsiasi altro programma.

Tutto si basa sulla mappatura. È molto più semplice di quella proposta.

Come posso ottenere questa libreria? Ve ne sarei grato. Ho bisogno di trasferire dati tra due MT.
 
Grazie
 

È possibile aggiungere alla DLL funzioni per lavorare non solo con double, ma anche con datetime, long e int?

Risulta che ora i dati degli array di prezzi possono essere facilmente trasferiti tra strutture annidate senza copiarli, ma i dati su tempo, spread e volumi devono ancora essere copiati.

Ho provato ad adattare GetPtr per lavorare con datetime e long (e attraverso perversioni con lo spostamento dei bit int) - non funziona, la funzione accetta un riferimento a un array e non può essere convertito.

Qualcuno ha risolto questo problema?

 

Silenzio.

Eh... Dovrò ricordarmi del C++ e installare MSVC da solo...

 
Laryx:

Silenzio.

Eh... Dovrò ricordarmi di C++ e installare MSVC da solo...

E ora nessuno ti risponderà, tutti sono andati al fronte.

Hai saputo qualcosa sull'aggiornamento di MT4?

 

Per il bordo del mio orecchio, per il bordo del mio orecchio... :)

L'aggiornamento di MT4 è molto buono per me - ho grandi librerie, ma tutte sono su MT5 (non riesco a immaginare la mia vita senza OOP). E i DC, brutta gente, non tutti hanno MT5 nella vita reale.... Quindi questa notizia è molto buona per me.

Ma - finché non ci sarà una normale MT4++, non vedo il motivo di adattare il codice per la piattaforma aggiornata. Quando uscirà qualcosa come una beta ufficiale (sì, con la Libreria Standard, non voglio scrivere Expert Advisor senza di essa) - allora inizieremo a convertire il codice....

E ora voglio ottenere indirizzi non solo di array doppi, ma anche di altri array... Ah - bleah... Volevo aggirare il problema con una conversione di tipo (anche i tempi e i lunghi sono a otto byte), ma non funziona ancora....