Diskussion zum Artikel "Indikatoren mit Hintergrund: Kanäle mit Transparenz"

 

Neuer Artikel Indikatoren mit Hintergrund: Kanäle mit Transparenz :

In diesem Artikel stelle ich eine Methode zur Erstellung von nutzerdefinierten Indikatoren vor, deren Zeichnungen mit der Klasse CCanvas aus der Standardbibliothek erstellt werden, und zeige die Eigenschaften von Charts für die Koordinatenkonvertierung. Ich werde speziell auf Indikatoren eingehen, die den Bereich zwischen zwei Linien mit Transparenz füllen müssen.

Jemand würde fragen, warum man Canvas anstelle des bereits für nutzerdefinierte Indikatoren verfügbaren DRAW_FILLING verwenden sollte? Dafür gibt es mindestens zwei Gründe:

  1. Die Farben des Indikators werden mit den Farben anderer Indikatoren, Kerzen und Chart-Objekte gemischt.
  2. DRAW_FILLING erlaubt keine Transparenz.

Chart mit 2 Indikatoren und 1 Objekt

Autor: Samuel Manoel De Souza

 

Guten Tag!


Ist es realistisch, dass beim Scrollen des Charts der Rahmen den Candlesticks ohne Verzögerung folgt, wie es bei den Objekten der Fall ist?

 
Petr Zharuk #:

Viel Spaß!

Ist es realistisch, dass beim Scrollen des Charts der Rahmen den Candlesticks ohne Verzögerung folgt, wie es bei den Objekten der Fall ist?

Es ist möglich, mit OBJ_BITMAP zu fummeln, wenn die linke obere Ecke des Bildes an die Kurszeit mit Überlappung des Fensters selbst gebunden ist, d.h. wenn die Größe des Canvas größer ist als die Größe des Fensters selbst.
In diesem Fall kann man eine fast vollständige Abwesenheit von Verzögerung erreichen.
Aber es ergibt sich das Problem der Änderung der vertikalen Skala und das Ereignismodell wird viel komplizierter.
Deshalb würde ich persönlich dies nicht tun.
Es gibt noch eine andere Alternative - das native Diagramm zu deaktivieren und ein eigenes auf der Leinwand zu erstellen. Dies ist jedoch nur geeignet, wenn Sie keine anderen Indikatoren in diesem Diagramm verwenden müssen.

 

Gute Arbeit, Samuel!

Aber ich sah eine Situation hier: mit ihm in meinem Indikator, jedes Mal, wenn die Preise Achse neu skaliert, sehen wir, dass CANVAS nicht selbst aktualisieren.

Siehe die Bilder:


und hier, nachdem ich manuell die Größe des Fensters und alles war automatisch festgelegt, wenn die aktuelle Kerze überquerte die Grenzen des Charts verursacht eine vollständige Neuskalierung der Kerzen, die CANVAS nicht wieder neu skalieren, wie es sollte:




Außerdem sehe ich, dass die Funktion DrawFilling viel Zeit verbraucht, wenn wir sie zweimal verwenden, d.h., um 2 Farben zwischen drei Linien zu zeichnen (siehe oben). Ich denke, es wäre interessant, wenn wir die Routine auf Geschwindigkeit optimieren könnten.

Wie auch immer, großartige Arbeit und Artikel - Glückwunsch!