Na so ähnlich. iCCI oder iRVI sind Funktionen die dir den Indikatorwert für einen bestimmten Bar berechnen.
Mal ein einfaches Beispiel:
b=4
a=Quatratwurzel(4) - Hab kein Quatratwurzelzeichen auf der Tastatur
Das würde man in mql4 dann so schreiben:
double b=4;
double a=sqrt(b);
Das Ergebnis wäre dann 2, a hätte somit den Wert 2 angenommen.
Die Berechnung der Indikatoren ist genauso
Beispiel:
Die Variable ma10 soll den einfachen gleitenden Durchschnitt der letzten 19 Perioden des aktuellen Charts im aktuellen Timeframe für Bar Nummer 1 erhalten:
double ma10=iMA(NULL,0,19,0,MODE_SMA,PRICE_CLOSE,1);
Nachdem diese Programmzeile durchlaufen ist, ist in der Variablen ma10 der GD von Bar 1 enthalten.
Dabei hat jede Variable/Zahl in der Klammer eine eineindeutige Bedeutung !!!
Man kann die Variablen/Bezeichner in der Klammer nur in dieser Reihenfolge angeben.
In diesem Fall hätten die Zahlen in der Klammer folgende Bedeutung:
1. NULL - Das Währungssymbol (NULL bedeutet das Aktuelle auf dem Chart)
2. 0 - diese null steht für das Timeframe - 0 bedeutet aktuelles TF)
3. 19 - Anzahl der Perioden über die der GD berechnet werden soll)
4. 0 - Anzahl der Perioden um die der GD verschoben werden soll
5. MODE_SMA - Art der Durchschnittsbildung(Simpel/Smooth etc.)
6. PRICE_CLOSE - der Preis der für die Berechnung herangezogen werden soll
7. 1 - die Barnummer für die der GD berechnet werden soll
Und genauso funktioniert das bei der Berechnung des iCCI oder iRVI.
Jede Variable hat an einer bestimmten Stelle in der Klammer eine bestimmte Funktion. Deshalb ist dies hier eben falsch:
double IL2 = iCCI(_Symbol,_Period, CCI_indicator_level2, CCI_Price, 1);//+100
Die Variable indicator_level2 steht an der Stelle, wo iCCI die Anzahl der Perioden über die der CCI berechnet wird erwartet.
Und so wird der Wert des CCI vollkommen falsch berechnet.
Hoffe, das hat Dir ein bischen geholfen.
|