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 MQL5 (http://www.expert-advisor.com/forum/forumdisplay.php?f=221)
-   -   Wer kann helfen iRSI Problem (http://www.expert-advisor.com/forum/showthread.php?t=5610)

marquez 14.04.17 19:47

Wer kann helfen iRSI Problem
 
Hi in die Runde,


ist zwar blöd, dass ich hier fast immer nur zum schreiben komme, wenn Probleme da sind, aber hoffe trotzdem, dass sich jemand der Sache annehmen und helfen kann.

Ich bin bei einem Codeschnipsel beim MT4 auf folgende Code getroffen:

Code:

double imaPrice = iMA(NULL, 0, SMA_Period, 0, MODE_SMMA, PRICE_CLOSE, pos);
double rsiValue = iRSI( NULL,0,14,imaPrice, 0 );

Wie unschwer zu sehen ist, nutzt hier der RSI den imaPrice als "applied_price"


Jetzt finde ich für MT5 keine Adäquate Lösung hierfür. In der Doku zum iRSI MT5 steht auch nur, dass dieser bei "applied_price" die

Code:

PRICE_CLOSE
PRICE_OPEN
PRICE_HIGH
PRICE_LOW
PRICE_MEDIAN
PRICE_TYPICAL
PRICE_WEIGHTED

Oder den Handle vom anderen Indikator nehmen kann.

vgl: https://www.mql5.com/en/docs/indicators/irsi


Jeglicher Versuch also auch beim MT5 den imaPrice Value an den RSI einzubinden wirft sofort den Fehler, dass der RSI dann nicht initialisiert werden kann.


Hat da irgend jemand eine Idee zu ?

Vielleicht ist es auch wieder zu einfach, und ich seh den Wald vor Bäumen gerade nicht.


Danke schonmal.

MA-EA 14.04.17 21:22

Bin mir nicht sicher, aber den price muss man nicht extra deklarieren. Reicht glaube ich aus, ihn oben bei den Parametern auswählbar zu machen. Guck mal in der Quelldatei des RSI.

Edit:
Versuch mal bei den Einstellungen
Code:

input ENUM_APPLIED_PRICE
einzutragen. Müsste im MT dann auswählbar sein.

marquez 14.04.17 21:48

Danke für Deine Antwort,

allerdings geht es mir nicht darum beim IRSI den applied_price per Settings einstellbar zu machen, oder den per PRICE_BLA zu definieren, sondern den Codeschnipsel vom MT4 zu portieren, und dieser nutzt bei applied_price den Wert vom IMA !

Kronenchakra 16.04.17 21:25

Hi Marquez,

das Handling der Indikatoren ist tatsächlich einer der großen Unterschiede von MQL4 zu MQL5.
In MQL5 muss zuerst ein Handle für einen Indikator erstellt werden, sinnvollerweise in der OnInit().
Also nur EIN mal wegen der Performance.
Ein Array von doubles erstellen und als Series definieren. Das ist wichtig.
Die Werte des Indis kopierst du dann mit CopyBuffer(...) in dieses Array.
Wenn du den Code siehst wird das klarer:
Code:

input int                  inpMA_Period      = 14;            // MA Period
input ENUM_TIMEFRAMES      inpMA_Timeframe  = PERIOD_M5;      // MA Timeframe
input ENUM_APPLIED_PRICE  inpMA_ApplPrice  = PRICE_TYPICAL;  // MA Applied Price
input ENUM_MA_METHOD      inpMA_Methode    = MODE_EMA;      // MA Method

int      maShift=0;
int      maHandle;
double  maBuffer[];

int OnInit()
{
  maHandle = iMA(_Symbol,inpMA_Timeframe,inpMA_Period,maShift,inpMA_Methode,inpMA_ApplPrice);  // Handle erstellen
  if(maHandle==INVALID_HANDLE)                            // Handle prüfen
      {
        Alert("*ERROR* creating MA-Handle");
        return(INIT_FAILED);
      }
  ArraySetAsSeries(maBuffer,true);                        // Buffer als Series definieren
  return(INIT_SUCCEEDED);
}

void OnTick()
{
  int to_copy=1;                                          // wir wollen hier nur den letzten Wert
  if(CopyBuffer(maHandle,0,0,to_copy,maBuffer)<to_copy)    // Daten aus dem Indi in den Buffer kopieren und prüfen
      {
        Alert("*ERROR* copy MA-Data");
        return;
      }
  Comment(DoubleToString(maBuffer[0],_Digits));            // Wert anzeigen oder was sinnvolleres damit anstellen
}

Ich hoffe das ist es was du gesucht hast. :)

marquez 17.04.17 01:42

Hi,

auch das nicht ganz richtig.

Ich glaube ich habe meine Frage nicht eindeutig genug geschrieben.


Ich suche einen Ansatz, wo ich in den iRSI (wie im Thread) angegeben, den IMA Wert übergeben kann, ohne dass der iRSI mir einen Fehler wirft !

Ich dachte eigentlich, dass geht aus meinem Schnipsel und meiner Frage auch hervor.

Also, ich probiere dann hier nochmals die Frage zu präzisieren:

1. Der IMA berechnet einen Wert !
2. Der iRSI soll diesen berechneten Wert vom IMA übergeben bekommen, wie in dem Codeschnipsel bereits geschrieben.

Problem weiterhin: Beim iRSI MT5 kann ich nur einen PRICE_BLA oder den Handle vom IMA übergeben, jedoch nicht den berechneten IMA Wert (wie beim MT4)


Ich hoffe, meine Frage ist ein wenig klarer geworden damit.

VG
Marquez

Kronenchakra 17.04.17 03:12

Ups, ist heut' schon ein wenig spät.
Ich denk mir das morgen nochmal durch was du brauchst und melde mich morgen Abends wieder.
Ist ja jetzt Ostern und wir haben grad unser viertes Enkerl bekommen. Das muss gefeiert werden! ;)
Wir werden dein Problem schon lösen.
LG Otto

marquez 17.04.17 03:19

Da hab ich keine Zweifel.

Du kannst der Einfachheit halber ja nen einfachen MT4 Indi machen, mit ner kleinen for schleife (20 - 100 er Schleife reicht locker), und die Schleife einmal durchlaufen lassen. Und dann mal schauen was Du für einen Ansatz finden könntest. Ich hänge da ein wenig wenn ich ehrlich bin.


Die SMA_Period steht bei den Settings übrigens auf 1.
Ich habe sie mal auf 14 gesetzt, um eine Vereinfachung zu finden, allerdings bisher ohne Erfolg :(


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