BBands Stops Bar

Author: Copyright � 2006, TrendLaboratory Ltd.
BBands Stops Bar

BBands Stops Bar Indicator

Overview

The "BBands Stops Bar" is a MetaTrader 4 (MT4) script designed to assist traders by identifying trend signals and stop points using Bollinger Bands. This explanation will describe the logic of this indicator in simple terms, making it accessible for individuals without programming experience.

Key Concepts

  • Bollinger Bands: These are technical analysis tools that consist of a middle band (a moving average) and two outer bands (standard deviations away from the middle). They help identify overbought or oversold conditions in a market.

  • Trend Identification: The script determines whether the market is trending upwards, downwards, or sideways by comparing the current price to Bollinger Bands.

Indicator Components

  1. Bands Calculation:

    • Uses historical closing prices to compute the upper and lower bands of Bollinger Bands for a specified period.
    • Adjusts these bands slightly based on a "Money Risk" factor to create modified stop points (bsmax and bsmin).
  2. Trend Determination:

    • If the current price is above the previous upper band, it suggests an upward trend.
    • Conversely, if below the lower band, it indicates a downward trend.
  3. Signal Generation:

    • Provides signals for potential buy or sell points based on when prices cross these modified bands (bsmax and bsmin).
  4. Stop Points:

    • Determines stop-loss levels that adjust according to market trends.
    • Maintains consistency in stops unless the trend reverses.
  5. Alerts and Notifications:

    • Generates alerts if a significant trend change is detected, notifying traders of potential opportunities or risks.

User Customization

  • Periodicity: Users can set the time frame for analysis, such as daily, weekly, etc.

  • Length and Deviation: Parameters like the length of the moving average and standard deviation multiplier can be adjusted to refine the sensitivity of the bands.

  • Signal Type: Options include showing only stop points, trend signals, or both.

  • Alerts: Users can enable or disable sound alerts when a significant trend change is detected.

Practical Use

Traders use this indicator to make informed decisions by identifying potential entry and exit points based on market trends. By adjusting the parameters, traders can tailor the indicator to suit different trading strategies and risk appetites.

In summary, the "BBands Stops Bar" helps traders visualize market conditions and manage trades more effectively by leveraging Bollinger Bands for trend analysis and stop point determination.

Indicators Used
Bollinger bands indicator
Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
BBands Stops Bar
//+------------------------------------------------------------------+
//|                                             BBands Stops Bar.mq4 |
//|                                      Modified to Bar type by cja |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                 BBands Stops.mq4 |
//|                           Copyright © 2006, TrendLaboratory Ltd. |
//|            http://finance.groups.yahoo.com/group/TrendLaboratory |
//|                                       E-mail: igorad2004@list.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, TrendLaboratory Ltd."
#property link      "http://finance.groups.yahoo.com/group/TrendLaboratory"

#property indicator_separate_window
#property indicator_buffers 6
/*#property indicator_color1 White
#property indicator_color2 Red
#property indicator_color3 White*/
#property indicator_color4 Red
#property indicator_color5 White
#property indicator_color6 Red
#property indicator_width5 3
#property indicator_width6 3
#property indicator_minimum 0
#property indicator_maximum 1
//---- input parameters
extern int TimeFrame= 0;
extern int    Length=3;       // Bollinger Bands Period
extern int    Deviation=1;    // Deviation was 2
extern double MoneyRisk=1.00; // Offset Factor
extern int    Signal=1;       // Display signals mode: 1-Signals & Stops; 0-only Stops; 2-only Signals;
extern int    Line=1;         // Display line mode: 0-no,1-yes  
extern int    Nbars=1000;
//---- indicator buffers
double UpTrendBuffer[];
double DownTrendBuffer[];
double UpTrendSignal[];
double DownTrendSignal[];
double UpTrendLine[];
double DownTrendLine[];
extern bool SoundON=true;
bool TurnedUp = false;
bool TurnedDown = false;

string TimeFrameStr;
//+------------------------------------------------------------------+
//| 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_NONE,0,0);
   SetIndexStyle(1,DRAW_NONE,0,0);
   SetIndexStyle(2,DRAW_NONE,0,2);
   SetIndexStyle(3,DRAW_NONE,0,2);
   SetIndexStyle(4,DRAW_HISTOGRAM);
   SetIndexStyle(5,DRAW_HISTOGRAM);
   SetIndexArrow(0,164);
   SetIndexArrow(1,164);
   SetIndexArrow(2,174);
   SetIndexArrow(3,174);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- name for DataWindow and indicator subwindow label
   
   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);
   
   
    switch(TimeFrame)
   {
      case 1 : TimeFrameStr="Period M1"; break;
      case 5 : TimeFrameStr="Period M5"; break;
      case 15 : TimeFrameStr="Period M15"; break;
      case 30 : TimeFrameStr="Period M30"; break;
      case 60 : TimeFrameStr="Period H1"; break;
      case 240 : TimeFrameStr="Period H4"; break;
      case 1440 : TimeFrameStr="Period D1"; break;
      case 10080 : TimeFrameStr="Period W1"; break;
      case 43200 : TimeFrameStr="Period MN1"; break;
      default : TimeFrameStr=" Current Timeframe "; TimeFrame=0; 
     
      
     }
     short_name="BBands Stops Bar  [" +TimeFrameStr+"  ]";
     IndicatorShortName(short_name);
//----
   return(0);
  }

//+------------------------------------------------------------------+
//| Bollinger Bands_Stop_v1                                             |
//+------------------------------------------------------------------+
int start()
  {
   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,TimeFrame,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,shift);
	  smin[shift]=iBands(NULL,TimeFrame,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 (Signal>0 && UpTrendBuffer[shift+1]==-1.0)
	     {
	     UpTrendSignal[shift]=bsmin[shift];
	     UpTrendBuffer[shift]=bsmin[shift];
	     if(Line>0) UpTrendLine[shift]=bsmin[shift];
     if (SoundON==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 (Signal==2) UpTrendBuffer[shift]=0;   
	  DownTrendSignal[shift]=-1;
	  DownTrendBuffer[shift]=-1.0;
	  DownTrendLine[shift]=EMPTY_VALUE;
	  }
	  if (trend<0) 
	  {
	  if (Signal>0 && DownTrendBuffer[shift+1]==-1.0)
	     {
	     DownTrendSignal[shift]=bsmax[shift];
	     DownTrendBuffer[shift]=bsmax[shift];
	     if(Line>0) DownTrendLine[shift]=bsmax[shift];
     if (SoundON==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 (Signal==2) DownTrendBuffer[shift]=0;    
	  UpTrendSignal[shift]=-1;
	  UpTrendBuffer[shift]=-1.0;
	  UpTrendLine[shift]=EMPTY_VALUE;
	  }
	  
	 }
	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 ---