Darvas Box Indicator For MT5
Table Of Contents:
- Darvas Box Indicator For MT5
- Instalace Darvas Box Indicator For MT5
- Parametry Darvas Box Indicator For MT5
- Vyrovnávací Darvas Box Indicator For MT5
- Hlavní části Kodexu
Indikátor Darvas Box Indicator For MT5 je založen na práci Nicolase Darvase. Darvasovy krabice se používají k obchodování ve směru nových výšin a nových minim. Krabice usnadňují detekci takovýchto porušení. Tento indikátor nakreslí kanál na základě výpočtu darvas boxu. Horní hranice kanálu je nakreslena modrou barvou, zatímco spodní hranice kanálu je nakreslena fialovou barvou.
Instalace Darvas Box Indicator For MT5
Po stažení indikátoru pomocí výše uvedeného formuláře je třeba rozbalit zip soubor. Pak musíte zkopírovat soubor darvasboxes.mq5 do složky MQL5Indicators vaší instalace MT5 . Poté prosím restartujte MT5 a poté uvidíte indikátor v seznamu indikátorů.
Parametry Darvas Box Indicator For MT5
Darvas Box Indicator For MT5 obsahuje parametry 2 lze nakonfigurovat.
input bool symmetry=false; input int Shift=0; // Horizontal shift of the indicator in bars
Vyrovnávací Darvas Box Indicator For MT5
Darvas Box Indicator For MT5 2 Darvas Box Indicator For MT5 poskytuje vyrovnávací paměti 2 .
SetIndexBuffer(0,UpperBuffer,INDICATOR_DATA); SetIndexBuffer(1,LowerBuffer,INDICATOR_DATA);
Hlavní části Kodexu
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); } //+------------------------------------------------------------------+