Darvas Box Indicator For MT5
Table Of Contents:
- Darvas Box Indicator For MT5
- Εγκατάσταση του Darvas Box Indicator For MT5
- Παράμετροι του Darvas Box Indicator For MT5
- Buffers του Darvas Box Indicator For MT5
- Κύρια μέρη του κώδικα
Ο Darvas Box Indicator For MT5 βασίζεται στο έργο του Νικολάου Δαρβά. Τα κουτιά Darvas χρησιμοποιούνται για το εμπόριο προς την κατεύθυνση νέων υψηλών και νέων χαμηλών τιμών. Τα κουτιά διευκολύνουν την ανίχνευση τέτοιων διακοπών. Αυτή η ένδειξη αντλεί ένα κανάλι με βάση τον υπολογισμό του κουτιού Darvas. Το άνω όριο του καναλιού τραβιέται σε μπλε χρώμα ενώ το κατώτερο όριο του καναλιού τραβιέται με μοβ χρώμα.
Εγκατάσταση του Darvas Box Indicator For MT5
Αφού κατεβάσετε την ένδειξη μέσω της παραπάνω φόρμας, πρέπει να αποσυνδέσετε το αρχείο zip. Στη συνέχεια, πρέπει να αντιγράψετε το αρχείο darvasboxes.mq5 στο φάκελο MQL5Indicators της εγκατάστασης MT5 . Στη συνέχεια, κάντε επανεκκίνηση του MT5 και, στη συνέχεια, θα μπορείτε να δείτε τον δείκτη στη λίστα των δεικτών.
Παράμετροι του Darvas Box Indicator For MT5
Το Darvas Box Indicator For MT5 έχει παραμέτρους 2 για να ρυθμίσετε τις παραμέτρους.
input bool symmetry=false; input int Shift=0; // Horizontal shift of the indicator in bars
Buffers του Darvas Box Indicator For MT5
Το Darvas Box Indicator For MT5 παρέχει buffers 2 .
SetIndexBuffer(0,UpperBuffer,INDICATOR_DATA); SetIndexBuffer(1,LowerBuffer,INDICATOR_DATA);
Κύρια μέρη του κώδικα
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); } //+------------------------------------------------------------------+