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

 
leonerd:

Stecken Sie Ihre Nase in einen einfachen Code, der den Winkel der Kursbewegung berechnet. Das Bild unten zeigt es.


Es hängt davon ab, in welchem Format x (Pixel, Balken oder Zeit) und y (Pixel oder Preis) gemessen werden.
Und es hängt davon ab, welche Aufgabe: Winkel auf dem aktuellen Diagramm mit aktuellen Skala (Balkenbreite in Pixel) und Zeitrahmen zu messen? Oder um den Winkel so zu messen, dass er für jede TF und jeden Maßstab gleich bleibt?
Unterschiedliche Aufgaben und Koordinatensysteme - unterschiedliche Lösungen.
 
leonerd:

Stecken Sie Ihre Nase in einen einfachen Code, der den Winkel der Kursbewegung berechnet. Das Bild unten zeigt es.


Nun, man kann sie mit einer Tangente berechnen. Und den Winkel selbst braucht man nicht, man muss nur den Tangens kennen.

 
Alexey Viktorov:

Und man braucht nicht unbedingt einen Winkel, sondern nur eine Tangente.

Ganz genau! Und unsere Tangente heißt: Geschwindigkeit.

In diesem Beispiel hat der Kurs in 39 1-Stunden-Kerzen 1884 Punkte überschritten. Die Gesamtgeschwindigkeit dieser Welle beträgt: 1884/(39/24) = 1159 Pips pro Tag.

double interval=double(iBarShift(symbol,frame,start_time)-iBarShift(symbol,frame,finish_time)*PeriodSeconds(frame)/86400;
int distance=MathAbs(finish_price-start_price);
int speed=interval>0?(distance/interval):0;
Und wir brauchen keinen Winkel, warum sollten wir einen Winkel brauchen? Wie sieht der Winkel aus, wenn wir den Graphen strecken oder abflachen? Winkel können gemessen werden, wenn die x- und die y-Achse die gleichen Einheiten haben. Nimmt man zum Beispiel ein Notizbuch mit Quadraten und zieht eine Linie entlang der Diagonalen dieser Quadrate, so erhält man 45 Grad. Und was oben und was rechts ist, ist in Zentimetern angegeben. Und was ist ein Preispunkt in diesem Fall? Eine Stunde, ein Tag - das sind unvergleichliche Werte.
 
Aleksei Stepanenko:

Ganz genau! Und unsere Tangente heißt: Geschwindigkeit.

In diesem Beispiel hat der Kurs in 39 Einstundenkerzen 1.884 Punkte überschritten. Die Gesamtgeschwindigkeit dieser Welle beträgt: 1884/(39/24) = 1159 Pips pro Tag.

Und wir brauchen keinen Winkel, warum sollten wir einen Winkel brauchen? Wie sieht der Winkel aus, wenn wir den Graphen strecken oder abflachen? Winkel können gemessen werden, wenn die x- und die y-Achse die gleichen Einheiten haben. Nimmt man zum Beispiel ein Notizbuch mit Quadraten und zieht eine Linie entlang der Diagonalen dieser Quadrate, so erhält man 45 Grad. Und was oben und was rechts ist, ist in Zentimetern angegeben. Und was ist ein Preispunkt in diesem Fall? Eine Stunde, ein Tag -das sind keine vergleichbaren Werte.

Warum müssen wir sie vergleichen? Kilometer und Zeit sind auch nicht vergleichbar, aber das hält uns nicht davon ab, die Geschwindigkeit in km/h zu zählen.

Wenn Ihre Tangente die Geschwindigkeit ist, ist sie die Geschwindigkeit pro Zeiteinheit der Diagrammperiode. Wenn sich der Kurs in 39 Stunden um 1884 Pips bewegt hat, sind das 48 Pips pro Stunde. Eine Umrechnung in Tage ist nicht erforderlich.

Sie können die "Beschleunigung" aber auch als Verhältnis zwischen der aktuellen Geschwindigkeit und der Geschwindigkeit des vorherigen Balkens berechnen. Wenn man mehrere dieser Werte sammelt, kann man die durchschnittliche Beschleunigung ermitteln.

 
Aleksei Stepanenko:

Und was bedeutet hier ein Preispunkt? Eine Stunde, ein Tag? Die Werte sind nicht vergleichbar.

Nun, die Entfernung wird auch in Lichtjahren gemessen. Es ist also kein Problem.
Wir wollen eine konstante Geschwindigkeit einführen. Zum Beispiel 1 _Point für einen 1-Minuten-Balken und bringen das Koordinatensystem auf einen Preis auf beiden Achsen .

Dann werden die Winkel in jedem Zeitrahmen gleich sein.

Die Hauptsache ist, dass die Anzahl der Minutenbalken zwischenx1und x2korrekt berechnet wird .

In diesem System würde ein Winkel von 45 Grad bedeuten, dass sich der Kurs in N-Minuten-Balken um N*tg(45) =N Pips ändert, und ein Winkel von 30 Grad würde bedeuten, dass sich der Kurs in N-Minuten-Balken um N*tg(30)=N*0,57735 Pips ändert.
Es ist besser, Minutenbalken statt Zeitbalken zu verwenden, da es zeitliche Lücken in Form von Wochenenden, geringer Volatilität usw. gibt.
 

Ich stimme zu 100% zu, denn der Kerzenständer kann sowohl horizontal als auch vertikal gedehnt werden. Außerdem sollte es einen Standard für die Bestimmung des Winkels geben (Breite des Kerzenhalters in Pixeln und Anzahl der Punkte in einem Pixel).

Darf ich eine themenfremde Frage stellen?

Wie konvertiere ich datatime korrekt in double, so dass der Compiler nicht flucht (Datenverlust durch falsche Konvertierung ist möglich)?

double A = Zeit[1];

Vielen Dank im Voraus!

 
Alexey Viktorov:

Wenn Sie 1884 Punkte in 39 Stunden haben, beträgt die Geschwindigkeit 48 Punkte pro Stunde. Und es ist überhaupt nicht nötig, das in Tage umzurechnen.

Ja, das ist meine Vermutung. Da ich die Geschwindigkeit int (d.h. ganze Pips) angegeben habe , dachte ich, ich würde eine größere Periode verwenden, so dass Bruchteile eines Pips in der Geschwindigkeit keine große Rolle spielen würden und verworfen werden könnten. Ich habe also pro Tag Punkte bekommen. Nun, das stimmt mit der biologischen Uhr des Menschen überein. Müde, geschlafen, morgens aufgestanden: "Wie hoch war die Geschwindigkeit gestern? Es sieht konsistent aus, und das ist der Standard, den ich mir gesetzt habe. Und dann ist es natürlich eine Frage der persönlichen Vorlieben.


Nikolai Semko:

Nun, die Entfernung wird auch in Lichtjahren gemessen. Das ist also kein Problem.
Führen wir eine konstante Geschwindigkeit ein. Zum Beispiel 1 _Point für einen 1-Minuten-Balken und bringen das Koordinatensystem auf einen Preis auf beiden Achsen .

Ja, auch hier wird die Geschwindigkeit ermittelt, nur in Einheiten: Punkte pro Minute. Was die Wochenenden und Löcher anbelangt, so bin ich folgendermaßen vorgegangen: Die Kerzen auf dem Diagramm sind das Zeitintervall, und was fehlt (Tage/Stunden), ist nicht vorhanden. Denn wenn wir die Wochenenden mit einbeziehen und der Preis zu dieser Zeit stillsteht, wird die Geschwindigkeit ohne Grund merklich sinken. Aber das ist wiederum jedem selbst überlassen:)


Roni Iron:

Wie konvertiert man datatime richtig in double, so dass der Compiler nicht flucht (Datenverlust durch falsche Konvertierung ist möglich).

double A = (double)Time[1];

Warum sollte man Datenzeit in Double speichern? Wenn Sie verschiedene Variablentypen im selben Array speichern und sie hier und da einsetzen, sollten Sie das übliche Array durch ein Strukturarray ersetzen:


struct My
   {
   datetime time;
   double price;  
   } my[];

int finish=0;
ArrayResize(my,finish+1);
my[finish].time=Time[1];
my[finish].price=Close[1];
 

Herzlichen Dank!

Funktionieren die Strukturen nur in mql 5 oder bereits in mql 4?

 
Ja, sie funktionieren zu viert, es ist sehr bequem, mit ihnen zu schreiben, klar.
 
Roni Iron:

Herzlichen Dank!

Funktionieren die Strukturen nur in mql 5 oder bereits in mql 4?

Nicht nur die Strukturen funktionieren, sondern auch die Gewerkschaften.

Grund der Beschwerde: