ASCTrend1sig_v4

ASCTrend1sig_v4
Indicators Used
Larry William percent range indicator
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
ASCTrend1sig_v4
//+------------------------------------------------------------------+
//|                                        ASCTrend1sig_noSound.mq4  |
//|                                       Ramdass - Conversion only  |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
//---- input parameters
extern int RISK = 3;
extern int CountBars = 300;
//---- buffers
double val1[];
double val2[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
    //---- indicator line
    IndicatorBuffers(2);
    SetIndexStyle(0, DRAW_ARROW, 0, 1);
    SetIndexArrow(0, 234);
    SetIndexStyle(1, DRAW_ARROW, 0, 1);
    SetIndexArrow(1, 233);
    SetIndexBuffer(0, val1);
    SetIndexBuffer(1, val2);
    if(CountBars >= 1000) 
        CountBars=950;
    SetIndexDrawBegin(0, Bars - CountBars + 11 + 1);
    SetIndexDrawBegin(1, Bars - CountBars + 11 + 1);
    //----
    return(0);
  }
//+------------------------------------------------------------------+
//| ASCTrend1sig                                                     |
//+------------------------------------------------------------------+
int start()
  {
    int i, shift, counted_bars = IndicatorCounted();
    int Counter, i1, value10, value11;
    double value1, x1, x2;
    double value2, value3;
    double TrueCount, Range, AvgRange, MRO1, MRO2;
    double Table_value2[1000];
    //----
    value10 = 3 + RISK*2;
    x1 = 67 + RISK;
    x2 = 33 - RISK;
    value11 = value10;
    //----
    if(Bars <= 11 + 1) 
        return(0);
    //---- initial zero
    if(counted_bars < 11 + 1)
      {
        for(i = 1; i <= 0; i++) 
            val1[CountBars-i] = 0.0;
        for(i = 1; i <= 0; i++) 
            val2[CountBars-i] = 0.0;
      }
    //----
    shift = CountBars - 11 - 1;
    while(shift >= 0)
      {
        Counter = shift;
	       Range = 0.0;
	       AvgRange = 0.0;
	       //----
        for(Counter = shift; Counter <= shift + 9; Counter++) 
	           AvgRange=AvgRange + MathAbs(High[Counter] - Low[Counter]);
	       //----
        Range = AvgRange / 10;
	       Counter = shift;
	       TrueCount = 0;
	       //----
        while(Counter < shift + 9 && TrueCount < 1)
		        {
		          if(MathAbs(Open[Counter] - Close[Counter+1]) >= Range*2.0) 
		              TrueCount = TrueCount + 1;
		          Counter=Counter+1;
		        }
	       //----
        if(TrueCount >= 1) 
	         {
	           MRO1 = Counter;
	         } 
	       else 
	         {
	           MRO1 = -1;
	         }
	       //----
        Counter = shift;
	       TrueCount = 0;
	       //----
        while(Counter < shift + 6 && TrueCount < 1)
		        {
		          if (MathAbs(Close[Counter+3] - Close[Counter]) >= Range*4.6) 
		              TrueCount = TrueCount + 1;
		          Counter = Counter + 1;
		        }
	       //----
        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, shift)); // PercentR(value11=9)
	       Table_value2[shift] = value2;
	       val1[shift] = 0;
	       val2[shift] = 0;
	       value3 = 0;
	       //----
        if(value2 < x2)
		        {
		          i1 = 1;
		          while(Table_value2[shift + i1] >= x2 && Table_value2[shift+i1] <= x1)
		            {
		              i1++;
		            }
		          //----
            if(Table_value2[shift+i1] > x1) 
			           {
			             value3 = High[shift] + Range*0.5;
			             val1[shift] = value3;
			           } 
		        }
	       if(value2 > x1)
		        {
		          i1=1;
		          while(Table_value2[shift+i1] >= x2 && Table_value2[shift+i1] <= x1)
		            {
		              i1++;
		            }
		          if(Table_value2[shift+i1] < x2) 
			           {
			             value3 = Low[shift] - Range*0.5;
			             val2[shift] = value3;
			           }
		        }
      
        shift--;
      }
    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 ---