Bom tempo, como adicionar uma nova linha ao arquivo.csv acabado, com uma mudança para a 1ª linha - se possível? Ou de alguma outra forma, mas sem recalcular/reciclagem dos dados existentes. A menos que seja permitido atualizar nomes de colunas e linhas
int GenerateCsv(string fileName) { int handle= FileOpen(fileName,FILE_CSV|FILE_WRITE," "),x=0,y=0;
Remova FILE_CSV, use FILE_ANSI em seu lugar se você usaro formato"\t", etc.
Top2n: Olá, a tarefa é sobrescrever uma matriz bidimensional, em formato BIN, a função irá reconhecer uma matriz bidimensional como entrada?
FileWriteArray
Ou apenas escreva separadamente por linhas?
É claro que será lido como uma matriz bidimensional. Desculpe, sem ofensa... não seria mais fácil escrever uma matriz de teste de 2x2 elementos, lê-la e ver?
Alexey Viktorov: É claro que se lê em duas dimensões. Desculpe, sem ofensa... Não seria mais fácil apenas escrever uma matriz de teste de 2x2 elementos, lê-la e ver?
Os valores vazios NULL são escritos no arquivo.arrayZ é 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()); }
Se eu escrever uma dimensão, bin mostra hieróglifos, duas dimensões reconhecem como NULL uma dimensão tem escrito algo
Os valores vazios NULL são escritos no arquivo.arrayZ é 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()); }
Hoje estou muito preguiçoso e não tenho tempo... Na documentação, onde você copiou esta função, eles até mesmo escrevem um conjunto de estruturas. Todo o exemplo dado na documentação funciona, se você não o mudar? Verifique você mesmo, se não funcionar, você tem que escrever para o CD.
Não utilize afiadores FileWriteArray e FileReadArray para fins para os quais não são destinados. Estas são funções de serialização. Se você quiser abrir o arquivo em formato legível em texto - escreva seqüência de caracteres em arquivo. string s = StringFormat("primeira linha: %s\n", primeiro); s += StringFormat("segunda linha: %s\n", segunda); s += StringFormat("terceira linha: %s\n", terceira); FileWrite(s); e assim por diante e assim por diante. Para ler FileReadir e analisar cada linha (você tem que brincar, mas terá que fazê-lo se quiser legibilidade). Como as crianças, por amor de Deus. Eles esperam de um milagre do Funky Christmas, como se ele fizesse tudo muito bem, enchesse tudo e formatasse )))). Em geral, Feliz Natal para todos, boa sorte ))))
alexsis78: Não utilize afiadores FileWriteArray e FileReadArray para fins para os quais não são destinados. Estas são funções de serialização. Se você quiser abrir o arquivo em formato legível em texto - escreva seqüência de caracteres em arquivo. string s = StringFormat("primeira linha: %s\n", primeiro); s += StringFormat("segunda linha: %s\n", segunda); s += StringFormat("terceira linha: %s\n", terceira); FileWrite(s); e assim por diante e assim por diante. Para ler FileReadir e analisar cada linha (você tem que brincar, mas terá que fazê-lo se quiser legibilidade). Como as crianças, por amor de Deus. Eles esperam de um milagre do Funky Christmas, como se ele fizesse tudo muito bem, enchesse tudo e formatasse )))). Em geral, Feliz Natal e Feliz Natal para todos )))).
A serialização vai dar certo, o conjunto é enorme. E o formato legível é pela primeira vez, para verificar a fidelidade do enchimento.
Você pode me dizer se é possível contornar a importação de uma matriz bidimensional do csv. extraindo uma matriz tridimensional (ou duas) do indicador para o EA?
C OFileReadDouble considera uma matriz bidimensional, se sim, como?
Em geral, qual operação deve ser usada para converter uma matriz csv em uma matriz?
Em geral, eu não entendo como, por exemplo, tomar um exemplo
ArrayResize(time_buff,size); //--- прочитаем данные из файла for(int i=0;i<size;i++) { time_buff[i]=(datetime)FileReadDouble(file_handle); ma_buff[i]=FileReadDouble(file_handle); }
como isto, escrever os mesmos dados na matriztime_buff[i]ema_buff[i]
exemplo de https://www.mql5.com/ru/docs/files/filereaddouble
E se eu tenho uma matriz bidimensional, como posso organizar a enumeração?
Se eu usarFileReadString, preciso especificar o comprimento da cadeia, preciso saber o número de dígitos da cadeia, não células, mas dígitos?
Aparentemente, eu deveria usarFileReadNumber, mas é muito estranho
Você pode me dizer se é possível contornar a importação de uma matriz bidimensional do csv. extraindo uma matriz tridimensional (ou duas) do indicador para o EA?
C OFileReadDouble considera uma matriz bidimensional, se sim, como?
Em geral, qual operação deve ser usada para converter uma matriz csv em uma matriz?
Em geral, eu não entendo como, por exemplo, tomar um exemplo
ArrayResize(time_buff,size); //--- прочитаем данные из файла for(int i=0;i<size;i++) { time_buff[i]=(datetime)FileReadDouble(file_handle); ma_buff[i]=FileReadDouble(file_handle); }
como isto, escrever os mesmos dados na matriztime_buff[i]ema_buff[i]
exemplo de https://www.mql5.com/ru/docs/files/filereaddouble
E se eu tenho uma matriz bidimensional, como posso organizar a enumeração?
Se eu usarFileReadString, preciso especificar o comprimento da cadeia, preciso saber o número de dígitos da cadeia, não de células?
Aparentemente, eu deveria usarFileReadNumber, mas é muito estranho
Quando falamos em escrever um array FileWriteArray(), como você tentou ler o que foi escrito?
Alexey Viktorov: E por favor me diga, quando falamos em escrever um array FileWriteArray(), como você tentou ler o que foi 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
Entendo o que falta, a conversão inversa para uma matriz 2D, mas não entendo como
A menos, é claro, que eu o tenha guardado corretamente.
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()); }
Bom tempo, como adicionar uma nova linha ao arquivo.csv acabado, com uma mudança para a 1ª linha - se possível? Ou de alguma outra forma, mas sem recalcular/reciclagem dos dados existentes. A menos que seja permitido atualizar nomes de colunas e linhas
{
int handle= FileOpen(fileName,FILE_CSV|FILE_WRITE," "),x=0,y=0;
Remova FILE_CSV, use FILE_ANSI em seu lugar se você usaro formato"\t", etc.
Remova FILE_CSV, use FILE_ANSI em seu lugar se vocêusar"\t" etc.
Olá, a tarefa é sobrescrever uma matriz bidimensional, em formato BIN, a função irá reconhecer uma matriz bidimensional como entrada?
FileWriteArray
É claro que se lê em duas dimensões. Desculpe, sem ofensa... Não seria mais fácil apenas escrever uma matriz de teste de 2x2 elementos, lê-la e ver?
Os valores vazios NULL são escritos no arquivo.arrayZ é 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());
}
Os valores vazios NULL são escritos no arquivo.arrayZ é 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());
}
Hoje estou muito preguiçoso e não tenho tempo... Na documentação, onde você copiou esta função, eles até mesmo escrevem um conjunto de estruturas. Todo o exemplo dado na documentação funciona, se você não o mudar? Verifique você mesmo, se não funcionar, você tem que escrever para o CD.
Estas são funções de serialização. Se você quiser abrir o arquivo em formato legível em texto - escreva seqüência de caracteres em arquivo.
string s = StringFormat("primeira linha: %s\n", primeiro);
s += StringFormat("segunda linha: %s\n", segunda);
s += StringFormat("terceira linha: %s\n", terceira);
FileWrite(s);
e assim por diante e assim por diante.
Para ler FileReadir e analisar cada linha (você tem que brincar, mas terá que fazê-lo se quiser legibilidade).
Como as crianças, por amor de Deus. Eles esperam de um milagre do Funky Christmas, como se ele fizesse tudo muito bem, enchesse tudo e formatasse )))).
Em geral, Feliz Natal para todos, boa sorte ))))
Não utilize afiadores FileWriteArray e FileReadArray para fins para os quais não são destinados.
Estas são funções de serialização. Se você quiser abrir o arquivo em formato legível em texto - escreva seqüência de caracteres em arquivo.
string s = StringFormat("primeira linha: %s\n", primeiro);
s += StringFormat("segunda linha: %s\n", segunda);
s += StringFormat("terceira linha: %s\n", terceira);
FileWrite(s);
e assim por diante e assim por diante.
Para ler FileReadir e analisar cada linha (você tem que brincar, mas terá que fazê-lo se quiser legibilidade).
Como as crianças, por amor de Deus. Eles esperam de um milagre do Funky Christmas, como se ele fizesse tudo muito bem, enchesse tudo e formatasse )))).
Em geral, Feliz Natal e Feliz Natal para todos )))).
Você pode me dizer se é possível contornar a importação de uma matriz bidimensional do csv. extraindo uma matriz tridimensional (ou duas) do indicador para o EA?
C OFileReadDouble considera uma matriz bidimensional, se sim, como?
Em geral, qual operação deve ser usada para converter uma matriz csv em uma matriz?
Em geral, eu não entendo como, por exemplo, tomar um exemplo
//--- прочитаем данные из файла
for(int i=0;i<size;i++)
{
time_buff[i]=(datetime)FileReadDouble(file_handle);
ma_buff[i]=FileReadDouble(file_handle);
}
como isto, escrever os mesmos dados na matriztime_buff[i]ema_buff[i]
exemplo de https://www.mql5.com/ru/docs/files/filereaddouble
E se eu tenho uma matriz bidimensional, como posso organizar a enumeração?
Se eu usarFileReadString, preciso especificar o comprimento da cadeia, preciso saber o número de dígitos da cadeia, não células, mas dígitos?
Aparentemente, eu deveria usarFileReadNumber, mas é muito estranho
Você pode me dizer se é possível contornar a importação de uma matriz bidimensional do csv. extraindo uma matriz tridimensional (ou duas) do indicador para o EA?
C OFileReadDouble considera uma matriz bidimensional, se sim, como?
Em geral, qual operação deve ser usada para converter uma matriz csv em uma matriz?
Em geral, eu não entendo como, por exemplo, tomar um exemplo
//--- прочитаем данные из файла
for(int i=0;i<size;i++)
{
time_buff[i]=(datetime)FileReadDouble(file_handle);
ma_buff[i]=FileReadDouble(file_handle);
}
como isto, escrever os mesmos dados na matriztime_buff[i]ema_buff[i]
exemplo de https://www.mql5.com/ru/docs/files/filereaddouble
E se eu tenho uma matriz bidimensional, como posso organizar a enumeração?
Se eu usarFileReadString, preciso especificar o comprimento da cadeia, preciso saber o número de dígitos da cadeia, não de células?
Aparentemente, eu deveria usarFileReadNumber, mas é muito estranho
E por favor me diga, quando falamos em escrever um array FileWriteArray(), como você tentou ler o que foi 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
Entendo o que falta, a conversão inversa para uma matriz 2D, mas não entendo como
A menos, é claro, que eu o tenha guardado corretamente.
{
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());
}