Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

MACD Signallinie im Chart

Geschrieben

Kann mir jemand ein wenig auf die Sprünge helfen ?

 

Ich möchte die nackte Signallinie des MACD im Chart als MA einzeichnen.

Ich komme irgendwie nicht mit der Berechnungsgrundlage zurecht. :blackjack:

Featured Replies

Geschrieben
  • Autor

Möchte hier noch mal nach harken

um das Problem besser zu beschreiben.

 

Also es geht mir um die reine Signallinie des MACD im Chart.

Den Indi den ich dazu gefunden habe ist in den Bildern im Preischart zu sehen.

 

Im Extrafenster ist der Original MT4 Indi mit gleichen Einstellungen zu sehen.

Mal zeichnet der Indi richtig, mal falsch....

 

Da es mir aber um die Anzeige der Divergenzen geht, sollte der Extra Indi schon das gleiche zeichnen wie der Originale,

sonst kann ich beim Divergenzen traden ja gleich ne Münze werfen....

 

zeichnet richtig

stimmt.gif

 

stimmt nicht.gif

zeichnet falsch

 

Hat jemand ne Lösung oder noch einfacher ein Beispiel wie ich einen ganz normalen MA so einstelle das er die Signallinie

des MACD richtig einzeichnet ??

Geschrieben

Du möchtest die Signallinie auf den Chart legen?

Ich sehe erstmal nicht wie das gehen soll:

Es ist ja MACD = EMA(9)-EMA(25) und die Signallinie ja nochmal nen EMA davon.

Was du machen könntest wäre zum EMA(9) die Signallinie dazu addieren. Dann währst du nahe am Kurs.

Aber vermutlich verstehe ich auch nur einfach noch nicht was du machen willst.

Kann auch leider deine Attachments nicht sehen.

Geschrieben
  • Autor

Ich sehe erstmal nicht wie das gehen soll:

Es ist ja MACD = EMA(9)-EMA(25) und die Signallinie ja nochmal nen EMA davon.

Geht nicht, gibts nicht. :mosking:

Vola will das aber haben.....:blackjack:

Ja die Berechnung ist ja eben genau mein Problem....

 

Probiere mal bitte die Bilder nochmal zu öffnen, vllt. hattest du versucht als ich

grade am verbessern der Größe war.

Geschrieben

hast du denn quellcode des indis der das zeichnet?

Ich kann mir gerade nicht vorstellen wie man die Linie überhaupt auf den Chart bringen soll.

Bilder gehen jetzt

Geschrieben
  • Autor

Ja habe ich, hier isser:

 

 

//---- indicator settings
#property  indicator_chart_window
#property  indicator_buffers 3
#property  indicator_color1  Silver
#property  indicator_color2  Red
#property  indicator_color3  Blue
#property  indicator_width1  2
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
//---- indicator buffers
double 	MacdBuffer[];
double 	SignalBuffer[];
double 	HistoBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                 		|
//+------------------------------------------------------------------+
int init()
 {
//---- drawing settings
  SetIndexStyle(0,DRAW_NONE);
  SetIndexStyle(1,DRAW_LINE);
  SetIndexStyle(2,DRAW_NONE);
  SetIndexDrawBegin(1,SignalSMA);
  IndicatorDigits(Digits+1);
//---- indicator buffers mapping
  SetIndexBuffer(0,MacdBuffer);
  SetIndexBuffer(1,SignalBuffer);
  SetIndexBuffer(2,HistoBuffer);
//---- name for DataWindow and indicator subwindow label
  IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")	!! :)");
  SetIndexLabel(0,"MACD YO");
  SetIndexLabel(1,"Signal YO");
  SetIndexLabel(2,"H I S T O :):)");
//---- initialization done
  return(0);
 }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                   		|
//+------------------------------------------------------------------+
int start()
 {
  int limit;
  int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
  if(counted_bars>0) counted_bars--;
  limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
  for(int i=0; i<limit; i++)
 	MacdBuffer[i]=Close[i]+(iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i));
//---- signal line counted in the 2-nd buffer
  for(i=0; i<limit; i++)
 	SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- histogram line counted in the 3-nd buffer
  for(i=0; i<limit; i++)
 	HistoBuffer[i]=Close[i]-(MacdBuffer[i]+SignalBuffer[i]);
 	
  for(i=0; i<limit; i++)
 	MacdBuffer[i]=iMAOnArray(HistoBuffer,Bars,SignalSMA,0,MODE_SMA,i);
 	
//---- done
  return(0);
 }
//+------------------------------------------------------------------+

Geschrieben

Ich glaube das Problem ist halt einfach das Close. Du kannst halt leider nicht einfach die Sachen irgendwie rausziehen, da keine Linearität in den MovingAverage-Operatoren vorliegt.

Schau auch mal im ersten Bild links. Da passt es auch nicht. Das scheint irgendwie in starken Trends zu Problemen zu führen. Die Closekurse fallen dann relativ kontinuierlich.

 

Ist aber nen Interessantes Problem? Jemand anderes ne Idee?

Geschrieben

Hi Vola, alter Programmiergott! :blackjack:

 

Ich seh das genau so wie Quickbeam2k1. Die "normale" Signallinie beim MACD bezieht sich ja immer auf "0".

Hier wird das berechnete Signal aber zu Close addiert, wodurch natürlich der Offset stark schwankt und du diese Abweichungen bekommst, die man in deinen Bildern sehen kann.

Geschrieben
  • Autor

Hmm, schon blöd....

Habe hier noch nen anderen Indi, kann man aber sicher auch nix machen

wenn das Problem der MA mit den Close Kursen ist....

 

Sieht im Chart dann so aus.....

stimmt nicht_2.gif

 

Hier der Code

 

//+------------------------------------------------------------------+

//| Custom MACD.mq4 |

//| Copyright © 2004, MetaQuotes Software Corp. |

//| MetaTrader 4 Trading Platform / MetaQuotes Software Corp. |

//+------------------------------------------------------------------+

 

#property  copyright "Copyright © 2004, MetaQuotes Software Corp."
#property  link  	"http://www.metaquotes.net/"
//---- indicator settings
#property  indicator_chart_window
#property  indicator_buffers 4
#property  indicator_color1  DarkGreen
#property  indicator_color2  Red
#property  indicator_color3  DarkGreen
#property  indicator_color4  Red
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
//---- indicator buffers
double 	ind_buffer1[];
double 	ind_buffer2[];

double 	ind_buffer3[];
double 	ind_buffer4[];
double 	alertTag;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                 		|
//+------------------------------------------------------------------+
int init()
 {
//---- drawing settings
  SetIndexStyle(0,DRAW_NONE);
  SetIndexStyle(1,DRAW_NONE);
  SetIndexDrawBegin(1,SignalSMA);
  IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1);
//---- indicator buffers mapping
  if(!SetIndexBuffer(0,ind_buffer1) && !SetIndexBuffer(1,ind_buffer2))
 	Print("cannot set indicator buffers!");

  SetIndexStyle(2, DRAW_ARROW, STYLE_SOLID, 0);
  SetIndexArrow(2, 108);
  SetIndexBuffer(2, ind_buffer3);

  SetIndexStyle(3, DRAW_ARROW, STYLE_SOLID, 0);
  SetIndexArrow(3, 108);
  SetIndexBuffer(3, ind_buffer4);
//---- initialization done
  return(0);
 }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                   		|
//+------------------------------------------------------------------+
int start()
 {
  int limit;
  int counted_bars=IndicatorCounted();
//---- check for possible errors
  if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
  if(counted_bars>0) counted_bars--;
  limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
  for(int i=0; i<limit; i++)
 	ind_buffer1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
  for(i=0; i<limit; i++)
 	ind_buffer2[i]=iMAOnArray(ind_buffer1,Bars,SignalSMA,0,MODE_SMA,i);
 	
  for (i=0; i<limit; i++)
  {
 	ind_buffer3[i] = EMPTY_VALUE; ind_buffer4[i] = EMPTY_VALUE; 
 	if (ind_buffer1[i] > ind_buffer2[i] && ind_buffer1[i+1] < ind_buffer2[i+1]&&alertTag!=Time[0])
 	{
		ind_buffer3[i] = Low[i] - 1 * Point;Alert(Symbol(), " M", Period(), " Buy Alert");alertTag = Time[0];
 	}  
 	
		
 	if (ind_buffer1[i] < ind_buffer2[i] && ind_buffer1[i+1] > ind_buffer2[i+1]&&alertTag!=Time[0])
 	{
		ind_buffer4[i] = High[i] + 1 * Point;Alert(Symbol(), " M", Period(), " Sell Alert");alertTag = Time[0];
 	}  
 	
  }	
//---- done
  return(0);
 }

Geschrieben
  • Autor

Hi Vola, alter Programmiergott! :blackjack:

Ich seh das genau so wie Quickbeam2k1. Die "normale" Signallinie beim MACD bezieht sich ja immer auf "0".

 

Hmm, na gut, dann lasse ich es eben wie es ist im Extra Fenster mal mitlaufen.

 

Programmiergott ist gut, bin froh wenn ich die Farben verstellen kann.....

 

Trotzallem Danke für eure Mühe :mosking:

Geschrieben

Hmm, na gut, dann lasse ich es eben wie es ist im Extra Fenster mal mitlaufen.

 

Ich hab schon länger nix mehr gemacht mit MT4, aber ich hab zwei Ideen:

 

Falls MT4 eine zweite Scala kann, könnte man z.B. rechts die normalen Kurse und links den MACD anzeigen. Also einfach Überlagern.

 

An sonsten könnte man den Offset nicht Close benutzen, sondern den Mittelpunkt zwischen HighestHigh und LowestLow, und zwar für so viele Bars zurück, wie lange eben dein View ist. So würde man eine Nulllinie simulieren.

FDAXc1_MACD.png

Geschrieben
  • Autor

Jaaa jaaa ja ! :blackjack:

 

Verstehe zwar nur Bahnhof aber die Idee gefällt mir. :mosking:

 

Habe nur keinen Plan wie man das macht....

Geschrieben

Ich hab schon länger nix mehr gemacht mit MT4, aber ich hab zwei Ideen:

 

Falls MT4 eine zweite Scala kann, könnte man z.B. rechts die normalen Kurse und links den MACD anzeigen. Also einfach Überlagern.

 

An sonsten könnte man den Offset nicht Close benutzen, sondern den Mittelpunkt zwischen HighestHigh und LowestLow, und zwar für so viele Bars zurück, wie lange eben dein View ist. So würde man eine Nulllinie simulieren.

Ob das mit einer 2. Skala möglich ist, weiß ich nicht. Hab ich noch nicht gesehen und glaube eher nicht.

Was aber recht einfach gehen sollte ist die 2. Idee.

 

Ich schau's mir heute Abend mal an.

Geschrieben

Jaaa jaaa ja ! :blackjack:

Verstehe zwar nur Bahnhof aber die Idee gefällt mir. :mosking:

Habe nur keinen Plan wie man das macht....

 

Hab grad nachgeschaut, MT4 kann glaub ich nur eine Scale.

Bzw. es gibt "OBJPROP_SCALE 12 double Double value to set/get scale object property."; evtl. klappt das damit. Oder man rechnet um in OBJPROP_X- und YDISTANCE.

 

Wenn's dir nicht eilig ist damit, würde ich mich nach meinem SystemStatus-Project da mal dran machen; denn in MQL muß ich gedanklich erst wieder rein...

Geschrieben

Ob das mit einer 2. Skala möglich ist, weiß ich nicht. Hab ich noch nicht gesehen und glaube eher nicht.

Was aber recht einfach gehen sollte ist die 2. Idee.

Ich schau's mir heute Abend mal an.

 

OKee, du darfst das wirklich gerne übernehmen; wie gesagt, ich bin z.ZT. etwas raus aus MQL.

Geschrieben
  • Autor
Sage schon mal vielen Dank im voraus ,:blackjack: bin gespannt auf das Ergebnis.
Geschrieben

Sage schon mal vielen Dank im voraus ,:door: bin gespannt auf das Ergebnis.

Das Ergebnis ist leider wenig spektakuär. :blackjack:

 

Ich hab mich jetzt 'ne Weile mit dem Indi, den du als erstes geposted hast, rumgespielt und hab dabei das Problem, dass er zwar die historischen Daten berechnet, bei neuen Ticks aber immer nach unten ausbricht.

Nun hab ich nochmal den Orginal-Indikator ausprobiert und festgestellt, dass es da auch schon so ist (siehe Bild!).

Signal_Orginal.jpg

 

Hast du das Problem nicht?

 

Unabhängig davon hab ich mal einfach anstelle von Close+... den jeweiligen Mittelwert zwischen Minimum- und Maximum-Kurs der Ansicht als Basis für die Signallinie genommen.

Das Ergebnis sieht zwar rechts im Chart noch recht gut aus und zeigt keine Divergenzen,

Signal_geaendert_rechts.jpg

entfernt sich aber teilweise recht weit vom Kurs und hat auch manchmal Divergenzen zum eigentlichen MACD, was du ja vermeiden wolltest. Dies lieg daran, dass beim Scrollen halt unterschiedliche Hoch/Tiefkurse zum Tragen kommen.

Signal_geaendert_links.jpg

Richtig schön ist das nicht...

 

 

Ich hab mir nochmal überlegt, wie man das mit einer 2. Skala machen könnte. Das wär grundsätzlich schon möglich über Objekte.

Das wär dann aber halt nichts anderes, als ein Verschieben der eigentlichen Signallinie aus dem MACD nach oben.

Bin mir nicht ganz klar darüber, was das bringen soll... :mosking:

Geschrieben
  • Autor

Hast du das Problem nicht?

 

Ich hab mir nochmal überlegt, wie man das mit einer 2. Skala machen könnte. Das wär grundsätzlich schon möglich über Objekte.

Das wär dann aber halt nichts anderes, als ein Verschieben der eigentlichen Signallinie aus dem MACD nach oben.

Bin mir nicht ganz klar darüber, was das bringen soll... :blackjack:

 

Doch habe das gleiche Problem mit dem Ausbruch nach unten.

 

Sinn des ganzen ist in erster Linie, das ich mir das Chart Fenster nicht mit Extra Indis zuknallen möchte

da ich eigentlich gar keine verwende und unten nur das Volumen mitlaufen lasse.

 

Desweiteren sehe ich Divergenzen der MACD Linie im Preischart viel direkter und deutlicher als

wenn die Linie unter dem Chart im Extra Fenster mitläuft.

 

Als Beispiel mal der Bressert im Chart und darunter.

test 3.gif

 

 

Das ganze mag reine Ansichtssache sein, mir würde es eben aus besagten Gründen besser gefallen wenn die

MACD Linie als "MA" direkt im Chart zu sehen ist. ( Wäre ja viel unauffälliger als z.B. der Bressert vom Beispielbild )

Geschrieben
Als Beispiel mal der Bressert im Chart und darunter.

 

Da läuft der MACD aber eindeutig auf der Linken Skala,

 

anders geht es auch nicht.

 

 

 

 

Wenn ich mir im Chart 2 Werte anzeigen lassen will die rein gar nichts mit einander zu tun haben muss ich so verfahren.

Geschrieben

Als Beispiel mal der Bressert im Chart und darunter.

Wenn du hierfür den Code hast, dann könnte man mal schaun, wie es da implementiert ist und das beim MACD genau so machen.

Geschrieben
  • Autor

Jetzt gibts was zu lachen !

 

Naja, habe ja kein Problem damit mich zu outen, aber bißchen peinlich ist schon........

 

Hmmm, manchmal hat man ja ( Ich), Holzsägewerke aller Nationen vor dem Kopf :blackjack:

 

Zu dem Bressert im Chart gibt es keinen Code, da dies ein Template ist das ich selber erstellt habe :mosking:

(Vor Monaten )

 

Wie ich das Template erstellt habe ??

 

Habe ich in einem Blog mal "gesehen"

 

Template

 

Problem gelöst:

 

test 5.gif

 

Danke@all für eure Mühe :door:

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.