Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 1307
- Avaliação:
- Publicado:
- 2014.01.14 13:18
- Atualizado:
- 2016.11.22 07:33
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Este projeto(Visual C++ 2010) contém 2 classes - CMemMapApi e CMemMapFile.
São projetados para trabalhar com arquivos de mapeamento de memória. Você pode:
- Criar arquivo em memória;
- Escrever e ler dados a partir do arquivo de mapeamento de memória;
- Ele fornece uma oportunidade para a troca de dados entre aplicativos, incluindo MetaTrader 4 e МetaТrader 5.
A aplicação principal é a troca de dados:
- Cópia dos negócios para vários terminais em PC único.
- Cotações de troca de dados para Expert Advisors de arbitragem etc.
Os arquivos de mapeamento de memória podem ser usados para servir dados temporários dos Expert Advisors.
A classe CMemMapApi é apenas um empacotador (wrapper) de funções WinAPI que é a diferença entre as classes CMemMapFile e CMemMapApi.
O CMemMapFile é útil porque serve o nome do arquivo, manipulador (handle) de arquivo e controla as verificações do tamanho de arquivo. Em contraste, a classe CMemMapApi pode trabalhar com vários arquivos de mapeamento de memória.
No projeto atual as funções DLL exportadas são organizados em CMemMapApi para trabalhar com vários arquivos de mapeamento de memória.
A classe CMemMapFile é projetada para trabalhar com arquivos de mapeamento de memória em outros projetos C++.
//--- abrir/criar o arquivo de mapeamento de memória e retorna o manipulador (handle) int MemOpen(string path,int size,int mode,int &err[]); //--- fecha o arquivo de mapeamento de memória void MemClose(int hmem); //--- aumenta o tamanho do arquivo de mapeamento de memória int MemGrows(int hmem,string path,int newsize,int &err[]); //--- retorna o tamanho do arquivo de mapeamento de memória int MemGetSize(int hmem, int &err[]); //--- define o o tamanho do arquivo de mapeamento de memória int MemSetSize(int hmem, int size, int &err[]); //--- escreve "v" vetor (tamanho em bytes) para iniciar o arquivo mapeamento de memória a partir da posição "pos" int MemWrite(int hmem,int &v[], int pos, int size, int &err[]); //--- Lê o "v" vetor (tamanho em bytes) para iniciar o arquivo mapeamento de memória a partir da posição "pos" int MemRead(int hmem, int &v[], int pos, int size, int &err[]); //--- escreve uma string (tamanho em bytes) para iniciar o arquivo mapeamento de memória a partir da posição "pos" int MemWriteStr(int hmem, string buf, int pos, int size, int &err[]); //--- Lê uma string (tamanho em bytes) para iniciar o arquivo mapeamento de memória a partir da posição "pos" int MemReadStr(int hmem, string buf, int pos, int &size, int &err[]);
Exemplo do uso da DLL: Monitoramento de Cotações (arquivo de memória mapeada)
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/816

Classes (convertidas do C++ para MQL5) para trabalhar com arquivos de memória mapeada.

BykovTrend_HTF_Signal mostra uma indicação do sentido da tendência ou um sinal para a realização de um negócio gerado pelo indicador BykovTrend através de objeto gráfico colorido.

Este Expert Advisor é um exemplo de uso do Mapeamento de Memória DLL para trabalhar com Funções de Mapeamento de arquivo. Neste exemplo, o Expert Advisor cria um arquivo virtual (de memória mapeada) e inicia a atualização das cotações nos ativos. Desta forma, os Expert Advisors podem trocar dados (por exemplo, dados de cotações) usando o arquivo de memória mapeada comum.

A Classe CRVIOnArray é projetada para calcular os valores do RVI (Relative Vigor Index) sobre os buffers do indicador. Abaixo temos uma exemplo do uso da classe através do indicador Test_RVIOnArray.