Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 141

 
forexman77:

Herzlichen Dank! Es funktioniert.

Erklären Sie die Logik von mql5. In mql4 wird int Hour() verwendet, um die Zeit in Stunden zu bestimmen. In mql5 gibt es keine solche Konstante, soweit ich verstanden habe.

1 Wie erkennt das Programm, dass wir die Zeit in Stunden angeben? Ich nehme an, vonMqlDateTime?

Um die aktuelle Zeit in Minuten zur aktuellen Zeit in Stunden zu addieren, d.h. um die aktuelle Zeit in Minuten zu ermitteln, würde die Konstruktion wie folgt aussehen

1. Ja

2. Richtig.

 

Zweiter Tag der Überarbeitung des EA von mql4 auf mql5.

1. Ich muss die Eröffnungszeit des täglichen Balkens in Sekunden ab dem 01.01.1970 finden. Ich habe die Funktion im Forum gefunden:

//--- переменные для указания параметров функции
int start = 0; // индекс бара
int count = 1; // количество баров
datetime tp[]; // массив, в котором возвращается время баров
//--- копирование времени 
CopyTime(_Symbol,PERIOD_D1,start,count,tp);
//--- вывод результата
Alert(tp[0]);

Ich bin mir nicht sicher, ob die Funktion die Zeit des letzten oder des ersten Taktes ermittelt.

Die Uhrzeit wird als Beginn des Handelstages in Form von Datum und Uhrzeit angezeigt.

Ich habe die Funktion StringToTime gefunden; sie scheint zu tun, was ich brauche, aber ich habe verschiedene Kombinationen ausprobiert und fühle mich jetzt wie ein Schimpanse, der nicht versteht, welchen Knopf er drücken muss, um die Tür zum Apfel zu öffnen.

3. Ich habe keine iBarShift, iLow, iLowest Funktionen in mql5. Könnten Sie mir bitte sagen, wie ich das Minimum für einen bestimmten Zeitraum pro Tag finden kann oder welche Funktionen inmql5 verwendet werden sollten, um dieses Problem zu lösen?

Документация по MQL5: Преобразование данных / StringToTime
Документация по MQL5: Преобразование данных / StringToTime
  • www.mql5.com
Преобразование данных / StringToTime - Документация по MQL5
 
forexman77:

Zweiter Tag der Überarbeitung des EA von mql4 auf mql5.

1. Ich muss die Eröffnungszeit des täglichen Balkens in Sekunden ab dem 01.01.1970 finden. Ich habe die Funktion im Forum gefunden:

2. Ich habe die Funktion StringToTime gefunden und sie scheint zu tun, was ich brauche. Aber ich habe verschiedene Kombinationen ausprobiert und fühle mich jetzt wie ein Schimpanse, der nicht weiß, welchen Knopf er drücken muss, um die Tür zum Apfel zu öffnen.

Ich habe keine iBarShift, iLow, iLowest Funktionen in mql5. Können Sie mir sagen, wie ich das Minimum eines bestimmten Zeitraums an jedem Tag finden kann, oder welche Funktionen inmql5 ich zur Lösung dieses Problems verwenden sollte?

1,2. Bitte lesen Sie hier.

3. Lesen Sie hier.

 
DC2008:

1,2. Lesen Sie hier.

3. lesen Sie hier.

Zur zweiten Frage. Lesen Sie noch einmal alles über datetime. "Der datetime-Typ ist dafür gedacht, das Datum und die Uhrzeit als die Anzahl der seit dem 01. Januar 1970 verstrichenen Sekunden zu speichern."

Warum steht dann beim Aufruf der Meldung: 2013.10.02 00:00:00 und nicht die Anzahl der Sekunden.

 
forexman77:

Zur zweiten Frage. Lesen Sie noch einmal alles über datetime. "Der datetime-Typ ist dafür gedacht, das Datum und die Uhrzeit als die Anzahl der seit dem 01. Januar 1970 verstrichenen Sekunden zu speichern."

Warum wird dann beim Aufruf der Meldung angezeigt: 2013.10.02 00:00:00 und nicht die Anzahl der Sekunden.

Lesen Sie jetzt hier. Um sie im Alert auszugeben, müssen Sie den Typ datetime in den Typ int konvertieren.

 
DC2008:

Lesen Sie jetzt hier. Für die Ausgabe in der Meldung müssen Sie den Datentyp datetime in den Typ int konvertieren.

Ich habe eine Konstruktion wie diese gebaut:

int start = 0; // индекс бара
int count = 1; // количество баров
datetime tp[]; // массив, в котором возвращается время баров
//--- копирование времени 
CopyTime(_Symbol,PERIOD_D1,start,count,tp);
//--- вывод результата
int st=tp[0];
Alert("st=",st);

Ich habe es mit Metatrader 4 verglichen und die gleiche Zahl erhalten.

Beim Kompilieren von mql5 ist die Meldung jedoch gelb:

möglicher Datenverlust aufgrund von Typumwandlung

Ich habe versucht, es so zu machen:

int start = 0; // индекс бара
int count = 1; // количество баров
datetime tp[]; // массив, в котором возвращается время баров
//--- копирование времени 
CopyTime(_Symbol,PERIOD_D1,start,count,tp);
//--- вывод результата
Alert(IntegerToString(tp[0]));
Keine Fehler. Aber ich weiß nicht, woIntegerToString anhängen, um den Wert ohne Warnung zu erhalten, weil es von Expert Advisor für Berechnungen verwendet werden wird. Ich habe nur nicht verstanden, dass es sich um einen String-Wert handelt, d. h. kann er als Vergleich mit einer anderen Zahl verwendet werden?
 
forexman77:

Eine Konstruktion wie diese:

im Vergleich zu Metatrader 4 ergibt sich die gleiche Zahl.

Nur dass die Meldung beim Kompilieren von mql5 gelb erscheint:

möglicher Datenverlust aufgrund von Typumwandlung

Es ist einfacher als das!

//--- вывод результата
Alert("st=",(int)tp[0]);
 

Können Sie mir sagen, wie ich ein Signal erstellen kann, wenn ich bereits ein anderes Signal abonniert habe?

Das heißt, ich habe sie bereits abbestellt. Ist das wirklich nicht möglich?

Habe in weniger als 2 Wochen 100% geschafft und kann es mit niemandem teilen(

 
auch dies ist eine interessante Frage
 
DC2008:

Es ist einfacher als das!

Dennoch benötige ich die Variable "st" nicht nur in Alert, sondern auch für Berechnungen, und beim Kompilieren erscheint die Warnung "möglicher Datenverlust durch Typkonvertierung".

Ich nehme an, dass dies daran liegt, dass ich eine 10-stellige Zahl erhalte und der Maximalwert in int 2 147 483 647 ist, ich erhalte derzeit 1 380 758 400. Vielleicht ist es sinnvoll, lange und wahrscheinlich die EA wird eine Menge von Ressourcen in diesem Teil verbrauchen zu verwenden?

Документация по MQL5: Общие функции / Alert
Документация по MQL5: Общие функции / Alert
  • www.mql5.com
Общие функции / Alert - Документация по MQL5