VoltyChannel_Stop_v2.1M

Author: Copyright � 2007, TrendLaboratory
VoltyChannel_Stop_v2.1M
Indicators Used
Moving average indicatorIndicator of the average true range
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
VoltyChannel_Stop_v2.1M
//+------------------------------------------------------------------+
//|                                       VoltyChannel_Stop_v2.1.mq4 |
//|                                Copyright © 2007, TrendLaboratory |
//|            http://finance.groups.yahoo.com/group/TrendLaboratory |
//|                                   E-mail: igorad2003@yahoo.co.uk |
//+------------------------------------------------------------------+
//2008fxtsd mod
#property copyright "Copyright © 2007, TrendLaboratory"
#property link      "http://finance.groups.yahoo.com/group/TrendLaboratory"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_color4 Red
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_width4 1
//---- input parameters
extern int     MA_Price    = 0; //Applied Price: 0-C,1-O,2-H,3-L,4-Median,5-Typical,6-Weighted
extern int     MA_Length   = 1; //MA's Period 
extern int     MA_Mode     = 0; //MA's Method:0-SMA,1-EMA,2-SMMA,3-LWMA  
extern int     ATR_Length  = 10;//ATR's Period
extern double  Kv          = 4; //Volatility's Factor or Multiplier
extern double  MoneyRisk   = 1; //Offset Factor 
extern bool    usePrice_HiLoBreak    =true;    
extern bool    useMA_HiLoEnvelope    =false;   
extern int     AlertMode   = 0; //0-alert off,1-on
extern int     VisualMode  = 0; //0-lines,1-dots 
extern string Applied_Price_ ="0-C,1-O,2-H,3-L,4-Median(H+L)/2,5-Typical(H+L+C)/3,6-Weighted(H+L+C+C)/4";
extern string MAmethod_mode_ ="0-SMA,1-EMA,2-SMMA,3-LWMA";
extern string Visual_Mode___ ="0-lines,1-dots "; 
//---- indicator buffers
double UpBuffer[];
double DnBuffer[];
double UpSignal[];
double DnSignal[];
double smin[];
double smax[];
double trend[];

bool   UpTrendAlert=false, DownTrendAlert=false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
  int init()
  {
   string short_name;
//---- indicator line
   IndicatorBuffers(7);
   SetIndexBuffer(0,UpBuffer);
   SetIndexBuffer(1,DnBuffer);
   SetIndexBuffer(2,UpSignal);
   SetIndexBuffer(3,DnSignal);
   SetIndexBuffer(4,smin);
   SetIndexBuffer(5,smax);
   SetIndexBuffer(6,trend);
   
      if(VisualMode==0)
      {
      SetIndexStyle(0,DRAW_LINE);
      SetIndexStyle(1,DRAW_LINE);
      }
      else
      {
      SetIndexStyle(0,DRAW_ARROW);
      SetIndexStyle(1,DRAW_ARROW);
      SetIndexArrow(0,159);
      SetIndexArrow(1,159);
      }
   
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexStyle(3,DRAW_ARROW);
   SetIndexArrow(2,108);
   SetIndexArrow(3,108);
//---- name for DataWindow and indicator subwindow label
   short_name="VoltyChannel_Stop("+MA_Length+","+ATR_Length+","+DoubleToStr(Kv,3)+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,"UpTrend");
   SetIndexLabel(1,"DnTrend");
   SetIndexLabel(2,"UpSignal");
   SetIndexLabel(3,"DnSignal");
//----
   SetIndexDrawBegin(0,MA_Length+ATR_Length);
   SetIndexDrawBegin(1,MA_Length+ATR_Length);
   SetIndexDrawBegin(2,MA_Length+ATR_Length);
   SetIndexDrawBegin(3,MA_Length+ATR_Length);

//----
   return(0);
  }

//+------------------------------------------------------------------+
//| VoltyChannel_Stop_2                                              |
//+------------------------------------------------------------------+
int start()
  {
   
   int shift,limit, counted_bars=IndicatorCounted();
   
   if ( counted_bars > 0 )  limit=Bars-counted_bars;
   if ( counted_bars < 0 )  return(0);
   if ( counted_bars ==0 )  limit=Bars-MA_Length-1; 
     
	for(shift=limit;shift>=0;shift--) 
   {	
      if(useMA_HiLoEnvelope)
         {
  double bprice = iMA(NULL,0,MA_Length,0,MA_Mode,2,shift);
  double sprice = iMA(NULL,0,MA_Length,0,MA_Mode,3,shift);
         }
      else
         {
         bprice = iMA(NULL,0,MA_Length,0,MA_Mode,MA_Price,shift);
         sprice = iMA(NULL,0,MA_Length,0,MA_Mode,MA_Price,shift);
         }
    
      
	smax[shift] = bprice + Kv*iATR(NULL,0,ATR_Length,shift);
   smin[shift] = sprice - Kv*iATR(NULL,0,ATR_Length,shift); 
      
       
   trend[shift]=trend[shift+1];
 
      if(usePrice_HiLoBreak)
      {  
      if ( High[shift] > smax[shift+1] ) trend[shift] =  1;
      if ( Low[shift]  < smin[shift+1] ) trend[shift] = -1;
	   }
      else
      {
      if ( bprice > smax[shift+1] ) trend[shift] =  1;
      if ( sprice < smin[shift+1] ) trend[shift] = -1;
	   }
      
      if ( trend[shift] >0 ) 
	   {
	   if( smin[shift] < smin[shift+1]) smin[shift] = smin[shift+1];
	   UpBuffer[shift] = smin[shift] - (MoneyRisk - 1)*iATR(NULL,0,ATR_Length,shift);
	   if( UpBuffer[shift] < UpBuffer[shift+1] && UpBuffer[shift+1]!=EMPTY_VALUE) UpBuffer[shift] = UpBuffer[shift+1];
	   if(trend[shift+1] != trend[shift]) UpSignal[shift] = UpBuffer[shift];
	   else UpSignal[shift] = EMPTY_VALUE;
	   DnBuffer[shift] = EMPTY_VALUE;
	   DnSignal[shift] = EMPTY_VALUE;
	   }
	   else
	   if ( trend[shift] <0 ) 
	   {
	   if( smax[shift]>smax[shift+1]) smax[shift] = smax[shift+1];
	   DnBuffer[shift] = smax[shift] + (MoneyRisk - 1)*iATR(NULL,0,ATR_Length,shift);
	   if( DnBuffer[shift] > DnBuffer[shift+1]) DnBuffer[shift] = DnBuffer[shift+1];
	   if(trend[shift+1] != trend[shift]) DnSignal[shift] = DnBuffer[shift];
	   else DnSignal[shift] = EMPTY_VALUE;
	   UpBuffer[shift] = EMPTY_VALUE;
	   UpSignal[shift] = EMPTY_VALUE;
	   }
   }
//----------   
   string Message;
   
   if ( trend[2]<0 && trend[1]>0 && Volume[0]>1 && !UpTrendAlert)
	{
	Message = " "+Symbol()+" M"+Period()+": VCS Signal for BUY";
	if ( AlertMode>0 ) Alert (Message); 
	UpTrendAlert=true; DownTrendAlert=false;
	} 
	 	  
	if ( trend[2]>0 && trend[1]<0 && Volume[0]>1 && !DownTrendAlert)
	{
	Message = " "+Symbol()+" M"+Period()+": VCS Signal for SELL";
	if ( AlertMode>0 ) Alert (Message); 
	DownTrendAlert=true; UpTrendAlert=false;
	} 	         
//----	
   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 ---