Darvas Box Indicator For MT5
Table Of Contents:
- Darvas Box Indicator For MT5
- Installation du Darvas Box Indicator For MT5
- Paramètres du Darvas Box Indicator For MT5
- Tampons du Darvas Box Indicator For MT5
- Parties principales du code
L' Darvas Box Indicator For MT5 est basé sur les travaux de Nicolas Darvas. Les boîtes Darvas sont utilisées pour négocier de nouveaux hauts et de nouveaux bas. Les boîtes facilitent la détection de telles éruptions. Cet indicateur dessine un canal basé sur le calcul de la boîte de dialogue. La limite supérieure du canal est dessinée en bleu tandis que la limite inférieure du canal est en violet.
Installation du Darvas Box Indicator For MT5
Après avoir téléchargé l'indicateur via le formulaire ci-dessus, vous devez décompresser le fichier zip. Ensuite, vous devez copier le fichier darvasboxes.mq5 dans le dossier MQL5Indicators de votre installation MT5 . Ensuite, redémarrez MT5 et vous pourrez voir l’indicateur dans la liste des indicateurs.
Paramètres du Darvas Box Indicator For MT5
Darvas Box Indicator For MT5 a des paramètres 2 à configurer.
input bool symmetry=false; input int Shift=0; // Horizontal shift of the indicator in bars
Tampons du Darvas Box Indicator For MT5
Le Darvas Box Indicator For MT5 2 Darvas Box Indicator For MT5 fournit des tampons 2 .
SetIndexBuffer(0,UpperBuffer,INDICATOR_DATA); SetIndexBuffer(1,LowerBuffer,INDICATOR_DATA);
Parties principales du 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); } //+------------------------------------------------------------------+