/* Äëÿ ðàáîòû èíäèêàòîðà ñëåäóåò ïîëîæèòü ôàéë 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: