Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 480
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
Bitte helfen Sie bei der Übersetzung des Algorithmus zur Bestimmung der Koordinaten des Schnittpunkts zweier Segmente
Aus dem Artikel:
Es ist ganz einfach!
Vielleicht hat jemand ein fertiges Exemplar in den Archiven?x1,y1 und x2,y2 sind die Koordinaten der Eckpunkte des ersten Segments;
x3,y3 und x4,y4 sind die Koordinaten der Scheitelpunkte des zweiten Segments;
Um den Schnittpunkt zu finden, stellen wir die Gleichungen der Linien auf:
erste Gleichung:
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
zweite Gleichung
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
Diese Gleichungen definieren eine Linie, die durch zwei Punkte verläuft, und das ist es, was wir brauchen.
Aus diesen Gleichungen lassen sich x und y mit den folgenden Formeln ermitteln:
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
Da sich unsere Linien schneiden, haben sie einen gemeinsamen Schnittpunkt mit den Koordinaten (x,y), den wir finden müssen.
Damit der Schnittpunkt zu unseren Liniensegmenten gehört, müssen wir ihn einschränken, d. h. die Bedingung überprüfen:
wenn
(((x1<=x)und(x2>=x)und(x3<=x)und(x4 >=x))oder((y1<=y)und(y2>=y)und(y3<=y) und(y4>=y))
dann gibt es einen Schnittpunkt dieser Segmente, und wenn nicht, gibt es keinen Schnittpunkt.
Sie sollten auch die Parallelität dieser Segmente mit Hilfe von Winkelkoeffizienten überprüfen:
k1:=(x2-x1)/(y2-y1);
k2:=(x4-x3)/(y4-y3);
wobei k1 und k2 die Tangenten der Winkel der Segmente an die positive Richtung der OX-Achse sind, wenn k1=k2, dann sind die Segmente parallel und haben daher keine Schnittpunkte.
Hallo liebe Freunde!
Bitte helfen Sie bei der Übersetzung des Algorithmus zur Bestimmung der Koordinaten des Schnittpunkts zweier Liniensegmente
Aus dem Artikel:
Es ist ganz einfach!
Vielleicht hat jemand ein fertiges Exemplar in den Archiven?x1,y1 und x2,y2 sind die Koordinaten der Scheitelpunkte des ersten Segments;
x3,y3 und x4,y4 sind die Koordinaten der Scheitelpunkte des zweiten Segments;
Um den Schnittpunkt zu finden, stellen wir die Gleichungen der Linien auf:
erste Gleichung:
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
zweite Gleichung
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
Diese Gleichungen definieren eine Linie, die durch zwei Punkte verläuft, und das ist es, was wir brauchen.
Aus diesen Gleichungen lassen sich x und y mit den folgenden Formeln ermitteln:
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
Da sich unsere Linien schneiden, haben sie einen gemeinsamen Schnittpunkt mit den Koordinaten (x,y), den wir finden müssen.
Damit der Schnittpunkt zu unseren Liniensegmenten gehört, müssen wir ihn einschränken, d. h. die Bedingung überprüfen:
wenn
(((x1<=x)und(x2>=x)und(x3<=x)und(x4 >=x))oder((y1<=y)und(y2>=y)und(y3<=y) und(y4>=y))
dann gibt es einen Schnittpunkt dieser Segmente, und wenn nicht, gibt es keinen Schnittpunkt.
Sie sollten auch die Parallelität dieser Segmente mit Hilfe von Winkelkoeffizienten überprüfen:
k1:=(x2-x1)/(y2-y1);
k2:=(x4-x3)/(y4-y3);
wobei k1 und k2 die Tangenten der Winkel der Segmente an die positive Richtung der OX-Achse sind, wenn k1=k2, dann sind die Segmente parallel und haben daher keine Schnittpunkte.
Es ist ein bisschen kompliziert... Ich habe die Definition des Schnittpunkts der Linien geschrieben, eine bei 2m-Hochs und die andere bei 2m-Tiefs, weiter als der nächste Balken oder nicht. Ich habe sie mit Hilfe des Tangens geschrieben, dem Verhältnis zwischen der Preisdifferenz in Pips und der Anzahl der Balken zwischen den Haijs, auf denen die Linie gezeichnet wird. Dementsprechend ist es der Tangens des Winkels der zweiten Linie am Tiefpunkt. Und dann benutze ich den Tangens, um die Anzahl der Punkte auf dem nächsten Balken zu finden, d.h. ich benutze die umgekehrte Formel mit dem geänderten Wert von einem Katheten (der Anzahl der Balken). Wir erhalten den Preiswert am geprüften Punkt dieser Linien. Wenn der Kurswert des geraden Balkens also niedriger ist, ist die Kreuzung erfolgt.
Aber bis jetzt kann ich diesen Indikator nicht finden.
...
Oder hat vielleicht jemand ein fertiges Exemplar in den Archiven?
Kim hat eine Funktion gepostet. Die Funktion gibt den Preis des Punktes des von der Linie nach rechts gezogenen Strahls zurück.
x1 - Takt der ersten Zeilenkoordinate, y1 - Preis der ersten Zeilenkoordinate. x2 - Takt der zweiten Zeilenkoordinate, y2 - Preis der zweiten Zeilenkoordinate, x - der Takt, für den der Preis zurückgegeben wird.
Sie können die Preise für jede der beiden Linien finden und sehen, ob sie sich überschneiden...
Ich habe hier sozusagen geschrieben..., etwas zählt und wird gezogen, aber nicht an jeder Kreuzung. Mit meinem Schreiben stimmt etwas nicht. Ich verstehe nicht, was es ist.
Vielen Dank, Alexey und Artem, für eure Aufmerksamkeit auf meine Frage!
Ich habe hier sozusagen geschrieben..., etwas zählt und wird gezeichnet, aber nicht an jeder Kreuzung. Mit meinem Schreiben stimmt etwas nicht. Ich weiß nicht, was es ist.
Im Moment kann ich nichts mit Programmierung anfangen, denn meine geliebte Frau hat heute Geburtstag. Sie ist 18 Jahre und 384 Monate alt.
Aber!!! Beachten Sie, dass sich die Linien innerhalb oder außerhalb der Balken kreuzen können, und dass der Preis (Y-Koordinate) nur auf dem Balken ermittelt werden kann. Entweder vorher oder nachher, aber der Kreuzungspunkt kann nicht immer bestimmt werden. Ich würde sagen, das ist eine Seltenheit. Überarbeiten Sie Ihren Code unter Berücksichtigung der obigen Ausführungen, vielleicht klappt es dann.
Alexey Viktorov 2015.12.12 17:33 # RU
Sie ist 18 Jahre alt geworden.
Bitte teilen Sie mir mit, welche Art von Befehlen in den Expert Advisor eingefügt werden sollten, damit er die bereits gesetzten Takeprofits in den offenen Positionen automatisch korrigiert, wenn er sie neu berechnet. Oder gibt es vielleicht ein Skript, das alle Stopps des letzten Satzes korrigiert?
Bitte geben Sie Hinweise, wie man Code hinzufügen kann, damit man im Strategietester die Gewichte der Muster ändern kann. m_pattern_0(90) Eingabevariablen ersetzen
Ich bin nicht sehr gut mit OOP, ich bekomme Fehler"member function not defined" oder der Code funktioniert einfach nicht.
Ähnliche unbeantwortete Frage hier https://www.mql5.com/ru/forum/13484
p.s.: Mit CiCustom kann ich Gewichte für Modelle ändern, aber bei Standardindikatoren, die Standardklassen haben (wie CSignalEnvelopes usw.), wo sind die Methoden zum Setzen von Werten für jedes Modell, aber sie sind noch nicht imAssistenten verfügbar?
Oder gibt es vielleicht irgendwo eine Antwort dafür?
Es wird etwas von der MetaQuotes-Website geladen und ich erhalte das folgende Bild:
Startseite : Datenbank 2049/12358 Datensätze.
Der vorletzte ist vom 17.10.2014, der letzte vom 14.07.1993.
Wo sind die Vermissten?