Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1116

 
Top2n:

En buena hora, ¿cómo añadir una nueva línea al archivo terminado.csv, con un desplazamiento a la 1ª línea - si es posible? O de otra manera, pero sin recalcular/reciclar los datos existentes. A menos que se permita actualizar los nombres de las columnas y filas

int GenerateCsv(string fileName)
  {
   int handle= FileOpen(fileName,FILE_CSV|FILE_WRITE," "),x=0,y=0; 

Elimine FILE_CSV, utilice FILE_ANSI en su lugar si utiliza elformato"\n\t", etc.

 
alexsis78:

Elimine FILE_CSV, utilice FILE_ANSI en su lugar siutiliza"\n\t", etc.

Necesito utilizarFileReadArray para añadir una nueva línea en una nueva barra
 
Top2n:
Hola, la tarea es sobrescribir un array bidimensional, en formato BIN, ¿la función reconocerá un array bidimensional como entrada?

FileWriteArray

¿O sólo escribir por separado por filas?
Por supuesto, se leerá como una matriz bidimensional. Lo siento, no te ofendas... ¿no sería más fácil escribir un array de prueba de 2x2 elementos, leerlo y ver?
 
Alexey Viktorov:
Por supuesto que se leerá en dos dimensiones. Lo siento, no te ofendas... ¿No sería más fácil escribir una matriz de prueba de 2x2 elementos, leerla y ver?

Los valores vacíos NULL se escriben en el archivo.arrayZ es bidimensional

//+------------------------------------------------------------------+
//| Запись n элементов массива в файл                                |
//+------------------------------------------------------------------+
void WriteData(const int n)
  {
//--- откроем файл
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- запишем данные массива в конец файла
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arrayZ,0,n);
      //--- закрываем файл
      FileClose(handle);
     }
   else
      Print("Failed to open the file, error ",GetLastError());
  }
Si escribo unidimensional, bin muestra jeroglíficos, bidimensional reconoce como NULL unidimensional ha escrito algo
 
Top2n:

Los valores vacíos NULL se escriben en el archivo.arrayZ es bidimensional

//+------------------------------------------------------------------+
//| Запись n элементов массива в файл                                |
//+------------------------------------------------------------------+
void WriteData(const int n)
  {
//--- откроем файл
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- запишем данные массива в конец файла
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arrayZ,0,n);
      //--- закрываем файл
      FileClose(handle);
     }
   else
      Print("Failed to open the file, error ",GetLastError());
  }

Hoy estoy demasiado vago y no tengo tiempo... En la documentación, donde ha copiado esta función, incluso escriben array de estructuras. ¿Funciona todo el ejemplo dado en la documentación, si no lo cambias? Compruébalo tú mismo, si no funciona, tienes que escribir en el CD.

 
No utilice los afiladores FileWriteArray y FileReadArray para fines que no están previstos.
Son funciones de serialización. Si desea abrir el archivo en formato legible por texto, escriba la cadena en el archivo.
string s = StringFormat("primera línea: %s\n", primera);
s += StringFormat("segunda línea: %s\n", segunda);
s += StringFormat("tercera línea: %s\n", tercera);
ArchivoEscritura(s);
y así sucesivamente.
Para leer FileRead y analizar cada línea (tienes que jugar, pero tendrás que hacerlo si quieres que sea legible).
Como los niños, por cierto. Esperan de un Funky Christmas un milagro, como que lo haga todo bien, lo llene todo y lo formatee )))).
En general, Feliz Navidad a todos, buena suerte ))))
 
alexsis78:
No utilice los afiladores FileWriteArray y FileReadArray para fines que no están previstos.
Son funciones de serialización. Si desea abrir el archivo en formato legible por texto, escriba la cadena en el archivo.
string s = StringFormat("primera línea: %s\n", primera);
s += StringFormat("segunda línea: %s\n", segunda);
s += StringFormat("tercera línea: %s\n", tercera);
ArchivoEscritura(s);
y así sucesivamente.
Para leer FileRead y analizar cada línea (tienes que jugar, pero tendrás que hacerlo si quieres que sea legible).
Como los niños, por cierto. Esperan de un Funky Christmas un milagro, como que lo haga todo bien, lo llene todo y lo formatee )))).
En general, feliz Navidad y feliz Navidad a todos )))).
La serialización irá bien, el array es enorme. Y el formato legible es por primera vez, para comprobar la fidelidad del relleno.
 

¿Puedes decirme si es posible evitar la importación de un array bidimensional desde el csv. extrayendo un array tridimensional (o bidimensional) desde el indicador al EA?

C ¿ConsideraFileReadDouble una matriz bidimensional, si es así cómo?

En general, ¿qué operación debe utilizarse para convertir una matriz csv en una matriz?

En general, no entiendo cómo, por ejemplo, tomar un ejemplo

ArrayResize(time_buff,size);
      //--- прочитаем данные из файла
      for(int i=0;i<size;i++)
        {
         time_buff[i]=(datetime)FileReadDouble(file_handle);
         ma_buff[i]=FileReadDouble(file_handle);
        }

cómo esto, escribe los mismos datos en el arraytime_buff[i]yma_buff[i]

ejemplo de https://www.mql5.com/ru/docs/files/filereaddouble

Y si tengo un array bidimensional, cómo puedo organizar la enumeración.

Si utilizoFileReadString, necesito especificar la longitud de la cadena, necesito saber el número de dígitos en la cadena, no las celdas?

Aparentemente, debería usarFileReadNumber pero es demasiado raro

Документация по MQL5: Файловые операции / FileReadDouble
Документация по MQL5: Файловые операции / FileReadDouble
  • www.mql5.com
Файловые операции / FileReadDouble - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Top2n:

¿Puedes decirme si es posible evitar la importación de un array bidimensional desde el csv. extrayendo un array tridimensional (o bidimensional) desde el indicador al EA?

C ¿ConsideraFileReadDouble una matriz bidimensional, si es así cómo?

En general, ¿qué operación debe utilizarse para convertir una matriz csv en una matriz?

En general, no entiendo cómo, por ejemplo, tomar un ejemplo

ArrayResize(time_buff,size);
      //--- прочитаем данные из файла
      for(int i=0;i<size;i++)
        {
         time_buff[i]=(datetime)FileReadDouble(file_handle);
         ma_buff[i]=FileReadDouble(file_handle);
        }

cómo esto, escribe los mismos datos en el arraytime_buff[i]yma_buff[i]

ejemplo de https://www.mql5.com/ru/docs/files/filereaddouble

Y si tengo un array bidimensional, cómo puedo organizar la enumeración.

Si utilizoFileReadString, necesito especificar la longitud de la cadena, necesito saber el número de dígitos en la cadena, no las celdas?

Aparentemente, debería usarFileReadNumber pero es demasiado raro

Cuando hablamos de escribir un array FileWriteArray(), ¿cómo intentaste leer lo escrito?
 
Alexey Viktorov:
Y por favor, dime, cuando hablamos de escribir un array FileWriteArray(), ¿cómo intentaste leer lo que estaba escrito?

//--- путь к файлу
   string path=InpDirectoryName+"//"+InpFileName;
//--- откроем файл
   ResetLastError();
   int file_handle=FileOpen(path,FILE_READ|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- прочитаем все данные из файла в массив
      FileReadArray(file_handle,arr);
      //--- получим размер массива
      int size=ArraySize(arr);
      //--- распечатаем данные из массива
         Print(" = ",arr[0][0]," = ",arr[1][1]," = ",arr[2][2]);
      Print("Total data = ",size);
      //--- закрываем файл
      FileClose(file_handle);
     }
   else
      Print("File open failed, error ",GetLastError());
2017.01.09 17:20:40.609 TorFid_v02 (EURUSD,H1)  = 0.0  = 0.0  = 0.0
2017.01.09 17:20:40.609 TorFid_v02 (EURUSD,H1)  Total data = 1020100

Entiendo lo que falta, la conversión inversa a un array 2D, pero no entiendo cómo

A menos que, por supuesto, lo haya guardado correctamente.

for(int z=1; z<=ARRAY_SIZE_Y; z++) // Перебор по барам, колонка Y
        {
         for(int q=1; q<ARRAY_SIZE_X-1; q++) // Перебор по периоду, колонка X
           {
            arr[q][z]=NormalizeDouble(sm.d[q+1].m[nBar-z],5);                // M(I) SMA
           }
        }
      WriteData(1000);
//+------------------------------------------------------------------+
//| Запись n элементов массива в файл                                |
//+------------------------------------------------------------------+
void WriteData(const int n)
  {
//--- откроем файл
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- запишем данные массива в конец файла
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arr,0,n);
      //--- закрываем файл
      FileClose(handle);
     }
   else
      Print("Failed to open the file, error ",GetLastError());
  }