Sustitución de las funciones de los archivos de MT4.

 

Hola amigos,

Mucha gente me preguntó a mí y al foro de metaquotes sobre las funciones de manejo de archivos.

Creo que MT4 tiene muchos errores en esas funciones.

1- No funcionan en backtesting

2- No escriben fuera de la ruta "MetaTrader 4\perts\files".

Hoy abrí mi Visual C++ y escribí una dll de manejo de archivos para MT4, espero que la disfruten, y su código fuente, y me digan su .

Configuración:

1- Extraer el"mtguru1.dll" a la ruta "MetaTrader 4\perts\libraries ".

2- Extraer "FilesDemo.mq4" a la ruta "MetaTrader 4\perts\indicators " y compilarlo.

3- Extrae"gFiles.m qh" a la ruta "MetaTrader 4\perts\include".

4- Carga FilesDemo desde tus Indicadores - no olvides habilitar "Allow DLL Import".

5- Disfrute.

Archivos adjuntos:
mtguru1.zip  95 kb
 

Comentarios

Hola amigos,

¿Algún comentario, por favor ?

 

Bueno, no lo he probado. Pero si funciona... ¡¡Estupendo!!

He comprobado el archivo .mq4 de demostración, y es tan simple y elegante. Buen trabajo.

El único problema que tengo es qué hacer con las líneas nuevas.

¿Cómo puedo usar gFile para escribir una nueva línea?

 

Gracias.

fivewhy:
Bueno, no lo he probado. Pero si funciona... ¡¡¡Estupendo!!!

He comprobado el archivo .mq4 de demostración y es muy sencillo y elegante. Buen trabajo.

El único problema que tengo es qué hacer con las líneas nuevas.

¿Cómo puedo usar gFile para escribir una nueva línea?

cinco por qué,

Muchas gracias por tu comentario.

Creo que el tema de la impresión de nuevas líneas necesita algo de trabajo por mi parte, Gracias por el aviso.

 

bien hecho , pero las funciones de archivo (así como muchas otras) pueden ser utilizadas directamente desde las dlls de la API de windows.

ejemplo de importación de la función de copia de archivos:

#importar "Kernel32.dll"

bool CopyFileA (cadena archivo_origen, cadena archivo_destino, bool si_existe);

con las DLLs puedes hacer muchas cosas, como el acceso a la base de datos SQL, etc.

 

¿dónde puedo encontrar una lista de todas las funciones disponibles en kernel32.dll (y otras .dll de windows)?

Edición: Lo encontré. Ver attched.

Archivos adjuntos:
kernel32.txt  306 kb
 

Así es, pero...

Beluck:
bien hecho , pero las funciones de archivo (así como muchas otras) pueden ser utilizadas directamente desde las dlls de la API de windows.

ejemplo de importación de la función de copia de archivos:

#importar "Kernel32.dll"

bool CopiarArchivoA (cadena archivo_origen, cadena archivo_destino, bool si_existe);

con las DLLs puedes hacer muchas cosas, como acceso a bases de datos SQL y demás.

Beluck,

Así es , pero podrías darme una demo .mql que me muestre como usar las funciones de kernel32 CreateFile, OpenFile,WriteFiley ReadFile en MQL4

HANDLE CreateFile(

LPCTSTR lpFileName,

DWORD dwDesiredAccess,

DWORD dwShareMode,

LPSECURITY_ATTRIBUTES lpSecurityAttributes,

DWORD dwCreationDisposition,

DWORD dwFlagsAndAttributes,

HANDLE hTemplateFile

);

HFILE OpenFile(

LPCSTR lpFileName,

LPOFSTRUCT lpReOpenBuff,

UINT uStyle

);

BOOL WriteFile(

HANDLE hFile,

LPCVOID lpBuffer,

DWORD nNumberOfBytesToWrite,

LPDWORD lpNumberOfBytesWritten,

LPOVERLAPPED lpOverlapped

);

BOOL ReadFile(

HANDLE hFile,

LPVOID lpBuffer,

DWORD nNumberOfBytesToRead,

LPDWORD lpNumberOfBytesRead,

LPOVERLAPPED lpOverlapped

);
 

ted

alerts.mqh no forma parte de mtguru1.zip, no se puede ejecutar FilesDemo? Gracias de antemano.

 

gFiles.mqh

sx ted:
alerts.mqh no forma parte de mtguru1.zip, no se puede ejecutar FilesDemo? Gracias de antemano.

sx ted,

Lo siento, quise decir "gFiles. mqh"

Para ejecutar FilesDemo:

1- Extrae el"mtguru1.dll" a la ruta "MetaTrader 4\perts\libraries".

2- Extrae "FilesDemo.mq4" a la ruta "MetaTrader4\perts\indicators" y compílalo.

3- Extrae"gFiles.m qh" a la ruta "MetaTrader4\perts\include".

4- Cargar FilesDemo de tus indicadores - no olvides habilitar"Permitir importación de DLL"

 

ted

CodersGuru, gracias super, tienes el equivalente de FileTell()

 

¡Actualizado!

sx ted:
CodersGuru, gracias super, tienes el equivalente de FileTell()

sx ted,

He actualizado el programa. Ahora incluye estas funciones:

int gFileOpen(cadena nombre_archivo,int modo);

bool gFileWrite(int handle,string data);

bool gFileClose(int handle);

string gFileRead(int handle,int length=0);

void gFileSeek(int handle,int offset, int mode);

bool gFileDelete(cadena nombre_archivo);

int gFileSize(int handle);

int gFileTell(int handle);

bool gFileFlush(int handle);

bool gFileCopy(cadena origen,cadena distancia,bool SiExiste);

bool gFileMove(cadena origen,cadena distancia);

Espero que lo disfrutes.

Archivos adjuntos:
mtguru1.zip  88 kb