Problem mit iCustom

 

Hi Leute,

ich möchte den Indikator Donchian_Channel https://www.mql5.com/en/code/402 in meinen EA integrieren.

In meinem Code habe ich

enum Applied_Extrem //Type of extreme points
  {
   HIGH_LOW,
   HIGH_LOW_OPEN,
   HIGH_LOW_CLOSE,
   OPEN_HIGH_LOW,
   CLOSE_HIGH_LOW
  };



input int            donchianPeriod          = 50;
input Applied_Extrem extremes                =HIGH_LOW;
input int            margins                 =-2;
input int            shift                   =0;


int dc1Handle;


double dc1Buffer[];





//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
   {
      
      dc1Handle   =  iCustom  (_Symbol,_Period,"Donchian_Channels.mq5",donchianPeriod,extremes,margins,shift);

      return(INIT_SUCCEEDED);
   }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
   {
      IndicatorRelease(dc1Handle);
   }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{



//--- sort indicator arrays
   
   ArraySetAsSeries(dc1Buffer,true);

   
      
    if(CopyBuffer(dc1Handle,0,0,500,dc1Buffer)<0)
      {
         Alert("Error copying Donchian Channels indicator buffer - error:",GetLastError());
         ResetLastError();
         return;
      }    
    return(0);
}   

Ich bekomme damit die Fehlermedlung "Error copying Donchian Channels buffer - error:4807"


Hat jemand eine Idee was da nicht stimmt? Hat das etwas mit dem ENUM zu tun?

Donchian Channels
Donchian Channels
  • Stimmen: 23
  • 2011.08.05
  • Nikolay Kositsin
  • www.mql5.com
Richard Donchian is a legendary figure in trading. He is often called a founder of the trend following systems. The famous Turtle trading system is based on his works. Donchian came to a serious success when he was in quite an old age already. Despite that, he continued working and proved to be a successful trader showing by his own example...
 

Bei iCustom immer überprüfen ob das handle gültig ist.

Beim Indikatornamen ist das .mq5 falsch. der Indikator muss als ex5 kompiliert vorhanden sein.

int OnInit()
{
   dc1Handle =iCustom(_Symbol,_Period,"Donchian_Channels",donchianPeriod,extremes,margins,shift);
   if(dc1Handle==INVALID_HANDLE)
      {
         Alert("*ERROR* Invalid Donchian_Channels handle");
         return(INIT_FAILED);
      }

   ArraySetAsSeries(dc1Buffer,true);

   return(INIT_SUCCEEDED);
}

Das ArraySetAsSeries(....) braucht nur einmal in der OnInit() aufgerufen werden, nicht immer wieder!

Die OnDeinit() ist zwar vollkommen richtig, kann aber weggelassen werden, das macht der Compiler für dich.

LG, Otto

 

Wenn Du im Editor F1 drückst und dann bei Index 4807  eintippst gefolgt von einem Enter, dann, ja dann, weißt Du wo der Fehler liegt, bzw wo man genauer hinschauen muss!

Nämlich in OnInit() gleich nach iCustom(..) müsst man den Handle prüfen und probieren, bis es klappt, bzw mal lesen wie iCustom verwendet werden soll: Kursor auf iCustom und F1 drücken.

Dort gibt es ein Beispiel, wie man iCustom aufruft bzw. verwendet.

BTW: Diese Wege sind viel schneller als eine Antwort hier.

Grund der Beschwerde: