Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
AbsoluteStrength_v1.3_mtf
//+------------------------------------------------------------------+
//| AbsoluteStrength_v1.1.mq4 |
//| Copyright © 2006, TrendLaboratory Ltd. |
//| http://finance.groups.yahoo.com/group/TrendLaboratory |
//| E-mail: igorad2004@list.ru |
//+------------------------------------------------------------------+
//mod. mtf standalone 2008fxtsd ki
#property copyright "Copyright © 2006, TrendLaboratory Ltd."
#property link "http://finance.groups.yahoo.com/group/TrendLaboratory"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 CornflowerBlue
#property indicator_width1 2
#property indicator_color2 Red
#property indicator_width2 2
#property indicator_color3 DeepSkyBlue
#property indicator_width3 1
#property indicator_style3 0
#property indicator_color4 OrangeRed
#property indicator_width4 1
#property indicator_style4 0
//---- input parameters
extern int Length = 10; // Period of evaluation
extern int Smooth = 5; // Period of smoothing
extern int Signal = 5; // Period of Signal Line
extern int MA_method = 3; // Mode of Moving Average
extern int MA_Price = 0; // Price mode : 0-Close,1-Open,2-High,3-Low,4-Median,5-Typical,6-Weighted
extern int AbS_Mode = 0; // 0-RSI method; 1-Stoch method; 2-ADX method
extern bool UseOBOSLevels = false;
extern double OverBoughtL = 80; // OverBought Level
extern double OverSoldL = 20; // OverSold Level
extern int MaxBarsToCount = 1500;
extern int TimeFrame = 0;
extern string TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN";
extern string note_Price = "0C 1O 2H 3L 4Md 5Tp 6WghC, Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6";
extern string MA_Method_ = "SMA0 EMA1 SMMA2 LWMA3";
extern string AbS_Mode__ = "0-RSI 1-Stoch 2-ADX method";
string IndicatorFileName;
int BarsToDraw;
//---- buffers
double Bulls[];
double Bears[];
double AvgBulls[];
double AvgBears[];
double SmthBulls[];
double SmthBears[];
double SigBulls[];
double SigBears[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(8);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,SmthBulls);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,SmthBears);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,SigBulls);
SetIndexStyle(3,DRAW_LINE);
SetIndexBuffer(3,SigBears);
SetIndexBuffer(4,Bulls);
SetIndexBuffer(5,Bears);
SetIndexBuffer(6,AvgBulls);
SetIndexBuffer(7,AvgBears);
//----
switch(TimeFrame)
{
case 1: string TimeFrameStr = "M1"; break;
case 5 : TimeFrameStr = "M5"; break;
case 15 : TimeFrameStr = "M15"; break;
case 30 : TimeFrameStr = "M30"; break;
case 60 : TimeFrameStr = "H1"; break;
case 240 : TimeFrameStr = "H4"; break;
case 1440 : TimeFrameStr = "D1"; break;
case 10080 : TimeFrameStr = "W1"; break;
case 43200 : TimeFrameStr = "MN1"; break;
default : TimeFrameStr = "TF0";
}
switch(AbS_Mode)
{
case 1: string AbS_Mode_Str = "STOmode"; break;
case 2 : AbS_Mode_Str = "ADXmode"; break;
default : AbS_Mode_Str = "RSImode";
}
//---- name for DataWindow and indicator subwindow label
string short_name="AbsStr ["+TimeFrameStr+"] "+Length+","+Smooth+","+Signal+
" ("+MA_method+") "+AbS_Mode_Str+"|";
IndicatorShortName(short_name);
IndicatorFileName = WindowExpertName();
SetIndexLabel(0,"StrongUP");
SetIndexLabel(1,"StrongDN");
SetIndexLabel(2,"WeakUP");
SetIndexLabel(3,"WeakDN");
int max = MathMax(Length,Smooth);
max = MathMax(Signal,max);
max = MathMax(TimeFrame/Period(),max);
BarsToDraw = MaxBarsToCount-max;
if (TimeFrame<Period()) TimeFrame=Period();
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int shift, counted_bars=IndicatorCounted();
double Price1, Price2, smax, smin;
int limit,i;
if(counted_bars < 0) return(-1);
limit = Bars-counted_bars;
if (TimeFrame != Period())
{
limit = MathMax(limit,TimeFrame/Period());
// limit = MathMin(limit,MaxBarsToCount);
datetime TimeArray[];
ArrayCopySeries(TimeArray ,MODE_TIME ,NULL,TimeFrame);
for(i=0,int y=0; i<limit; i++)
{
if(Time[i]<TimeArray[y]) y++;
SmthBulls[i] = iCustom(NULL,TimeFrame,IndicatorFileName,
Length,Smooth,Signal,MA_method,MA_Price,AbS_Mode,
UseOBOSLevels,OverBoughtL,OverSoldL,MaxBarsToCount,0,y);
SmthBears[i] = iCustom(NULL,TimeFrame,IndicatorFileName,
Length,Smooth,Signal,MA_method,MA_Price,AbS_Mode,
UseOBOSLevels,OverBoughtL,OverSoldL,MaxBarsToCount,1,y);
SigBulls[i] = iCustom(NULL,TimeFrame,IndicatorFileName,
Length,Smooth,Signal,MA_method,MA_Price,AbS_Mode,
UseOBOSLevels,OverBoughtL,OverSoldL,MaxBarsToCount,2,y);
SigBears[i] = iCustom(NULL,TimeFrame,IndicatorFileName,
Length,Smooth,Signal,MA_method,MA_Price,AbS_Mode,
UseOBOSLevels,OverBoughtL,OverSoldL,MaxBarsToCount,3,y);
}
return(0);
}
//----
if ( counted_bars < 0 ) return(-1);
if ( counted_bars ==0 ) limit=Bars-Length+Smooth+Signal-1;
if ( counted_bars < 1 )
for(i=1;i<Length+Smooth+Signal;i++)
{
Bulls[Bars-i]=0;
Bears[Bars-i]=0;
AvgBulls[Bars-i]=0;
AvgBears[Bars-i]=0;
SmthBulls[Bars-i]=0;
SmthBears[Bars-i]=0;
SigBulls[Bars-i]=0;
SigBears[Bars-i]=0;
}
if(counted_bars>0) limit=Bars-counted_bars;
limit--;
for( shift=limit; shift>=0; shift--)
{
Price1 = iMA(NULL,0,1,0,0,MA_Price,shift);
Price2 = iMA(NULL,0,1,0,0,MA_Price,shift+1);
if (AbS_Mode>2) AbS_Mode=2;
if (AbS_Mode==0)
{
Bulls[shift] = 0.5*(MathAbs(Price1-Price2)+(Price1-Price2));
Bears[shift] = 0.5*(MathAbs(Price1-Price2)-(Price1-Price2));
}
if (AbS_Mode==1)
{
smax=High[Highest(NULL,0,MODE_HIGH,Length,shift)];
smin=Low[Lowest(NULL,0,MODE_LOW,Length,shift)];
Bulls[shift] = Price1 - smin;
Bears[shift] = smax - Price1;
}
if (AbS_Mode==2)
{
Bulls[shift] = 0.5*(MathAbs(High[shift]-High[shift+1])+(High[shift]-High[shift+1]));
Bears[shift] = 0.5*(MathAbs(Low[shift+1]-Low[shift])+(Low[shift+1]-Low[shift]));
}
}
for( shift=limit; shift>=0; shift--)
{
AvgBulls[shift]=iMAOnArray(Bulls,0,Length,0,MA_method,shift);
AvgBears[shift]=iMAOnArray(Bears,0,Length,0,MA_method,shift);
}
for( shift=limit; shift>=0; shift--)
{
SmthBulls[shift]=iMAOnArray(AvgBulls,0,Smooth,0,MA_method,shift);
SmthBears[shift]=iMAOnArray(AvgBears,0,Smooth,0,MA_method,shift);
}
for( shift=limit; shift>=0; shift--)
{
if (UseOBOSLevels )
{
SigBulls[shift]=OverBoughtL/100*(SmthBulls[shift]+SmthBears[shift]);
SigBears[shift]=OverSoldL/100*(SmthBulls[shift]+SmthBears[shift]);
}
else
{
SigBulls[shift]=iMAOnArray(SmthBulls,0,Signal,0,MA_method,shift);
SigBears[shift]=iMAOnArray(SmthBears,0,Signal,0,MA_method,shift);
}
}
//----
// for (i=0;i<indicator_buffers;i++) SetIndexDrawBegin(i,Bars-BarsToDraw*TimeFrame/Period());
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
---