Laguerre_ROC_v3

0 Views
0 Downloads
0 Favorites
Laguerre_ROC_v3
//+------------------------------------------------------------------+
//|                                                 Laguerre_ROC.mq4 |
//|                                             Emerald King , MTE&I |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_color1 Red
//----
#property indicator_level2 1.00
#property indicator_level3 0.75
#property indicator_level4 0.50
#property indicator_level5 0.25
#property indicator_level6 0.00
//----
#property indicator_maximum  1.10
#property indicator_minimum -0.10
//---- input parameters
extern int    vPeriod=5;
extern double gamma=0.500;
//----
double ROC=0;
double L0=0;
double L1=0;
double L2=0;
double L3=0;
double L0A=0;
double L1A=0;
double L2A=0;
double L3A=0;
double LROC=0;
double CU=0;
double CD=0;
double val1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   SetIndexBuffer(0,val1);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: add your code here
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int i;
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   i=Bars-counted_bars;
   if(counted_bars==0) i-=1+vPeriod;

//----
   while(i>=0)
     {
      L0A=L0;
      L1A=L1;
      L2A=L2;
      L3A=L3;
      ROC=(((Close[i] - Close[i + vPeriod])/Close[i + vPeriod]) + Point);
      L0=((1-gamma)*(ROC))+(gamma*L0A);
      //----
      L1=- gamma *L0 + L0A + gamma *L1A;
      L2=- gamma *L1 + L1A + gamma *L2A;
      L3=- gamma *L2 + L2A + gamma *L3A;
      //----
      CU=0;
      CD=0;
      if(L0>=L1) CU=L0 - L1; else CD=L1 - L0;
      if(L1>=L2) CU=CU + L1 - L2; else CD=CD + L2 - L1;
      if(L2>=L3) CU=CU + L2 - L3; else CD=CD + L3 - L2;
      if(CU+CD!=0) LROC=CU/(CU+CD);
      val1[i]=LROC;
      i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+

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 ---