Errores, fallos, preguntas - página 427

 
uncleVic:

Obtiene EMPTY_VALUE, ya que lo devolvemos si el archivo no está abierto. Si es más conveniente obtener 0,0, devuelva 0,0.

Y necesito devolver algo. Leer un archivo que no se abrió no es bueno.

Sobre el error abierto. Escríbelo así:

Aquí hay una captura de pantalla del probador. ¿Es lo mismo en el terminal?


Sí en el terminal es lo mismo y el error Esto es lo que dice :

El tamaño del archivo es de 20 mb, unos 2,5 millones de valores.

al principio de la prueba 20 veces durante la apertura tuvo éxito

Al principio de la prueba, unas 20 veces cuando abrí el archivo logró obtener los valores que quería, luego sigue saliendo el error 5004 - el archivo no se pudo abrir,

Probé con 2 mb de unos 400k valores - se abre, pero nadie quiere conseguir más, miré los datos

Administrador de tareas, 2,5 gb de RAM son suficientes. (¡otros 500 mb gratuitos!)

 

El CODE POLTERGHEIST se ha puesto en marcha en mi ordenador, si antes no abría un archivo de 20 mb.

En este momento hay una prueba con un archivo abierto de 38 mb. con 5,5 millones de valores (datos de 2005),

pero desde 2001 - unos 10 millones de valores y con un tamaño inferior a 65 mb, no se abre. Es interesante, y no está claro por qué...

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
Renat:
Desgraciadamente, ya no hay nada que ayude con la tarjeta especificada. Si se trata de un portátil, la situación es desesperada. Si no, por 1000-1500 rublos, puedes comprar una tarjeta gráfica decentemente potente que eliminará todos los problemas de rendimiento.


Así que dime mt4 \ mt5 a través de DirectX 2D aceleración funciona o qué... ?


¿cuáles de los parámetros anteriores son importantes para la aceleración de gráficos vectoriales... o todos?

hay otra pregunta... los controladores para HD2000 integrados en el procesador, oficialmente no son compatibles con Windows Server 2008 r2 SP1 64bit, -

pero solo vista y 7ka 64 bit ....


esta compatibilidad incompleta podría tener algún efecto... ?

(aunque los controladores son hasta, el trabajo, incluso en los juegos de HD ejecutar...)


2. ¿Qué pasa con las plataformas mt4/mt5 con compatibilidad de hardware de vídeo 2D en Windows Server 2008 r2 SP1 64bit?


Qué fabricante es mejor elegir ... radiónica ... nVidia ?


cualquier prueba de velocidad y compatibilidad de adaptadores para mt4/mt5 realizada .... ?


Gracias.

 
Im_hungry:

Sí en el terminal lo mismo y el error Esto es lo que dice :

Tamaño del archivo 20 mb, unos 2,5 millones de valores

Al principio de la prueba, unas 20 veces durante la apertura fue posible

Al principio de la prueba, la apertura del archivo unas 20 veces fue exitosa, luego sigue apareciendo el error 5004 - el archivo no pudo ser abierto,

He probado con 2 mb. unos 400 mil valores - se abre, pero no se abre más grande, miré los datos

Gestor de tareas, 2,5 gb de RAM son suficientes (¡otros 500 mb libres! (¡otros 500 mb gratuitos!)

No leí mucho, pero el texto destacado me llamó la atención... ¿Cierras el archivo?

¿Maneja su descriptor correctamente en todo momento?

 
AlexSTAL:

No leí mucho, pero el texto destacado me llamó la atención... ¿Cierras el archivo?

En general, ¿maneja correctamente su descriptor?

La lógica (a juzgar por los códigos dados) es casi correcta. Excepto por el hecho de que lee y escribe después de comprobar el asa (y luego cierra el archivo también).

Creo que el problema es diferente aquí:

1. el indicador en cada tick abre el archivo, escribe los datos, cierra el archivo.

2. El Asesor Experto (creo que está en cada tick) abre el archivo, lee los datos, cierra el archivo.

Como ocurre en diferentes flujos, cuanto mayor sea el tamaño del archivo, más probable es que el indicador abra el archivo abierto. Y como no se utiliza la bandera abiertaFILE_SHARE_READ, hay consecuencias.

En mi opinión, el tratamiento del problema puede ser el siguiente:

1) Abra el archivo (tanto en el indicador como en el Asesor Experto) en OnInit con la bandera FILE_SHARE_READ.

2. Llama a FileFlush(handle) en el indicador después de la escritura .

3. Cierra el archivo en OnDeinit.

Así.


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


Así que dime mt4 \ mt5 a través de DirectX 2D aceleración funciona o qué... ?


El terminal utiliza el GDI normal de Windows que necesita un acelerador 2D.

A la hora de elegir una tarjeta, adquiere cualquier 3D externa, incluso el nivel de precio más bajo - será suficiente.
Y no tendrás que comparar los puntos básicos de capacidad de las tarjetas de vídeo.

 
uncleVic:

La lógica (a juzgar por los códigos dados) es casi correcta. Excepto por el hecho de que lee y escribe después de comprobar el asa (y luego cierra el archivo también).

En mi opinión, una cura para el problema podría ser esta:

1. abrir el archivo (tanto en el indicador como en el Asesor Experto) en OnInit con la bandera FILE_SHARE_READ.

2. Llama a FileFlush(handle) en el indicador después de la escritura .

3. Cierra el archivo en OnDeinit.

Así.


Gracias por esto en el futuro cuando se utiliza en tiempo real

Utilizaré tus consejos en el futuro para trabajar con el archivo de Expert Advisor e indicador.

 
AlexSTAL:

No leí mucho, pero el texto resaltado me llamó la atención... ¿Cierras el archivo?

¿Está manejando el descriptor correctamente?

Sí, por supuesto - ve el archivo pero no quiere leerlo debido al error de apertura 5004
 
uncleVic:

La lógica (a juzgar por los códigos dados) es casi correcta. Excepto por el hecho de que lee y escribe después de comprobar el asa (y luego cierra el archivo también).

Creo que el problema es diferente aquí:

1. el indicador en cada tick abre el archivo, escribe los datos, cierra el archivo.

2. El Asesor Experto (creo que está en cada tick) abre el archivo, lee los datos, cierra el archivo.

Como ocurre en diferentes flujos, cuanto mayor sea el tamaño del archivo, más probable es que el indicador abra el archivo abierto. Y como no se utiliza la bandera abiertaFILE_SHARE_READ, hay consecuencias.

En mi opinión, el tratamiento del problema puede ser el siguiente:

1) Abra el archivo (tanto en el indicador como en el Asesor Experto) en OnInit con la bandera FILE_SHARE_READ.

2. Llama a FileFlush(handle) en el indicador después de la escritura .

3. Cierra el archivo en OnDeinit.

Más o menos.



Lo siento, el trabajo del indicador es diferente,

1. Antes de probar en el terminal ejecuto el indicador

2. guarda el tiempo de la barra y su valor de correlación en cada barra

3. Puse el archivo en la carpeta del probador, donde debería estar C:{Archivos de programa\MetaTrader 5\\Nde probador\Nde agente-127.0.0.1-3000\MQL5\Nde archivos.

4. Pongo en marcha un Asesor Experto, que funciona abriendo barras - y desde 2005 lee todos los datos registrados

Lee (38 Mb), pero desde 2002 no lee (67 Mb)

 

He intentado grabar lo mismo en la misma herramienta pero en mt4

he transferido el archivo bin a la carpeta mt5 tester - ninguno de los archivos

no se abre - error 5004, en MT5 todavía se abre algo.


He implementado el registro de datos en el indicador MT4 (todos los datos se escriben correctamente) de la siguiente manera:

      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++;

Pero la lectura en mt5 por un EA sigue siendo la misma:

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);
}
//=

¿Es posible que un EA en mt5 abra un archivo creado en mt4?