JMACD_v1





/*-----------------------------+
|			       |
| 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