Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   ATR graphisch abbilden (http://www.expert-advisor.com/forum/showthread.php?t=6166)

Leopold 08.08.18 21:27

Zitat:

Zitat von Angel (Beitrag 41364)
Ich frage mich nur, wieso eine Problemstellung hin- und her- und durchgekaut und die Hintergründe erfragt werden mussen, wenn ich doch nur eine einfache Frage hier stelle, nämlich wie ich die ATR-Werte von Kerzen - durch Code - miteinander verbinden lassen will.

Ach da ist sie ja, deine Frage.

Wenn du die Verbindung noch mit OBJ_TREND machen willst, hier deine Antwort:
Code:

//+------------------------------------------------------------------+
//| Create a trend line by the given coordinates                    |
//+------------------------------------------------------------------+
bool TrendCreate(const long            chart_ID=0,        // chart's ID
                const string          name="TrendLine",  // line name
                const int            sub_window=0,      // subwindow index
                datetime              time1=0,          // first point time
                double                price1=0,          // first point price
                datetime              time2=0,          // second point time
                double                price2=0,          // second point price
                const color          clr=clrRed,        // line color
                const ENUM_LINE_STYLE style=STYLE_SOLID, // line style
                const int            width=1,          // line width
                const bool            back=false,        // in the background
                const bool            selection=true,    // highlight to move
                const bool            ray_right=false,  // line's continuation to the right
                const bool            hidden=true,      // hidden in the object list
                const long            z_order=0)        // priority for mouse click
  {
//--- set anchor points' coordinates if they are not set
  ChangeTrendEmptyPoints(time1,price1,time2,price2);
//--- reset the error value
  ResetLastError();
//--- create a trend line by the given coordinates
  if(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,time1,price1,time2,price2))
    {
      Print(__FUNCTION__,
            ": failed to create a trend line! Error code = ",GetLastError());
      return(false);
    }
//--- set line color
  ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set line display style
  ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- set line width
  ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- display in the foreground (false) or background (true)
  ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the line by mouse
//--- when creating a graphical object using ObjectCreate function, the object cannot be
//--- highlighted and moved by default. Inside this method, selection parameter
//--- is true by default making it possible to highlight and move the object
  ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
  ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- enable (true) or disable (false) the mode of continuation of the line's display to the right
  ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- hide (true) or display (false) graphical object name in the object list
  ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart
  ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution
  return(true);
  }


Angel 09.08.18 02:21

@traderdoc : Also bis heute schätzte ich Deine Beiträge ja sehr... aber jetzt fehlen mir hinsichtlich der Konstruktivität Deines letzten Beitrages

Zitat:

Na dann sollte doch dieser Indikator keine so große Herausforderung darstellen.

traderdoc
die Worte. Sorry.



@Leopold :

Ok. So weit war ich schon. Aber wie würdest Du die time-Variablen

time1,price1,time2,price2

bei zB 5 - Minuten - Kerzen mit welchen Werten "befüllen"?
Für die "prices" nehme ich den Wert der jeweiligen ATR.
Aber für "time", da kann ich dem MT4 ja nicht sagen "Nimm die 85te Kerze ab der aktuellen und das ist time1"

traderdoc 09.08.18 06:40

Wenn Du bereits einen Indikator programmiert hast, dann sind doch schon Erfahrungen vorhanden. Ich sagte bereits, dass diese Aufgabe über einen Indikator gelöst werden kann.
Wo liegt denn nun das Problem? Ich verstehe zunehmenderweise nicht, was Du hier eigentlich willst. Den kompletten Code wird es wahrscheinlich nicht geben.

Wieso fehlen Dir da die Worte?

traderdoc

Angel 09.08.18 07:00

@traderdoc Ja, es sind schon Erfahrungen vorhanden und sie reichen aus, um zu wissen, dass das für mich bestehende, angeführte Problem durch einen Indikator gelöst werden kann und nicht zB durch diskrete Rechenergebnisse, denn ich will ja, wie anfangs erwähnt, die Kurve darstellen, um sie optisch zu erfassen.

Nein, sie reichen noch nicht aus, um das für mich bestehende Problem zu lösen.

Nein, ich will nicht so vermessen sein, den kompletten Code zu bekommen, sondern nur einzelne konstruktive Hinweise, aber auch wenn ich dafür im Forum "Codeschnipsel" sein sollte, dann ziehe ich mit dem Thread gerne um .

Mein letzter Beitrag an @Leopold hinsichtlich time1,price1,time2,price2 ist das, was mir von Anfang an klar war, aber wie schreibe ich dem MT4 zB die "time1" - in Sekunden seit x.x.1970 oder wie sonst? Gibt es eine andere, elegantere Möglichkeit? Ich würde gerne mal so ein paar Codeschnipsel sehen, wie andere Programme das bestimmen.

MA-EA 09.08.18 07:06

Aber irgendwie reichts nicht, zu erklären, was Du mit Kerzen verknüpfen meinst. Wenn Du irgendwelche Gaps mit einbeziehen willst: Der ATR macht das anscheinend bereits.

Wie man die Vola mit nem Kanal darstellen soll, weiß ich immer noch nicht. :confused:

Hilfreich wärn vielleicht mal Skizzen oder Beispiel-Bilder, wie das Ganze aussehn soll.

Und falls ich sie nicht übersehn habe, Beispiel-Formeln. Bis jetzt kapiert hier irgendwie Niemand, was Du eigentlich willst. :confused: ;)

traderdoc 09.08.18 07:53

Dann sage ich es mal mit ganz einfachen Worten.

Der Indikator lebt von Arrays. D.h. alle auf dem Chart auszugebenden Werte (z.B. auch Linien) müssen vorher in Arrays geschrieben werden.
Das ist eigentlich die ganze Kunst. Und nun musst Du Dir nur noch überlegen, welche Werte in das (die) Array(s) geschrieben werden.

traderdoc

Angel 09.08.18 08:54

@MA-EA: Man nehme zB einen gleitenden Durchschnitt, zB 50er eines beliebigen Timeframe und trage die zu der jeweiligen Kerze zugehörige ATR mit Faktor x in positiver und negativer Richtung auf, was als Einstieg oder Ausstieg dienen mag. Diese Werte x*ATR verbinde man zu einem Kanal.
So , jetzt bin ich von A-Backen auf Kuchenbacken gekommen :confused:
Ich hätte sollen schreiben, dass ich den zu jeder Kerze gehörigen gleitenden Durchschnitt berechnen und die jeweiligen Punkte miteinander verbinden möchte. Aber dann wäre wohl der Hinweis gekommen "Dann nimm doch gleich den EA, der mitgeliefert wird" oder die Frage, ob es sich um EMA, SMA handeln soll oder sich der GD auf Close, High, Low oder elfundachtzig mal das Open oder sonstwas beziehen soll. Nun gut.

@traderdoc Danke für den Hinweis. Ich muss mich also für arrays fit machen. Ich habe es befürchtet, weil ich es auf den ersten Blick furchtbar kompliziert finde (meine 14-Tage-Pivots kommen ohne arrays aus, was den Code natürlich aufbläht :confused: ). Aber ok, ich weiß nun die Richtung. Danke.

Leopold 09.08.18 09:38

Zitat:

Zitat von Angel (Beitrag 41381)
@traderdoc Danke für den Hinweis. Ich muss mich also für arrays fit machen. Ich habe es befürchtet, weil ich es auf den ersten Blick furchtbar kompliziert finde (meine 14-Tage-Pivots kommen ohne arrays aus, was den Code natürlich aufbläht :confused: ). Aber ok, ich weiß nun die Richtung. Danke.

Wie jetzt? Mit der Antwort, dass du Array brauchst bist zu zufrieden? :confused:
Das finde ich jetzt echt witzig. :D

Hast du dir den MA Indikator überhaupt angesehen?? Spätestens dort müsste dir das bewusst worden sein.
Aber gut, vielleicht ist jetzt letztendlich alles geklärt.

---Leopold---

traderdoc 09.08.18 10:05

Wenn Dein Pivot-Indikator wirklich so funktionieren soll wie eben ein richtiger Indikator, dann geht da nur über Arrays!
Auch alle anderen Indikatoreigenschaften, die man dann über Variablen einstellen könnte bedingen die vorgegebene Programmstruktur üblicher Indikatoren.

Daher würde ich Dir tunlichst empfehlen, jegliche Zeit nicht damit zu verschwenden, keine Arrays zu benutzen.
Dass Arrays nicht einfach sind, davon kann z.B. @MA-EA ein langes Lied singen.
Aber sie sind nun mal notwendig bei Indikatoren und auch ansonsten vereinfachen sie die Programmierung.

Daher: Richtig oder gar nicht!

traderdoc

PS. Ich denke, nun ist für die Vorgehensweise alles geschrieben worden. Der Rest liegt an Dir, und da sind wir wieder bei dem Post,
wo Dir die Worte fehlten. Evtl. hast Du sie aber nun.

Angel 09.08.18 11:49

@Leopold Ich hsah mir Deinen Code an. Der brachte mich hinsichtlich der Bestimmung der X-Koordinaten nicht weiter. Dass das Format "time1, price1.." bestehen muss, war mir klar und ist auch aus der Dokumentation ersichtlich. Was nicht ersichtlich und trivial ist, ist wie "time1" , also die Zeitkomponente, angewendet wird, also was "reinkommt", ich schreibe ja nicht einfach in H1 "09.08.2019, 11:38:00" als "time1".

@traderdoc Die Arrays, da sind wir uns nun einig. Ich habe es ja befürchtet. Aber ok. Ich werde versuchen, meinen Pivot-Indikator dahingehend umzuschreiben. Nö, da wo mir die Worte fehlten, sind wir weiter, denn ich habe inzwischen von Dir auf meine Frage keine Gegenfrage oder wie zu dem Zeitpunkt keine Feststellung bekommen. Sind aber Feinheiten. Ich bin Dir ja nicht böse, wie solte ich auch, aber wenn mich jemand etwas fragt oder ich auf etwas antworte, dann bin ich so konkret und definiert wie möglich oder wenn etwas nicht verständlich ist, so hake ich im konstruktiven Sinne nach. Das bläht einen Thread nur auf. Es wäre doch schön , wenn es so laufen würde: "Frage -> Anwort" oder "Frage -> Verständnisfrage -> Antwort auf die Verständnisfrage -> Antwort auf die ursprüngliche Frage", sofern nicht weitere Verständnisfragen anfallen.
Ich meine, Deine vielfältigen - wertvollen - Beiträge habe ich gelesen und weiß, dass Du davon ein Lied singen kannst, wo Du gerade auch solche Dinge angesprochen hast.
Ich meine, wir sind hier zwar in einem Dialog, aber leider nicht in einem, der in 5 Minuten beendet ist, sondern sich aufgrund der Natur der Sache in der Regel über mehrere Tage hinstreckt anstelle in einem Gespräch. Da wäre es doch schön, wenn man schnell auf den Punkt kommt. Mag natürlich auch sein, dass ich zu ungeduldig bin.


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:17 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum