Darvas Box Indicator For MT5
Table Of Contents:
- Darvas Box Indicator For MT5
- Installation des Darvas Box Indicator For MT5
- Parameter des Darvas Box Indicator For MT5
- Puffer des Darvas Box Indicator For MT5
- Hauptteile des Codes
Der Darvas Box Indicator For MT5 basiert auf der Arbeit von Nicolas Darvas. Darvas-Boxen werden verwendet, um in Richtung neuer Hochs und neuer Tiefs zu handeln. Die Boxen erleichtern das Erkennen solcher Ausbrüche. Dieser Indikator zeichnet einen Kanal basierend auf der Darvas-Box-Berechnung. Die obere Grenze des Kanals wird in blauer Farbe gezeichnet, während die untere Grenze des Kanals in lila Farbe gezeichnet wird.
Installation des Darvas Box Indicator For MT5
Nachdem Sie den Indikator über das obige Formular heruntergeladen haben, müssen Sie die Zip-Datei entpacken. Anschließend müssen Sie die Datei darvasboxes.mq5 in den Ordner MQL5Indicators Ihrer MT5 Installation kopieren. Starten Sie danach MT5 neu und Sie können den Indikator in der Liste der Indikatoren sehen.
Parameter des Darvas Box Indicator For MT5
Der Darvas Box Indicator For MT5 verfügt über 2 zu konfigurierende Parameter.
input bool symmetry=false; input int Shift=0; // Horizontal shift of the indicator in bars
Puffer des Darvas Box Indicator For MT5
Der Darvas Box Indicator For MT5 stellt 2 Puffer bereit.
SetIndexBuffer(0,UpperBuffer,INDICATOR_DATA); SetIndexBuffer(1,LowerBuffer,INDICATOR_DATA);
Hauptteile des Codes
int OnCalculate(const int rates_total, // number of bars in history at the current tick const int prev_calculated,// number of bars calculated at previous call 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[]) { //---- checking the number of bars to be enough for the calculation if(rates_total lt start) return(0); //---- indexing elements in arrays as timeseries ArraySetAsSeries(high,true); ArraySetAsSeries(low,true); //---- declaration of integer variables int limit,bar; //---- declaration of static variables static int state,STATE; static double box_top,box_bottom,BOX_TOP,BOX_BUTTOM; //---- calculations of the limit starting index for the bars recalculation loop if(prev_calculated gt rates_total || prev_calculated lt =0)// checking for the first start of the indicator calculation { limit=rates_total-start; // starting index for calculation of all bars BOX_TOP=high[limit+1]; BOX_BUTTOM=low[limit+1]; STATE=1; } else { limit=rates_total-prev_calculated; // starting index for calculation of new bars } //---- restore values of the variables state=STATE; box_top=BOX_TOP; box_bottom=BOX_BUTTOM; //---- main indicator calculation loop for(bar=limit; bar gt =0; bar--) { //---- store values of the variables before running at the current bar if(rates_total!=prev_calculated && bar==0) { STATE=state; BOX_TOP=box_top; BOX_BUTTOM=box_bottom; } switch(state) { case 1: box_top=high[bar]; if(symmetry)box_bottom=low[bar]; break; case 2: if(box_top lt =high[bar]) box_top=high[bar]; break; case 3: if(box_top gt high[bar]) box_bottom=low[bar]; else box_top=high[bar]; break; case 4: if(box_top gt high[bar]) {if(box_bottom gt = low[bar]) box_bottom=low[bar];} else box_top=high[bar]; break; case 5: if(box_top gt high[bar]) {if(box_bottom gt = low[bar]) box_bottom=low[bar];} else box_top=high[bar]; state=0; break; } UpperBuffer[bar] = box_top; LowerBuffer[bar] = box_bottom; state++; } //---- return(rates_total); } //+------------------------------------------------------------------+