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.
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(constint 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
Los valores vacíos NULL se escriben en el archivo.arrayZ es bidimensional
//+------------------------------------------------------------------+ //| Запись n элементов массива в файл | //+------------------------------------------------------------------+ void WriteData(constint 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
¿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.0917:20:40.609 TorFid_v02 (EURUSD,H1) = 0.0 = 0.0 = 0.0 2017.01.0917: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(constint 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()); }
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 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.
Elimine FILE_CSV, utilice FILE_ANSI en su lugar siutiliza"\n\t", etc.
Hola, la tarea es sobrescribir un array bidimensional, en formato BIN, ¿la función reconocerá un array bidimensional como entrada?
FileWriteArray
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());
}
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.
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 ))))
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 )))).
¿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
//--- прочитаем данные из файла
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
¿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
//--- прочитаем данные из файла
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
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) 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 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());
}