Author: Copyright � 2005, MetaQuotes Software Corp.
Indicators Used
Larry William percent range indicator
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
trend_v2
 //+------------------------------------------------------------------+
//|                                                         TREND.mq4 |
//|                       Copyright © 2005, MetaQuotes Software Corp. |
//|                                         http://abc-forex.ru/      |
//+-------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://abc-forex.ru/"
//----
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 Magenta
//----
extern int RISK=4;
extern int AllBars=250;
int up=0,dn=0;
double val1buffer[];
double val2buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW,EMPTY);
   SetIndexArrow(0,108);
   SetIndexBuffer(0, val1buffer);
   //
   SetIndexStyle(1,DRAW_ARROW,EMPTY);
   SetIndexArrow(1,108);
   SetIndexBuffer(1, val2buffer);
   //----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   double value2;
   double value3;
   double value10=10;
   double value11;
   double x1=70;
   double x2=30;
   int TrueCount;
   int counter;
   int MRO1;
   int MRO2;
   int i1;
   double Range;
   double AvgRange;
   double val1;
   double val2;
   double Table_value2[500][2];
   int counted_bars=IndicatorCounted();
   //
   value10=3+RISK*2;
   x1=67+RISK;
   x2=33-RISK;
   value11=value10;
//---------------------------- 
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;       //last bar recounted
   int i;
   int shift=Bars-counted_bars-1;
   if (shift > AllBars) shift=AllBars;
   for(i=shift; i>0; i--)
     {
      counter=i;
      Range=0;
      AvgRange=0;
      for(counter=i ;counter<=i+9;counter++)
        {
         AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
        }
      Range=AvgRange/10;
      counter=i;
      TrueCount=0;
      while(counter<i+9 && TrueCount<1)
        {
         if (MathAbs(Open[counter]-Close[counter+1])>=Range*2.0 )
            TrueCount++;
         counter++;
        }
      if (TrueCount>=1)
         MRO1=counter;
      else
         MRO1=-1;
      counter=i;
      TrueCount=0;
      while(counter<i+6 && TrueCount<1)
        {
         if(MathAbs(Close[counter+3]-Close[counter])>=Range*4.6)
         {TrueCount++;}
         counter++;
        }
      if(TrueCount>=1)
         MRO2=counter;
      else
         MRO2=-1;
      if (MRO1>-1)
         value11=3;
      else
         value11=value10;
      if (MRO2>-1)
         value11=4;
      else
         value11=value10;
      //----
      value2=100-MathAbs(iWPR(NULL,0,value11,i));
      Table_value2[i][0]=i;
      Table_value2[i][1]=value2;
      val1=0;
      val2=0;
      value3=0;
      //-------------------     val1  
      if (value2<x2) //  x2 = 30
        {
         i1=1;
         while(Table_value2[i+i1][1]>=x2 && Table_value2[i+i1][1]<=x1)
         {i1++;}
         if (Table_value2[i+i1][1]>x1)
           {
            value3=High[i]+Range*0.5;
            val1=value3;
           }
        }
      //-------------------     val2  
      if(value2>x1) // x1 = 70 
        {
         i1=1;
         while(Table_value2[i+i1][1]>=x2 && Table_value2[i+i1][1]<=x1)
         {i1++;}
         if (Table_value2[i+i1][1]< x2)
           {
            value3=Low[i]-Range*0.5;
            val2=value3;
           }
        }
      if (val2!=0 && up==0 )
        {
         val1buffer[i]= val2-1*Point;
         up=1;
         dn=0;
         if(shift<=2)
           {
            Alert (Symbol()," ",Period(),"M  Asctrend BUY ");
           }
        }
      if (val1 !=0 && dn==0)
        {
         val2buffer[i]= val1+1*Point;
         dn=1;
         up=0;
         if(shift<=2)
           {
            Alert (Symbol()," ",Period(),"M   Asctrend SELL ");
           }
        }
     }
   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 ---