MACD

 

Hallo,

ich habe mal eine Frage zum MACD. Unten habe ich den Code zum MACD eingefügt.
Der ist Standardmäßig eingestellt auf:

extern int FastEMA=13;
extern int SlowEMA=17;
extern int SignalEMA=9;

Jetzt wollte ich ihn ändern auf:

extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalEMA=9;

... was ich auch getan habe. Ich habe das Programm anschließend kompiliert.
Seit dem ist der Indikator im Indikatorfenster nicht mehr zu sehen, das Fenster bleibt leer.

Frage:
Was habe ich falsch gemacht? Ich habe nur die 3 Zahlen geändert, sonst nichts.
Ich bin Anfänger in MQL und wollte nur die Standardeinstellungen ändern

Kann mir jemand weiterhelfen? 

Für eine Rückinfo vielen Dank. 

 

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

//| macd-2.mq4 |
//| Copyright ?2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 LimeGreen
#property indicator_color2 Red
#property indicator_color3 Black
#property indicator_color4 Black
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalEMA=9;
//---- indicator buffers
double ind_buffer1[];
double ind_buffer2[];
double ind_buffer3[];
double ind_buffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- 2 additional buffers are used for counting.
IndicatorBuffers(5);
//---- drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,1);
SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,1);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2 );
SetIndexDrawBegin(0,SignalEMA);
SetIndexDrawBegin(1,SignalEMA);
//---- 4 indicator buffers mapping
if(!SetIndexBuffer(0,ind_buffer1) &&
!SetIndexBuffer(1,ind_buffer2) &&
!SetIndexBuffer(2,ind_buffer3) &&
!SetIndexBuffer(3,ind_buffer4))
Print("cannot set indicators\' buffers!");
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("MACD-2 ("+FastEMA+","+SlowEMA+","+SignalEMA+")");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Oscillator |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
double prev,current;
//---- 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 additional buffer
for(int i=0; i<limit; i++)
ind_buffer3[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 additional buffer
for(i=0; i<limit; i++)
ind_buffer4[i]=iMAOnArray(ind_buffer3,Bars,SignalEMA,0,MODE_EMA, i);
//---- dispatch values between 2 buffers
bool up=true;
for(i=limit-1; i>=0; i--)
{
current=ind_buffer3[i]-ind_buffer4[i];
prev=ind_buffer3[i+1]-ind_buffer4[i+1];
if(current>prev) up=true;
if(current<prev) up=false;
if(!up)
{
ind_buffer2[i]=3*current;
ind_buffer1[i]=0.0;
}
else
{
ind_buffer1[i]=3*current;
ind_buffer2[i]=0.0;
}
}
return(0);
}

MetaTrader 5 Trading Platform / MetaQuotes Software Corp.
  • www.metaquotes.net
MetaTrader 5 trading platform designed to arrange brokerage services in Forex, CFD, Futures, as well as equity markets
 

Ohne jetzt den Code im Detail gelesen zu haben:

1) Nutze die SRC-Taste für code! (Gleich neben der Kamera).

2) Gibt es Compiler- oder Fehlermeldungen, welche?

3) Wenn Du Parameter im Code änderst und dann kompilierst, ändern sich die Parameter des Indikators im Chart nicht!! Prüfe das mal!

 
Carl Schreiber:

Ohne jetzt den Code im Detail gelesen zu haben:

1) Nutze die SRC-Taste für code! (Gleich neben der Kamera).

2) Gibt es Compiler- oder Fehlermeldungen, welche?

3) Wenn Du Parameter im Code änderst und dann kompilierst, ändern sich die Parameter des Indikators im Chart nicht!! Prüfe das mal!

Hallo Carl,
zunächst einem recht herzlichen Dank für Deine Antwort und daß Du Dich gemeldet hast. Ich bin sehr froh, als interessierter und wirklicher Anfänger in MQL Hilfe zu erhalten.

Ich muss aber leider bei der Beantwortung Deiner Fragen vielleicht wieder dumme Frage stellen:

zu 1) Was meinst Du mit der SRC-Taste für Code? Wo kann ich diese Taste finden? Neben der Kamera? Welche meinst Du? Ich weiß ehrlich gesagt gar nicht, wovon Du sprichst. Meinst Du eine Taste auf der PC-Tastatur oder im Editor des MetaTrader4? Ich kann diese Taste nirgendwo finden. Sorry, ich bin in MQL purer Anfänger, hoffentlich habe ich Dich jetzt nicht verschreckt, aber ich will unbedingt dazulernen.

zu 2) Nein, es gibt keine Compiler- oder Fehlermeldungen, nach dem kompilieren 0 Fehler, deswegen bin ich so verwundert, warum der Indikator nur wegen einer Änderung dieser 3 Zahlen nicht mehr funktioniert. Ich habe sonst nicht verändert, nur die 3 rot markierten Zahlen (Parameter) geändert, dann abgespeichert und kompiliert.

zu 3) Beim Neustart des Indikators sind die im Code neuen eingegebenen Parameter übernommen worden. Nur zeigt sich der Indikator im Indikatorfenster nicht, es bleibt leer.

Ich bin ziemlich ratlos, was habe ich denn falsch gemacht? ich würde mich sehr freuen, wenn Du mir einen Rat geben könntest. Danke. 

 
 
Carl Schreiber:
benenne den indikator mal um und speichere oder kopiere die Datei in den Indicator Ordner.