Miscellaneous
0
Views
0
Downloads
0
Favorites
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);
}
//+-------------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---