MA_Rounding_Off

Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
MA_Rounding_Off
//***********************************************************************//
//***********************************************************************//
//*                                            MA Rounding Off_FULL.mq4 *//
//*                                         Copyright © 2009, BACKSPACE *//
//*                                              Updating from 10.01.10 *//
//***********************************************************************//
//***********************************************************************//
//*                             Òîðãóé òðåíäû                           *//
//*                            Óìåíüøàé ïîòåðè                          *//
//*                          Äàâàé ïðèáûëè ðàñòè                        *//
//*                            Óïðàâëÿé ðèñêàìè                         *//
//***********************************************************************//
//***********************************************************************//
#property copyright "Copyright © 2009, BACKSPACE"                        //
#property link      "Updating from 10.01.10"                             //
                                                                         //
#property indicator_chart_window                                         //
#property indicator_buffers 1                                            //
#property indicator_color1 DarkViolet                                    //
                                                     //******************// Ââîä ïàðàìåòðîâ èíäèêàòîðà
extern int    MaPeriod=8;                                                //   - ïåðèîä Moving Average
extern double MaRound=13;                                                //   - êîýôôèöèåíò îêðóãëåíèÿ 
                                                     //******************// Ñîñòàâíûå ÷àñòè èíäèêàòîðà
double MovingRound[],                                                    //   - Moving Rounding Off
       MovAve[],                                                         //   - Moving Average
       MovAle[];                                                         //   - Àëåðò Moving
                                                     //******************// Ãëîáàëüíûå ïåðåìåííûå
int    Counter,                                                          //   - ñ÷¸ò÷èê áàðîâ
       MaPer;                                                            //   - ïåðèîä Moving Average
double MaRo;                                                             //   - êîýôôèöèåíò îêðóãëåíèÿ
                                                                         //
//***********************************************************************//
//**********************-Indicator Initialization-***********************//
//***********************************************************************//
                                                                         //
int init()                                                               //
  {                                                  //******************// Íàñòðîéêè ãðàôè÷åñêîãî îòîáðàæåíèÿ
   IndicatorBuffers(3);                                                  //
   SetIndexLabel(0,"MovingRound");                                       //
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);                             //
   SetIndexBuffer(0,MovingRound);                                        //
   SetIndexBuffer(1,MovAve);                                             //
   SetIndexBuffer(2,MovAle);                                             //
                                                                         //
   if(MaPeriod>=1 && MaPeriod<=720)                  //******************// Ïðîâåðêà ïåðèîäà èíäèêàòîðà
     MaPer=MaPeriod;                                                     //
   else                                                                  //
     MaPer=21;                                                           //
   if(MaRound>=0 && MaRound<=720)                    //******************// Ïðîâåðêà âåëè÷èíû îêðóãëåíèÿ
     MaRo = Point*MaRound;                                               //
   else                                                                  //
     MaRo = Point*72;                                                    //
                                                              //*********//
   return(0);                                                            //
  }                                                                      //
//***********************************************************************//
//*************************-Moving Rounding Off-*************************//
//***********************************************************************//
                                                                         //
int start()                                                              //
  {                                                                      //
   if(MaPer>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-=2;
   
   for(int mr=limit; mr>=1; mr--)                               //
     {                                                                   //
      Moving_Average(mr);                            //******************// Moving Average
      Rounding_Off(mr);                              //******************// Rounding Off
     }                                                                   //
                                                              //*********//
   return(0);                                                            //
  }                                                                      //
//***********************************************************************//
//******************************-SubPogramms-****************************//
//***********************************************************************//
                                                                         //
                                    //***********************************// Moving Average
double Moving_Average(int ma)                                            //
  {                                                                      //
   MovAve[ma]=iMA(NULL,0,MaPer,0,MODE_SMMA,PRICE_CLOSE,ma);              //
                                                              //*********//
   return(0);                                                            //
  }                                                                      //
                                    //***********************************// Rounding Off
double Rounding_Off(int ro)                                              //
  {                                                                      //
      if(MovAve[ro]>MovAve[ro+1]+MaRo ||                                 //
         MovAve[ro]<MovAve[ro+1]-MaRo ||                                 //
         MovAve[ro]>MovingRound[ro+1]+MaRo ||                            //
         MovAve[ro]<MovingRound[ro+1]-MaRo ||                            //
        (MovAve[ro]>MovingRound[ro+1] && MovAle[ro+1]==1) ||             //
        (MovAve[ro]<MovingRound[ro+1] && MovAle[ro+1]==-1))              //
         MovingRound[ro] =MovAve[ro];                                    //
       else                                                              //
         MovingRound[ro]=MovingRound[ro+1];                              //
      if(MovingRound[ro]<MovingRound[ro+1]) MovAle[ro] =-1;              //
      if(MovingRound[ro]>MovingRound[ro+1]) MovAle[ro] =1;               //
      if(MovingRound[ro]==MovingRound[ro+1])MovAle[ro] =MovAle[ro+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 ---