3c_JDemarkX





/*
Äëÿ  ðàáîòû  èíäèêàòîðà  ñëåäóåò  ïîëîæèòü   ôàéëû      
JMASeries.mqh,
JUR001Series.mqh 
â ïàïêó (äèðåêòîðèþ):     MetaTrader\experts\include\
Heiken Ashi#.mq4
â ïàïêó (äèðåêòîðèþ): MetaTrader\indicators\

              "Îïèñàíèå èíäèêàòîðà Ò.ÄåÌàðêà " 
Âî   âíîãèå   ïàêåòû   òåõíè÷åñêîãî  âêëþ÷åí  èíäèêàòîð,  ïðåäëîæåííûé
Ò.ÄåÌàðêîì.  Áëèçêèé  ïî  ñìûñëó  ê  DMI,  íî áîëåå ïðîñòî âû÷èñëÿåìûé
(DEMARK  â  îòëè÷èå  îò ADX, ó÷èòûâàåò òîëüêî ýêñòðåìàëüíûå öåíû, à íå
öåíû   çàêðûòèÿ)  îí  äàåò  íàãëÿäíûå  ñèãíàëû  è  íàðàâíå  ñ  äðóãèìè
îñöèëëÿòîðàìè  ìîæåò  áûòü  ïðèìåíåí  äëÿ  ïîñòðîåíèÿ òîðãîâûõ ñèñòåì.
Îïðåäåëåíèå èíäèêàòîðà: åñëè ñåãîäíÿøíèé high âûøå â÷åðàøíåãî high, òî
àêêóìóëèðóåì  ñîîòâåòñòâóþùèå  ðàçíîñòè,  åñëè  ñåãîäíÿøíèé  low  íèæå
â÷åðàøíåãî,  òî îòäåëüíî àêêóìóëèðóåì ñîîòâåòñòâóþùèå ðàçíîñòè (è òå è
äðóãèå  -  ïîëîæèòåëüíûå  âåëè÷èíû).  Êîëè÷åñòâî  ñâå÷åé n, ïî êîòîðûì
ïðîèñõîäèò    àêêóìóëèðîâàíèå    (óñðåäíåíèå),   ÿâëÿåòñÿ   ïàðàìåòðîì
èíäèêàòîðà,  ðàâíîãî äðîáè: DEMARK = (íàêîïëåííûå çà n ñâå÷åé ðàçíîñòè
high  -  high[-1]) / (  (íàêîïëåííûå  çà  n  ñâå÷åé  ðàçíîñòè   high -
high[-1])  +  (íàêîïëåííûå  çà  n ñâå÷åé ðàçíîñòè low[-1] - low) ) Ïðè
âûçîâå   èíäèêàòîðà  îí  çàïðàøèâàåò  äëèíó  îêíà  óñðåäåíåíèÿ  n;  ïî
óìîë÷àíèþ  ïðåäëàãàåòñÿ  çíà÷åíèå  n  = 13. ×òåíèå ýòîãî èíäèêàòîðà âî
ìíîãîì  àíàëîãè÷íî  RSI:  îí  òàêæå îáðàçóåò îáëàñòè ïåðåêóïëåííîñòè è
ïåðåïðîäàííîñòè,  ÷àñòî ïîêàçûâàåò õîðîøèå äèâåðãåíöèè.  òî æå âðåìÿ,
âî  âìîãèõ  ñèòóàöèÿõ  îí  ìîæåò  èìåòü  ïðåèìóùåñòâà, òàê  êàê  áîëåå 
ïîëíî ó÷èòûâàåò ñòðóêòóðó ñâå÷è.
                © 1997-2005, «FOREX CLUB»
     http://www.fxclub.org/academy_lib_article/article17.html
     
  äàííîì  èíäèêàòîðå  âíóòðè ðàñ÷¸òà êëàññè÷åñêèé àëãîðèòì óñðåäíåíèÿ 
çàìåí¸í  íà  àëãîðèòì  óñðåäíåíèÿ îò èíäèêàòîðà JRSX ñ ïîìîùüþ ôóíêöèè 
JUR001Series è  äîáàâëåíà  ñèãíàëüíàÿ ëèíèÿ, ïîëó÷åííàÿ äîïîëíèòåëüíûì 
JMA ñãëàæèâàíèåì èíäèêàòîðà.   
*/
//+------------------------------------------------------------------+  
//|                                                  3c_JDemarkX.mq4 | 
//|                        Copyright © 2006,        Nikolay Kositsin | 
//|                              Khabarovsk,   farria@mail.redcom.ru | 
//+------------------------------------------------------------------+  
#property copyright "Copyright © 2006, Nikolay Kositsin"
#property link "farria@mail.redcom.ru" 
//---- îòðèñîâêà èíäèêàòîðà â îòäåëüíîì îêíå
#property indicator_separate_window
//---- êîëè÷åñòâî èíäèêàòîðíûõ áóôåðîâ
#property indicator_buffers  4
//---- öâåòà èíäèêàòîðà
#property indicator_color1  Blue
#property indicator_color2  Magenta
#property indicator_color3  Purple
#property indicator_color4  Aqua
//---- òîëùèíà èíäèêàòîðíûõ ëèíèé
#property indicator_width1 3
#property indicator_width2 3 
#property indicator_width3 3
//---- ñòèëü ñèãíàëüíîé ëèíèè èíäèêàòîðà
#property indicator_style4 4
//---- ïàðàìåòðû ãîðèçîíòàëüíûõ óðîâíåé èíäèêàòîðà
#property indicator_level1   50
#property indicator_level2  -50
#property indicator_level3   0
#property indicator_levelcolor DarkOrchid
#property indicator_levelstyle 4
//---- ÂÕÎÄÍÛÅ ÏÀÐÀÌÅÒÐÛ ÈÍÄÈÊÀÒÎÐÀ ææææææ+    
extern int Demark_Length = 10;
extern int Signal_Length = 15;
extern int Signal_Phase  = 100;
//---- æææææææææææææææææææææææææææææææææææ+
//---- èíäèêàòîðíûå áóôåðû
double Ind_Buffer1[];
double Ind_Buffer2[];
double Ind_Buffer3[];
double Ind_Buffer4[]; 
//+------------------------------------------------------------------+  
//----+ Ââåäåíèå ôóíêöèè JJMASeries 
//----+ Ââåäåíèå ôóíêöèè JJMASeriesResize 
//----+ Ââåäåíèå ôóíêöèè JJMASeriesAlert  
//----+ Ââåäåíèå ôóíêöèè JMA_ErrDescr  
#include <JJMASeries.mqh> 
//+------------------------------------------------------------------+ 
//----+ Ââåäåíèå ôóíêöèè JurXSeries
//----+ Ââåäåíèå ôóíêöèè JurXSeriesResize
//----+ Ââåäåíèå ôóíêöèè JurXSeriesAlert 
//----+ Ââåäåíèå ôóíêöèè JurX_ErrDescr  
#include <JurXSeries.mqh> 
//+------------------------------------------------------------------+    
//| JDemarkX initialization function                                 | 
//+------------------------------------------------------------------+  
int init()
  {
//---- 4 èíäèêàòîðíûõ áóôåðà èñïîëüçîâàíû äëÿ ñ÷¸òà
if(!SetIndexBuffer(0,Ind_Buffer1) &&
   !SetIndexBuffer(1,Ind_Buffer2) &&
   !SetIndexBuffer(2,Ind_Buffer3) &&
   !SetIndexBuffer(3,Ind_Buffer4))
   Print("Íå óäàëîñü óñòàíîâèòü èíäèêàòîðíûå áóôåðû!");   
//---- ñòèëè èçîáðàæåíèÿ èíäèêàòîðà
   SetIndexStyle(0,DRAW_HISTOGRAM, STYLE_SOLID); 
   SetIndexStyle(1,DRAW_HISTOGRAM, STYLE_SOLID);
   SetIndexStyle(2,DRAW_HISTOGRAM, STYLE_SOLID);
   SetIndexStyle(3,DRAW_LINE);
//---- èìåíà äëÿ îêîí äàííûõ è ëýéáû äëÿ ñóáúîêîí
   IndicatorShortName ("JDemarkX"); 
   SetIndexLabel(0,"Up_Trend");
   SetIndexLabel(1,"Down_Trend");
   SetIndexLabel(2,"Straight_Trend");
   SetIndexLabel(3,"Signal");
//---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå
   SetIndexEmptyValue(0,0);
   SetIndexEmptyValue(1,0);
   SetIndexEmptyValue(2,0); 
   SetIndexEmptyValue(3,0); 
//----+ Èçìåíåíèå ðàçìåðîâ áóôåðíûõ ïåðåìåííûõ ôóíêöèè JJMASeries, nJMAnumber=1(Îäíî îáðàùåíèå ê ôóíêöèè JJMASeries)
   if (JJMASeriesResize(1)!=1)return(-1);
//----+ Èçìåíåíèå ðàçìåðîâ áóôåðíûõ ïåðåìåííûõ ôóíêöèè JurXSeries, nJurXnumber=2(Äâà îáðàùåíèÿ ê ôóíêöèè JurXSeries)
   if (JurXSeriesResize(2)!=2)return(-1);
//---- óñòàíîâêà àëåðòîâ íà íåäîïóñòèìûå çíà÷åíèÿ âíåøíèõ ïåðåìåííûõ
   JurXSeriesAlert (0,"Demark_Length",Demark_Length);
   JJMASeriesAlert (0,"Signal_Length",Signal_Length);
   JJMASeriesAlert (1,"Sign_Phase",   Signal_Phase);
//---- óñòàíîâêà íîìåðà áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò îòðèñîâûâàòüñÿ èíäèêàòîð  
   int drawbegin=Demark_Length+1; 
   SetIndexDrawBegin(0,drawbegin);
   SetIndexDrawBegin(1,drawbegin);
   SetIndexDrawBegin(2,drawbegin);  
   SetIndexDrawBegin(3,drawbegin+30);        
//---- Óñòàíîâêà ôîðìàòà òî÷íîñòè (êîëè÷åñòâî çíàêîâ ïîñëå äåñÿòè÷íîé òî÷êè) äëÿ âèçóàëèçàöèè çíà÷åíèé èíäèêàòîðà  
   IndicatorDigits(0);
//---- çàâåðøåíèå èíèöèàëèçàöèè   
   return(0);
  }
//+------------------------------------------------------------------+  
//| JDemarkX iteration function                                      | 
//+------------------------------------------------------------------+  
int start()
   { 
   //----+ Ââåäåíèå ïåðåìåííûõ ñ ïëàâàþùåé òî÷êîé 
   double min_L,min_H,min_S,Jmin_H,Jmin_S,Demark,JDemarkX,trend,Signal; 
   //---- ïðîâåðêà êîëè÷åñòâà áàðîâ íà äîñòàòî÷íîñòü äëÿ ðàñ÷¸òà
   if (Bars-1<Demark_Length)return(0); 
   //----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîñ÷èòàííûõ áàðîâ
   int reset,limit,MaxBarD,MaxBarJ,counted_bars=IndicatorCounted();
   //---- ïðîâåðêà íà âîçìîæíûå îøèáêè
   if (counted_bars<0)return(-1);
   //---- ïîñëåäíèé ïîñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí 
   //---- (áåç ýòîãî ïåðåñ÷¸òà äëÿ counted_bars ôóíêöèb JJMASeries è JurXSeries áóäóò ðàáîòàòü íåêîððåêòíî!!!)
   if (counted_bars>0) counted_bars--;
   //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ
   limit=Bars-counted_bars-1;
   //---- îïðåäåëåíèå íîìåðà  ìàêñèìàëüíîãî ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ
   MaxBarD=Bars-2;MaxBarJ=MaxBarD-Demark_Length;
   if (limit>MaxBarD)limit=MaxBarD;
   
   //----+ ÎÑÍÎÂÍÎÉ ÖÈÊË ÐÀÑרÒÀ ÈÅÄÈÊÀÒÎÐÀ
   for(int bar=limit; bar>=0; bar--) 
     {  
        min_H=High[bar]-High[bar+1];
        min_L=Low[bar+1]-Low[bar];
        //----+    
        if(min_H<0) min_H=0; 
        if(min_L<0) min_L=0; 
        min_S = min_L + min_H;
        //----+ ----------------------------------------------------------------+ 
        //----+ Äâà ïàðàëëåëüíûõ îáðàùåíèÿ ê ôóíêöèè JurXSeries çà íîìåðàìè 0, 1 
        //----+ ïàðàìåòð nJurXLength íå ìåíÿåòñÿ íà êàæäîì áàðå (nJurXdin=0) 
        //----+ ----------------------------------------------------------------+     
        Jmin_H=JurXSeries(0,0,MaxBarD,limit,Demark_Length,min_H,bar,reset);
        //----+ ïðîâåðêà íà îòñóòñòâèå îøèáêè â ïðåäûäóùåé îïåðàöèè
        if(reset!=0)return(-1);
        //----+ ----------------------------------------------------------------+ 
        Jmin_S=JurXSeries(1,0,MaxBarD,limit,Demark_Length,min_S,bar,reset);
        //----+ ïðîâåðêà íà îòñóòñòâèå îøèáêè â ïðåäûäóùåé îïåðàöèè
        if(reset!=0)return(-1);                             
        //----+ ----------------------------------------------------------------+ 
        if (bar>MaxBarJ)continue;
        //----+ Ðàñ÷¸ò èíäèêàòîðà Äåìàðêà
        if(Jmin_S!=0)JDemarkX =(200*Jmin_H/Jmin_S)-100;else JDemarkX = 100;
                                    
        //---- +SSSSSSSSSSSSSSSS <<< Òð¸õöâåòíûé êîä èíäèêàòîðà >>> SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
        trend=JDemarkX-Ind_Buffer1[bar+1]-Ind_Buffer2[bar+1]-Ind_Buffer3[bar+1];     
        if     (trend>0){Ind_Buffer1[bar]=JDemarkX; Ind_Buffer2[bar]=0;        Ind_Buffer3[bar]=0;}
        else{if(trend<0){Ind_Buffer1[bar]=0;        Ind_Buffer2[bar]=JDemarkX; Ind_Buffer3[bar]=0;}
        else            {Ind_Buffer1[bar]=0;        Ind_Buffer2[bar]=0;        Ind_Buffer3[bar]=JDemarkX;}}    
        //---- +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+  
        
        //----+ Âû÷èñëåíèå ñèãíàëüíîé ëèíèè
        //----+ ---------------------------------------------------------------------------------------------------------------------------+   
        //----+ (Îäíî îáðàùåíèå ê ôóíêöèè JJMASeries çà íîìåðîì 0, ïàðàìåòðû nJMA.Phase è nJMA.Length íå ìåíÿþòñÿ íà êàæäîì áàðå (nJMA.din=0))
        Signal=JJMASeries(0,0,MaxBarJ,limit,Signal_Phase,Signal_Length,JDemarkX,bar,reset);
        //----+ ïðîâåðêà íà îòñóòñòâèå îøèáêè â ïðåäûäóùåé îïåðàöèè
        if(reset!=0)return(-1); 
        Ind_Buffer4[bar]=Signal;             
        //----+ ---------------------------------------------------------------------------------------------------------------------------+          
     } 
     if(limit>=MaxBarJ){int iii=MaxBarJ;Ind_Buffer1[iii]=0;Ind_Buffer2[iii]=0;Ind_Buffer3[iii]=0;}      
   //---- çàâåðøåíèå âû÷èñëåíèé çíà÷åíèé èíäèêàòîðà
   return(0);
   }  
//+-------------------------------------------------------------------------+
     
  



Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar


Indicator Curves created:


Implements a curve of type DRAW_HISTOGRAM
Implements a curve of type DRAW_LINE

Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: