Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 29.10.20
noSkill06s noSkill06s ist offline
Mitglied
 
Registriert seit: Aug 2020
Beiträge: 36
noSkill06s befindet sich auf einem aufstrebenden Ast
Standard Lücken bei CrossOver

Hallo Leute,

ich stehe irgendwie total auf dem Schlauch, habe einen Übungsindikator geproggt, um mehr Erfahrung zu sammeln aber ja komm gerade nicht weiter bzw. kann den Wald vor lauter bäumen nicht mehr sehen xdddd

folgendes:

upperShortMovingAverage = MovingAverage 9
upperLongMovingAverage = MovingVerage 14

9>14 = Bollinger Band UpperLine = Green
9<14 = Bollinger Band UpperLie = Red

lowerShortMovingAverage = MovingAverage 9
lowerLongMovingAverage = MovingVerage 14

9>14 = Bollinger Band lowerLine = Green
9<14 = Bollinger Band lowerLine = Red

Problem genau an der Stelle wo die Überkreuzung stattfindet entstehen lücken in der Bollinger Bands anzeige egal ob upperLine oder lowerLine

ich poste mal den Code bin echt offen für alles, aber denke das Problem muss mit dem Counting Bars zu tun haben bin irgendwie total überfragt gerade :/

Hinweis:
was mir auch sehr komisch vorkommt wenn ich i+1 oder i+10 mache bekomme ich auch keine ArrayOutOfRange Fehlermeldung?????

Code:
//+------------------------------------------------------------------+
//|                                                    presvm_v1.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//setting Buffers
#property indicator_buffers 8
//preCompiling color (Buffer1 = ArrayIndex0)
#property indicator_color1 clrGreen //modeUpperBBandGreen
#property indicator_color2 clrRed //modeLowerBBandRed
#property indicator_color3 clrRed //modeUpperBBandRed
#property indicator_color4 clrGreen //modeLowerBBandGreen
#property indicator_color5 clrGreen //modeMiddleBBandGreen
#property indicator_color6 clrRed //modeMiddleBBandRed
#property indicator_color7 clrGreen//upArrow
#property indicator_color8 clrRed//downArrow
//preCompiling width
#property indicator_width1 2 //modeUpperBBandGreen
#property indicator_width2 2 //modeLowerBBandRed
#property indicator_width3 2 //modeUpperBBandRed
#property indicator_width4 2 //modeLowerBBandGreen
#property indicator_width5 2 //modeMiddleBBandGreen
#property indicator_width6 2 //modeMiddleBBandRed
#property indicator_width7 3 //upArrow
#property indicator_width8 3 //downArrow

//externalSettings upArrowDownArrow
extern string visualization;//>>>>>>Visualization Settings<<<<<<
extern bool arrowsVisualization = true;
extern bool bandsVisualization = true;
//externalSettings upperBBand
extern string upperDescriptionBBand;//>>>>>>upper Bollinger Bands Settings<<<<<<
extern int upperBBandPeriod = 20;
extern int upperBBandOffset = 0;
extern int upperBBandDeviation = 2;
extern ENUM_APPLIED_PRICE upperBBandPrice = PRICE_OPEN;
//externalSettings lowerBBand
extern string lowerDescriptionBBand;//>>>>>>lower Bollinger Bands Settings<<<<<<
extern int lowerBBandPeriod = 20;
extern int lowerBBandOffset = 0;
extern int lowerBBandDeviation = 2;
extern ENUM_APPLIED_PRICE lowerBBandPrice = PRICE_OPEN;
//externalSettings upperShortMovingAverage
extern string upperShortMovingAverageDescription; //>>>>>>upper Short Moving Average Settings<<<<<<
extern int upperShortMovingAveragePeriod = 9;
extern int upperShortMovingAverageOffset = 0;
extern ENUM_MA_METHOD upperShortMovingAverageMode = MODE_SMA;
extern ENUM_APPLIED_PRICE upperShortMovingAveragePrice = PRICE_OPEN;
//externalSettings upperLongMovingAverage
extern string upperLongMovingAverageDescription; //>>>>>>upper Long Moving Average Settings<<<<<<
extern int upperLongMovingAveragePeriod = 14;
extern int upperLongMovingAverageOffset = 0;
extern ENUM_MA_METHOD upperLongMovingAverageMode = MODE_SMA;
extern ENUM_APPLIED_PRICE upperLongMovingAveragePrice = PRICE_OPEN;
//externalSettings lowerShortMovingAverage
extern string lowerShortMovingAverageDescription; //>>>>>>lower Short Moving Average Settings<<<<<<
extern int lowerShortMovingAveragePeriod = 9;
extern int lowerShortMovingAverageOffset = 0;
extern ENUM_MA_METHOD lowerShortMovingAverageMode = MODE_SMA;
extern ENUM_APPLIED_PRICE lowerShortMovingAveragePrice = PRICE_OPEN;
//externalSettings lowerLongMovingAverage
extern string lowerLongMovingAverageDescription; //>>>>>>lower Long Moving Average Settings<<<<<<
extern int lowerLongMovingAveragePeriod = 14;
extern int lowerLongMovingAverageOffset = 0;
extern ENUM_MA_METHOD lowerLongMovingAverageMode = MODE_SMA;
extern ENUM_APPLIED_PRICE lowerLongMovingAveragePrice = PRICE_OPEN;

//arrayDeclaration (Dynamic)
double modeUpperBBandGreen[];
double modeLowerBBandRed[];
double modeUpperBBandRed[];
double modeLowerBBandGreen[];
double modeMiddleBBandGreen[];
double modeMiddleBBandRed[];
double upArrow[];
double downArrow[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   //modeUpperBBandGreen
   SetIndexBuffer(0,modeUpperBBandGreen);
   SetIndexStyle(0,DRAW_LINE);
   //modeLowerBBandGreen
   SetIndexBuffer(1,modeLowerBBandRed);
   SetIndexStyle(1,DRAW_LINE);
   //modeUpperBBandGreen
   SetIndexBuffer(2,modeUpperBBandRed);
   SetIndexStyle(2,DRAW_LINE);
   //modeLowerBBandGreen
   SetIndexBuffer(3,modeLowerBBandGreen);
   SetIndexStyle(3,DRAW_LINE);
   //modeMiddleBBandGreen
   SetIndexBuffer(4,modeMiddleBBandGreen);
   SetIndexStyle(4,DRAW_LINE);
   //modeMiddleBBandRed
   SetIndexBuffer(5,modeMiddleBBandRed);
   SetIndexStyle(5,DRAW_LINE);   
   //upArrow
   SetIndexBuffer(6,upArrow);
   SetIndexStyle(6,DRAW_ARROW);
   SetIndexArrow(6,233);
   SetIndexLabel(6,"Buy Signal");
   //downArrow
   SetIndexBuffer(7,downArrow);
   SetIndexStyle(7,DRAW_ARROW);
   SetIndexArrow(7,234);
   SetIndexLabel(7,"Sell Signal");  
//---
   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[])
  {
//---
   //Counting Bars
   int counted_bars, limit;
   counted_bars=IndicatorCounted();
   limit=Bars-counted_bars;
   
   for(int i=0;i<limit;i++){
   
   //Bollinger Band declaration
   double modeUpperBBand=iBands(NULL,0,upperBBandPeriod,upperBBandDeviation,upperBBandOffset,upperBBandPrice,MODE_UPPER,i);
   double modeLowerBBand=iBands(NULL,0,lowerBBandPeriod,lowerBBandDeviation,lowerBBandOffset,lowerBBandPrice,MODE_LOWER,i);
   double modeMiddleBBand=iBands(NULL,0,lowerBBandPeriod,lowerBBandDeviation,lowerBBandOffset,lowerBBandPrice,MODE_MAIN,i);
   
   //Moving Average declaration
   double upperShortMovingAverage=iMA(NULL,0,upperShortMovingAveragePeriod,upperShortMovingAverageOffset,upperShortMovingAverageMode,upperShortMovingAveragePrice,i);
   double upperLongMovingAverage=iMA(NULL,0,upperLongMovingAveragePeriod,upperLongMovingAverageOffset,upperLongMovingAverageMode,upperLongMovingAveragePrice,i); 
   double lowerShortMovingAverage=iMA(NULL,0,lowerShortMovingAveragePeriod,lowerShortMovingAverageOffset,lowerShortMovingAverageMode,lowerShortMovingAveragePrice,i);
   double lowerLongMovingAverage=iMA(NULL,0,lowerLongMovingAveragePeriod,lowerLongMovingAverageOffset,lowerLongMovingAverageMode,lowerLongMovingAveragePrice,i);
   double movingAverage200=iMA(NULL,0,200,0,MODE_SMA,PRICE_OPEN,i);

   //visualization of Bollinger Band and Moving Average (conditional)
   if(bandsVisualization==true){
      //modeUpperBBandGreen
      if(upperShortMovingAverage>upperLongMovingAverage){
         modeUpperBBandGreen[i]=modeUpperBBand;
         modeUpperBBandRed[i]=EMPTY_VALUE;
         //modeLowerBBandGreen
         if(lowerShortMovingAverage>lowerLongMovingAverage){
            modeLowerBBandGreen[i]=modeLowerBBand;
            modeLowerBBandRed[i]=EMPTY_VALUE;
          //modeLowerBBandRed  
         }else if(lowerShortMovingAverage<lowerLongMovingAverage){
            modeLowerBBandRed[i]=modeLowerBBand;
            modeLowerBBandGreen[i]=EMPTY_VALUE;
         }
       //modeUpperBBandRed 
      }else if(upperShortMovingAverage<upperLongMovingAverage){
         modeUpperBBandRed[i]=modeUpperBBand;
         modeUpperBBandGreen[i]=EMPTY_VALUE;
         //modeLowerBBandGreen
         if(lowerShortMovingAverage>lowerLongMovingAverage){
            modeLowerBBandGreen[i]=modeLowerBBand;
            modeLowerBBandRed[i]=EMPTY_VALUE;
          //modeLowerBBandRed
         }else if(lowerShortMovingAverage<lowerLongMovingAverage){
            modeLowerBBandRed[i]=modeLowerBBand;
            modeLowerBBandGreen[i]=EMPTY_VALUE;
         }
        }
      }

   //visualization of upArrow and downArrow with Alert (conditional)
   if(arrowsVisualization==true){
      if(upperShortMovingAverage>upperLongMovingAverage && lowerShortMovingAverage>lowerLongMovingAverage 
         && Close[i]<Open[i]
         && Close[i]<modeLowerBBand
         ){
         upArrow[i]=Close[i];
      }else if(upperShortMovingAverage<upperLongMovingAverage && lowerShortMovingAverage<lowerLongMovingAverage 
               && Close[i]>Open[i]
               && Close[i]>modeUpperBBand
              ){
         downArrow[i]=Close[i];
         }      
      }
      
    //visualization of modeMiddleBBandGreen and modeMiddleBBandRed
    if(movingAverage200<Close[i]){
      modeMiddleBBandGreen[i]=modeMiddleBBand;
      modeMiddleBBandRed[i]=EMPTY_VALUE;
    }else{
      modeMiddleBBandRed[i]=modeMiddleBBand;
      modeMiddleBBandGreen[i]=EMPTY_VALUE;
    }
    
    
   }
//--- return value of prev_calculated for next call
   return(rates_total);
 }
//+------------------------------------------------------------------+
Angehängte Grafiken
Dateityp: png Bildschirmfoto 2020-10-29 um 23.17.28.png (30,6 KB, 6x aufgerufen)