Unisciti alla nostra fan page
- Visualizzazioni:
- 41
- Valutazioni:
- Pubblicato:
-
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
Nel progetto Visual C++ 2010 sono presenti due classi: CMemMapApi e CMemMapFile.
Esse svolgono la stessa funzione: lavorare con la memoria virtuale (Memory Mapping) nello stile del solito lavoro con i file.
- Creare un file in memoria;
- Scrivere e leggere dati da esso;
- Possibilità di scambiare dati tra applicazioni. Anche tra MetaTrader 4 e MetaTrader 5.
L'applicazione principale è ovviamente lo scambio di informazioni:
- Nella copiatura delle transazioni tra terminali dello stesso computer.
- Scambio di quotazioni per creare esperti di arbitraggio, ecc.
Ma può essere utilizzato anche per l'archiviazione temporanea dei dati degli Expert Advisor.
La differenza tra le classi CMemMapFile e CMemMapApi è che CMemMapApi è solo un wrapper di funzioni WinApi.
La comodità di CMemMapFile è che memorizza il nome del file, l'handle e la posizione corrente di lettura/scrittura ed esegue tutti i controlli necessari sulla dimensione del file stesso.Tuttavia, l'oggetto CMemMapApi può gestire più file di memoria contemporaneamente, mentre l'oggetto CMemMapFile gestisce solo un singolo file.
Nell'attuale progetto di DLL tutte le funzioni esportate sono prese esattamente da CMemMapApi, per organizzare il lavoro con più file di memoria.
La classe CMemMapFile è stata creata per lavorare con la memoria in altri progetti C++.
Funzioni esportate dalla DLL:
int MemOpen(string path,int size,int mode,int &err[]); // apre/crea un file in memoria, restituisce l'handle void MemClose(int hmem); // chiude il file in memoria int MemGrows(int hmem,string path,int newsize,int &err[]); // aumenta la dimensione del file in memoria int MemGetSize(int hmem, int &err[]); // restituisce la dimensione del file in memoria int MemSetSize(int hmem, int size, int &err[]); // imposta la dimensione del file in memoria int MemWrite(int hmem,int &v[], int pos, int size, int &err[]); // scrivere il vettore v in memoria dalla posizione specificata pos, size size int MemRead(int hmem, int &v[], int pos, int size, int &err[]); // leggere il vettore v dalla posizione pos specificata con dimensione size int MemWriteStr(int hmem, string buf, int pos, int size, int &err[]); // scrivere dati in memoria dalla posizione specificata per il numero di byte specificato int MemReadStr(int hmem, string buf, int pos, int &size, int &err[]); // lettura dei dati dalla memoria dalla posizione specificata per il numero di byte specificato
Esempi di utilizzo della DLL in MetaTrader 5 - Monitoraggio delle quotazioni (esempio di mappatura)
Funzionamento fisso della funzione MemWriteStr
Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/816
Monitoraggio dei preventivi (esempio di mappatura)
Un esempio di utilizzo della DLL per lavorare con le funzioni di File Mapping. In questo esempio, l'Expert Advisor lanciato crea un file virtuale in memoria e inizia ad aggiornare la quotazione del simbolo. Quando si lanciano gli EA in altri terminali, questi aprono il file creato e iniziano ad aggiornarvi le loro quotazioni. In questo modo, gli Expert Advisor scambiano le loro quotazioni attraverso un file comune.
StopOutPrice
Lo script calcola il prezzo al quale può verificarsi uno Stop Out (chiusura forzata di una posizione) e il prezzo dopo il quale il valore del Free Margin diventa negativo.
Cambio_di_prezzo_di_sessione_semplice
L'indicatore più semplice che mostra sul simbolo corrente la variazione di prezzo in % dall'apertura della sessione di trading.
iForexSessions
Evidenzia le sessioni del mercato Forex (Sydney, Tokyo, Londra, New York).