Einzelnen Beitrag anzeigen
  #7 (permalink)  
Alt 03.05.18
traderdoc traderdoc ist gerade online
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Wenn nur die Fläche zwischen zwei Zeitpunkten farblich hervorgehoben werden soll, dann geht das rel. einfach über

ObjectCreate(chart_ID,name,OBJ_RECTANGLE,sub_windo w,time1,price1,time2,price2)

Wenn das Chart eine Kerze weiterrückt, dann wird das Rechteck über ObjectMove() komplett verschoben oder gelöscht und neu gezeichnet, wenn sich das Rechteck nach rechts verbreitert.

Eine echte Herausforderung wäre jedoch, die Integralfläche! zwischen zwei EMAs
zwischen zwei Zeitpunkten vollständig!! farblich zu zeichnen.
D.h. es würde eine farbliche Fläche vom Über- bzw. Unterschreiten der EMAs bis zur aktuellen Kerze, max. bis zum nächsten Unter- bzw. Überschreiten der EMAs benötigt.
Das ist in der Tat nicht einfach, aber lösbar.

Das eigentliche Problem hier besteht in der Grenze des Machbaren mit MQL. Es existiert keine Funktion, die diese Integralfläche am Stück darstellen kann. Hier müssen wir uns iterativ mit einzelnen aneinanderliegenden Rechtecken und Dreiecken behelfen, die in Summe eine grafische Fläche ergeben.

Prinzipielles Vorgehen:
1. Zwischen der oberen EMA und der unteren EMA und dem Zeitintervall zwischen zwei Kerzen, werden jeweils maximal 3 farbige Objekte gezeichnet.
Entweder nur 1 Rechteck oder 1 Rechteck und 1 oder 2 Dreiecke.
2. Man nimmt also die Zeiten von der ersten geschlossenen Kerze und der zweiten geschlossenen Kerze nach der Kreuzung.
3. Danach ermittelt man die dazugehörigen Preise der beiden EMAs. Daraus ergeben sich also immer Wertepaare aus einer Zeit und den beiden EMA-Werten.
4. Sollten die zu einem Zeitintervall gehörenden jeweiligen zwei oberen und zwei unteren EMA-Werte identisch sein, dann kann im einfachsten Fall ein farbiges Rechteck gezeichnet werden.
5. Sollten die jeweiligen beiden EMA-Werte des Zeitintervalls unterschiedlich sein, dann müssen wir zusätzlich auf ein oder ggf. zwei Dreiecke zurückgreifen, wobei die Hypothenuse der Dreiecke immer die Linie des EMA darstellt.
6. Vertikal gesehen zwischen den beiden Dreiecken wird dann letztendlich das verbleibende Rechteck gezeichnet.
7. Damit nun bei jedem Periodenwechsel die Objekte mitwandern, müssen sie per ObjectMove() um jeweils eine Periode nach links verschoben werden.
8. In dem neuen Zeitintervall werden die Objekte wie oben beschrieben dann gezeichnet.

Einzig die Spitzen der Flächen links der linken Begrenzung der gesamten Fläche bis zur direkten Kreuzung wird nicht farbig sein, weil die Kreuzung mehr oder weniger zwischen den Kerzen liegt und dort keine auswertbare Zeit liegt. Ebenfalls die Spitze nach rechts gesehen, wenn die EMAs das zweite Mal kreuzen.

Das ist dann auch schon "alles".

Viel Spaß beim Experimentieren.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.