Indikator MQL5

 

Hallo,

ich versuche einen Indikator zu entwickeln, der bei dem Candlestick mit dem höchsten High-Wert einen Punkt darüber macht. Ich habe bereits in der CodeBase und auch anderswo im WWW nachgeschaut, finde aber leider nichts. Wäre sehr dankbar, wenn mir jemand helfen könnte, was der Fehler ist. 

//+------------------------------------------------------------------+
//|                                                HighestLowest.mq5 |
//|                                        Copyright 2018, Arthur S. |
//|                    https://www.mql5.com/de/users/michael12345678 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Arthur S."
#property link      "https://www.mql5.com/de/users/michael12345678"
#property version   "1.00"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots 3

#property indicator_label1  "Highest" 
#property indicator_type1   DRAW_ARROW 
#property indicator_color1  clrBlue 
#property indicator_width2  1 
#property indicator_label2  "Lowest" 
#property indicator_type2   DRAW_ARROW 
#property indicator_color2  clrRed 
#property indicator_width2  1 

input int      SignalGap      = 4;

double         HighestBuffer[];
double         LowestBuffer[];
double         High[];

int HighestCandle;
int copied;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{   
   SetIndexBuffer(0,HighestBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,LowestBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,High,INDICATOR_CALCULATIONS);

   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);
   PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0.0);
   
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{   
   HighestBuffer[0]=0.0;
   LowestBuffer[0]=0.0; 
        
   for(int i=1;i<rates_total;i++)
   {
      HighestBuffer[i]=0.0;
      LowestBuffer[i]=0.0;
      
      
      ArraySetAsSeries(High,true);
      copied=CopyHigh(_Symbol,_Period,i,SignalGap,High);
      HighestCandle=ArrayMaximum(High);

      HighestBuffer[i]=high[HighestCandle]+0.00030;
   }

   return(rates_total);
}
 

Dafür gibt es zwei Indikatoren Fractals und ZigZag und für beide verschiedene Variationen und Kombinationen.

Such mal (oben rechts, dann bei den Ergebnissen unter Artikel und CodeBase!) jeweils nach einem der beiden, schau Dir deren Code an!

Erst suchen! Es gibt fast nix, was nicht schon für Mt4/5 programmiert wurde!
Warum das Rad neu erfinden, wenn es in der CodeBase liegt, bereit zum abkupfern?

 
Arthur Singer:

Hallo,

ich versuche einen Indikator zu entwickeln, der bei dem Candlestick mit dem höchsten High-Wert einen Punkt darüber macht. Ich habe bereits in der CodeBase und auch anderswo im WWW nachgeschaut, finde aber leider nichts. Wäre sehr dankbar, wenn mir jemand helfen könnte, was der Fehler ist. 

Vielleicht liegt es am fehlenden Pfeilcode:

   PlotIndexSetInteger(0,PLOT_ARROW,inpArrowCode);

oder dass du den Puffer, falls er nicht definiert ist, auf Leercode stellst:

HighestBuffer[i]=EMPTY_VALUE;  


Versuch mal den code zu debuggen

Grund der Beschwerde: