Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1194
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
Danke für den Hinweis, ich bin mir dieser Funktionen bewusst.
Wissen Sie, warum so viele Menschen, Sie eingeschlossen, denjenigen antworten, die mql wie eine Axt kennen? Und sie ignorieren den Rat der Wissenden? Wenn Sie keine haben, lesen Sie diesen Tipp:
Das Forum für Handel, automatisierte Handelssysteme und Strategietests.
Alle Fragen von Anfängern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes
Artyom Trishkin, 2020.06.29 00:03
Hallo.Beginnen Sie mit der Überwachung des Zustands des Diagramms in OnChartEvent() https://www.mql5.com/ru/docs/event_handlers/onchartevent
Es gibt einige Ereignisse, die Sie benötigen:
CHARTEVENT_OBJECT_CREATE Erstellen eines grafischen Objekts
CHARTEVENT_OBJECT_CHANGE Ändern der Eigenschaften eines grafischen Objekts über den Eigenschaftsdialog
CHARTEVENT_OBJECT_DELETE Löschen eines grafischen Objekts
https://www.mql5.com/ru/docs/constants/chartconstants/enum_chartevents
Protokollieren Sie alle Parameter des OnChartEvent()-Handlers und sehen Sie deren Werte beim Hinzufügen/Ändern/Löschen von grafischen Objekten. Das gibt Ihnen die Richtung vor, in die Sie gehen müssen.
Danke für den Hinweis, ich kenne diese Funktionen.
Aber wie können wir sie verwenden, um ein Objekt auf der Karte automatisch zu finden und seine Parameter zu lesen, wenn wir seinen Namen nicht kennen?
Wenn Sie ein Objekt mit der Maus in ein Diagramm zeichnen, gibt das System seinen Namen an.
Natürlich ist es nicht schwierig, die manuelle Eingabe aller notwendigen Daten des Objekts aus seiner Eigenschaftstabelle zu organisieren, aber warum dann die Automatisierung?
Aber wie man einem EA programmatisch den Namen eines Objekts gibt und dann alle von Ihnen genannten Funktionen nutzen kann, ist mir immer noch nicht klar...
Wie oben erwähnt, arbeiten Sie mit Diagrammereignissen:
Hallo.
Beginnen Sie damit, den Zustand des Diagramms in OnChartEvent() zu verfolgen https://www.mql5.com/ru/docs/event_handlers/onchartevent
Es gibt einige Ereignisse, die Sie benötigen:
CHARTEVENT_OBJECT_CREATE Erstellen Sie ein grafisches Objekt
CHARTEVENT_OBJECT_CHANGE Ändern Sie die Eigenschaften eines grafischen Objekts über den Eigenschaftsdialog
CHARTEVENT_OBJECT_DELETE Löschen Sie ein grafisches Objekt
https://www.mql5.com/ru/docs/constants/chartconstants/enum_chartevents
Protokollieren Sie alle Parameter von OnChartEvent() und sehen Sie deren Werte, wenn Sie grafische Objekte hinzufügen/ändern/löschen. Das gibt Ihnen die Richtung vor, in die Sie gehen müssen.
Vielen Dank, habe Ihren Rat bereits befolgt!
Sie können Objekte eines bestimmten Typs mit ihren Koordinaten wie folgt finden und protokollieren:
Sie können beliebige Daten in einer Datei speichern. Und im Expert Advisor erstellen Sie einen Lader, der die entsprechenden Objekte hinzufügt und dann Daten aus der Datei in sie lädt. Aber Sie skizzieren zumindest einen Quellcode für Ihre spezielle Aufgabe und veröffentlichen ihn hier.
Wie oben erwähnt, arbeiten Sie mit den Diagrammereignissen:
Michael, Ihre und die Hilfe von @Artyom Trishkin waren sehr hilfreich!
Jetzt müssen wir herausfinden, wie wir den Kreuzungspunkt zwischen dem Preisdiagramm und dem gefundenen Objekt, in diesem Fall der Trendlinie, finden können.
Der Algorithmus sieht folgendermaßen aus:
1. Anhand der abgelesenen Koordinaten der Trendlinie berechnen wir den Koeffizienten des Trendanstiegs pro 1 Bar der ausgewählten TF.
2. Berechnet die Preiskoordinate der Trendlinie auf dem aktuellen Balken und überwacht die Tatsache der Überschreitung dieses Punktes durch das Diagramm während der ausgewählten TF.
3. Wenn dies der Fall ist, fahren wir mit der Bearbeitung dieses Ereignisses fort, z. B. mit der Eröffnung einer Bestellung. Wenn nicht, wird der Vorgang für den nächsten Takt wiederholt.
Aber vielleicht hat MT4(5), aufgrund der Besonderheiten dieses Systems, eine viel einfachere Lösung?
Wissen Sie, warum so viele Menschen, auch Sie, auf diejenigen reagieren, die mql wie eine Axt kennen. Und sie ignorieren den Rat derer, die es wissen. In Ihrem Fall ist es dieser Rat:
Mein lieber Alexey, Sie haben absolut Recht, was meine Kenntnisse über MQL angeht. Sie irren sich jedoch, wenn Sie sagen, dass ich den Ratschlägen von Insidern keine Beachtung schenke, denn mein erster Kontakt war mit@Artyom Trishkin, der meiner Meinung nach einer der herausragenden MQL-Profis ist und den Sie gut kennen.
Dank seiner Ratschläge verstand ich sofort, wie ich mein Problem lösen konnte, und er öffnete mir die Augen für weitere Maßnahmen. Und@Mihail Matkovskij hat mein Leben noch einfacher gemacht!
Michael, Ihre und die Hilfe von @Artyom Trishkin waren sehr hilfreich!
Jetzt müssen wir herausfinden, wie wir den Kreuzungspunkt zwischen dem Preisdiagramm und dem gefundenen Objekt, in diesem Fall der Trendlinie, finden können.
Der Algorithmus sieht folgendermaßen aus:
1. Anhand der abgelesenen Koordinaten der Trendlinie berechnen wir den Koeffizienten des Trendanstiegs pro 1 Bar der ausgewählten TF.
2. Berechnet die Preiskoordinate der Trendlinie auf dem aktuellen Balken und überwacht die Tatsache der Überschreitung dieses Punktes durch das Diagramm während der ausgewählten TF.
3. Wenn dies der Fall ist, fahren wir mit der Bearbeitung dieses Ereignisses fort, z. B. mit der Eröffnung einer Bestellung. Wenn nicht, wird der Vorgang für den nächsten Takt wiederholt.
Aber vielleicht hat MT4(5), aufgrund der Besonderheiten dieses Systems, eine viel einfachere Lösung?
Wie ich oben schon sagte, skizzieren Sie einen Quellcode, damit Sie etwas haben, mit dem Sie beginnen können. Außerdem wissen Sie bereits, wie Sie die Daten des Objekts in das Diagramm übertragen können. Niemand will alles von Grund auf für Sie tun. Und auf diese Weise kann das, was für die Arbeit des Experten fehlt, ergänzt werden...
Michael, Ihre und@Artyom Trishkins Hilfe war sehr hilfreich!
Nun müssen wir herausfinden, wie wir den Kreuzungspunkt zwischen dem Preisdiagramm und dem gefundenen Objekt, in diesem Fall der Trendlinie, finden können.
Der Algorithmus sieht folgendermaßen aus:
1. Anhand der abgelesenen Koordinaten der Trendlinie berechnen wir den Koeffizienten des Trendanstiegs pro 1 Bar der ausgewählten TF.
2. Berechnet die Preiskoordinate der Trendlinie auf dem aktuellen Balken und überwacht die Tatsache der Überschreitung dieses Punktes durch das Diagramm während der ausgewählten TF.
3. Wenn dies der Fall ist, fahren wir mit der Bearbeitung dieses Ereignisses fort, z. B. mit der Eröffnung einer Bestellung. Wenn nicht, wird der Vorgang für den nächsten Takt wiederholt.
Vielleicht ist die Lösung in MT4(5) aufgrund der besonderen Merkmale dieses Systems viel einfacher?
Es ist nicht ganz klar, was Sie finden wollen. Sie möchten den Punkt finden, an dem die Trendlinie durch den Preis auf einem bestimmten Balken gekreuzt wird? Dafür gibt es Funktionen, die den Wert der Linie auf einem Balken ermitteln. Aber ich würde die Geradengleichung verwenden:
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
FAQ von Anfängern MQL5 MT5 MetaTrader 5
Artyom Trishkin, 2020.05.02 12:27
Verwenden Sie eine Geradengleichung:
Geben Sie die Bar-Nummer und den Preis des Punktes auf der linken Seite an, geben Sie die Bar-Nummer und den Preis des Punktes auf der rechten Seite an (eine virtuelle Linie wird auf diese Punkte gezeichnet) und geben Sie den gesuchten Bar an.
Die Funktion gibt den Preis der gesuchten Bar zurück.
..... Es gibt Funktionen, mit denen der Zeilenwert auf dem Balken ermittelt werden kann. Aber ich würde die Geradengleichung verwenden:
Artyom, hier bitte mehr Details.
Entweder war ich vorher nicht sehr aufmerksam, oder die Dokumentation wurde überarbeitet... Ich weiß es nicht.
Aber ich dachte immer, dass ObjectGetDouble den Linienpreis auf einem bestimmten Balken zurückgibt (ich meine den genauen Preis). Und hier beschloss ich, ein kleines Skript zu erstellen, um es zu überprüfen, und was sah ich?
1. Es gibt keine Taktnummer in den Parametern, an der der Wert abgelesen werden soll.
2. Kennung der Eigenschaft:
OBJPROP_PRICE
Preis koordinieren
modifier=Nummer des Ankerpunkts
es ist nur der Ankerpunkt!
Ja, im Grunde genommen, wenn ich diese Linie im Code zeichne, habe ich diese Punkte bereits! Warum muss ich sie kennen? Worin liegt eigentlich der Sinn der Sache?
Wie kann ich den Preiswert dieser Linie anderswo erhalten?
Es stellt sich heraus, dass dies ist.
prop_modifier
[in] Modifikator der angegebenen Eigenschaft. Bei der ersten Option ist der Standardwert für den Modifikator 0. Für die meisten Eigenschaften ist kein Modifikator erforderlich. Bezeichnet eine Ebenennummer in denFibonacci-Werkzeugen und im grafischen Objekt Andrews' Pitchfork. Die Nummerierung der Ebenen beginnt bei Null.
Ergibt das überhaupt keinen Sinn? Wird nach Befestigungspunkten für IRGENDEINE Ventilatorleitung gesucht? Das ist Blödsinn. Verzeihung.
Artyom, könnten Sie hier bitte etwas mehr ins Detail gehen?
Entweder war ich vorher nicht sehr aufmerksam, oder die Dokumentation wurde überarbeitet... Ich weiß es nicht.
Aber ich dachte immer, dass ObjectGetDouble den Linienpreis für einen bestimmten Balken (ich meine den Preis) zurückgibt. Und hier beschloss ich, ein kleines Skript zu erstellen, um es zu überprüfen, und was sah ich?
1. Es gibt keine Taktnummer in den Parametern, an der der Wert abgelesen werden soll.
2. Kennung der Eigenschaft:
OBJPROP_PRICE
Preis koordinieren
modifier=Nummer des Ankerpunkts
es ist nur der Ankerpunkt!
Ja, im Grunde genommen, wenn ich diese Linie im Code zeichne, habe ich diese Punkte bereits! Warum muss ich sie kennen? Worin liegt eigentlich der Sinn der Sache?
Wie kann ich den Preiswert dieser Linie anderswo erhalten?
Es stellt sich heraus, dass dies ist.
prop_modifier
[in] Modifikator der angegebenen Eigenschaft. Bei der ersten Option ist der Standardwert für den Modifikator 0. Für die meisten Eigenschaften ist kein Modifikator erforderlich. Bezeichnet eine Ebenennummer in denFibonacci-Werkzeugen und im grafischen Objekt Andrews' Pitchfork. Die Nummerierung der Ebenen beginnt bei Null.
Ergibt das überhaupt keinen Sinn? Wird nach Befestigungspunkten für JEDE Ventilatorleitung gesucht? Das ist Blödsinn. Entschuldigen Sie bitte.
Ich habe nicht viel mit solchen Objekten gearbeitet. Was liefert diese Funktion für den Trend nach der angegebenen Balkenzeit? Ich habe keine Zeit, das zu überprüfen. Auch wenn es in einer kleinen Schrift geschieht...
ObjectGetValueByTime()