3c_JDemark





/*
Äëÿ  ðàáîòû  èíäèêàòîðà  ñëåäóåò  ïîëîæèòü ôàéë 
JJMASeries.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
 äàííîì èíäèêàòîðå çíà÷åíèÿ, ïîëó÷åííûå íà îñíîâå àëãîðèòìà  Äåìàðêà,
ñãëàæåíû  ñ  ïîìîùüþ  JMA  ñãëàæèâàíèÿ  è  äîáàâëåíà ñèãíàëüíàÿ ëèíèÿ, 
ïîëó÷åííàÿ äîïîëíèòåëüíûì JMA ñãëàæèâàíèåì. 
*/
//+------------------------------------------------------------------+  
//|                                                   3c_JDemark.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_Period = 13;
extern int Demark_Smooth = 3; 
extern int Smooth_Phase  = 100;
extern int Sign_Length   = 15;
extern int Sign_Phase    = 100;
//---- ----------------------------------+
//---- èíäèêàòîðíûå áóôåðû
double Ind_Buffer1[];
double Ind_Buffer2[];
double Ind_Buffer3[];
double Ind_Buffer4[];  
//+------------------------------------------------------------------+  
//----+ Ââåäåíèå ôóíêöèè JJMASeries 
//----+ Ââåäåíèå ôóíêöèè JJMASeriesResize 
//----+ Ââåäåíèå ôóíêöèè JJMASeriesAlert  
//----+ Ââåäåíèå ôóíêöèè JMA_ErrDescr  
#include <JJMASeries.mqh> 
//+------------------------------------------------------------------+   
//| JDemark initialization function                                  | 
//+------------------------------------------------------------------+  
int init()
  {
//---- 4 èíäèêàòîðíûõ áóôåðà èñïîëüçîâàíû äëÿ ñ÷¸òà
if(!SetIndexBuffer(0,Ind_Buffer1) &&
   !SetIndexBuffer(1,Ind_Buffer2) &&
   !SetIndexBuffer(2,Ind_Buffer3) &&
   !SetIndexBuffer(3,Ind_Buffer4))
   Print("cannot set indicator buffers!");   
//---- ñòèëè èçîáðàæåíèÿ èíäèêàòîðà
   SetIndexStyle(0,DRAW_HISTOGRAM, STYLE_SOLID); 
   SetIndexStyle(1,DRAW_HISTOGRAM, STYLE_SOLID);
   SetIndexStyle(2,DRAW_HISTOGRAM, STYLE_SOLID);
   SetIndexStyle(3,DRAW_LINE);
//---- èìåíà äëÿ îêîí äàííûõ è ëýéáû äëÿ ñóáúîêîí
   IndicatorShortName ("JDemark");
   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=2(Äâà îáðàùåíèÿ ê ôóíêöèè JJMASeries)
   if (JJMASeriesResize(2)!=2)return(-1);
//---- óñòàíîâêà àëåðòîâ íà íåäîïóñòèìûå çíà÷åíèÿ âíåøíèõ ïåðåìåííûõ
   JJMASeriesAlert (0,"Demark_Period",Demark_Period);
   JJMASeriesAlert (0,"Demark_Smooth",Demark_Smooth);
   JJMASeriesAlert (0,"Sign_Length",    Sign_Length);
   JJMASeriesAlert (1,"Smooth_Phase",  Smooth_Phase);
   JJMASeriesAlert (1,"Sign_Phase",      Sign_Phase);
//---- êîðåêöèÿ íåäîïóñòèìîãî çíà÷åíèÿ ïàðàìåòðà Demark_Period
   if(Demark_Period<1)Demark_Period=1;
//---- óñòàíîâêà íîìåðà áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò îòðèñîâûâàòüñÿ èíäèêàòîð 
   int draw_begin=Demark_Period+1+30; 
   SetIndexDrawBegin(0,draw_begin);
   SetIndexDrawBegin(1,draw_begin);
   SetIndexDrawBegin(2,draw_begin);  
   SetIndexDrawBegin(3,draw_begin+30);     
//---- Óñòàíîâêà ôîðìàòà òî÷íîñòè (êîëè÷åñòâî çíàêîâ ïîñëå äåñÿòè÷íîé òî÷êè) äëÿ âèçóàëèçàöèè çíà÷åíèé èíäèêàòîðà  
   IndicatorDigits(0);
//---- çàâåðøåíèå èíèöèàëèçàöèè   
   return(0);
  }
//+------------------------------------------------------------------+  
//| JDemark iteration function                                       | 
//+------------------------------------------------------------------+  
int start()
   { 
    //---- ïåðåìåííûå ñ ïëàâàþùåé òî÷êîé 
   double MinHigh,MinLow,Up,Down,Demark,JDemark,trend,Signal;
   //---- ïðîâåðêà íà êîëè÷åñòâà áàðîâ íà äîñòàòî÷íîñòü äëÿ ðàñ÷¸òà
   if (Bars-1<Demark_Period)return(0);  
   //----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîñ÷èòàííûõ áàðîâ
   int reset,MaxBarD,MaxBarJ,limit,counted_bars=IndicatorCounted();
   //---- ïðîâåðêà íà âîçìîæíûå îøèáêè
   if (counted_bars<0)return(-1);
   //---- ïîñëåäíèé ïîñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí
   if (counted_bars>0) counted_bars--;
   //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ
   limit=Bars-counted_bars-1; MaxBarD=Bars-1-Demark_Period; MaxBarJ=MaxBarD-30; 
   //----+  
   for(int bar=limit; bar>=0; bar--) 
     {  
        //----+ Ðàñ÷¸ò èíäèêàòîðà Äåìàðêà (îáðàùåíèå ê òåõíè÷åñêîìó èíäèêàòîðó iDeMarker)  
        Demark=200*iDeMarker(NULL, 0, Demark_Period, bar)-100;
             
        //----+ Ñãëàæèâàíèå ãîòîâîãî èíäèêàòîðà
        //----+ ( Îáðàùåíèå ê ôóíêöèè JJMASeries çà íîìåðîì 0, ïàðàìåòðû nJMA.Phase è nJMA.Length íå ìåíÿþòñÿ íà êàæäîì áàðå (nJMA.din=0))
        JDemark=JJMASeries(0,0,MaxBarD,limit,Smooth_Phase,Demark_Smooth,Demark,bar,reset);
        //----+ ïðîâåðêà íà îòñóòñòâèå îøèáêè â ïðåäûäóùåé îïåðàöèè
        if(reset!=0)return(-1); 
                            
        //---- +SSSSSSSSSSSSSSSS <<< Òð¸õöâåòíûé êîä èíäèêàòîðà >>> SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
        trend=JDemark-Ind_Buffer1[bar+1]-Ind_Buffer2[bar+1]-Ind_Buffer3[bar+1];     
        if     (trend>0){Ind_Buffer1[bar]=JDemark; Ind_Buffer2[bar]=0;       Ind_Buffer3[bar]=0;}
        else{if(trend<0){Ind_Buffer1[bar]=0;       Ind_Buffer2[bar]=JDemark; Ind_Buffer3[bar]=0;}
        else            {Ind_Buffer1[bar]=0;       Ind_Buffer2[bar]=0;       Ind_Buffer3[bar]=JDemark;}}    
        //---- +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+  
        //----+ Âû÷èñëåíèå ñèãíàëüíîé ëèíèè 
        //----+ ( Îáðàùåíèå ê ôóíêöèè JJMASeries çà íîìåðîì 1, ïàðàìåòðû nJMA.Phase è nJMA.Length íå ìåíÿþòñÿ íà êàæäîì áàðå (nJMA.din=0))
        Signal=JJMASeries(1,0,MaxBarJ,limit,Sign_Phase,Sign_Length,JDemark,bar,reset);
        //----+ ïðîâåðêà íà îòñóòñòâèå îøèáêè â ïðåäûäóùåé îïåðàöèè
        if(reset!=0)return(-1); 
        Ind_Buffer4[bar]=Signal;
        //----+        
     }    
   //---- çàâåðøåíèå âû÷èñëåíèé çíà÷åíèé èíäèêàòîðà
   return(0);
   }  
//+----------------------------------------------------------------------------------+





Sample





Analysis



Market Information Used:



Indicator Curves created:


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

Indicators Used:

DeMarker indicator


Custom Indicators Used:

Order Management characteristics:

Other Features: