Miscellaneous
0
Views
0
Downloads
0
Favorites
Laguerre RSI_v2
//+------------------------------------------------------------------+
//| Laguerre RSI.mq4 |
//| Copyright © 2005, David W. Thomas |
//| mailto:davidwt@usa.net |
//+------------------------------------------------------------------+
// based on http://www.mesasoftware.com/TimeWarp.doc.
#property copyright "Copyright © 2005, David W. Thomas"
#property link "mailto:davidwt@usa.net"
//----
#property indicator_separate_window
#property indicator_level2 0.75
#property indicator_level3 0.45
#property indicator_level4 0.15
#property indicator_minimum 0
#property indicator_maximum 1
#property indicator_buffers 1
#property indicator_color1 MediumPurple
//---- input parameters
extern double gamma=0.7;
//---- buffers
double RSI[];
double L0[];
double L1[];
double L2[];
double L3[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(5);
//---- indicators
SetIndexStyle(0, DRAW_LINE);
SetIndexDrawBegin(0, 1);
SetIndexLabel(0, "Laguerre RSI");
SetIndexEmptyValue(0, -0.01);
SetIndexBuffer(0, RSI);
SetIndexBuffer(1, L0);
SetIndexBuffer(2, L1);
SetIndexBuffer(3, L2);
SetIndexBuffer(4, L3);
//----
string short_name="LaguerreRSI(" + DoubleToStr(gamma, 2) + ")";
IndicatorShortName(short_name);
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
double CU, CD;
//---- last counted bar will be recounted
if (counted_bars>0)
counted_bars--;
else
counted_bars=1;
limit=Bars - counted_bars;
//---- computations for RSI
for(int i=limit; i>=0; i--)
{
L0[i]=(1.0 - gamma)*Close[i] + gamma*L0[i+1];
L1[i]=-gamma*L0[i] + L0[i+1] + gamma*L1[i+1];
L2[i]=-gamma*L1[i] + L1[i+1] + gamma*L2[i+1];
L3[i]=-gamma*L2[i] + L2[i+1] + gamma*L3[i+1];
//Print(i," Close[i]=",Close[i],", (1.0 - gamma)*Close[i]=",(1.0 - gamma)*Close[i],", gamma*L0[i+1]=",gamma*L0[i+1]);
//Print(i," L0=",L0[i],",L1=",L1[i],",L2=",L2[i],",L3=",L3[i]);
CU=0;
CD=0;
if (L0[i]>=L1[i])
CU=L0[i] - L1[i];
else
CD=L1[i] - L0[i];
if (L1[i]>=L2[i])
CU=CU + L1[i] - L2[i];
else
CD=CD + L2[i] - L1[i];
if (L2[i]>=L3[i])
CU=CU + L2[i] - L3[i];
else
CD=CD + L3[i] - L2[i];
if (CU + CD!=0)
RSI[i]=CU/(CU + CD);
}
return(0);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---