Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 353

 
tvv:

No lo entiendo. Esta opción indica la ubicación del archivo - \MetaQuotes\Terminal\Common. Sin esta opción no podré coger el archivo que se generó en el probador. Sin esta opción el archivo será buscado en MQL4\Files - y no podré poner el archivo del probador allí.

Fue la ausencia de esta bandera lo que señalé.

 
Alexey Viktorov:

Fue la ausencia de esta bandera lo que señalé.

Gracias por su ayuda - es sólo un error tipográfico - conozco esta bandera. El problema no está resuelto - el archivo no quiere abrirse en modo de lectura compartida - incluso sin usar el probador. Mientras este archivo esté abierto por el indicador - el script no puede abrirlo. El Bloc de notas, en cambio, lo abre sin problemas.

 
tvv:

Gracias por la ayuda - es sólo un error tipográfico - conozco esa bandera. El problema no está resuelto - el archivo no quiere abrirse en modo de lectura compartida - incluso sin usar el probador. Mientras este archivo sea abierto por el indicador - el script no puede abrirlo. El Bloc de notas, en cambio, lo abre sin problemas.

Intente forzar los datos al disco periódicamente mediante FileFlush().


hmmm: otra cosa que no noté de inmediato

tvv:

ExtHandle=FileOpen(c_symbol+(string)20+".csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_COMMON);
El archivo en el script se abre como sigue: ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ);
Por favor, señale mi error.

Es extraño que se lea. Debería haber una bandera FILE_CSV.
FileFlush - Файловые операции - Справочник MQL4
FileFlush - Файловые операции - Справочник MQL4
  • docs.mql4.com
При выполнении операции записи в файл физически данные могут оказаться в нем только через некоторое время. Для того чтобы данные сразу же сохранились в файле, нужно использовать функцию FileFlush(). Если не использовать функцию, то часть данных, еще не попавших на диск, принудительно записывается туда только при закрытии файла функцией...
 
Alexey Viktorov:

Intente forzar periódicamente los datos al disco con FileFlush().


Sugerencia: Otra cosa que noté hace un tiempo

Es extraño que se lea. Debería haber una bandera FILE_CSV.

.CSV es una extensión de archivo - puedes usar cualquier extensión - la elegí para que puedas buscarla en el Bloc de notas. Aquí hay un artículo interesante - https://www.mql5.com/ru/articles/2720. Mi código cumple con las reglas descritas allí - pero no puedo leer el archivo programáticamente. en modo FILE_SHARE_READ. Para el archivo EURUSD20.HST con extensión .HST - la bandera debe ser FILE.BIN, para que en MT 4 archivo se puede abrir sin conexión.

Основы программирования на MQL5: Файлы
Основы программирования на MQL5: Файлы
  • 2016.09.28
  • Dmitry Fedoseev
  • www.mql5.com
Функции для работы с файлами есть почти во всех языках программирования, и MQL5 в этом смысле — не исключение. Хотя при программировании советников и индикаторов на MQL5 работать с использованием файлов приходится не всегда, (а скорее даже — очень редко), но тем не менее, каждый экспертописатель рано или поздно с этим сталкивается. Диапазон...
 
tvv:

.CSV es una extensión de archivo - puede ser cualquier cosa - lo elegí para poder buscarlo en el Bloc de notas. Aquí hay un artículo interesante - https://www.mql5.com/ru/articles/2720. Mi código cumple con las reglas descritas allí - pero no puedo leer el archivo programáticamente. en modo FILE_SHARE_READ. Para el archivo EURUSD20.HST con extensión .HST - la bandera debe ser FILE.BIN, para que en MT 4 archivo se puede abrir sin conexión.

Traté de trabajar no en el probador, pero sólo en un gráfico normal (EURUSD M1) - ejecuto el indicador que genera el TF M20.

Para abrir el archivo:

ExtHandle= FileOpen("EURUSD20.csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_SHARE_READ).

El archivo aparecerá entonces en la carpeta MQL4\Files. A continuación, ejecutamos el script en un gráfico normal (EURUSD M5) que copia el contenido de EURUSD20.csv a EURUSD20.HST. El archivo EURUSD20.HST se genera en la carpeta del historial en el mismo directorio que el MQL4.

El código de la escritura:

ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ) leer archivo;

ExtHandleW=FileOpenHistory("EURUSD20.hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ);

Todo funciona sólo cuando quito el indicador del gráfico M1. Es decir, no me funciona el modo de lectura de los archivos compartidos.

 

Hola! ¿Qué es el fallo de metatrader en el gráfico del eurodólar? Apareció una vela diaria para el domingo 9.10.2011, en el gráfico horario sólo hay una hora 23:00 para esa fecha. Esto se debe probablemente al cambio de los relojes al horario de invierno. ¿Cómo solucionarlo? Antes no existía esa vela.

 
tvv: Todo funciona sólo cuando quito el indicador del gráfico M1. Es decir, no tengo el modo de lectura de archivos divididos funcionando.

El problema se resuelve de la siguiente manera: el programa que escribe el archivo debe cerrar FileClose después de cada operación de escritura, liberando así el archivo para que otro programa pueda leerlo. Esto se debe a que los datos se escriben primero en el búfer y no están físicamente presentes en el archivo durante algún tiempo. Al cerrar el archivo se libera el buffer en el archivo. Antes de la siguiente escritura

   // Открытие или создание файла и перемещение указателя в конец
   Файл = FileOpen(ИмяФайла, FILE_CSV | FILE_READ | FILE_WRITE, " "); // еще COMMON  SHARE...
   FileSeek(Файл, 0, SEEK_END);

el archivo se reabre y el puntero se mueve al final del

 

Hola! ¿Me pueden decir si es correcto decir que el número de puntos obtenidos será el mismo en ambas expresiones? Es muy importante para mí.

"Цена закрытия последнего закрытого ордера"-Ask>=30*Point

Ask-"Цена закрытия последнего закрытого ордера">=30*Point //Если цена Выше

Más concretamente, ¿los puntos no pueden ser negativos? O es todavía.....))

 

Buenas noches.

He empezado a estudiar mql5 y tengo algunas dudas, por favor, ayuda.

La tarea consiste en obtener los valores de las últimas n velas en un array y ordenar el array eligiendo sólo las velas no vencidas.

He escrito la función:

double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
   {
      double high=0;
      int k=0;
      int s=0;
      ArraySetAsSeries(High,true);
         if(CopyHigh(Symbol(),Period(),0,NumCand,High)==-1)
               {
               Print("Не удалось скопировать значения цен High! Код ошибки = ",GetLastError());
               }  
               
      
       for(int x=NumCand-1; x==0; x--)
            {
            if(IsStopped())
            break;
                  for (int j = NumCand-x-1; j == 0; j--) 
                  {
                  if (High[j+1] > High[j])
                     {
                     // Если хай не побит записываем в массив
                     temp[k] = High[j+1];
                     k++;
                     }   
                   }
            }
      s=sizeof(temp);               
      high=temp[index];
      return(high);
   } 

Genera unamatriz de errorfuera de rango.

 high=temp[index];

Por lo que he entendido, este error se produce al dirigirse a una celda inexistente del array.

Pero no pude encontrar el error de la mudanza, por favor, aconsejar donde me lío, o tal vez hay una clasificación más elegante.

 
WhiteBerkut:

Buenas noches.

He empezado a estudiar mql5 y tengo algunas dudas, por favor, ayuda.

La tarea consiste en obtener los valores de las últimas n velas en un array y ordenar el array eligiendo sólo las velas no vencidas.

He escrito la función:

Genera unamatriz de errorfuera de rango.

Por lo que he entendido, este error se produce al dirigirse a una celda inexistente del array.

Pero no pude encontrar el error de la mudanza, por favor, aconsejar donde me lío, o tal vez hay una clasificación más elegante.

Compara el valor del índice con la dimensión del array. Tenga en cuenta que los elementos de la matriz se numeran a partir de cero, y el número del último es 1 menos que la dimensión del índice. ¿Y NumCand es igual a qué?