und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
- Ansichten:
- 745
- Rating:
- Veröffentlicht:
- 2018.06.11 13:24
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Die Parameter der Funktion:
- double LX1 - die X-Koordinate des ersten Punktes der Linie;
- double LY1 - die Y-Koordinate des ersten Punktes der Linie;
- double LX2 - die X-Koordinate des zweiten Punktes der Linie;
- double LY2 - die Y-Koordinate des zweiten Punktes der Linie;
- double DX - die X-Koordinate des Punktes;
- double DY - die Y-Koordinate des Punktes.
Berechnungsprinzip
Auf Basis der Koordinaten von zwei Punkten einer Linie erhalten wir die Formel: y=a+k*x. Der Koeffizient k bestimmt die Steigung der Linie, d.h. erhöht sich die Koordinate x um eine Einheit, ändert sich y um k Einheiten. Der Koeffizient k berechnet sich wie folgt:
double K=(LY2-LY1)/(LX2-LX1);
Die Konstante a bestimmt den Wert der Linie im Punkt x=0, d.h. an diesem Punkt kreuzt die Linie de y-Achse. Wenn die Steigung und die X-Koordinate bekannt sind eines Punktes auf der Linie bekannt ist, kann a berechnet werden:
double LA=LY1-K*LX1;
Der Abstand von einem Punkt zur Linie wird mittels der Senkrechten zur Linie bestimmt. Wenn man die Zeichnung um 90 Grad im Uhrzeigersinn dreht, hat die Linie d die gleiche Steigung mit umgekehrten Vorzeichen. Sind Steigung und die Koordinaten des Punktes bekannt, kann die Gleichung der Linie berechnet werden, aber diesmal in der Form x =a-ky. Ergo die Konstante a ist:
double DA=DX+K*DY;
Mit den Formeln beider Linien kann der Schnittpunkt errechnet werden. Dafür, ausgedrückt durch die Formel der ersten Zeile y, ersetzen wir in der Formel der zweiten Linie durch kleine Transformationen und erhalten die Koordinate x des Schnittpunkts:
double CX=(DA-K*LA)/(1.0+K*K);
Dann wird das resultierende x in der Formel der ersten Linie und erhalten die y-Koordinate des Schnittpunkts beider Linien:
double CY=LA+K*CX;
Mit den Koordinaten beider Punkte kann der Abstand zwischen ihnen entland der x- und x-Achsen (die Projektionen auf die Achsen) errechnet werden. Jetzt kann mit dem Satz von Pythagoras der Abstand berechnet werden:
MathSqrt(MathPow(DX-CX,2)+MathPow(DY-CY,2))
Eine russische Diskussion dazu findet sich hier https://www.mql5.com/ru/forum/237198. Sie können auch hier im Kommentarteil mitdiskutieren.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/20481
![maximus_vX lite](https://c.mql5.com/i/code/expert.png)
Der Expert Advisor handelt mittels Ebenen. Er hat maximal zwei Positionen jeden Typs (Kauf und Verkauf) im Markt.
![WCCI](https://c.mql5.com/i/code/indicator.png)
Ein gewichteter CCI.
![Poker_SHOW](https://c.mql5.com/i/code/expert.png)
Expert Advisor auf Basis einer Zufallszahl. Der Trend wird bestimmt durch iMA (gleitender Durchschnitt, MA).
![TrueSort_1100](https://c.mql5.com/i/code/expert.png)
Der Expert Advisor wartet, bis sich alle Linien von MA(10), MA(20), MA(50), MA(100) und MA(200) eine über der anderen arrangiert haben (oder eine unter der anderen.