Moving_Average_CDlBSc

Indicators Used
Moving average indicatorMoving average indicator
Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
Moving_Average_CDlBSc
//***********************************************************************//
//***********************************************************************//
//*                                           Moving_Average_CD(BS).mq4 *//
//*                                         Copyright © 2009, BACKSPACE *//
//*                                            Updating from 27.02.2010 *//
//***********************************************************************//
//***********************************************************************//
//*                             Òîðãóé òðåíäû                           *//
//*                            Óìåíüøàé ïîòåðè                          *//
//*                          Äàâàé ïðèáûëè ðàñòè                        *//
//*                            Óïðàâëÿé ðèñêàìè                         *//
//***********************************************************************//
//***********************************************************************//
#property copyright "Copyright © 2009, BACKSPACE"                        //
#property link      "Updating from 27.02.2010"                           //
                                                                         //
#property indicator_separate_window                                      //
#property indicator_buffers 2                                            //
#property indicator_color1 Blue                                          //
#property indicator_color2 Red                                           //
                                                     //******************// Ââîä ïàðàìåòðîâ èíäèêàòîðà
extern int    FastPeriod=12;                                             //   - ïåðèîä Fast Moving Average
extern int    SlowPeriod=26;                                             //   - ïåðèîä Slow Moving Average
extern int    SignalPeriod=9;                                            //   - ïåðèîä Signal Moving Average
extern double MARound=5;                                                 //   - êîýôôèöèåíò îêðóãëåíèÿ
                                                     //******************// Ñîñòàâíûå ÷àñòè èíäèêàòîðà
double MACD[],                                                           //   - Moving Average CD
       SignalMA[],                                                       //   - Signal Moving Average
       MACDAle[],                                                        //   - Slow Alert
       MACDRond[];                                                       //   - Slow Ronding Off
                                                     //******************// Ãëîáàëüíûå ïåðåìåííûå
int    Counter,                                                          //   - ñ÷¸ò÷èê áàðîâ
       FaPer,                                                            //   - ïåðèîä Fast Moving Average
       SlPer,                                                            //   - ïåðèîä Slow Moving Average
       SiPer;                                                            //   - ïåðèîä Signal Moving Average
double MaRo;                                                             //   - êîýôôèöèåíò îêðóãëåíèÿ
//***********************************************************************//
//**********************-Indicator Initialization-***********************//
//***********************************************************************//
                                                                         //
int init()                                                               //
  {                                                  //******************// Íàñòðîéêè ãðàôè÷åñêîãî îòîáðàæåíèÿ
   IndicatorBuffers(4);                                                  //
   SetIndexLabel(0,"MACDRond");                                          //
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);                             // SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,MACDRond);                                           //
   SetIndexLabel(1,"SignalMA");                                          //
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);                             //
   SetIndexBuffer(1,SignalMA);                                           //
   SetIndexBuffer(2,MACD);                                               //
   SetIndexBuffer(3,MACDAle);                                            //
                                                                         //
                                                     //******************// Ïðîâåðêà ïåðèîäà èíäèêàòîðà
   if(FastPeriod>=1 && FastPeriod<=48)                                   //
     FaPer=FastPeriod;                                                   //
   else                                                                  //
     FaPer=12;                                                           //
   if(SlowPeriod>=1 && SlowPeriod<=120)                                  //
     SlPer=SlowPeriod;                                                   //
   else                                                                  //
     SlPer=26;                                                           //
   if(SignalPeriod>=1 && SignalPeriod<=22)                               //
     SiPer=SignalPeriod;                                                 //
   else                                                                  //
     SiPer=9;                                                            //
                                                     //******************// Ïðîâåðêà âåëè÷èíû îêðóãëåíèÿ
   if(MARound>=0 && MARound<=50)                                         //
     MaRo = Point*MARound;                                               //
   else                                                                  //
     MaRo = Point*5;                                                     //
                                                              //*********//
   return(0);                                                            //
  }                                                                      //
                                                                         //
//***********************************************************************//
//**************************-Moving_Average_CD-**************************//
//***********************************************************************//
                                                                         //
int start()                                                              //
  {                                                                      //
                                                     //******************// Ïðîâåðêà ðàáîòû èíäèêàòîðà
   if(FaPer>Bars||SlPer>Bars||SiPer>Bars||MaRo>Bars)                     //
     {                                                                   //
      Alert("Íåäîñòàòî÷íî èíôîðìàöèè äëÿ ðàáîòû èíäèêàòîðà.");           //
      return(0);                                                         //
     }                                                                   //
   
   int counted_bars = IndicatorCounted();
   if(counted_bars < 0)  return(-1);
   if(counted_bars > 0)   counted_bars--;
   int limit = Bars - counted_bars;
   if(counted_bars==0) limit--;   
   
   for(int macd=limit-1; macd>=0; macd--)                         //
     {                                                                   //
      Moving_Average_CD(macd);                       //******************// Moving Average CD
      MACD_Rounding_Off(macd);                       //******************// MACD Rounding Off
     }                                                                   //
   for(int sima=limit-1; sima>=0; sima--)                         //
     {                                                                   //
      SignalMA[sima]=iMAOnArray(MACD,Bars,SiPer,0,MODE_SMA,sima);        //
     }                                                                   //
                                                              //*********//
   return(0);                                                            //
  }                                                                      //
                                                                         //
//***********************************************************************//
//******************************-SubPogramms-****************************//
//***********************************************************************//
                                                                         //
                                    //***********************************// Moving Average CD
double Moving_Average_CD(int ma)                                         //
  {                                                                      //
   MACD[ma]=iMA(NULL,0,FaPer,0,MODE_EMA,PRICE_CLOSE,ma)-                 //
            iMA(NULL,0,SlPer,0,MODE_EMA,PRICE_CLOSE,ma);                 //
                                                              //*********//
   return(0);                                                            //
  }                                                                      //
                                                                         //
                                    //***********************************// MACD Rounding Off
double MACD_Rounding_Off(int mro)                                        //
  {                                                                      //
   if(MACD[mro]>MACD[mro+1]+MaRo||                                       //
      MACD[mro]<MACD[mro+1]-MaRo||                                       //
      MACD[mro]>MACDRond[mro+1]+MaRo||                                   //
      MACD[mro]<MACDRond[mro+1]-MaRo||                                   //
     (MACD[mro]>MACDRond[mro+1] && MACDAle[mro+1]==1)||                  //
     (MACD[mro]<MACDRond[mro+1] && MACDAle[mro+1]==-1))                  //
      MACDRond[mro] =MACD[mro];                                          //
    else                                                                 //
      MACDRond[mro]=MACDRond[mro+1];                                     //
   if(MACDRond[mro]<MACDRond[mro+1]) MACDAle[mro]=-1;                    //
   if(MACDRond[mro]>MACDRond[mro+1]) MACDAle[mro]=1;                     //
   if(MACDRond[mro]==MACDRond[mro+1])MACDAle[mro]=MACDAle[mro+1];        //
                                                              //*********//
   return(0);                                                            //
  }                                                                      //
                                                                         //
//***********************************************************************//
//********************************************************************BS*//
//***********************************************************************//

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---