Eine kleine Anmerkung zur Verständlichkeit des Hinweises.
Die Position des Verweises war nicht sofort klar (hier liegt eine offensichtliche Untertreibung vor):
Sie sollten die Hilfe lesen, bevor Sie wie üblich Kritik üben. Wenn das Beispiel nicht hilft, dann ist jeder Verweis machtlos
voidOnStart() { string filename=_Symbol+"_ticks.bin"; MqlTick ticks[]; //--- int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,ticks_to_save); if(copied!=-1) { PrintFormat(" CopyTicks(%s) copied %d ticks",_Symbol,copied); //--- wenn der Tickverlauf synchronisiert ist, ist der Fehlercode Null if(!GetLastError()==0) PrintFormat("%s: Ticks are not synchronized, error=%d",_Symbol,copied,_LastError); //--- Schreiben der Ticks in die Datei if(!FileSave(filename,ticks,FILE_COMMON)) PrintFormat("FileSave() failed, error=%d",GetLastError()); }
Wenn Sie wollen, kann ich gar nichts schreiben, außer Bewunderung. Wenn ich anfange zu bewundern, werden Sie sagen, ich sei sarkastisch und so weiter. Ich kann nicht erfreut sein.
Wenn Sie den Ausdruck verstehen:
Ich verstehe
intcommon_flag=0// Dateiflag, werden Dateien standardmäßig in den Ordner <Datenkatalog>\MQL5\Files\ geschrieben.
Lassen Sie uns eine nützliche Funktion schreiben, um eine Liste von Dateien und Ordnern zu erhalten
Leider liefert die Funktion keine vollständige Liste (einschließlich aller Unterordner und Dateien darin). Deshalb füge ich sie hinzu
string GetDirectory( conststring FileName )
{
int Pos = StringFind(FileName, "\\");
int LastPos = Pos;
while (Pos >= 0)
{
LastPos = Pos;
Pos = StringFind(FileName, "\\", Pos + 1);
}
return((LastPos >= 0) ? StringSubstr(FileName, 0, LastPos + 1) : "");
}
// Gibt die Liste aller Dateien nach Filter zurückint GetFileNames( string &FileNames[], int Pos = 0, string Filter = "*", constint Common_Flag = 0 )
{
string FileName;
constlong handle = FileFindFirst(Filter, FileName, Common_Flag);
if (handle != INVALID_HANDLE)
{
conststring Directory = GetDirectory(Filter);
Filter = StringSubstr(Filter, StringLen(Directory));
do
{
conststring TmpFileName = Directory + FileName;
ArrayResize(FileNames, Pos + 1);
FileNames[Pos] = TmpFileName;
Pos++;
if (!FileIsExist(TmpFileName, Common_Flag))
Pos = GetFileNames(FileNames, Pos, TmpFileName + Filter, Common_Flag);
}
while (FileFindNext(handle, FileName));
FileFindClose(handle);
}
return(Pos);
}
Die Bedeutung des Filters ist die gleiche wie in diesem Artikel. Beispiel einer Anwendung
// Protokolliert die gesamte Sandbox-StrukturvoidOnStart()
{
string FileNames[];
constint Amount = GetFileNames(FileNames);
for (int i = 0; i < Amount; i++)
Print(FileNames[i]);
}
In dem Artikel ist ein Tippfehler enthalten. In der Beschreibung der Funktion "Einlesen einer Datei mit Trennzeichen in ein Array" wird die Beschreibung der Struktur:
А как можно уменшить размер файла? Примерно имею какой то BIN файл в которой поддерживаю какие то данни, потом делаю дефрагмент файла и наконец хочу умешнит его длина, потому что сзади уже есть лишное пространство. Wie bitte? Нужна какая та функция типа FileResize(int newSize).
Ein riesengroßes menschliches DANKESCHÖN für den Artikel, insbesondere für #property tester_file, ohne den ich es nicht geschafft hätte und lange mit dem Kopf gegen die Wand gerannt wäre.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Nur in der mql5-Hilfe gibt es noch kein Wort darüber....
Wird es sie für 4 geben?
FileSave ist bereits seit dem 14. Dezember in der Hilfe enthalten .
Sie können manuell auf der Website aktualisieren
Eine kleine Anmerkung zur Verständlichkeit des Hinweises.
Die Position des Verweises war nicht sofort klar (hier liegt eine offensichtliche Untertreibung vor):
Sie sollten die Hilfe lesen, bevor Sie wie üblich Kritik üben. Wenn das Beispiel nicht hilft, dann ist jeder Verweis machtlos
{
string filename=_Symbol+"_ticks.bin";
MqlTick ticks[];
//---
int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,ticks_to_save);
if(copied!=-1)
{
PrintFormat(" CopyTicks(%s) copied %d ticks",_Symbol,copied);
//--- wenn der Tickverlauf synchronisiert ist, ist der Fehlercode Null
if(!GetLastError()==0)
PrintFormat("%s: Ticks are not synchronized, error=%d",_Symbol,copied,_LastError);
//--- Schreiben der Ticks in die Datei
if(!FileSave(filename,ticks,FILE_COMMON))
PrintFormat("FileSave() failed, error=%d",GetLastError());
}
Wenn Sie wollen, kann ich gar nichts schreiben, außer Bewunderung. Wenn ich anfange zu bewundern, werden Sie sagen, ich sei sarkastisch und so weiter. Ich kann nicht erfreut sein.
Wenn Sie den Ausdruck verstehen:
Ich verstehe
intcommon_flag=0// Dateiflag, werden Dateien standardmäßig in den Ordner <Datenkatalog>\MQL5\Files\ geschrieben.
Nur in der mql5-Hilfe gibt es noch kein Wort darüber....
Wird es sie für 4 geben?
Leider liefert die Funktion keine vollständige Liste (einschließlich aller Unterordner und Dateien darin). Deshalb füge ich sie hinzu
Die Bedeutung des Filters ist die gleiche wie in diesem Artikel. Beispiel einer Anwendung
An einem Ort und zum Thema
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Merkmale der Sprache mql5, Feinheiten und Techniken der Arbeit
fxsaber, 2017.08.15 17:30
dieser Artikel ist großartig, vielen Dank für die Informationen.
In dem Artikel ist ein Tippfehler enthalten. In der Beschreibung der Funktion "Einlesen einer Datei mit Trennzeichen in ein Array" wird die Beschreibung der Struktur:
und in sollte sein (und im Skript so):
А как можно уменшить размер файла? Примерно имею какой то BIN файл в которой поддерживаю какие то данни, потом делаю дефрагмент файла и наконец хочу умешнит его длина, потому что сзади уже есть лишное пространство. Wie bitte? Нужна какая та функция типа FileResize(int newSize).