Sostituzione delle funzioni dei file MT4.

 

Ciao gente,

Un sacco di gente ha chiesto a me e al forum di metaquote circa le funzioni di gestione dei file.

Penso che MT4 abbia un sacco di bug in queste funzioni.

1- Non funzionano in backtesting

2- Non scrivono al di fuori del percorso "MetaTrader 4\experts\files".

Oggi ho aperto il mio Visual C++ e ho scritto una DLL di gestione dei file per MT4, spero che vi piaccia, e il suo codice sorgente, e ditemi il vostro .

Configurazione:

1- Estrarre"mtguru1.dll" nel percorso "MetaTrader 4\experts\libraries".

2- Estrarre"FilesDemo.mq4" nel percorso "MetaTrader 4\experts\indicators" e compilarlo.

3- Estrarre"gFiles.mqh" nel percorso "MetaTrader 4\experts\include".

4- Carica FilesDemo dai tuoi indicatori - non dimenticare di abilitare "Allow DLL Import".

5- Divertiti.

File:
mtguru1.zip  95 kb
 

Feedback

Ciao gente,

Qualche feedback per favore ?

 

Beh, non l'ho testato. Ma se funziona...è FANTASTICO!

Ho controllato il file .mq4 demo, ed è così semplice ed elegante. Ottimo lavoro.

L'unico problema che ho è cosa fare con le nuove linee.

Come posso usare gFile per scrivere una nuova riga?

 

Grazie!

fivewhy:
Beh, non l'ho testato. Ma se funziona... è fantastico!

Ho controllato il file demo .mq4, ed è così semplice ed elegante. Ottimo lavoro.

L'unico problema che ho è cosa fare con le nuove linee.

Come faccio a usare gFile per scrivere una nuova riga?

fivewhy,

Grazie mille per il tuo commento.

Penso che il problema della stampa delle nuove linee abbia bisogno di un po' di lavoro da parte mia, grazie per l'avviso.

 

ben fatto , ma le funzioni di file (così come molte altre) possono essere utilizzate direttamente dalle DLL API di Windows.

esempio di importazione di funzioni di copia di file:

#importare "Kernel32.dll"

bool CopyFileA (string source_file, string destination_file, bool if_exist);

Con le DLL si possono fare un sacco di cose, come l'accesso al database SQL e così via.

 

dove posso trovare un elenco di tutte le funzioni disponibili in kernel32.dll (e altre .dll di windows)?

Modifica: trovato. Vedi allegato.

File:
kernel32.txt  306 kb
 

È vero, ma?

Beluck:
ben fatto , ma le funzioni file (così come molte altre) possono essere utilizzate direttamente dalle DLL API di Windows.

esempio di importazione della funzione di copia del file:

#importare "Kernel32.dll"

bool CopyFileA (string source_file, string destination_file, bool if_exist);

Con le DLL si possono fare un sacco di cose, come l'accesso al database SQL e così via.

Beluck,

Esatto , ma potresti darmi una demo .mql che mi mostri come usare le funzioni CreateFile, OpenFile,WriteFilee ReadFile di kernel32 in 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 non fa parte di mtguru1.zip, non è stato possibile eseguire FilesDemo? Ringraziandoti in anticipo.

 

gFiles.mqh

sx ted:
alerts.mqh non fa parte di mtguru1.zip, non è possibile eseguire FilesDemo? Ringraziandoti in anticipo.

sx ted,

Scusa, volevo dire"gFiles.mqh"

Per eseguire FilesDemo:

1- Estrarre"mtguru1.dll" nel percorso"MetaTrader 4\experts\libraries".

2- Estrarre"FilesDemo.mq4" nel percorso "MetaTrader4\experts\indicators" e compilarlo.

3- Estrarre"gFiles.mqh" nel percorso "MetaTrader4\experts\include".

4- Carica FilesDemo dai tuoi indicatori - non dimenticare di abilitare"Allow DLL Import".

 

ted

CodersGuru, grazie a te super, hai l'equivalente di FileTell()

 

Aggiornato!

sx ted:
CodersGuru, grazie u super, hai l'equivalente di FileTell()

sx ted,

Ho aggiornato il programma. Ora include queste funzioni:

int gFileOpen(string file_name,int mode);

bool gFileWrite(int handle,string data);

bool gFileClose(int handle);

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

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

bool gFileDelete(string file_name);

int gFileSize(int handle);

int gFileTell(int handle);

bool gFileFlush(int handle);

bool gFileCopy(string source,string distance,bool IfExists);

bool gFileMove(string source,string distance);

Spero che vi piaccia.

File:
mtguru1.zip  88 kb