Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1116

 
Top2n:

Buon tempo, come aggiungere una nuova linea al file.csv finito, con uno spostamento alla 1a linea - se possibile? O in qualche altro modo, ma senza ricalcolare/riciclare i dati esistenti. A meno che non sia permesso di aggiornare i nomi delle colonne e delle righe

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

Rimuovi FILE_CSV, usa invece FILE_ANSI se usi ilformato"\n\t" ecc.

 
alexsis78:

Rimuovete FILE_CSV, usate invece FILE_ANSI seusate"\n\t" ecc.

Ho bisogno di usareFileReadArray per aggiungere una nuova linea a una nuova barra
 
Top2n:
Ciao, il compito è quello di sovrascrivere un array bidimensionale, in formato BIN, la funzione riconoscerà un array bidimensionale come input?

FileWriteArray

O solo scrivere separatamente per righe?
Naturalmente si leggerà come un array bidimensionale. Scusa, senza offesa... Non sarebbe più facile scrivere un array di prova di 2x2 elementi, leggerlo e vedere?
 
Alexey Viktorov:
Naturalmente si leggerà bidimensionale. Scusa, senza offesa... Non sarebbe più facile scrivere un array di prova di 2x2 elementi, leggerlo e vedere?

I valori vuoti NULL sono scritti nel file.arrayZ è bidimensionale

//+------------------------------------------------------------------+
//| Запись 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());
  }
Se scrivo monodimensionale, bin mostra geroglifici, bidimensionale riconosce come NULLA uno dimensionale ha scritto qualcosa
 
Top2n:

I valori vuoti NULL sono scritti nel file.arrayZ è bidimensionale

//+------------------------------------------------------------------+
//| Запись 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());
  }

Oggi sono troppo pigro e non ho tempo... Nella documentazione, dove avete copiato questa funzione, scrivono anche array di strutture. L'intero esempio dato nella documentazione funziona, se non lo si cambia? Controllate voi stessi, se non funziona, dovete scrivere sul CD.

 
Non usate gli affilatori FileWriteArray e FileReadArray per scopi per i quali non sono previsti.
Queste sono funzioni di serializzazione. Se volete aprire il file in formato leggibile dal testo - scrivete la stringa nel file.
stringa s = StringFormat("prima riga: %s\n", first);
s += StringFormat("seconda linea: %s\n", secondo);
s += StringFormat("terza linea: %s\n", terza);
FileWrite(s);
e così via.
Per leggere FileRead e analizzare ogni riga (dovete giocare, ma dovrete farlo se volete la leggibilità).
Come i bambini, perbacco. Si aspettano da un miracolo Funky Christmas, come se facesse tutto bene, riempisse tutto e lo formattasse )))).
In generale, Buon Natale a tutti, buona fortuna ))))
 
alexsis78:
Non usate gli affilatori FileWriteArray e FileReadArray per scopi per i quali non sono previsti.
Queste sono funzioni di serializzazione. Se volete aprire il file in formato leggibile dal testo - scrivete la stringa nel file.
stringa s = StringFormat("prima riga: %s\n", first);
s += StringFormat("seconda linea: %s\n", secondo);
s += StringFormat("terza linea: %s\n", terza);
FileWrite(s);
e così via.
Per leggere FileRead e analizzare ogni riga (dovete giocare, ma dovrete farlo se volete la leggibilità).
Come i bambini, perbacco. Si aspettano da un miracolo Funky Christmas, come se facesse tutto bene, riempisse tutto e lo formattasse )))).
In generale, Buon Natale e Buon Natale a tutti )))).
La serializzazione andrà bene, l'array è enorme. E il formato leggibile è per la prima volta, per controllare la fedeltà di riempimento.
 

Puoi dirmi se è possibile bypassare l'importazione di un array bidimensionale da csv. estraendo un array tridimensionale (o due) dall'indicatore all'EA?

CFileReadDouble considera un array bidimensionale, se sì, come?

In generale, quale operazione dovrebbe essere usata per convertire una matrice csv in un array?

In generale, non capisco come, per esempio, prendere un esempio

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

come questo, scrivere gli stessi dati nell'arraytime_buff[i] ema_buff[i]

esempio da https://www.mql5.com/ru/docs/files/filereaddouble

E se ho un array bidimensionale, come posso organizzare l'enumerazione.

Se usoFileReadString, ho bisogno di specificare la lunghezza della stringa, ho bisogno di sapere il numero di cifre nella stringa, non le celle?

Apparentemente, dovrei usareFileReadNumber ma è troppo strano

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

Puoi dirmi se è possibile bypassare l'importazione di un array bidimensionale da csv. estraendo un array tridimensionale (o due) dall'indicatore all'EA?

CFileReadDouble considera un array bidimensionale, se sì, come?

In generale, quale operazione dovrebbe essere usata per convertire una matrice csv in un array?

In generale, non capisco come, per esempio, prendere un esempio

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

come questo, scrivere gli stessi dati nell'arraytime_buff[i] ema_buff[i]

esempio da https://www.mql5.com/ru/docs/files/filereaddouble

E se ho un array bidimensionale, come posso organizzare l'enumerazione.

Se usoFileReadString, ho bisogno di specificare la lunghezza della stringa, ho bisogno di sapere il numero di cifre nella stringa, non celle, ma cifre?

Apparentemente, dovrei usareFileReadNumber ma è troppo strano

Quando abbiamo parlato della scrittura di un array FileWriteArray(), come avete provato a leggere ciò che è stato scritto?
 
Alexey Viktorov:
E per favore ditemi, quando abbiamo parlato di scrivere un array FileWriteArray(), come avete provato a leggere ciò che è stato scritto?

//--- путь к файлу
   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

Ho capito cosa manca, la conversione inversa in un array 2D, ma non capisco come

A meno che, naturalmente, non l'abbia salvato correttamente.

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());
  }