Guarda come scaricare robot di trading gratuitamente
Ci trovi su Facebook!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Visualizzazioni:
42
Valutazioni:
(36)
Pubblicato:
memmap32.zip (754.96 KB)
memmapdll.zip (29.22 KB)
Freelance MQL5 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.
Lavorando con la memoria, si ottiene un grande guadagno nella velocità di scambio delle informazioni.

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) 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 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 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 iForexSessions

Evidenzia le sessioni del mercato Forex (Sydney, Tokyo, Londra, New York).