/*-----------------------------+ | | | Shared by www.Aptrafx.com | | | +------------------------------*/ /* Äëÿ ðàáîòû èíäèêàòîðà ñëåäóåò ïîëîæèòü ôàéë JJMASeries.mqh â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include\ */ //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ //| JMACD.mq4 | //| JMA code: Copyright © 2005, Weld, Jurik Research | //| http://weld.torguem.net | //| Copyright © 2005, Nikolay Kositsin | //| Khabarovsk, violet@mail.kht.ru | //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ #property copyright "Copyright © 2004, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" //---- indicator settings #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 BlueViolet #property indicator_color2 Magenta //---- indicator parameters extern int FastJMA=12; extern int SlowJMA=26; extern int SignalJMA=9; extern int JMACD_Phase = 5; extern int Signal_Phase = 5; extern int Input_Price_Customs = 0;//Âûáîð öåí, ïî êîòîðûì ïðîèçâîäèòñÿ ðàñ÷¸ò èíäèêàòîðà (0-"Close", 1-"Open", 2-"(High+Low)/2", 3-"High", 4-"Low", 5-"input Heiken Ashi Close") extern int CountBars = 300;//Êîëè÷åñòâî ïîñëåäíèõ áàðîâ, íà êîòîðûõ ïðîèñõîäèò ðàñ÷¸ò íäèêàòîðà //---- indicator buffers double F.JMA,S.JMA,jmacd,Series; //---- JMA variabls double JMACD[]; double JSIGN[]; int count,IPC; //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ //| Custom indicator initialization function | //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ int init() { //---- drawing settings SetIndexStyle(0,DRAW_LINE,STYLE_SOLID); SetIndexDrawBegin(0,Bars-CountBars); SetIndexDrawBegin(1,Bars-CountBars); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1); //---- indicator buffers mapping if(!SetIndexBuffer(0,JMACD) && !SetIndexBuffer(1,JSIGN))Alert("cannot set indicator buffers!"); //---- name for DataWindow and indicator subwindow label IndicatorShortName("JMACD("+FastJMA+","+SlowJMA+","+SignalJMA+")"); SetIndexLabel(0,"JMACD"); SetIndexLabel(1,"SignalJMA"); //+=======================================================================================================================================================+ if(JMACD_Phase<-100){Alert("Ïàðàìåòð JMACD_Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +JMACD_Phase+ " áóäåò èñïîëüçîâàíî -100");} if(JMACD_Phase> 100){Alert("Ïàðàìåòð JMACD_Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +JMACD_Phase+ " áóäåò èñïîëüçîâàíî 100");} if(Signal_Phase<-100){Alert("Ïàðàìåòð Signal_Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +Signal_Phase+ " áóäåò èñïîëüçîâàíî -100");} if(Signal_Phase> 100){Alert("Ïàðàìåòð Signal_Phase äîëæåí áûòü îò -100 äî +100" + " Âû ââåëè íåäîïóñòèìîå " +Signal_Phase+ " áóäåò èñïîëüçîâàíî 100");} if(FastJMA< 1){Alert("Ïàðàìåòð FastJMA äîëæåí áûòü íå ìåíåå 1" + " Âû ââåëè íåäîïóñòèìîå " +FastJMA+ " áóäåò èñïîëüçîâàíî 1" );} if(SlowJMA< 1){Alert("Ïàðàìåòð SlowJMA äîëæåí áûòü íå ìåíåå 1" + " Âû ââåëè íåäîïóñòèìîå " +SlowJMA+ " áóäåò èñïîëüçîâàíî 1" );} if(SignalJMA<1){Alert("Ïàðàìåòð SignalJMA äîëæåí áûòü íå ìåíåå 1" + " Âû ââåëè íåäîïóñòèìîå " +SignalJMA+" áóäåò èñïîëüçîâàíî 1" );} if(IPC<0){Alert("Ïàðàìåòð Input_Price_Customs äîëæåí áûòü íå ìåíåå 0" + " Âû ââåëè íåäîïóñòèìîå "+IPC+ " áóäåò èñïîëüçîâàíî 0" );} if(IPC>6){Alert("Ïàðàìåòð Input_Price_Customs äîëæåí áûòü íå áîëåå 4" + " Âû ââåëè íåäîïóñòèìîå "+IPC+ " áóäåò èñïîëüçîâàíî 0" );} //+=======================================================================================================================================================+ IPC=Input_Price_Customs; //---- initialization done return(0); } //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ //| JMACD | //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+ int start() { int limit; int counted_bars=IndicatorCounted(); //---- check for possible errors if(counted_bars<0) return(-1); limit=Bars-counted_bars-1; //----+ Ââåäåíèå è èíèöèàëèçàöèÿ âíóòðåííèõ ïåðåìåííûõ ôóíêöèè JJMASeries, JMAnumberJ=3(Òðè îáðàùåííèÿ ê ôóíêöèè) if (limit==Bars-1){int reset=-1;int set=JJMASeries(3,0,0,0,0,0,0,0,reset);if((reset!=0)||(set!=0))return(-1);} //----+ //---- macd counted in the JMACD buffer for(int bar=limit; bar>=0; bar--) { switch(IPC) { //----+ Âûáîð öåí, ïî êîòîðûì ïðîèçâîäèòñÿ ðàñ÷¸ò èíäèêàòîðà +-----+ case 0: Series=Close[bar];break; case 1: Series= Open[bar];break; case 2: {Series=(High[bar]+Low [bar])/2;}break; case 3: Series= High[bar];break; case 4: Series= Low[bar];break; case 5: {Series=(Open[bar]+High [bar]+Low[bar]+Close[bar])/4;}break; case 6: {Series=(Open[bar]+Close[bar])/2;}break; default: Series=Close[bar];break; //----+------------------------------------------------------------+ } //----+ Îáðàùåíèå ê ôóíêöèè JJMASeries çà íîìåðîì 0, ïàðàìåòðû PhaseJ è LengthJ íå ìåíÿþòñÿ íà êàæäîì áàðå (din=0) reset=1;F.JMA=JJMASeries(0,0,Bars-1,limit,JMACD_Phase,FastJMA,Series,bar,reset);if(reset!=0)return(-1); //----+ Îáðàùåíèå ê ôóíêöèè JJMASeries çà íîìåðîì 1, (din=0) reset=1;S.JMA=JJMASeries(1,0,Bars-1,limit,JMACD_Phase,SlowJMA,Series,bar,reset);if(reset!=0)return(-1); //----+ jmacd=F.JMA-S.JMA; JMACD[bar]=jmacd; //----+ Îáðàùåíèå ê ôóíêöèè JJMASeries çà íîìåðîì 2, (din=0,  ýòîì îáðàùåíèè ïàðàìåòð MaxBarJ óìåíüøåí íà 30 ò. ê. ýòî ïîâòîðíîå JMA ñãëàæèâàíèå) reset=1;JSIGN[bar]=JJMASeries(2,0,Bars-29,limit,Signal_Phase,SignalJMA,jmacd,bar,reset);if(reset!=0)return(-1); } //---- done return(0); } //----+ Ââåäåíèå ôóíêöèè JJMASeries (ôàéë JJMASeries.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include) #include <JJMASeries.mqh>
Sample
Analysis
Market Information Used:
Series array that contains close prices for each bar
Series array that contains open prices of each bar
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_LINE
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features:
It issuies visual alerts to the screen