Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1116

 
Top2n:

Gute Zeit, wie kann man eine neue Zeile in die fertige Datei.csv einfügen, mit einer Verschiebung zur 1. Zeile - wenn möglich? Oder auf eine andere Weise, aber ohne Neuberechnung/Wiederverwendung der vorhandenen Daten. Es sei denn, es ist erlaubt, Spalten- und Zeilennamen zu aktualisieren

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

Entfernen Sie FILE_CSV, verwenden Sie stattdessen FILE_ANSI, wenn Sie dasFormat"\n\t" verwenden usw.

 
alexsis78:

Entfernen Sie FILE_CSV, verwenden Sie stattdessen FILE_ANSI, wenn Sie "\n\t" usw.verwenden.

Ich mussFileReadArray verwenden, um eine neue Zeile bei einem neuen Takt hinzuzufügen
 
Top2n:
Hallo, die Aufgabe ist es, ein zweidimensionales Array im BIN-Format zu überschreiben, erkennt die Funktion ein zweidimensionales Array als Eingabe?

FileWriteArray

Oder nur nach Zeilen getrennt schreiben?
Natürlich wird es als zweidimensionales Array gelesen. Entschuldigung, nicht böse gemeint... Wäre es nicht einfacher, ein Testfeld mit 2x2 Elementen zu schreiben, es zu lesen und zu sehen?
 
Alexey Viktorov:
Natürlich wird es sich zweidimensional lesen. Entschuldigung, nicht böse gemeint... Wäre es nicht einfacher, einfach ein 2x2-Element-Testfeld zu schreiben, es zu lesen und zu sehen?

NULL leere Werte werden in die Datei geschrieben.arrayZ ist zweidimensional

//+------------------------------------------------------------------+
//| Запись 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());
  }
Wenn ich eindimensional schreibe, zeigt bin Hieroglyphen, zweidimensional erkennt als NULL eindimensional hat etwas geschrieben
 
Top2n:

NULL leere Werte werden in die Datei geschrieben.arrayZ ist zweidimensional

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

Ich bin heute zu faul und habe keine Zeit... In der Dokumentation, in die Sie diese Funktion kopiert haben, wird sogar ein Array von Strukturen angegeben. Funktioniert das gesamte in der Dokumentation angegebene Beispiel, wenn Sie es nicht ändern? Überprüfen Sie es selbst, wenn es nicht funktioniert, müssen Sie auf die CD schreiben.

 
Verwenden Sie die Scharfmacher FileWriteArray und FileReadArray nicht für Zwecke, für die sie nicht vorgesehen sind.
Dies sind Serialisierungsfunktionen. Wenn Sie die Datei in einem textlesbaren Format öffnen möchten, schreiben Sie die Zeichenfolge in die Datei.
string s = StringFormat("erste Zeile: %s\n", first);
s += StringFormat("zweite Zeile: %s\n", zweite);
s += StringFormat("Dritte Zeile: %s\n", dritte);
FileWrite(s);
und so weiter und so fort.
Um FileRead zu lesen und jede Zeile zu parsen (man muss ein bisschen herumspielen, aber das muss man, wenn man die Lesbarkeit will).
Wie Kinder, meine Güte. Sie erwarten von einem Funky-Weihnachtswunder, dass es alles schön macht, alles auffüllt und formatiert )))).
Generell: Frohe Weihnachten für alle, viel Glück ))))
 
alexsis78:
Verwenden Sie die Scharfmacher FileWriteArray und FileReadArray nicht für Zwecke, für die sie nicht vorgesehen sind.
Dies sind Serialisierungsfunktionen. Wenn Sie die Datei in einem textlesbaren Format öffnen möchten, schreiben Sie die Zeichenfolge in die Datei.
string s = StringFormat("erste Zeile: %s\n", first);
s += StringFormat("zweite Zeile: %s\n", zweite);
s += StringFormat("Dritte Zeile: %s\n", dritte);
FileWrite(s);
und so weiter und so fort.
Um FileRead zu lesen und jede Zeile zu parsen (man muss ein bisschen herumspielen, aber das muss man, wenn man die Lesbarkeit will).
Wie Kinder, meine Güte. Sie erwarten von einem Funky-Weihnachtswunder, dass es alles schön macht, alles auffüllt und formatiert )))).
Im Allgemeinen wünsche ich allen )))) frohe Weihnachten und schöne Feiertage.
Die Serialisierung wird gut funktionieren, das Array ist riesig. Und lesbares Format ist zum ersten Mal, um die Treue der Füllung zu überprüfen.
 

Können Sie mir sagen, ob es möglich ist, den Import eines zweidimensionalen Arrays aus csv. zu umgehen, indem Sie ein dreidimensionales (oder zweidimensionales) Array aus dem Indikator in den EA extrahieren?

C BerücksichtigtFileReadDouble ein zweidimensionales Array, wenn ja, wie?

Welche Operation sollte im Allgemeinen verwendet werden, um eine csv-Matrix in ein Array zu konvertieren?

Generell verstehe ich nicht, wie zum Beispiel, nehmen wir ein Beispiel

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

so schreiben Sie die gleichen Daten in die Arraystime_buff[i]undma_buff[i]

Beispiel von https://www.mql5.com/ru/docs/files/filereaddouble

Und wenn ich ein zweidimensionales Array habe, wie kann ich die Aufzählung anordnen.

Wenn ichFileReadString verwende, muss ich die Länge der Zeichenkette angeben, ich muss die Anzahl der Ziffern in der Zeichenkette kennen, nicht die Zellen?

Anscheinend sollte ichFileReadNumber verwenden, aber es ist zu seltsam

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

Können Sie mir sagen, ob es möglich ist, den Import eines zweidimensionalen Arrays aus csv. zu umgehen, indem Sie ein dreidimensionales (oder zweidimensionales) Array aus dem Indikator in den EA extrahieren?

C BerücksichtigtFileReadDouble ein zweidimensionales Array, wenn ja, wie?

Welche Operation sollte im Allgemeinen verwendet werden, um eine csv-Matrix in ein Array zu konvertieren?

Generell verstehe ich nicht, wie zum Beispiel, nehmen wir ein Beispiel

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

so schreiben Sie die gleichen Daten in die Arraystime_buff[i]undma_buff[i]

Beispiel von https://www.mql5.com/ru/docs/files/filereaddouble

Und wenn ich ein zweidimensionales Array habe, wie kann ich die Aufzählung anordnen.

Wenn ichFileReadString verwende, muss ich die Länge der Zeichenkette angeben, ich muss die Anzahl der Ziffern in der Zeichenkette kennen, nicht die Zellen?

Anscheinend sollte ichFileReadNumber verwenden, aber es ist zu seltsam

Als wir über das Schreiben eines Arrays FileWriteArray() gesprochen haben, wie haben Sie versucht zu lesen, was geschrieben wurde?
 
Alexey Viktorov:
Und sagen Sie mir bitte, als wir über das Schreiben eines Arrays FileWriteArray() sprachen, wie haben Sie versucht, das Geschriebene zu lesen?

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

Ich verstehe, was fehlt, nämlich die umgekehrte Konvertierung in ein 2D-Array, aber ich verstehe nicht, wie

Es sei denn, ich habe sie richtig gespeichert.

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