Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
BBands_StopsV1A_mtf
//+------------------------------------------------------------------+
//|BBands_Stops_mtf BBands Stops.mq4 |
//| Copyright © 2006, TrendLaboratory Ltd. |
//| http://finance.groups.yahoo.com/group/TrendLaboratory |
//| (MTF ForexTSD.com 2007)mladen ki E-mail: igorad2004@list.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, TrendLaboratory Ltd."
#property link "http://finance.groups.yahoo.com/group/TrendLaboratory"
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Goldenrod
#property indicator_color2 DeepPink
#property indicator_color3 Yellow
#property indicator_color4 Magenta
#property indicator_color5 Goldenrod
#property indicator_color6 DeepPink
#property indicator_width3 3
#property indicator_width4 3
#property indicator_width5 2
#property indicator_width6 2
//---- input parameters
extern int Length =13; // Bollinger Bands Period
extern double Deviation =1.62; // Deviation was 2
extern double MoneyRisk =1.00; // Offset Factor
extern int SignalMode =1; // Display signals mode: 1-Signals & Stops; 0-only Stops; 2-only Signals; 3-no Signals;
extern int Line=1; // Display line mode: 0-no,1-yes
extern int Nbars=1500;
extern bool AlertSoundON=false;
extern int TimeFrame = 0;
extern string note_TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";
extern string note___SignalMode = "1-Signals&Stops;0-onlyStops;2-onlySignals;3-noSignals";
string IndicatorFileName;
//---- indicator buffers
double UpTrendBuffer[];
double DownTrendBuffer[];
double UpTrendSignal[];
double DownTrendSignal[];
double UpTrendLine[];
double DownTrendLine[];
bool TurnedUp = false;
bool TurnedDown = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
SetIndexBuffer(0,UpTrendBuffer);
SetIndexBuffer(1,DownTrendBuffer);
SetIndexBuffer(2,UpTrendSignal);
SetIndexBuffer(3,DownTrendSignal);
SetIndexBuffer(4,UpTrendLine);
SetIndexBuffer(5,DownTrendLine);
SetIndexStyle(0,DRAW_ARROW,0,0);
SetIndexStyle(1,DRAW_ARROW,0,0);
SetIndexStyle(2,DRAW_ARROW);
SetIndexStyle(3,DRAW_ARROW);
SetIndexStyle(4,DRAW_LINE);
SetIndexStyle(5,DRAW_LINE);
SetIndexArrow(0,164);
SetIndexArrow(1,164);
SetIndexArrow(2,171);
SetIndexArrow(3,171);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS+4));
//---- name for DataWindow and indicator subwindow label
short_name="BBands Stops["+TimeFrame+"]";
IndicatorShortName(short_name);
SetIndexLabel(0,"UpTrend Stop");
SetIndexLabel(1,"DownTrend Stop");
SetIndexLabel(2,"UpTrend Signal");
SetIndexLabel(3,"DownTrend Signal");
SetIndexLabel(4,"UpTrend Line");
SetIndexLabel(5,"DownTrend Line");
//----
SetIndexDrawBegin(0,Length);
SetIndexDrawBegin(1,Length);
SetIndexDrawBegin(2,Length);
SetIndexDrawBegin(3,Length);
SetIndexDrawBegin(4,Length);
SetIndexDrawBegin(5,Length);
//----
IndicatorFileName = WindowExpertName();
if (TimeFrame < Period()) TimeFrame = Period();
return(0);
}
//+------------------------------------------------------------------+
//| Bollinger Bands_Stop_v1 |
//+------------------------------------------------------------------+
int start()
{
int counted_bars1=IndicatorCounted();
int limit1,i1;
if(counted_bars1 < 0) return(-1);
limit1 = Bars-counted_bars1;
if (TimeFrame != Period())
{
limit1 = MathMax(limit1,TimeFrame/Period());
datetime TimeArray[];
ArrayCopySeries(TimeArray ,MODE_TIME ,NULL,TimeFrame);
for(i1=0,int y=0; i1<limit1; i1++)
{
if(Time[i1]<TimeArray[y]) y++;
UpTrendBuffer [i1] = iCustom(NULL,TimeFrame,IndicatorFileName,Length,Deviation,MoneyRisk,SignalMode,Line,Nbars,AlertSoundON,0,y);
DownTrendBuffer [i1] = iCustom(NULL,TimeFrame,IndicatorFileName,Length,Deviation,MoneyRisk,SignalMode,Line,Nbars,AlertSoundON,1,y);
if (Time[i1]==TimeArray[y])UpTrendSignal [i1]= iCustom(NULL,TimeFrame,IndicatorFileName,Length,Deviation,MoneyRisk,SignalMode,Line,Nbars,AlertSoundON,2,y);
if (Time[i1]==TimeArray[y])DownTrendSignal [i1]= iCustom(NULL,TimeFrame,IndicatorFileName,Length,Deviation,MoneyRisk,SignalMode,Line,Nbars,AlertSoundON,3,y);
UpTrendLine [i1] = iCustom(NULL,TimeFrame,IndicatorFileName,Length,Deviation,MoneyRisk,SignalMode,Line,Nbars,AlertSoundON,4,y);
DownTrendLine [i1] = iCustom(NULL,TimeFrame,IndicatorFileName,Length,Deviation,MoneyRisk,SignalMode,Line,Nbars,AlertSoundON,5,y);
}
return(0);
}
int i,shift,trend;
double smax[25000],smin[25000],bsmax[25000],bsmin[25000];
for (shift=Nbars;shift>=0;shift--)
{
UpTrendBuffer[shift]=0;
DownTrendBuffer[shift]=0;
UpTrendSignal[shift]=0;
DownTrendSignal[shift]=0;
UpTrendLine[shift]=EMPTY_VALUE;
DownTrendLine[shift]=EMPTY_VALUE;
}
for (shift=Nbars-Length-1;shift>=0;shift--)
{
smax[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,shift);
smin[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,shift);
if (Close[shift]>smax[shift+1]) trend=1;
if (Close[shift]<smin[shift+1]) trend=-1;
if(trend>0 && smin[shift]<smin[shift+1]) smin[shift]=smin[shift+1];
if(trend<0 && smax[shift]>smax[shift+1]) smax[shift]=smax[shift+1];
bsmax[shift]=smax[shift]+0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]);
bsmin[shift]=smin[shift]-0.5*(MoneyRisk-1)*(smax[shift]-smin[shift]);
if(trend>0 && bsmin[shift]<bsmin[shift+1]) bsmin[shift]=bsmin[shift+1];
if(trend<0 && bsmax[shift]>bsmax[shift+1]) bsmax[shift]=bsmax[shift+1];
if (trend>0)
{
if (SignalMode>0 && UpTrendBuffer[shift+1]==-1.0)
{
UpTrendSignal[shift]=bsmin[shift];
UpTrendBuffer[shift]=bsmin[shift];
if(Line>0) UpTrendLine[shift]=bsmin[shift];
if (AlertSoundON==true && shift==0 && !TurnedUp)
{
Alert("BBands go Up",Symbol(),"-",Period());
TurnedUp = true;
TurnedDown = false;
}
}
else
{
UpTrendBuffer[shift]=bsmin[shift];
if(Line>0) UpTrendLine[shift]=bsmin[shift];
UpTrendSignal[shift]=-1;
}
if (SignalMode==2) UpTrendBuffer[shift]=0;
DownTrendSignal[shift]=-1;
DownTrendBuffer[shift]=-1.0;
DownTrendLine[shift]=EMPTY_VALUE;
if (SignalMode==3)
{
UpTrendBuffer[shift]=0;
UpTrendSignal[shift]=0;
// DownTrendBuffer[shift]=-1.0;
DownTrendLine[shift]=EMPTY_VALUE;
}
}
if (trend<0)
{
if (SignalMode>0 && DownTrendBuffer[shift+1]==-1.0)
{
DownTrendSignal[shift]=bsmax[shift];
DownTrendBuffer[shift]=bsmax[shift];
if(Line>0) DownTrendLine[shift]=bsmax[shift];
if (AlertSoundON==true && shift==0 && !TurnedDown)
{
Alert("BBands go Down",Symbol(),"-",Period());
TurnedDown = true;
TurnedUp = false;
}
}
else
{
DownTrendBuffer[shift]=bsmax[shift];
if(Line>0)DownTrendLine[shift]=bsmax[shift];
DownTrendSignal[shift]=-1;
}
if (SignalMode==2) DownTrendBuffer[shift]=0;
UpTrendSignal[shift]=-1;
UpTrendBuffer[shift]=-1.0;
UpTrendLine[shift]=EMPTY_VALUE;
if (SignalMode==3)
{
DownTrendBuffer[shift]=0;
DownTrendSignal[shift]=0;
// UpTrendSignal[shift]=EMPTY_VALUE;
// UpTrendBuffer[shift]=-1.0;
UpTrendLine[shift]=EMPTY_VALUE;
}
}
}
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
---