Jump to content


Photo

Horizontale Bereiche in Indikatorfenster einfärben


Wichtiger Hinweis für Besucher der Community!

Das Erstellungsdatum des von Dir aufgerufenen Themas liegt bereits einige Zeit zurück. Wir möchten darauf hinweisen, den Inhalt der Diskussion auf seine Aktualität hin zu prüfen. Weitere Informationen findest Du auf dieser Seite.

  • Please log in to reply
19 replies to this topic

#1 HechTrader

HechTrader

    Runners

  • Addict
  • PipPip
  • 34 posts
  • 128 thanks

Posted 25 January 2016 - 11:03 AM

Hallo Community,

 

kann mir jemand sagen, ob / wie es möglich ist, in einem selbst geschriebenen Indikator im "separate window" horizontale Bereiche zwischen definierten Werten farblich zu hinterlegen? Ich stelle mir das so vor (natürlich in weniger aggressiven Farben) wie im Anhang dargestellt.

 

Danke und Grüße.

Attached Files


  • 0

Thanked by 4 Members:
whipsaw , Kleinerbroker , chimbonda , Vola

#2 Kleinerbroker

Kleinerbroker

    Floor Broker

  • Validating
  • PipPipPipPipPipPip
  • 1,504 posts
  • 9809 thanks
  • Wohnsitz:BW

Posted 25 January 2016 - 08:53 PM

Hi , "ObjectCreate (spezifikationen)"  zeichne das Rechteck und gebe dabei das Fenster an ( auswendig : Der Preischart ist die Nummer Null, das 1. seperate Fenster dann die Nummer 1, bitte prüfen) . Das Rechteck muss im Hintergrund gezeichnet sein, anderenfalls verdeckt es Deine anderen Zeichnungen . Hoffe hilft . KB

 

http://docs.mql4.com...t/obj_rectangle

 

if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE,sub_window,time1,price1,time2,price2))

  • 0
Do not trade alone

Thanked by 5 Members:
whipsaw , oldschuren , Vola , WOGO , Rumpel

#3 HechTrader

HechTrader

    Runners

  • Addict
  • PipPip
  • 34 posts
  • 128 thanks

Posted 26 January 2016 - 01:04 PM

Sauber danke. Ich prüfe mal.


Gesendet von iPhone mit Tapatalk
  • 0

Thanked by 2 Members:
whipsaw , Vola

#4 HechTrader

HechTrader

    Runners

  • Addict
  • PipPip
  • 34 posts
  • 128 thanks

Posted 27 January 2016 - 11:34 AM

Stelle mich doof an und komme nicht weiter. Habe mein Code-Schnippsel im Indikator in OnCalculate am Ende eingebaut:

 

 

         if(!ObjectCreate("Strong Bull",OBJ_RECTANGLE,1,Time[rates_total-1],0.5,Time[0],1))            {            Print("Cannot create: StrongBull");            } 

 

 

Der soll mir im Indifenster also ein Rechteck createn vom letzten Bar bis zum aktuellen Bar. Linker Anchor Point soll 0,5 sein, rechter soll 1 sein. WTF? Kriege immre die "Cannot Create"-Meldung.

 

Habt Ihr eine Idee?

 

Danke und Gruß!


  • 0

Thanked by 2 Members:
whipsaw , Vola

#5 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 27 January 2016 - 12:41 PM

Der erste Parameter ist nicht der Name sondern die Chart_ID. Vor das "Strong Bull" muss also noch was rein.

 

Siehe auch hier: https://docs.mql4.co...ts/objectcreate


  • 0

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 2 Members:
whipsaw , Vola

#6 HechTrader

HechTrader

    Runners

  • Addict
  • PipPip
  • 34 posts
  • 128 thanks

Posted 27 January 2016 - 12:45 PM

There are two variants of the function:

 

The function creates an object with the specified name, type, and the initial coordinates in the specified chart subwindow:

 

bool  ObjectCreate(   string        object_name,   // object name   ENUM_OBJECT   object_type,   // object type   int           sub_window,    // window index   datetime      time1,         // time of the first anchor point   double        price1,        // price of the first anchor point   datetime      time2=0,       // time of the second anchor point   double        price2=0,      // price of the second anchor point   datetime      time3=0,       // time of the third anchor point   double        price3=0       // price of the third anchor point   ); 

 

 

 

Auch mit Deiner Variante funktioniert es nicht, die hatte ich anfänglich schon probiert.


Edited by whipsaw, 31 January 2016 - 09:40 AM.

  • 0

Thanked by 2 Members:
whipsaw , Vola

#7 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 27 January 2016 - 01:41 PM

Wenn Du Skype hast, versuche ich Dir mal live zu helfen.

Meine Kontaktdaten findest Du unter dem Link in meiner Signatur wink.gif.


  • 0

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 2 Members:
whipsaw , Vola

#8 HechTrader

HechTrader

    Runners

  • Addict
  • PipPip
  • 34 posts
  • 128 thanks

Posted 27 January 2016 - 05:31 PM

Hi Conglom-o,

 

das wird schwierig, weil ich immer erst spät von der Arbeit komme. Skype habe ich auch nicht und während der Arbeit geht es nicht.....

 

Würdest Du mir auch hier helfen? Ich habe mal einen einfachen Indikator angehängt, in dem ich testweise auf der Horizontalen die Bereiche haben möchte. Ein Bereich wäre zB zwischen Time[rates_total-1], 0 und Time[0], 1 grün einzufärben. Background, Transparenz etc erstmal alles egal, es geht nur um das Erstellen des Rechtecks, was bei mir immer scheitert.

 

//+------------------------------------------------------------------+//|                                                    Rectangle.mq4 |//|                                                                  |//|                                             https://www.mql5.com |//+------------------------------------------------------------------+#property copyright ""#property link      "https://www.mql5.com"#property version   "1.00"#property strict#property indicator_separate_window#property indicator_buffers 1#property indicator_plots   1//--- plot RelativeChange#property indicator_label1  "RelativeChange"#property indicator_type1   DRAW_LINE#property indicator_color1  clrRed#property indicator_style1  STYLE_SOLID#property indicator_width1  1//--- indicator buffersdouble         RelativeChange[];//+------------------------------------------------------------------+//| Custom indicator initialization function                         |//+------------------------------------------------------------------+int OnInit()  {//--- indicator buffers mapping   SetIndexBuffer(0,RelativeChange);   //---   return(INIT_SUCCEEDED);  }//+------------------------------------------------------------------+//| Custom indicator iteration function                              |//+------------------------------------------------------------------+int OnCalculate(const int rates_total,                const int prev_calculated,                const datetime &time[],                const double &open[],                const double &high[],                const double &low[],                const double &close[],                const long &tick_volume[],                const long &volume[],                const int &spread[])  {//---      ArraySetAsSeries(close,true);   ArraySetAsSeries(time,true);      int bars = rates_total-1;   if(prev_calculated>0) bars=rates_total-prev_calculated+1;      for(int i=bars-1;i>0;i--)   {   RelativeChange[i] = ((Close[i]/Close[i+1])-1)*100;   }//--- return value of prev_calculated for next call   return(rates_total);  }//+------------------------------------------------------------------+

  • 0

Thanked by 2 Members:
whipsaw , Vola

#9 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 27 January 2016 - 11:35 PM

Ich würde mal an verschiedenen Stellen Print Befehle einbauen und die wichtigen Werte überprüfen.


  • 0

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 3 Members:
whipsaw , Kleinerbroker , Vola

#10 Kleinerbroker

Kleinerbroker

    Floor Broker

  • Validating
  • PipPipPipPipPipPip
  • 1,504 posts
  • 9809 thanks
  • Wohnsitz:BW

Posted 28 January 2016 - 09:11 PM

Hi Conglom-o,

 

das wird schwierig, weil ich immer erst spät von der Arbeit komme. Skype habe ich auch nicht und während der Arbeit geht es nicht.....

 

Der Code den Du dann beifügst und um den sich dann Conglom-o kümmern möge, enhält 0,0 von einem Rechteck .

 

Darf ich Dich darauf hinweisen, dass dem Link in meinem Post #2 ein kompletter Code zur Arbeit mit Rechtecken angefügt ist ? Wenn Du Dir diesen Code selber erarbeitest,

erwirbst Du Dir das Grundverständnis ohne das es nicht möglich sein wird .

 

Der Schlüssel ist der Befehl Objectcreate() zu dem es unglaublich viele Anwendungsmöglichkeiten gibt . Eine davon ist das Rechteck .

 

Viel Erfolg .

 

Bei konkreten Codebeispielen an denen Du selber arbeitest , da werde ich Dir sehr gerne helfen ( auch am Abend oder am WE, mir und vielen hier geht es wie Dir ) .

 

KB


  • 0
Do not trade alone

Thanked by 4 Members:
whipsaw , WOGO , Vola , Rumpel

#11 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 28 January 2016 - 10:18 PM

Der Code den Du dann beifügst und um den sich dann Conglom-o kümmern möge, enhält 0,0 von einem Rechteck .

 

Ich bin jetzt einfach mal davon ausgegangen, dass dies nur ein Teil des Quelltextes ist und das Ding nicht nach der Initialisierung aufhört.


  • 0

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 2 Members:
whipsaw , Vola

#12 HechTrader

HechTrader

    Runners

  • Addict
  • PipPip
  • 34 posts
  • 128 thanks

Posted 29 January 2016 - 01:33 PM

Hallo zusammen, danke für eure Unterstützung! Ich habe es geschafft, in dem ich in der OnInit die Objekte create und per ObjectMove die Ankerpunkte anhand von T[0] aktualisiere. Hab's jetzt durchblickt.
Eine Frage noch: wenn ich das ObjectCreate in der OnCalculate einbauen würde, würde er ja mit jedem Tick bzw Aktualisierung versuchen, die selben Objekte erneut zu bauen oder? Dann würde er Errors ausgeben?!
Schönes WE und Thx again


Gesendet von iPhone mit Tapatalk
  • 1

Thanked by 2 Members:
whipsaw , Vola

#13 WOGO

WOGO

    Floor Broker

  • Developer
  • 1,008 posts
  • 6800 thanks

Posted 29 January 2016 - 05:04 PM

Hi,

 

ObjectCreate ist hier nicht zielführend. Du musst das Rechteck in OnCalculate mit der ObjectSet-Funktion anpassen, d.h. das rechte Ende auf die Zeit des aktuellen Bars bringen und oberes und unteres Ende auf deinen gewünschten Bereich setzen.


  • 0
„Sicher ist, dass nichts sicher ist. Selbst das nicht.“
(Joachim Ringelnatz)

Thanked by 2 Members:
whipsaw , Vola

#14 HechTrader

HechTrader

    Runners

  • Addict
  • PipPip
  • 34 posts
  • 128 thanks

Posted 29 January 2016 - 06:13 PM

Hab ich doch geschrieben, mache ich mit ObjectMove. Und ObjectCreate in OnInit, irgendwo muss ich die ja erstellen.


Gesendet von iPhone mit Tapatalk
  • 0

Thanked by 2 Members:
whipsaw , Vola

#15 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 29 January 2016 - 06:25 PM

Ich weiß nicht, ob es eine Fehlermeldung gibt, wenn Du das Objekt mehrfach bauen willst. Glaube nicht. Sauberer ist es natürlich, den Quelltext so zu gestalten, dass es nur 1x gezeichnet wird. Am besten mit einer ObjectFind Abfrage.


  • 0

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 3 Members:
whipsaw , Vola , oldschuren

#16 HechTrader

HechTrader

    Runners

  • Addict
  • PipPip
  • 34 posts
  • 128 thanks

Posted 29 January 2016 - 07:02 PM

Aber das Prinzip, die in der Init zu bauen und in Calculate nur noch die Ankerpunkte zu aktualisieren ist ok oder?


Gesendet von iPhone mit Tapatalk
  • 0

Thanked by 3 Members:
whipsaw , Vola , oldschuren

#17 WOGO

WOGO

    Floor Broker

  • Developer
  • 1,008 posts
  • 6800 thanks

Posted 29 January 2016 - 07:16 PM

Hab ich doch geschrieben...

Nö, hast du nicht! wwink.gif

 

Wenn du Objekte in einem Indikator verwendest, dann erstellst du diese mit ObjectCreate. Wo du das machst ist abhängig vom Anwendungsfall.

In deinem Fall, wo das selbe Rechteck immer im Indikatorfenster sein soll, kannst du das durchaus in der OnInit() machen.

Die Anpassung der Eckpunkt des Rechtecks machst du aber nicht mit ObjectMove sondern mit ObjectSet. 

ObjectMove verschiebt dir dein Rechteck ja nur, d.h. wenn dein Indikator verglichen zum Ursprungsstatus stark ausschlägt, deckst du den kompletten Bereich nicht mehr ab.

Probier es einfach mal aus, was der Unterschied der einzelnen Funktionen ist! So findest du auch am einfachsten heraus, wie welche Funktion deinen Anwendungsfall beeinflußt.


  • 0
„Sicher ist, dass nichts sicher ist. Selbst das nicht.“
(Joachim Ringelnatz)

Thanked by 4 Members:
whipsaw , Vola , oldschuren , conglom-o

#18 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 29 January 2016 - 08:37 PM

Man könnte es auch so ausdrücken: ObjectMove macht das, was der Name sagt: ein Objekt verschieben aber NICHT seine Größe ändern.

Es wäre sicherlich von großem Vorteil gewesen, wenn Du eventuell Deinen erweiterten Quelltext gepostet hättest - in dem von Dir bisher gezeigten Part werden nämlich weder Objekte gezeichnet noch verändert.


  • 0

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 4 Members:
whipsaw , Vola , WOGO , oldschuren

#19 HechTrader

HechTrader

    Runners

  • Addict
  • PipPip
  • 34 posts
  • 128 thanks

Posted 30 January 2016 - 08:58 PM

Danke für die Antworten. ObjectMove verschiebt nicht das ganze Objekt sondern einen der Ankerpunkte. Und wenn ich nur den rechten Ankerpunkt auf T[0] bewege und den linken unverändert lasse, dann verschiebe ich es nicht, sondern ich vergrößere es. Funktioniert ganz wunderbar. Naechstes Mal gibt's auch wieder Quelltext :-)


Gesendet von iPhone mit Tapatalk
  • 0

Thanked by 2 Members:
WOGO , Vola

#20 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,204 posts
  • 13772 thanks
  • Wohnsitz:O-Town

Posted 30 January 2016 - 11:25 PM

Danke für die Antworten. ObjectMove verschiebt nicht das ganze Objekt sondern einen der Ankerpunkte. Und wenn ich nur den rechten Ankerpunkt auf T[0] bewege und den linken unverändert lasse, dann verschiebe ich es nicht, sondern ich vergrößere es. Funktioniert ganz wunderbar. Naechstes Mal gibt's auch wieder Quelltext :-)

 

Also tut es nicht das, was es uns sagen will. Danke für die Aufklärung. Nachteil am ObjectMove scheint aber zu sein, dass man nur EINEN Ankerpunkt auf einmal verschieben kann (daher wohl der Name). Mit ObjectSet kann man alle gleichzeitig neu definieren. Wenn es für Dich aber reicht, nur einen anzupassen und es nun funktioniert, ist das doch super good.gif.


  • 0

Wann kaufen? Schau in den Investment Kalender auf Marktgedanken.

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 2 Members:
Vola , whipsaw

Wichtiger Hinweis für Besucher der Community!

Das Erstellungsdatum des von Dir aufgerufenen Themas liegt bereits einige Zeit zurück. Wir möchten darauf hinweisen, den Inhalt der Diskussion auf seine Aktualität hin zu prüfen. Weitere Informationen findest Du auf dieser Seite.


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users