Errori, bug, domande - pagina 427

 
uncleVic:

Ottiene EMPTY_VALUE, poiché lo restituiamo se il file non è aperto. Se è più conveniente ottenere 0,0, restituisci 0,0.

E devo restituire qualcosa. Leggere un file che non si è aperto non va bene.

Riguardo all'errore aperto. Scrivilo così:

Ecco uno screenshot del tester. È lo stesso nel terminale?


Sì nel terminale è lo stesso e l'errore Questo è quello che dice:

La dimensione del file è di 20 mb, circa 2,5 milioni di valori.

all'inizio del test 20 volte durante l'apertura è riuscito

All'inizio del test, circa 20 volte quando ho aperto il file è riuscito ad ottenere i valori che volevo, poi l'errore 5004 continua ad arrivare - il file non può essere aperto,

Ho provato con 2 mb di circa 400k valori - si apre, ma nessuno vuole ottenere di più, ho guardato i dati

Task manager, 2,5 gb di RAM sono sufficienti. (altri 500 mb liberi!)

 

Il CODE POLTERGHEIST è partito nel mio computer, se prima non apriva un file di 20 mb.

al momento c'è un test con un file aperto di 38 mb. con 5,5 milioni di valori (dati del 2005),

ma dal 2001 - circa 10 mln di valori e con una dimensione inferiore a 65 mb, non si apre. È interessante - e non è chiaro perché?

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
Renat:
Sfortunatamente, non c'è più nulla che possa aiutare con la scheda specificata. Se è un portatile, la situazione è senza speranza. Altrimenti, per 1000-1500 rubli, è possibile acquistare una scheda grafica decentemente potente che eliminerà tutti i problemi di prestazioni.


Quindi ditemi, mt4 \ mt5 attraverso l'accelerazione DirectX 2D funziona o cosa ... ?


quali di questi parametri sono importanti per l'accelerazione della grafica vettoriale ... o tutti ?

c'è un'altra domanda ... i driver per HD2000 incorporati nel processore, ufficialmente non supportano Windows Server 2008 r2 SP1 64bit, -

ma solo Vista e 7ka 64 bit ....


questa compatibilità incompleta potrebbe avere qualche effetto ... ?

(anche se i driver sono su, lavoro anche in HD giochi eseguire...)


2. Che dire delle piattaforme mt4/mt5 con compatibilità video-hardware 2D su Windows Server 2008 r2 SP1 64bit?


Quale produttore è meglio scegliere ... radionica ... nVidia?


qualsiasi test di compatibilità di velocità e adattatore per mt4/mt5 fatto .... ?


grazie.

 
Im_hungry:

Sì nel terminale lo stesso e l'errore Questo è ciò che dice:

Dimensione del file 20 mb, circa 2,5 milioni di valori

All'inizio del test, circa 20 volte durante l'apertura è stato possibile

All'inizio del test, l'apertura del file circa 20 volte ha avuto successo, poi l'errore 5004 continua ad arrivare - il file non può essere aperto,

Ho provato con 2 mb. circa 400 mila valori - si apre, ma non si apre più grande, ho guardato i dati

Task manager, 2,5 gb di RAM sono sufficienti (altri 500 mb liberi! (altri 500 mb liberi!)

Non ho letto molto, ma il testo evidenziato ha attirato la mia attenzione... Stai chiudendo il file?

Gestisce correttamente il suo descrittore?

 
AlexSTAL:

Non ho letto molto, ma il testo evidenziato ha attirato la mia attenzione... Stai chiudendo il file?

In generale, gestire correttamente il suo descrittore?

La logica (a giudicare dai codici dati) è quasi corretta. Tranne per il fatto che legge e scrive dopo aver controllato l'handle (e poi chiude anche il file).

Penso che il problema sia diverso qui:

1. l'indicatore ad ogni tick apre il file, scrive i dati, chiude il file.

2. L'Expert Advisor (penso che sia su ogni tick) apre il file, legge i dati, chiude il file.

Poiché ciò avviene in diversi flussi, più grande è la dimensione del file, più è possibile che l'Expert Advisor "incappi" nel file aperto dall'indicatore quando lo apre. E poiché il flag di aperturaFILE_SHARE_READ non viene utilizzato, ci sono delle conseguenze.

Secondo me, il trattamento del problema può essere il seguente:

1) Aprire il file (sia nell'indicatore che nell'Expert Advisor) in OnInit con il flag FILE_SHARE_READ.

2. Chiama FileFlush(handle) nell'indicatore dopo la scrittura .

3. Chiudere il file in OnDeinit.

Come questo.


Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов - Документация по MQL5
 
tester_el_pro:


Quindi ditemi, mt4 \ mt5 attraverso l'accelerazione DirectX 2D funziona o cosa ... ?


Il terminale usa il normale GDI di Windows che ha bisogno di un acceleratore 2D.

Quando scegliete una scheda, prendete qualsiasi 3D esterno, anche il livello di prezzo più basso - sarà sufficiente.
E non dovrete confrontare i punti di capacità della scheda video di base.

 
uncleVic:

La logica (a giudicare dai codici dati) è quasi corretta. Tranne per il fatto che legge e scrive dopo aver controllato l'handle (e poi chiude anche il file).

Secondo me, una cura per il problema potrebbe essere questa:

1. aprire il file (sia nell'indicatore che nell'Expert Advisor) in OnInit con il flag FILE_SHARE_READ.

2. Chiama FileFlush(handle) nell'indicatore dopo la scrittura .

3. Chiudere il file in OnDeinit.

Come questo.


Grazie per questo in futuro quando lo si usa in tempo reale

Userò i vostri consigli in futuro per lavorare con il file di Expert Advisor e l'indicatore.

 
AlexSTAL:

Non ho letto molto, ma il testo evidenziato ha attirato la mia attenzione... Chiudi il file?

State gestendo correttamente il descrittore?

Sì, certo - vede il file ma non vuole leggerlo a causa dell'errore di apertura 5004
 
uncleVic:

La logica (a giudicare dai codici dati) è quasi corretta. Tranne per il fatto che legge e scrive dopo aver controllato l'handle (e poi chiude anche il file).

Penso che il problema sia diverso qui:

1. l'indicatore ad ogni tick apre il file, scrive i dati, chiude il file.

2. L'Expert Advisor (penso che sia su ogni tick) apre il file, legge i dati, chiude il file.

Poiché avviene in flussi diversi, più grande è la dimensione del file, più probabile è che il file aperto venga aperto dall'indicatore. E poiché il flag di aperturaFILE_SHARE_READ non viene utilizzato, ci sono delle conseguenze.

Secondo me, il trattamento del problema può essere il seguente:

1) Aprire il file (sia nell'indicatore che nell'Expert Advisor) in OnInit con il flag FILE_SHARE_READ.

2. Chiama FileFlush(handle) nell'indicatore dopo la scrittura .

3. Chiudere il file in OnDeinit.

Ecco come stanno le cose.



Mi dispiace, il lavoro dell'indicatore è diverso,

1. Prima di testare nel terminale eseguo l'indicatore

2. salva il tempo della barra e il suo valore di correlazione su ogni barra

3. Ho messo il file nella cartella del tester, dove dovrebbe essere C:{Program Files\MetaTrader 5\tester\Agent-127.0.0.1-3000\MQL5\Files.

4. Lancio un Expert Advisor, che funziona aprendo le barre - e dal 2005 legge tutti i dati registrati

Legge (38 Mb), ma dal 2002 non legge (67 Mb)

 

Ho provato a registrare lo stesso con lo stesso strumento ma in mt4

ho trasferito il file bin nella cartella mt5 tester - nessuno dei file

non si apre - errore 5004, in MT5 si apre ancora qualcosa.


Ho implementato la registrazione dei dati nell'indicatore MT4 (tutti i dati sono scritti correttamente) come segue:

      Corr = GetCorrelation();
      Pos = iBarShift(Symbol(), Period(), Times[CurrPos]);
      Buffer[Pos] = NormalizeDouble(Corr,3);
//------
      datetime bar2 = iTime(Symbol1, 0, Pos);
      Print("Buffer[Pos]...",Buffer[Pos],"...bar2...",bar2);
      handle= FileOpen("kor.bin", FILE_BIN|FILE_READ|FILE_WRITE, ";");
      if(handle<1) Print("can't open file error-",GetLastError());
      if (handle>=1)
       {
        FileSeek(handle,0,SEEK_END);
        FileWriteDouble(handle,bar2,DOUBLE_VALUE); 
        FileSeek(handle,0,SEEK_END);
        FileWriteDouble(handle,Buffer[Pos],DOUBLE_VALUE); 
        FileClose(handle);
       }
//------
      CurrPos++;

Ma la lettura in mt5 da parte di un EA rimane la stessa:

double proverka()
{
 if (FileIsExist("kor.bin",0)==true) Print("ФАЙЛ ОБНАРУЖЕН = ...");
 handle= FileOpen("kor.bin", FILE_BIN|FILE_READ);
 if(handle < 0) Print("-----Неоткрывается :- Почему? Потому что произошла ошибка ",GetLastError());
 ulong file=FileSize(handle);
 ulong N = 0.0;
 double kor = 0.0;
 datetime bar[1];
 CopyTime(Symbol_1,NULL,0,1,bar);
 ulong New = (ulong) bar[0];
 while (N < file)
  {
   kor=FileReadDouble(handle); 
   N = FileTell(handle);
   //Print("1...kor=",kor,"N=",N,"file=",file,"New=",New);
   if (kor == New) 
    {
     double ss = FileReadDouble(handle);
     FileClose(handle);
     Print("2...ss=",ss);
     return (ss);
     break;
    }
   if (New < kor)
    {
     Print ("New=",New,"kor=",kor);
     return (0.0);
     break;
    }
  } 
 Print("ВСЕЕЕЕЕЕ",kor);
 FileClose(handle);
 return (kor);
}
//=

È possibile per un EA in mt5 aprire un file creato in mt4?