Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
TSD_PP_MACD_FORCE_Ind_v1
//+------------------------------------------------------------------+
//| TSD_PP_MACD_FORCE_Ind_v1.mq4 |
//| (From Elders Book) |
//| Copyright ® 2005 Bob O'Brien / Barcode |
//| TSD Indicator by Pedro Puado |
//| TSD Indicator version 1 |
//+------------------------------------------------------------------+
#property copyright "Pedro Puado (From Elders Book)"
#property link "http://www.metaquotes.net"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
//---- input parameters
extern int Force=2;
extern int FastMA=12;
extern int SlowMA=26;
extern int Signal=9;
extern int MaxBars=1000;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexLabel(0,"Up");
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexLabel(1,"Down");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
double MacdPrevious, MacdPrevious2, force, ForcePos, ForceNeg;
int Direction;
//----
int i,k, nDay, nWeek;
i=Bars-1;
if(counted_bars>0) i=Bars-counted_bars+0;
i = MathMin(i, MaxBars);
while (i >=0)
{
nWeek = GetWeekIndex(i);
MacdPrevious = iMACD(Symbol(),PERIOD_W1,SlowMA,FastMA,Signal,PRICE_CLOSE,MODE_MAIN,nWeek+1);
MacdPrevious2 = iMACD(Symbol(),PERIOD_W1,SlowMA,FastMA,Signal,PRICE_CLOSE,MODE_MAIN,nWeek+2);
if (MacdPrevious > MacdPrevious2) Direction = 1;
if (MacdPrevious < MacdPrevious2) Direction = -1;
if (MacdPrevious == MacdPrevious2) Direction = 0;
nDay = GetDayIndex(i);
force = iForce(Symbol(),PERIOD_D1,Force,MODE_EMA,PRICE_CLOSE,nDay+1);
ForcePos = force > 0;
ForceNeg = force < 0;
Print(nWeek, " - ", Direction, " - ", nDay, " - ", Force);
if(Direction == 1 && ForceNeg)
{
ExtMapBuffer1[i] = 1;
ExtMapBuffer2[i] = 0.0;
}
if(Direction == -1 && ForcePos)
{
ExtMapBuffer1[i] = 0.0;
ExtMapBuffer2[i] = -1;
}
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int GetWeekIndex(int x)
{
datetime dSun = StrToTime(TimeToStr(Time[x]-(TimeDayOfWeek(Time[x])*86400),TIME_DATE));
return (((iTime(Symbol(),PERIOD_W1,0)-dSun)/86400)/7);
}
//+------------------------------------------------------------------+
int GetDayIndex(int x)
{
if (Period() == PERIOD_D1) return (x);
int nWeek = GetWeekIndex(x)*5; //number of days since
datetime dSun = StrToTime(TimeToStr(Time[x],TIME_DATE));
int i = MathAbs((iTime(Symbol(),PERIOD_D1,nWeek)-dSun)/86400);
return (nWeek-i);
}
//+------------------------------------------------------------------+
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
---