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)
-   -   moving Avg. auf RSI (http://www.expert-advisor.com/forum/showthread.php?t=2800)

feuervogt 22.03.13 18:30

moving Avg. auf RSI
 
Hallo zusammen,

ich bin recht neu hier und versuche mich gerade ein wenig im Umgang mit dem Editor in MT4.

Aktuell habe ich eine kleine Blockade und hoffe, Ihr könnt mir weiterhelfen.

Ich möchte über den RSI einen Movin Average ausgeben. Ich weiss, dass ich das über den MA Indikator über "previous Indicator" anzeigen lassen kann, was aber nicht mein Ziel ist.
Tatsächlich möchte ich den absoluten Wert ausgeben lassen.

den RSI lasse ich mir mit:

Code:

double rsigrey;
rsigrey = iRSI(Symbol(),0,5,0,0);
string valrsigrey=DoubleToStr(rsigrey,2);
Comment("RSI: "+valrsigrey)

ausgeben.

Dummerweise schaffe ich es nicht, den moving Average per iMA darüber zu bilden, weil der keine Referenz auf den RSI zulässt. Als Array habe ich es auch nicht hinbekommen.

Gibt es einen "Trick"? Kann ich der Funktion nicht einfach den RSI übergeben (wenn ja, wie? Als Variable scheint es nicht zu gehen)? Sind zu wenig Bäume im Wald?

Das sind meine ersten Gehversuche hier, eventuelle Blödheit ist also nicht auszuschließen.... :-D

mit den allerbesten Grüßen und der Hoffnung auf baldige Erleuchtung

jens

Deepack 22.03.13 19:08

Hallo
ich hoffe ich habe es Richtig verstanden...

Du hast am Chart ein Seperates Fenster in dem der RSI angezeigt wird und auf dem Fenster möchtest du auch den MovingAverage angezeigt haben ...
wie gesagt ich hoffe ich habs richtig verstanden wenn nicht korrigiere mich bitte

ansonsten:

Musst du den MovingAverage Indicator geringfügig ändern
dazu suchst du dir am besten den "Costum Moving Average"
von MetaQuotes...
Moving Averages.mq4 - MQL4 Code Base

speichern...

und änderst im code die zeile
Code:

#property indicator_chart_window
//auf
#property indicator_separate_window

und schon kannst du den geänderten MA auf das RSI-Fenster ziehen

lg deepack


edit:

Ich habe mir jetzt deinen Beitrag noch 3mal durchgelesen...
und bin zum entschluss gekommen dass dir mein beitrag nicht helfen wird

habe aber auch nicht soganz verstanden was du genau möchtest

feuervogt 23.03.13 03:00

Hallo deepack,

danke für den Ansatz, das hatte ich mir schon angesehen und trotzdem keine Lösung gefunden. Vielleicht werde ich den code komplett anpassen müssen, bin aber - wie gesagt - irgendwie blöd gerade.

Es geht nicht unbedingt darum, die Ausgabe in ein bestimmtes Fenster zu machen, das bekomme ich hin. Was ich möchte, ist nicht die Kurve ausgeben, sondern den aktuellen Wert als Zahl, um ihn beispielsweise einer Variablen zu übergeben.

Letzlich möchte ich über den RSI zwei moving averages bilden, deren Bewegung zueinander ich vergleiche. Dazu brauche ich aber die absoluten Werte, um Bedingungen festlegen zu können. (Wenn MA_1 Wert x erreicht, dann male einen blauen Kreis in ein grünes Viereck, usw.)

Ich bekomme es einfach nicht hin, den MA über dem RSI zu bilden, weil die Funktion iMA immer "Symbol()" haben will und mir das nichts bringt, weil ich für mein aktuelles Vorhaben eben nicht die MA über den Index oder die Währung bilden will, sondern über den RSI und ich der Symbolfunktion keine Variable übergeben kann - soviel ich weiss.

Vielen Dank für Deine Bemühungen, ich bin eben nach Hause gekommen und mache jetzt die Matraze warm.

Jens

naranjoe 23.03.13 08:16

Hallo,

ich glaube die Funktion die du benötigst ist iMAOnArray().
Damit kannst du einen Moving Average auf bestimmte Werte kalkulieren.
Schau mal in der MQL4 Reference, da ist es gut beschrieben.

Gruß
naranjoe

feuervogt 25.03.13 20:20

Hallo zusammen,

danke für die angebotene Hilfe.

Ich habe es jetzt anders gelöst. In einem anderen Forum (mql4.com) habe ich code gefunden, den ich für mich modifizieren konnte.

Das Zwischenergebnis sieht nun so aus:

Code:

//+------------------------------------------------------------------+
//|                                          Bewegungsindikator.mq4 |
//|                                                  Lustiger Vogel |
//|                                          http://www.irgendwo.de |
//+------------------------------------------------------------------+

#property copyright ""
#property link      ""


#property indicator_separate_window   
#property indicator_buffers 3
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_level1 90            //Orientierungslinie
#property indicator_level2 80            //Orientierungslinie
#property indicator_level3 70            //Orientierungslinie
#property indicator_level4 30            //Orientierungslinie 
#property indicator_level5 20            //Orientierungslinie
#property indicator_level6 10            //Orientierungslinie
#property indicator_color1 DarkSlateGray  //Farbe RSI Indikator
#property indicator_color2 Red            //Farbe schneller Moving Average
#property indicator_color3 Green          //Farbe langsamer Moving Average         
#property indicator_levelcolor DimGray    //Grenzlinienfarbe
#property indicator_width1 2              //Dicke der Indikatorlinien
#property indicator_width2 2
#property indicator_width3 2

//+------------------------------------------------------------------+
//| Voreinstellung Eingabeparameter                                  |
//+------------------------------------------------------------------+
extern int RSI_Period    = 5;   
extern int RSI_Price    = 0;
extern int RSI_MA_Fast_Period = 3;
extern int RSI_MA_Fast_Type = 1;
extern int RSI_MA_Slow_Period = 20;
extern int RSI_MA_Slow_Type = 1;

//+------------------------------------------------------------------+
//| Arrays                                                          |
//+------------------------------------------------------------------+
double RSIBuf[];
double MaFastBuf[];
double MaSlowBuf[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                        |
//+------------------------------------------------------------------+
int init()
{
IndicatorShortName("RSI mit Moving Average ->");

//+------------------------------------------------------------------+
//| Graphen zeichnen                                                |
//+------------------------------------------------------------------+
SetIndexBuffer(0,RSIBuf);
SetIndexLabel(0,"RSI 5");                   
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); 

SetIndexBuffer(1,MaFastBuf);
SetIndexLabel(1," ("+RSI_MA_Fast_Period+") Schneller MA auf RSI");     
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);                     

SetIndexBuffer(2,MaSlowBuf);
SetIndexLabel(2," ("+RSI_MA_Slow_Period+") Langsamer MA auf RSI");     
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);


return(0);
}
//+------------------------------------------------------------------+
//| Berechnung RSI und MA  auf RSI                              |
//+------------------------------------------------------------------+
int start()
{

double MAFast,MASlow,RSI[];
ArrayResize(RSI,RSI_MA_Slow_Period);
int counted_bars=IndicatorCounted();
int limit = Bars-counted_bars-1;
for(int i=limit; i>=0; i--)

RSIBuf[i] = (iRSI(NULL,0,RSI_Period,RSI_Price,i));
MAFast = 0; MASlow=0;
for(int x=i; x<i; x++) {
RSI[x-i] = RSIBuf[x];
MAFast += RSIBuf[x]/RSI_MA_Fast_Period;
MASlow += RSIBuf[x]/RSI_MA_Slow_Period;
}

for(int j=limit; j>=0; j--)      //was missing
  {MaFastBuf[j] = (iMAOnArray(RSIBuf,0,RSI_MA_Fast_Period,0,RSI_MA_Fast_Type,j));
  MaSlowBuf[j] = (iMAOnArray(RSIBuf,0,RSI_MA_Slow_Period,0,RSI_MA_Slow_Type,j));}

//+------------------------------------------------------------------+
//| Absolutwerte runden                                              |
//+------------------------------------------------------------------+
string valRSI, valMaFast, valMaSlow;
valRSI=DoubleToStr(RSIBuf[0],1);
valMaFast=DoubleToStr(MaFastBuf[0],1);
valMaSlow=DoubleToStr(MaSlowBuf[0],1);

//+------------------------------------------------------------------+
//| Absolutwerte im Hauptfenster ausgeben                            |
//+------------------------------------------------------------------+

Comment("RSI              = "+valRSI+"\nMA schnell    = "+valMaFast+"\nMA langsam  = "+valMaSlow);

//----
return(0);

}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}

Damit wird in einem Subfenster der RSI und die MA angezeigt und die Werte im Hauptfenster ausgegeben, wie ich es zum ausprobieren wollte.


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:14 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