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)

Angel 06.08.18 22:22

ATR graphisch abbilden
 
Hi,

wie so oft versuche ich mich in Grundlagen, um darauf aufzubauen. Auch wenn es sich manchmal unsinnig anhört / liest, aber der Lerneffekt ist vorhanden.

Ich versuche gerade, die ATR als Channel bzw. Aquidistante im EUR-USD abzubilden. Normalerweise wird der ATR ja im Subwindow als Kurve angezeigt, ich will ihn jedoch als Channel sehen.
Nun sollte zu jeder Kerze der ATR-Wert vorhanden sein bzw. berechnet werden können, was nicht mein Problem ist.
ABER: Die Indexierung der Kerzen ist mein Problem, weil ich es nicht kann.

Meine Idee ist, die Koordinaten der ATR-Werte mit OBJ_TREND miteinander zu verbinden, so dass es ein Channel gibt.

Hat jemand hierfür bitte eine Lösung?

Leopold 06.08.18 22:48

Warum machst du keinen Indikator, damit bekommst du auch einen Channel. Soll dieser Channel so ähnlich sein wie die Bollinger Bands?

---Leopold---

Angel 06.08.18 23:15

Hi, ja ein Indikator schwebt mir ja vor.
Ja, wie die Bollinger Bands soll er aussehen. Nur die programmiertechnische Umsetzung hinsichtlich der X-Koordinaten (mein altes Problem) fällt mir schwer.

Leopold 07.08.18 08:13

Hallo,

schau mal da nach, vielleicht hilft dir das weiter:
Indikatorentwicklung, Basics am praktischen Beispiel | tradimo

---Leopold---

Leopold 07.08.18 08:15

... oder du nimmst mal den Code vom Moving Average und baust diesen um.

Aktuelle Kerze ist 0 vorige Kerze ist 1 usw.

---Leopold---

Angel 07.08.18 09:02

Meinst Du den Code des MA , der beim MT4 mitgeliefert wird?

Leopold 07.08.18 09:03

Ja genau.

---Leopold---

Angel 07.08.18 09:05

Ok, Danke, leider ruft jetzt die Arbeit, ich sehe mir die Infos zwischendrinn mal an, vorab mal vielen Dank...!

Angel 07.08.18 23:13

So, ich habe mir den Code des bei MT4 mitgelieferten "Moving Average" angesehen.
Die Indizierung leuchtet ein, die im Code taugt jedoch nicht für die Darstellung einer Kurve / Trendlinie.
Mit anderen Worten: Ich weiß wohl, wie das Open / High / Close etc. der 85ten und 84ten Kerze aussieht und wie man es ausliest, jedoch kann ich dann noch lange nicht zB das Close der 85ten mit dem der 84ten verbinden.

Mal das andere (Den Link) noch lesen...

FatSpiderman 08.08.18 00:16

Code:


//---- buffers

double ATR_upper_1[];              //Buffer der oberen Kanalgrenze
double ATR_lower_1[];              //Buffer der unteren Kanalgrenze

//---- Input Variables

...

//+------------------------------------------------------------------+
//| Custom indicator initialization function                        |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
  SetIndexStyle(0, DRAW_LINE, ATR_1_style, ATR_1_width, ATR_1_COLOR);    // ATR_upper_1[]
  SetIndexBuffer(0, ATR_upper_1);                                    // ATR_upper_1[]
 
  SetIndexStyle(1, DRAW_LINE, ATR_1_style, ATR_1_width, ATR_1_COLOR);    // ATR_lower_1[]
  SetIndexBuffer(1, ATR_lower_1);                                    // ATR_upper_1[]
//---
  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[])
  { 
....

Schau dir mal die Bedeutung der Buffer und die Funktionen SetIndexStyle und SetIndexBuffer an. Das Verbinden der Indikatorwerte wird nach der Übergabe der entsprechenden Werte an den Indikator Buffer automatisch übernommen.

MA-EA 08.08.18 00:58

Was soll das Ganze bringen? :confused:

https://admiralmarkets.de/wissen/art...den-markten-an

Wie willst Du die Vola mit nem Kanal darstellen?

Ansonsten nimm einfach nen MA auf High und einen auf Low und rechne die Abstände dazwischen aus, wenn die Vola angezeigt werden soll.

Angel 08.08.18 05:12

JA, genau, das wollte ich mal probieren. Ob es Sinn macht, sei dahingestellt, ich will es nur optisch dastellen und nicht in einer einfachen Kurve - die der mitgelieferte Indikator darstellt.

Nochmal, es geht mir vorwiegend darum, zu erlernen, wie einzelne Kerzen miteinander mittels einer Linie verbunden werden, d.h. zB die Closes. So trivial ist das nicht, MetaTrader liefert von Haus aus nicht einfach eine Funktion "Verbinde Close[85] mit Close[84]" mit einer folgenden Linie : Farbe = Rot, Dicke = x, Linienart=y usw. Das macht das Ganze unheimlich schwer. Stattdessen muss man X- (Zeit) und Y-(Preis) Koordinaten kennen und die muss man erst mühsam ausrechnen, und zwar über Sekunden seit 01.01.1970 (?) und da frage ich mich, ob es nicht einen anderen Weg gibt... Ich bin davon überzeugt, denn es gibt ja die unglaublichsten Indikatoren und die werden graphisch dargestellt und eine Raketenwissenschaft sollte dieses Russending (MT4) ja wohl nicht darstellen... :confused:;) Es geht, aber ich frage mich nur wie :confused:
Mit anderen Worten: Wenn ich mit ATR schon eine Range habe, die ich auch handeln kann indem ich den SL darauf setze, so muss ich die doch anders abbilden können als in einer Kurve... die letzten Endes ja genau so funktioniert, wie ich es haben will, nur eben nicht als Kanal sondern als Kurve....

MA-EA 08.08.18 10:41

Kannst Du Dein Gerät mal hoch laden? Von mir aus in ner PN.

Aber das Prinzip des ATR scheint eigentlich nicht für nen Kanal gedacht zu sein...

Angel 08.08.18 11:24

.... Mein Gerät...? Was für ein Gerät....?

FatSpiderman 08.08.18 11:36

Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von MA-EA (Beitrag 41351)
Kannst Du Dein Gerät mal hoch laden? Von mir aus in ner PN.

Aber das Prinzip des ATR scheint eigentlich nicht für nen Kanal gedacht zu sein...

Das Prinzip der ATR Kanäle kann sich schon für einige Bereiche eignen, z.B. setzen von TP oder nachziehen von SL, man findet auch Tradingsysteme die auf einem Breakout basieren...

FatSpiderman 08.08.18 11:53

Zitat:

Zitat von Angel (Beitrag 41350)
... "Verbinde Close[85] mit Close[84]" mit einer folgenden Linie : Farbe = Rot, Dicke = x, Linienart=y usw. Das macht das Ganze unheimlich schwer. Stattdessen muss man X- (Zeit) und Y-(Preis) Koordinaten kennen und die muss man erst mühsam ausrechnen, und zwar über Sekunden seit 01.01.1970 (?) und da frage ich mich, ob es nicht einen anderen Weg gibt...

Da muss man gar nichts rechnen.
Du solltest dich mit den Indikator-Buffer auseinandersetzten und die Funktionen SetIndexStyle() und SetIndexBuffer() machen nach der Übergabe der Werte an den Inikator-Buffer genau das, was du oben willst.

Code:


//---- buffers

double ATR_upper_1[];    //Buffer 0
double ATR_lower_1[];    //Buffer 1

//---- Input Variables

...

//+------------------------------------------------------------------+
//| Custom indicator initialization function                        |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

  SetIndexStyle(0,DRAW_LINE,ATR_1_style,ATR_1_width,ATR_1_COLOR);  //Buffer 0 (ATR_upper_1[])
  SetIndexBuffer(0,ATR_upper_1);
 
  SetIndexStyle(1,DRAW_LINE,ATR_1_style,ATR_1_width,ATR_1_COLOR);  //Buffer 1 (ATR_lower_1[])
  SetIndexBuffer(1,ATR_lower_1);
 
//---
  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[])
  {

//Code zur Berechnung des ATR (über iATR) und Übergabe der Werte an ATR_upper_1[] und ATR_lower_1[]

return(rates_total);
  }


Angel 08.08.18 12:16

Zitat:

Zitat von FatSpiderman (Beitrag 41353)
Das Prinzip der ATR Kanäle kann sich schon für einige Bereiche eignen, z.B. setzen von TP oder nachziehen von SL, man findet auch Tradingsysteme die auf einem Breakout basieren...

Jaaaaa!!! Genau so meinte ich es...!

Zitat:

Mit anderen Worten: Wenn ich mit ATR schon eine Range habe, die ich auch handeln kann indem ich den SL darauf setze, so muss ich die doch anders abbilden können als in einer Kurve... die letzten Endes ja genau so funktioniert, wie ich es haben will, nur eben nicht als Kanal sondern als Kurve....

MA-EA 08.08.18 14:19

Zitat:

Zitat von Angel (Beitrag 41352)
.... Mein Gerät...? Was für ein Gerät....?

Deinen selbstgebauten ATR-Indikator. ;) Lad mal bitte hoch.

Angel 08.08.18 14:34

Ähm... ich glaube, wir habe da aneinander vorbeigeredet...
Den gibt es noch gar nicht... sonst würde ich ja gar nicht die Frage stellen, wie es funktioniert.. :rolleyes:
.. nämlich wie ich die Closes der Kerzen miteinander verbinden kann oder noch genauer: Wie ich die ATR-Werte der jeweiligen Kerzen miteinander verbinden kann, so dass ein Kanal entsteht / abgebildet wird.... Problem ist: Ich habe die Kerze 85 und 84 und die dazugehörigen ATR-Werte. Wie verbinde ich die dann, von mir aus mit wie folgt schematisch dargestellt:

PHP-Code:

for(int i=0i<100i++) ;
ObjectCreate(0,i,OBJ_TREND,0,X-Wert der Kerze i,Y-Wert der Kerze i (nämlich der ATR-Wert), X-Wert der Kerze i-1,Y-Wert der Kerze i-1);
ObjectSetInteger(0,i,OBJPROP_RAYfalse); 
ObjectSetInteger.... blablabla.... 

Ist es nun verständlich, was ich meine? :o

MA-EA 08.08.18 15:38

Liste der Anhänge anzeigen (Anzahl: 1)
Ähm... nö. :rolleyes:

Könntest vielleicht höchstens die ATR-Formeln auf Highs und Lows berechnen...

Nen Breakout mit dem ATR? Wie soll das aussehen? Der misst doch nur, ob die Vola, genauer gesagt die Range zulegt... Scheint auch gar nicht für Signale gemacht zu sein, sondern nur um eben die Vola darzustellen... Wo soll die denn aus- oder einbrechen?

Um klare Signale für nen EA zu bekommen, könnte man vielleicht einen ATR auf 7 und einen Weiteren auf 14 stellen. Wenn dann der Schnelle den Langsamen kreuzt... Siehe MAs :D oder MACD oder Stochastik und was es Alles gibt...

Aber ich versuch zur Zeit selber nebenher nen eigenen Indi zu proggen. Versteh aber nur Bahnhof. :(

traderdoc 08.08.18 17:23

Da verbindet man keine Kerzen miteinander, sondern lässt diese miteinander verbinden. Und das geht nur sinnvollerweise über einen Indikator.
Wie @MA-EA bereits geschrieben hatte, versteht er nur Bahnhof. Und warum? Weil er wieder den Formel1-Wagen fahren will und nicht mal die einfachste Fahrpraxis hat.
@MA-EA, wie oft soll ich Dir das eigentlich noch schreiben? Schaue Dir doch einfach bestehende und funktionierende einfache!!! Indikatoren an, wie die geschrieben wurden. Nehme Dir jede Zeile vor und analysiere, was da steht und was die Funktionen und Variablen bedeuten. Nur so wird das was und nicht durch wildes Rumgefummel.

traderdoc

Angel 08.08.18 18:16

Ok, dann schreibe ich "Wie man die ATR-Werte der Kerzen durch einen Indikator miteinander verbinden lassen kann".

Tja - was sol ich sagen.

Das Problem bzw. die Problemstellung wird hier - mal wieder - nach 2 Seiten Diskussion mal wieder hinterfragt, statt programmiertechnisch der Lösung näher zu kommen.

Schade eigentich für dieses Forum....

traderdoc 08.08.18 18:48

Ich möchte mich hiermit höchstoffiziell dafür entschuldigen, erst jetzt eingegriffen zu haben. Ich hatte mir etwas Urlaub gegönnt.

So, nachdem wir das nun geklärt haben, bleibt es aber dabei, dass ein Indikator diese Aufgabe lösen könnte.

Ich werde aber nun keinen Code dazu hier einstellen. Einen Indikator schreiben ist auch schwieriger als einen EA schreiben.
Es bleibt deshalb bei dem vorher von mir beschriebenen Vorgehen.

Die Problemstellung muss immer hinterfragt werden, bevor eine Lösung angeboten und erarbeitet wird. Und das hat bisher hier in diesem Forum ganz gut funktioniert. Stell Dir vor, dass wäre erst nach 10 Seiten Diskussion passiert.

traderdoc

Angel 08.08.18 19:08

@traderdoc Da sind wir einer Meinung, dass ein Indikator diese Aufgabe lösen könnte. Ich könnte mir auch nicht vorstellen, was diese Aufgabe sonst noch lösen könnte. Klar ein Indikator! Was schreiben wir denn hier? Indikatoren und EAs . Wobei innerhalb der EAs die Funktion auch durch einen Indikator dargestellt werden kann. Und wenn nur zur optischen Verdeutlichung / Kontrolle.

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.

Wenn hier jemand fragt, wie eine Linie eingefärbt werden kann, so gebe ich ihm die Codeschnipsel
PHP-Code:

                  ObjectSetInteger(0,"Tages-Pivot Tag Morgen",OBJPROP_COLOR,C'220,220,220' ); 

oder

PHP-Code:

                  ObjectSetInteger(0,"Linie",OBJPROP_COLOR,Red); 

und ich hinterfrage nicht, warum eine Farbe und nicht eine gestrichelte Linie oder ein akustisches Signal genommen werden soll - oder gar das Ganze doch ganz sein lassen soll, warum auch immer.

Der Fragesteller will eine Linie einfärben und will sie nicht gestrichelt oder einen Ton hören.

Insofern widerspreche ich vehement, dass die grundlegende Problemstellung hinterfragt werden soll oder muss.
Und wenn: Die Problemstellung, die ATR-Werte mittels Line verbinden zu lassen, offenbarte ich bereits ganz zu Anfang. Und jetzt nach 2 bzw. 3 Seiten wird noch immer nicht auf einen konstruktiven Lösungsversuch hingearbeitet.
Aber ok. Konstruktive - UND KOSTENLOSE - Antworten sind ja freiwillig.

traderdoc 08.08.18 19:14

Siehst Du und da liegt der Unterschied. Es ist eben nicht mit einer einfachen Linie getan. Diese dafür notwendige Lösung ist ein komplexes Gebilde!

So was willst Du denn nun? Ne komplette Lösung?
Wirst Du wahrscheinlich nicht bekommen.

Was machen wir nun?

traderdoc

FatSpiderman 08.08.18 19:33

Zitat:

Zitat von Angel (Beitrag 41364)

Insofern widerspreche ich vehement, dass die grundlegende Problemstellung hinterfragt werden soll oder muss.
Und wenn: Die Problemstellung, die ATR-Werte mittels Line verbinden zu lassen, offenbarte ich bereits ganz zu Anfang. Und jetzt nach 2 bzw. 3 Seiten wird noch immer nicht auf einen konstruktiven Lösungsversuch hingearbeitet.
Aber ok. Konstruktive - UND KOSTENLOSE - Antworten sind ja freiwillig.

Meine vorherigen Posts wurden noch nicht freigeschaltet, aber die grundlegende Problemstellung muss hinterfragt werden.
Du bist auf dem völlig falschen Dampfer. Du brauchst hier kein ObjectSetInteger() oder ähnliches.

Informiere dich mal über Indicator-buffer und die Funktionen SetIndexBuffer() und SetIndexStyle().

Angel 08.08.18 19:36

Ne komplette Lösung wäre wohl zuviel verlangt, auch wenn sie nicht abgelehnt werden würde.

Ein komplexes Gebilde? Skizieren doch mal das Gerüst. Alleine schon, dass ich weiß , in welche Richtung ich forschen muss.

Mir ist schon klar, dass es nicht mit ein, zwei , drei Zeilen Code getan ist, das zeigte mir mein durch mich erquälter Pivot-Indikator, aleine schon den Tagesanfang und das Tagesende festzulegen und das für die letzten 14 Tage. Aber das hier ist wieder was anderes.

Angel 08.08.18 19:37

P.S. Pivot-Indikatoren gibt es wie Sand am Meer, dennoch wollte ich einen programmieren um ihn zu verstehen. Und ich schaffte es nach langem hin und her. Hätte auch kürzer / schneller gehen können.

traderdoc 08.08.18 19:42

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

traderdoc

Leopold 08.08.18 21:20

Zitat:

Zitat von Angel (Beitrag 41330)
Hi,

wie so oft versuche ich mich in Grundlagen, um darauf aufzubauen. Auch wenn es sich manchmal unsinnig anhört / liest, aber der Lerneffekt ist vorhanden.

Ich versuche gerade, die ATR als Channel bzw. Aquidistante im EUR-USD abzubilden. Normalerweise wird der ATR ja im Subwindow als Kurve angezeigt, ich will ihn jedoch als Channel sehen.
Nun sollte zu jeder Kerze der ATR-Wert vorhanden sein bzw. berechnet werden können, was nicht mein Problem ist.
ABER: Die Indexierung der Kerzen ist mein Problem, weil ich es nicht kann.

Meine Idee ist, die Koordinaten der ATR-Werte mit OBJ_TREND miteinander zu verbinden, so dass es ein Channel gibt.

Hat jemand hierfür bitte eine Lösung?

Aber mit so einer Fragenstellung ist klar, dass da so manches hinterfragt werden muss. So eindeutig ist die ja nicht.

Zur Indexierung hab ich dir schon was geschrieben.

Wie lautet deine Frage jetzt konkret?? :confused:


---Leopold---

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 02:46 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