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)
-   -   Kann mir da bitte jemand mit iCustom helfen ?! (http://www.expert-advisor.com/forum/showthread.php?t=5247)

Kronenchakra 28.10.16 03:49

Kann mir da bitte jemand mit iCustom helfen ?!
 
Hallo Spezialisten!
Mir kommt bei iCustom nur Schwachsinn heraus und ich versuche seit Stunden herauszubekommen warum.
Ich habe natürlich auch die Dokumentation zu Rate gezogen, aber ich komme auf keinen grünen Zweig.

Code:

#define IndiName "DEMA"
#define count 2

int    handle;

double  Data[count];
MqlTick tick;

int OnInit()
  {
      handle=iCustom(_Symbol,PERIOD_M1,IndiName,6,0);
      if(handle==INVALID_HANDLE)
        {
            Alert(IndiName, " nicht gefunden");
            return(INIT_FAILED);
        }

  return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
      IndicatorRelease(handle);
      Comment("");
  }

void OnTick()
  {
      SymbolInfoTick(_Symbol,tick);
      if(CopyBuffer(handle,1,0,count,Data)<count)
        Alert("Fehler bei CopyBuffer");
     
      Comment("  Ask: "    ,DoubleToString(tick.ask,_Digits),
              "  Bid: "    ,DoubleToString(tick.bid,_Digits),
              "  Data[1]: ",DoubleToString(Data[1] ,_Digits),
              "  Data[0]: ",DoubleToString(Data[0] ,_Digits));
  }

Ich will blos die letzten 2 Werte des Indikators, um die Steigung auszurechnen,
und verbrate Stunden mit sowas.:mad::confused::mad:

Ich habe es auch mit iDEMA versucht. Da erhalte ich zumindest die Fehlermeldung (Fehler bei CopyBuffer).
Weiß aber trotzdem nicht was ich falsch mache. Auch mit dynamischem Array hab ich es versucht, war auch nicht besser.
Ausserdem steht in der Dokumentation, daß statische Arrays effektiver sind. Tausend Fragezeichen ??????????

Bitte um Hilfe!
Otto

traderdoc 28.10.16 06:22

Na dann greife doch einfach nur über

val0 = iCustom(_Symbol,PERIOD_M1,IndiName,6,0);
val1 = iCustom(_Symbol,PERIOD_M1,IndiName,6,1);

darauf zu, sofern es tatsächlich einen Buffer 6 gibt.

traderdoc

Kronenchakra 28.10.16 10:19

Danke für die rasche Antwort!
War aber evtl. doch etwas zu rasch.
iCustom(...) gibt keine Indikatorwerte zurück, sondern ein Handle zu einem Indikator.
Das geht aus der Doku eindeutig hervor, auch der Rückgabewert ist int und mit Buffernummern hat das nichts zu tun.
Code:

int  iCustom(
  string          symbol,    // symbol name
  ENUM_TIMEFRAMES  period,    // period
  string          name        // folder/custom_indicator_name
  ...                          // list of indicator input parameters
  );

Code:

Return Value

Returns the handle of a specified technical indicator, 
in case of failure returns INVALID_HANDLE.

Die Buffernummern werden erst in CopyBuffer(...) verwendet.
Aber ich werde das Problem schon in den Griff bekommen.:D:mad:
LG Otto

Kronenchakra 28.10.16 12:46

Das Rätsel ist gelöst
 
Die Lösung ist trivial. :D
In der Dokumentation wird fälschlicherweise von BufferNUMMER geschrieben.
Es ist aber der BufferINDEX gemeint!:mad:
Und der Bufferindex beginnt bei 0, eine Nummer bei 1.
Ist analog zu rates_total und prev_calculated.

Also: Problem gelöst!

LG Otto


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