Darvas Box Indicator For MT5
Table Of Contents:
- Darvas Box Indicator For MT5
- Darvas Box Indicator For MT5 installeren
- Parameters van het Darvas Box Indicator For MT5
- Buffers van het Darvas Box Indicator For MT5
- Hoofddelen van de code
De Darvas Box Indicator For MT5 is gebaseerd op het werk van Nicolas Darvas. Darvas-dozen worden gebruikt om te handelen in de richting van nieuwe hoogtepunten en nieuwe dieptepunten. De dozen maken het gemakkelijk om dergelijke uitbraken te detecteren. Deze indicator tekent een kanaal op basis van de berekening van de darvas-box. De bovengrens van het kanaal is getekend in blauwe kleur, terwijl de ondergrens van het kanaal is getekend met paarse kleur.
Darvas Box Indicator For MT5 installeren
Nadat u de indicator via het bovenstaande formulier heeft gedownload, moet u het zip-bestand uitpakken. Vervolgens moet u het bestand darvasboxes.mq5 naar de map MQL5Indicators van uw MT5 installatie kopiëren. Start daarna MT5 opnieuw op en dan kunt u de indicator zien in de lijst met indicatoren.
Parameters van het Darvas Box Indicator For MT5
Het Darvas Box Indicator For MT5 moet de parameters 2 configureren.
input bool symmetry=false; input int Shift=0; // Horizontal shift of the indicator in bars
Buffers van het Darvas Box Indicator For MT5
Het Darvas Box Indicator For MT5 biedt 2 buffers.
SetIndexBuffer(0,UpperBuffer,INDICATOR_DATA); SetIndexBuffer(1,LowerBuffer,INDICATOR_DATA);
Hoofddelen van de code
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); } //+------------------------------------------------------------------+