Showing Indicator value in a separate window

Einloggen oder registrieren, um einen Kommentar zu schreiben
Anke zur
30
Anke zur  

Hello,


currently i am learning to code in Mql4 and do some first steps. 

So i have given the exercise to me to show the Exp. Moving Average in a separate window.

Basically, it works but i would to see the current value behind the short_name of the indicator in the separate window.

Here it is my code, maybe you could give me a hint:


//--------------------------------------------------------------------
// EMA.mq4 
// 
//--------------------------------------------------------------------
#property indicator_separate_window 
#property indicator_buffers 1       
#property indicator_color1 Blue     
  

extern int EMAPeriod = 20;

double Buf_0[];                     
//--------------------------------------------------------------------
int init()                          
  {
   string short_name;
   SetIndexBuffer(0,Buf_0);         
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);
  
   //--- name for DataWindow and indicator subwindow label
   short_name="EMA ("+IntegerToString(EMAPeriod)+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);

   if(EMAPeriod<=0)
     {
      Print("Wrong input parameter EMA Period=",EMAPeriod);
      return(INIT_FAILED);
     }
 
   return (INIT_SUCCEEDED);                          
  }
//--------------------------------------------------------------------
int start()                         
  {
   int i,                                                          
   Counted_bars;                    
                          
//--------------------------------------------------------------------
   Counted_bars=IndicatorCounted(); 
   i=Bars-Counted_bars-1;           

                
   while(i>0)                      
     {
      Buf_0[i]= iMA(NULL,0,EMAPeriod,i,MODE_EMA,PRICE_CLOSE,0);     
      i--;                          
     }
//--------------------------------------------------------------------
   return (0);                          
  }
//--------------------------------------------------------------------
Carl Schreiber
Moderator
7931
Carl Schreiber  
  1. Hallo und herzlich willkommen!
  2. Wir sprechen hier Deutsch :)
  3. Geh einfach mal in das Verzeichnis MQL4\Indicators und lade zB RSI.mq4 und schau Dir an (kopiere, was Sinn macht), wie dort die Indikatorwerte dem Puffer zugewiesen und im separaten Fenster angezeigt werden.
  4. Ich vermute, Dein Fehler liegt in der Wertzuweisung zum Indiaktorpuffer Buf_0[]: Die Parameter des Aufrufs von iMA sind falsch platziert: Kursor auf iMA im Editor stellen und F1 (die Zaubertaste drücken;)
    ma_shift betrifft einen Versatz auf dem Chart, das letzte shift korrespondiert mit den Bars.
  5. Ich vermute, dass, je nach Zeitrahmen, die Linie ziemlich flach wird - lass Dir doch gleich die Differenz zweier EMAs (einen schnellen und einen langsamen) anzeigen (nur ein Vorschlag).
  6. Neben F1 gibt es hier (https://docs.mql4.com/function_indices) eine alphabetische Liste der meisten Funktionen, hier kann man im Browser mit ctrl+f ganz einfach nach 'Schlagworten' suchen.
List of MQL4 Functions - MQL4 Reference
List of MQL4 Functions - MQL4 Reference
  • docs.mql4.com
Reads from the file of the CSV type a string of one of the formats: "YYYY.MM.DD HH:MM:SS", "YYYY.MM.DD" or "HH:MM:SS" - and converts it into a datetime value
Anke zur
30
Anke zur  

Hallo


vielen Dank für die Antwort und schön, dass wir hier deutsch sprechen :)

Bevor ich gleich nochmals was poste, ein Hinweis: Der nachstehende Code ist inhaltlich absoluter nonsense, das

weiss ich! Es geht mir nur drum, das Problem einzugrenzen und um methodische falsche Wertzuweisungen zu umgehen :)

Zu dem testcode: Auch hier zeigt er mit hinter EMA(20) nix an. Ich würde wie bei allen anderen Indikatoren wünschen,

dass er mir eine Zahl anzeigt :)

Ich bin am üben und testen und ausprobieren: Sollte ich damit eure Zeit verschwenden, einfach sagen, und ich 

bin auch schon weg!!


//--------------------------------------------------------------------
// EMA.mq4 
// 
//--------------------------------------------------------------------
#property indicator_separate_window 
#property indicator_buffers 1       
#property indicator_color1 Blue     
  

extern int EMAPeriod = 20;

double Buf_0[];                     
//--------------------------------------------------------------------
int init()                          
  {
   string short_name;
   SetIndexBuffer(0,Buf_0);         
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);
  
   //--- name for DataWindow and indicator subwindow label
   short_name="EMA ("+IntegerToString(EMAPeriod)+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);

   if(EMAPeriod<=0)
     {
      Print("Wrong input parameter EMA Period=",EMAPeriod);
      return(INIT_FAILED);
     }
 
   return (INIT_SUCCEEDED);                          
  }
//--------------------------------------------------------------------
int start()                         
  {
   int i,                                                          
   Counted_bars;                    
                          
//--------------------------------------------------------------------
   Counted_bars=IndicatorCounted(); 
   i=Bars-Counted_bars-1;           

                
   while(i>0)                      
     {
      Buf_0[i]= i + 1 ;       
      i--;                          
     }
//--------------------------------------------------------------------
   return (0);                          
  }
//--------------------------------------------------------------------
Carl Schreiber
Moderator
7931
Carl Schreiber  


Nein, lästig sind deine Fragen nicht, das sind eher Leute, die so etwas sagen wie, kann mir das mal jemand programmieren?

Ich versuche halt den Leuten zu helfen, dass sie lernen sich selber zu helfen, denn das (zB. F1, Suche in Codebase und Artikeln, Google, ..) führt meist viel, viel schneller zum Erfolg als hier au eine Antwort zu warten.

Gib halt auch bei Problemen an, (wenn) welche Fehler beim Kompilieren oder im Log ausgegeben werden!


Ich glaube Dir fehlt in OnInit(): IndicatorBuffers(1);

und ein SetIndexDrawBegin(0,EMAPeriod); wäre auch nicht falsch.

Studier' mal  RSI.mq4.

Du kannst auch mit dem Debugger (F5 || Ctrl+F5) durch Deinen Code gehen!

Anke zur
30
Anke zur  

Hallo,


herzlichen Dank.

Ich habe au dem Demo-Beispiel aus dem MQL4 handbuch aufgebaut, 

das diesen beiden Befehle nicht beinhalten.

Aber auch das Eintragen hat das Problem nicht gelöst


Wie auch immer: Ich brauch das nicht unbedingt; der Rest funktioniert soweit und du hast Recht.

Die Foren werden immer unwichtiger, da man erst immer belehrt wird, man möge seine Probleme selber

lösen und sich alles erarbeiten und suchen. Bzw. man hat immer den Eindruck, man ist zu "dumm" für

etwas. Aber auch egal.


Ich bedanke mich und werde mich aus eurem exklusiven Herrenclub zurückziehen.

Carl Schreiber
Moderator
7931
Carl Schreiber  
Anke zur:

Hallo,

..

Ich bedanke mich und werde mich aus eurem exklusiven Herrenclub zurückziehen.

Das siehst Du falsch!

Das Problem ist, viele und auch ich, haben kein funktionierenden MT4 mehr am laufen. Ich kann daher nur abschätzen und nicht selber zB. testen und ergo nur Hilfe zur

Selbsthilfe geben.

Bei einem MT5 und MQL5 wäre das schon anders.

Einloggen oder registrieren, um einen Kommentar zu schreiben