Fehler, Irrtümer, Fragen - Seite 3125

 
Nikolai Semko #:

Gott, diese Pufferanzeiger sind so unangenehm. Unheimlich.
Mit Canvas-Zeichnen ist alles viel einfacher, weniger Code, klarer, vielseitiger und mit völliger Handlungsfreiheit.

Ihre Vorliebe für die Leinwand ist seit langem unübersehbar. Aber nicht jeder ist daran gewöhnt... )))
 
Alexey Viktorov #:
Jeder versteht, dass Sie schon lange eine Vorliebe für Kanvas haben. Aber nicht jeder ist so daran gewöhnt... )))
Das sollten Sie nicht sein.
Die Gewohnheit gehört der Vergangenheit an.
 
Nikolai Semko #:
Das sollten Sie nicht.
Die Gewohnheit gehört der Vergangenheit an.

Ja... wenn ich nicht vorher sterbe...

 
Puffer sind einfacher zu handhaben, aber Sie können alles in Kanvas ausgeben. Andererseits gibt es auch viele verschiedene Arten von Indikatorpuffern in benutzerdefinierten Indikatoren in MQL5. Im Allgemeinen sollte der Programmierer keinen Fehler machen, wenn er eine dieser Methoden wählt. Aber die Wahl sollte immer von der jeweiligen Aufgabe abhängen...
 
Alexey Viktorov #:

Wahrscheinlich ist es keine Krücke, aber bis jetzt habe ich keine Erklärung für das, was vor sich geht. Danke...

Wahrscheinlich hängt es davon ab, welcher Puffer im Build höher ist. Ändern Sie einfach das + in -

und es wird auch funktionieren. Aber ich musste die Dicke im Inneren der Stange lenken.

Der Füllungspuffer hat zwei Farben. Sie müssen beide durch Kommata getrennt eingeben. Die Farbe der Füllung hängt davon ab, welche Farbe höher auf dem Bildschirm steht. Sie geben keine der Farben an - sie wird durch clrNONE ersetzt.

 
Mihail Matkovskij #:
Es ist einfacher, mit Puffern zu arbeiten, aber Sie können alles auf Kanvas ausgeben. Andererseits gibt es bei den benutzerdefinierten Indikatoren in MQL5 auch viele verschiedene Arten von Indikatorpuffern. Im Allgemeinen sollte der Programmierer keinen Fehler machen, wenn er eine dieser Methoden wählt. Aber die Wahl sollte immer von der jeweiligen Aufgabe abhängen...

Natürlich ist die Arbeit mit Puffern schwieriger. Mit einer Leinwand ist es einfacher.
Sie können #property nicht in eine Funktion einfügen.

Und Sie können eine Kanvas-Zeile mit einer einzigen Zeile hinzufügen, indem Sie ein Array an eine Funktion übergeben.
Persönlich verwende ich Kanvas eher zur Visualisierung einiger Prozesse und Zwischendaten während der Entwicklung. Auf diese Weise ist es einfacher, Probleme zu erkennen und optimale Lösungen zu finden.
Es sei denn, es handelt sich um primitive Algorithmen, die auf Schnittmengen basieren.
Hier ist zum Beispiel meine aktuelle Arbeit.
All dieses Furnier ist Service und hilft mir sehr, optimale Lösungen zu finden.
Mit Puffern ist das natürlich nicht möglich. Darüber hinaus funktioniert diese Lösung auch in Expert Advisors und Indikatoren. Und der Code funktioniert auch in MT4.

Und es ist sehr einfach und schnell zu realisieren. Buchstäblich im Handumdrehen.
 
Nikolai Semko #:

Natürlich ist die Arbeit mit Puffern schwieriger. Mit einer Leinwand ist es einfacher.
Sie können #property nicht in eine Funktion einfügen.

Und Sie können eine Kanvas-Zeile mit einer einzigen Zeile hinzufügen, indem Sie ein Array an eine Funktion übergeben.
Ich persönlich verwende Kanvas eher zur Visualisierung einiger Prozesse und Zwischendaten während der Entwicklung. Auf diese Weise ist es einfacher, Probleme zu erkennen und optimale Lösungen zu finden.
Es sei denn, es handelt sich um primitive Algorithmen, die auf Schnittmengen basieren.
Hier ist zum Beispiel meine aktuelle Arbeit.
All dieses Furnier ist Service und hilft mir sehr, optimale Lösungen zu finden.
Mit Puffern ist das natürlich nicht möglich. Darüber hinaus funktioniert diese Lösung auch in Expert Advisors und Indikatoren. Und der Code funktioniert auch in MT4.

Und das ist sehr einfach und schnell umgesetzt. Buchstäblich im Handumdrehen.

Dieses Problem erfordert den Einsatz von Canvas. Natürlich haben wir keine andere Wahl. Es gibt zwar eine Möglichkeit, aber das ist DirectX. Aber ich weiß nicht, wer es in MQL-Anwendungen verwendet. Ich habe noch nie solche Beispiele gesehen. Kanvass hat mir sehr geholfen, als ich den Oszillator zusammen mit Trendindikatoren im Chart ausgeben musste. Natürlich kann ich ein solches Ergebnis nicht mit benutzerdefinierten Indikatormechanismen erreichen. Ich habe zwei Klassen auf Basis von CCanvas erstellt. Einer von ihnen zeigt Oszillatoren an, der zweite - Trendindikatoren mit Methoden, bei denen Arrays von Indikatorwerten, Arrays von Farben und Arrays von Farbindizes übergeben werden. Aber wenn ich einen Indikator anzeigen muss, verwende ich die Methoden der benutzerdefinierten Indikatoren. Ich weiß nicht, warum. Entweder ist es eine Gewohnheit oder ich möchte den Code nicht zu sehr verkomplizieren, wenn der Hauptpunkt und die Komplexität in der Berechnung der Werte liegt, nicht in der Methode ihrer Ausgabe.

 
Mihail Matkovskij #:
Aber die Wahl sollte immer von der jeweiligen Aufgabe abhängen...

Ich habe vergessen, es dir zu sagen. Die Verwendung von Kanvas ist auch bei Robotern sehr nützlich, wenn Sie berechnete Werte in einem Diagramm ausgeben müssen, aber keine Indikatorpuffer zur Verfügung stehen. Dann können die Werte oder Signale nur dann über Kanvas ausgegeben werden, wenn es genügend davon gibt (nicht 2-3 Signale, die über grafische Objekte ausgegeben werden können).

 
Nikolai Semko #:

Gott, diese Pufferanzeiger sind so unangenehm. Unheimlich.
Mit Canvas-Zeichnung ist alles viel einfacher, es gibt weniger Code, klarer, universeller und völlige Handlungsfreiheit.

Die Vielseitigkeit eines Canvas endet, wenn seine Werte von einem anderen EA/Indikator bezogen werden müssen.

Oder haben Sie auch dafür schon eine Lösung gefunden? )

 
Andrey Khatimlianskii #:

Die Vielseitigkeit von Kanvas endet, wenn seine Werte von einem anderen EA/Indikator bezogen werden müssen.

Oder haben Sie auch dafür schon eine Lösung gefunden? )

Was sind die Probleme, Andrei?
Sie bilden eine Datenstruktur oder ein Array von Strukturen im EA oder im Indikator und senden es an eine Ressource.
Und auf der Empfängerseite lesen Sie diese Struktur oder dieses Array von Strukturen.
Das ist sogar noch bequemer, weil Sie mit Namen und verschiedenen Datentypen in der benötigten Größe zu tun haben, anstatt mit nummerierten Doppel-Arrays in der gesamten Länge von Anführungszeichen.
Wenn es sich um einen Indikator für einen Markt handelt, müssen Sie jedoch die Klasse bereitstellen, die Daten aus der Ressource liest.
Der Client muss lediglich ein Include hinzufügen und eine Instanz der Klasse deklarieren. Vielleicht auch Methoden von OnTimer und OnTick aufrufen. Und dann wird diese Instanz der Klasse immer die tatsächlichen Daten des Leseanzeigers in Form einer bequem lesbaren Struktur oder eines Arrays von Strukturen haben.