Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 535
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Das müssen Sie gleich angeben :) .
Die Situation ist wie folgt: Wenn es einen Balken im Diagramm gibt, entspricht er einer Zelle im Indikatorpuffer. Solange Sie nichts in diese Zelle schreiben, wird sie nur Müll speichern.
Bei der Division von Ganzzahlen (int, long, datetime usw.) ist das Ergebnis eine Ganzzahl, d.h. der Rest wird verworfen. 00:00 heute und 23:59:59 gestern, beträgt die Differenz 1 Tag.
Erstens ist das nicht der Fall - der Indikator ist experimentell nachgewiesen.
Zweitens: Wie kommt man auf eine 1? Zeigen Sie es mir mathematisch, da wir ursprünglich in Sekunden gerechnet haben.
Das ist genau dasselbe wie beim Nullsetzen einfacher Typen. Sobald den erforderlichen Feldern ein Wert von 0 zugewiesen wurde, verwenden Sie die umgekehrte Operation StructToTime().
Ausgeschaltet:
MqlDateTime str1;
datetime Open_timePos=iTime(_Symbol,0,pos);
TimeToStruct(Open_timePos,str1);
str1.hour=0;
str1.min=0;
str1.sec=0;
datetime start_time=StructToTime(str1);
Print("день=",TimeToStr(start_time));
Aleksey Lebedev:
При делении целых чисел(int,long,datetime и т.п.) результат целое число, т.е. остаток отбрасывается. 00:00 сегодня и 23:59:59 вчера, разность будет равна 1дню.
-Aleks-:
Erstens ist es nicht - experimentell im Indikator nachgewiesen.
Stellen Sie die Grundlagen nicht in Frage).
-Aleks-:
Zweitens: Wie kommt man auf 1? Zeigen Sie es mir mathematisch, da wir zunächst die Berechnung in Sekunden haben.
Verwenden Sie die Umwandlung durch Struktur, wenn sie leichter zu verstehen ist.
Stellen Sie die Grundlagen nicht in Frage)
Verwenden Sie die Strukturumwandlung, wenn sie einfacher zu verstehen ist.
Was verstanden wird, ist das, was behandelt wurde. Ich habe nicht versucht, Ihren Code auszuführen, aber ich denke, Sie haben es selbst getan, also erklären Sie mir unintelligent, wie es funktioniert:
86401/86400-86400/86400 ist gleich 1, wenn nach den Regeln der Mathematik 1,000012-1=0,000012 ist und int auf eine ganze Zahl aufgerundet werden soll, d.h. 0.
Was verstanden wird, ist das, was behandelt wurde. Ich habe nicht versucht, Ihren Code auszuführen, aber ich denke, Sie haben es selbst getan, so erklären Sie mir unintelligent, wie es funktioniert:
86401/86400/86400 ist gleich 1, wenn nach den Regeln der Mathematik 1.000012-1=0.000012 , und int auf eine ganze Zahl, also 0, gerundet werden soll.
aber tun Sie es)
Tagesbeginn 00:00:00 wird durch 86400 ohne Rest geteilt, die vorherige ist mindestens 1 Sekunde kleiner. Abgerundet - der Rest der Division wird verworfen, nicht der gesamte Ausdruck.
86400/86400=1
86399/86400=0
und führen Sie es dann aus)
Der Tagesbeginn 00:00:00 wird ohne Rest durch 86400 geteilt, wobei der vorherige Tag mindestens 1 Sekunde kürzer ist. Abgerundet - der Rest der Division wird verworfen, nicht der gesamte Ausdruck.
86400/86400=1
86399/86400=0
Leute! Ist es möglich, den Indikator programmgesteuert auf dem Diagramm anzuzeigen? Oder nur von Hand?