Price_Range_HLClMd

Author: Grigori Minassian
Price_Range_HLClMd
Price Data Components
Series array that contains close prices for each bar
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
Price_Range_HLClMd
//+------------------------------------------------------------------+
//|                                              Price Range Mod.mq4 |
//|                                      copyright Grigori Minassian |
//|                                          Rustem Bigeev modyfied  |
//|                                                    www.parch.ru  |
//+------------------------------------------------------------------+
//mod hlcl md

#property copyright "Grigori Minassian"
#property  indicator_separate_window
#property  indicator_buffers 4
#property  indicator_color1  Blue
#property  indicator_color2  Red
#property  indicator_color3  Gray
#property  indicator_color4  Green

//#property  indicator_level1  0
#property  indicator_width3  1
#property  indicator_width4  1


double ChangeHigh[];
double ChangeClose[];
double ChangeLow[];
double ChangeMid[];

extern int PR_Period = 77;
extern bool showHL = true;
int init()
{
   int draw = DRAW_NONE; if (showHL)  draw = DRAW_LINE;
   SetIndexStyle(0, draw);
   SetIndexStyle(1, draw);
   SetIndexStyle(2, DRAW_LINE);
   SetIndexStyle(3, DRAW_LINE);

   SetIndexBuffer(0, ChangeHigh);
   SetIndexBuffer(1, ChangeLow);
   SetIndexBuffer(2, ChangeMid);
   SetIndexBuffer(3, ChangeClose);

   IndicatorDigits(Digits + 1);

   IndicatorShortName("Price Range HLClMid (" + PR_Period + ") ");
   SetIndexLabel(0, "High");
   SetIndexLabel(1, "Low");
   SetIndexLabel(2, "Middle");
   SetIndexLabel(3, "Close");
   return(0);
}

double price_change_high = 0;
double price_change_low = 0;
double price_change_close = 0;

void ComputePriceRange(int period, int shift)
{
   int high_shift = iHighest(Symbol(), 0, MODE_HIGH, period, shift);
   int low_shift  = iLowest (Symbol(), 0, MODE_LOW, period, shift);
   double price_open  = iClose(Symbol(), 0, period + shift);
   double price_high  = iClose(Symbol(), 0, high_shift);
   double price_low   = iClose(Symbol(), 0, low_shift);
   double price_close = iClose(Symbol(), 0, shift);
   
   price_change_high = (price_high - price_open) / Point;
   price_change_low = (price_low - price_open) / Point;
   price_change_close = (price_close - price_open) / Point;
}

int start()
{
   int i, limit;
   int counted_bars=IndicatorCounted();


   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;


   for(i = 0; i < limit; i++)
   {
      ComputePriceRange(PR_Period, i);
      ChangeHigh[i]  = price_change_high;
      ChangeLow[i]   = price_change_low;
      ChangeClose[i] = price_change_close;
      ChangeMid[i]   = (price_change_high+price_change_low)/2;
   }
   
   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 ---