Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 07.04.12
Biatsch Biatsch ist offline
Mitglied
 
Registriert seit: Oct 2011
Beiträge: 77
Biatsch befindet sich auf einem aufstrebenden Ast
Standard Indikator mit BollingerBands

Hi,
ich versuche mich gerade ein einem Indikator, der mir ein Pfeilsignal gibt, wenn der Kurs innerhalb der letzten 25 Perioden das untere Band geschnitten hat.
Alles soll im 4H_Chart geprüft werden.

Leider setzt was auch immer ich da programmiert habe einen Pfeil an jede einzelne Kerze.
Außerdem werden die Pfeile beim Entfernen des Indikators nicht gelöscht, was aber der Fall sein soll.

Wisst Ihr, wo der Fehler liegt ?

HTML-Code:
#property indicator_chart_window

#property indicator_buffers 3
#property indicator_color1 LightSeaGreen
#property indicator_color2 LightSeaGreen
#property indicator_color3 LightSeaGreen
//---- indicator parameters
extern int    BandsPeriod=34;
extern int    BandsShift=0;
extern double BandsDeviations=2.0;
//---- buffers
double MovingBuffer[];
double UpperBuffer[];
double LowerBuffer[];
int x=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int deinit()
{
 for(int z=1;z<=x;z++)
      {
       ObjectDelete("BUY" + z);
      }
}

int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MovingBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,UpperBuffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,LowerBuffer);
//----
   SetIndexDrawBegin(0,BandsPeriod+BandsShift);
   SetIndexDrawBegin(1,BandsPeriod+BandsShift);
   SetIndexDrawBegin(2,BandsPeriod+BandsShift);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Bollinger Bands                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i,k,counted_bars=IndicatorCounted();
   
   i = Bars-counted_bars-1;
   
   while(i>=0)
      {      
      MovingBuffer[i] = iMA   (NULL,240,BandsPeriod,BandsShift,MODE_SMA,MODE_CLOSE,i);
      UpperBuffer[i]  = iBands(NULL,240,BandsPeriod,BandsDeviations,0,PRICE_CLOSE,MODE_UPPER,i);
      LowerBuffer[i]  = iBands(NULL,240,BandsPeriod,BandsDeviations,0,PRICE_CLOSE,MODE_LOWER,i);
      
      double Min = Low[Lowest(NULL,240,MODE_LOW,25,i)]; 
      double MinLowerBand = ArrayMinimum(LowerBuffer,25,i);
      
         if(Min<MinLowerBand){
            x++;
            ObjectCreate("BUY" + x,OBJ_ARROW,0,Time[i],Low[i]);
            ObjectSet("BUY" + x,OBJPROP_COLOR,Red); 
            ObjectSet("BUY" + x,OBJPROP_STYLE,SYMBOL_ARROWUP); 
            ObjectSet("BUY" + x,OBJPROP_WIDTH,3); 
            ObjectSet("BUY" + x,OBJPROP_BACK,true);
         }
      
      i--;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+