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

 
-Aleks-:

Haben Sie einen Eintrag, der einem Takt entspricht, oder nicht?

Ja, es wird ein Balken des Histogramms auf PERIOD_D1 auf dem Balken am neunundzwanzigsten März sein.

29.03.2017. 574391

 

Das Balkendiagramm ist richtig eingestellt, wenn das Datum wie folgt geschrieben wird

int shift=iBarShift(Symbol(),PERIOD_D1,"29.03.2017");
Range_Buffer[shift]= str_b1;

aber es ist nicht gesetzt, wenn ich es so schreibe

str_dat1= StringSubstr(str,0,10);//

int shift=iBarShift(Symbol(),PERIOD_D1,str_dat1);

Range_Buffer[shift]= str_b1;

Das Datum(str_dat1) wird korrekt gedruckt.

Was istder Grund dafür?



 
mila.com:

Ich habe die while-Schleife entfernt und erhalte die erste Zeile wie folgt

Bitte sagen Sie mir, was los ist.

Wir müssen prüfen, was wir in der Variablen str_dat1 erhalten

Eigentlich sollte iBarShift ein Datum vom Typ datetime übergeben, nicht einen String. Vielleicht akzeptiert es eine reine Zeichenkette als Datum, aber keine Variable.

Es ist besser, die empfangene Zeichenkette in den Typ datetime zu konvertieren.


ps Und eine völlig verrückte Idee, es zu testen, indem man schreibt

int shift=iBarShift(Symbol(),PERIOD_D1, (string)str_dat1);

Dies ist jedoch lediglich eine Frage der Optionalität von mql4.

 
mila.com:

Das Balkendiagramm ist richtig eingestellt, wenn das Datum wie folgt geschrieben wird

aber es ist nicht gesetzt, wenn ich es so schreibe

Das Datum(str_dat1) wird korrekt gedruckt.

Was istder Grund dafür?




Der Grund dafür ist, dass die Funktion iBarShift() den Variablentyp datetime übergeben muss, während Sie einen String-Typ übergeben.

datetime  str_dat1=StringToTime(StringSubstr(str,0,10));// это дата
double str_b1=StringToDouble(StringSubstr(str,12,6)); // это значение

int shift=iBarShift(Symbol(),PERIOD_D1,str_dat1);

Range_Buffer[shift]=str_b1;

...

 
Alexey Viktorov:
Es ist besser, die empfangene Zeile in den Typ datetime zu konvertieren.

Danke, stellt ein Balkendiagramm auf.

Ich habe eine Frage, wie man ein Histogramm über alle Zeilen der Datei erstellt.

Ich habe in der Hilfe gefunden, dass der Sprung zur nächsten Zeile FileSeek() ist

Aber ich weiß nicht, wie ich zur nächsten Zeile übergehen kann.

 
mila.com:

Danke, stellt ein Balkendiagramm auf.

Ich habe eine Frage, wie man ein Histogramm über alle Zeilen der Datei erstellt.

Ich habe in der Hilfe gefunden, dass der Sprung zur nächsten Zeile FileSeek() ist

Aber ich weiß nicht, wie ich zur nächsten Zeile übergehen kann.

Bislang gibt es nur eine Spalte


Hilfe )

Wenn Sie die Datei vor der Schleife öffnen und erst am Ende schließen, wird bei jeder Iteration der Schleife die nächste Zeile gelesen. Und Sie können die Datei nach dem Ende der Schleife schließen.

FileSeek() verschiebt einen Zeiger nicht in die nächste Zeile, sondern um die angegebene Anzahl von Bytes vom Anfang, vom Ende der Datei oder von der aktuellen Zeigerposition.

Um sie korrekt zu verschieben, müssen Sie wissen, wie viele Bytes eine Zeile in der geschriebenen Datei einnimmt.

 
mila.com:

Danke, stellt ein Balkendiagramm auf.

Ich habe eine Frage, wie man ein Histogramm über alle Zeilen der Datei erstellt.

Ich habe in der Hilfe gefunden, dass der Sprung zur nächsten Zeile FileSeek() ist

Aber ich weiß nicht, wie ich zur nächsten Zeile übergehen kann.

Bislang gibt es nur eine Spalte


Hilfe )

Ich habe Ihnen einen Link zu einem Artikel gegeben, in dem all dies mit Beispielen beschrieben wird. Er hat es wohl nicht gelesen...
 
Sergey Gritsay:


Der Grund dafür ist, dass die Funktion iBarShift() den Variablentyp datetime übergeben muss, während Sie den Typ string übergeben, versuchen Sie Folgendes

...

Danke, ich werde das tun.

 
Alexey Viktorov:

Wenn Sie die Datei vor der Schleife öffnen und nicht schließen, wird bei jeder Iteration der Schleife die nächste Zeile gelesen. Und Sie können die Datei nach dem Ende der Schleife schließen.


Es funktioniert, vielen Dank.

 
Artyom Trishkin:
Ich habe Ihnen einen Link zu einem Artikel gegeben, in dem alles mit Beispielen beschrieben ist. Er hat es wohl nicht gelesen...

Ich habe es gelesen, aber ich wäre nie auf die Idee gekommen, die Datei vor der Schleife zu öffnen )

Wahrscheinlich habe ich ihn nicht sorgfältig gelesen.)