SilverTrendMy

Author: SilverTrend rewritten by CrazyChart
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
SilverTrendMy
//+------------------------------------------------------------------+
//| SilverTrend_Signal.mq4 
//+------------------------------------------------------------------+
#property copyright "SilverTrend  rewritten by CrazyChart"
#property link      "http://viac.ru/"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 Violet

//êîëè÷åñòâî áàðîâ íà êîòîðûõ ïðîðèñîâûâàåòñÿ
extern int RisBars=10000;

//ïåðèîä èíäèêàòîðà
extern int Per=211;

//îòêëîíåíèå â ïðîöåíòàõ îò âåðõà è íèçà
extern int Otk=33;

//---- buffers
double val1[];
double val2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   string short_name;
   
   IndicatorBuffers(2);
   
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,233);
   
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,234);
   
   SetIndexBuffer(0,val1);
   SetIndexBuffer(1,val2);
   
   return(0);
}
//+------------------------------------------------------------------+
//| SilverTrend_Signal                                               |
//+------------------------------------------------------------------+
int start()
  {   
   if (RisBars>=Bars) {RisBars=Bars;}
   
   SetIndexDrawBegin(0,Bars-RisBars+Per);
   SetIndexDrawBegin(1,Bars-RisBars+Per);
   
   int i,shift,counted_bars=IndicatorCounted();
   int i1,i2;
   double Range,AvgRange,smin,smax,SsMax,SsMin,price;
   bool uptrend,old;
   
   //åñëè áàðîâ ñëèøêîì ìàëî, çàâåðøàåì ðàáîòó
   if(Bars<=Per+1)  {return(0);} 
   
   //îáíóëåíèå
   if(counted_bars<Per+1)
   {
      for(i=1;i<=Per;i++) {val1[RisBars-i]=0.0;}
      for(i=1;i<=Per;i++) {val2[RisBars-i]=0.0;}
   }
 
   for (shift = RisBars-Per; shift>=0; shift--) 
   { 

	   Range=0;
	   AvgRange=0;
	   
	   for (i1=shift; i1<=shift+Per; i1++)
		{
		    AvgRange=AvgRange+MathAbs(High[i1]-Low[i1]);
		}
		
	   Range=AvgRange/(Per+1);

      SsMax=High[shift];
      SsMin=Low[shift];
       
      for (i2=shift;i2<=shift+Per-1;i2++)
      {
            price=High[i2];
            
            if(SsMax<price)  {SsMax=price;}
            
            price=Low[i2];
            
            if(SsMin>=price) {SsMin=price;}
      }
 
      smin = SsMin+(SsMax-SsMin)*Otk/100;
      smin = NormalizeDouble(smin,Digits);
       
      smax = SsMax-(SsMax-SsMin)*Otk/100;
      smax = NormalizeDouble(smax,Digits);
       
	   val1[shift]=0;
	   val2[shift]=0;
	   
	   if (Close[shift]<smin && Close[shift]<Close[shift+1]) {uptrend = false;}

	   if (Close[shift]>smax && Close[shift]>Close[shift+1]) {uptrend = true;}

      if (uptrend!=old && uptrend==true)  {val1[shift]=Low[shift]-Range*0.5;}
      if (uptrend!=old && uptrend==false) {val2[shift]=High[shift]+Range*0.5;}
      
      old=uptrend;

   }
   
   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 ---