Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 487

 
igrok333:

Wie kann ich Zeile 8 einer Datei lesen?

Frage bezieht sich auf Dateivorgänge

https://docs.mql4.com/ru/files


Alles in mql wird mit roher Gewalt gemacht, wie mir einmal jemand sagte?


Sie können es nicht anders machen?

Alle Datentypen haben eine bestimmte Größe des belegten Speichers in Bytes. Dementsprechend können Sie beim Schreiben von Code diesen verwenden und den Dateizeiger auf die Anzahl der Bytes verschieben, die von den Daten einer Zeichenkette belegt werden.

Enthält eine Zeile 4 Werte vom Typ double, werden 4*8 = 32 Bytes benötigt. Dementsprechend müssen wir, um die 9. Zeile der Datei zu lesen, den Dateizeiger auf 256 Bytes verschieben.

bool  FileSeek(
   int                  file_handle,     // handle файла
   long                 offset,          // в байтах 
   ENUM_FILE_POSITION   origin           // позиция для отсчета
   );
bool  FileSeek(file_handle, 265, SEEK_SET);

Wird vom Ende der Datei aus verschoben, muss der Wert negativ sein.

Aber ganz so glatt ist es nicht. Vor einiger Zeit habe ich mich mit diesem Problem befasst und herausgefunden, dass .txt- und .csv-Dateien damit nicht richtig funktionieren, aber .bin-Dateien machen keine Fehler. Vielleicht wurde das Problem bereits behoben und Sie haben Glück.

 
Alexey Viktorov:

Wenn es 4 Werte vom Typ double gibt

Sind nicht alle Werte in einer csv-Datei Zeichenketten?


Ich habe ein Wort für jede Zeile in der Datei.
Ich habe also String-Werte mit einer Größe von 12 Bytes.
Um also zu Zeile 8 zu gelangen, muss ich den Wagen um 84 Bytes verschieben.

bool  FileSeek(file_handle, 84, SEEK_SET);

Vielen Dank für die Informationen.

 
Wie kann ich eine Schleife durch alle offenen Positionen in mql 5 ziehen?
 
Roman Sharanov:
Wie kann man in mql 5 eine Schleife für alle offenen Positionen erstellen?
dies ist das Thema mql4
 
igrok333:
dies ist das Thema mql4

Nein, dieses Thema betrifft sowohl mql4 als auch mql5

 
Roni Iron:

Guten Tag!

Frage: Wie kann man den Tester im Terminal beschleunigen?

Ich habe es mit nur 1 CPU-Thread von 4, und nur 150mb von RAM. (d.h. es verbraucht nicht die gesamte Leistung meines PCs).

Welche Möglichkeiten gibt es?

Wenn dies bereits diskutiert wurde, bitte die Links löschen!

Wenn MT4 dann nur CPU-Frequenz spielt eine Rolle hier. Verwendet ein Gewinde ? Sie können gleichzeitig 4 MT4-Terminals mit verschiedenen Test- oder Optimierungsaufgaben starten. Sie erhalten die gleiche CPU-Belastung wie bei einem Terminal.

 
Roman Sharanov:
Wie kann ich eine Schleife durch alle offenen Positionen in mql5 ziehen?

mql5 unterscheidet zwischen Positionen und Aufträgen. Eine Position ist das Ergebnis eines Handels. Und ein Handel ist das Ergebnis der Auslösung eines Auftrags.

Zunächst wird eine Handelsanfrage an den Server gesendet, und es erscheint entweder ein schwebender Auftrag (wenn die Anfrage darauf abzielte, einen solchen zu setzen) oder ein Marktauftrag (wenn die Anfrage darauf abzielte, eine Position zu eröffnen).

Wenn der Marktauftrag ausgelöst wurde (ein Handel stattgefunden hat), entsteht eine Position (oder eine bestehende Position wird geändert) als Ergebnis dieses Handels.

Auf einem Hedge-Konto kann es viele separate Positionen geben (auch multidirektional), auf einem Netting-Konto nur eine Position.

Um alle Positionen in einer Schleife zu durchlaufen, müssen Sie die Schleife nach ihrer Anzahl organisieren - bzw. PositionsTotal() anstelle des üblichen for mql4 OrdersTotal() verwenden.

Wenn wir eine Schleife durch alle Bestellungen in mql5 machen wollen, dann verwenden wir (in mql5) das übliche für mql4 OrdersTotal().

 
igrok333:

aber sind nicht alle Werte in der csv-Datei Zeichenfolgen?


Ich habe ein Wort für jede Zeile in der Datei.
Ich habe also Zeichenkettenwerte, die 12 Byte groß sind.
Ich muss also den Wagen um 84 Bytes nach Zeile 8 verschieben.


Vielen Dank für die Informationen.

Die Textdatei muss nur Zeile für Zeile gelesen werden. Es gibt keine andere Möglichkeit, die Zeilennummer zu berechnen. Also - ja, nur durch fortlaufendes Lesen in einer Schleife mit FileReadString.

 

Ich erstelle Fibonacci-Levels im Diagramm mit ObjectCreate(name,OBJ_FIBO, ...) und dann ObjectSetFiboDescription(name,0,"...") und setze die Beschreibung der Levels, aber die Namen sollten vom rechten Rand weg bewegt werden. Ich habe Leerraum hinzugefügt, aber der verschiebt nicht nur den Text, sondern verdeckt auch Zeilen. Wenn Sie weitere Leerzeichen hinzufügen, bewegt sich der Text nicht mehr zurück.
Frage: Kann ich dem Text ein "unsichtbares" Symbol hinzufügen, so dass er die darunter liegende Zeile nicht verdeckt?


 
Maxim Khrolenko:

Ich erstelle Fibonacci-Levels im Diagramm mit ObjectCreate(name,OBJ_FIBO, ...) und dann ObjectSetFiboDescription(name,0,"...") und setze die Beschreibung der Levels, aber die Namen sollten vom rechten Rand weg bewegt werden. Ich habe Leerraum hinzugefügt, aber der verschiebt nicht nur den Text, sondern verdeckt auch Zeilen. Wenn Sie weitere Leerzeichen hinzufügen, bewegt sich der Text nicht mehr zurück.
Frage: Kann ich dem Text ein "unsichtbares" Symbol hinzufügen, so dass er die darunter liegende Zeile nicht verdeckt?

versuchen Sie Punkte und ein Zeichen mit Code 0