Author: Copyright � 2016, Nikolay Kositsin
0 Views
0 Downloads
0 Favorites
PriceGrid
//+------------------------------------------------------------------+
//|                                                    PriceGrid.mq5 |
//|                               Copyright © 2016, Nikolay Kositsin | 
//|                              Khabarovsk,   farria@mail.redcom.ru | 
//+------------------------------------------------------------------+
//---- àâòîðñòâî èíäèêàòîðà
#property copyright "Copyright © 2016, Nikolay Kositsin"
//---- ññûëêà íà ñàéò àâòîðà
#property link      "farria@mail.redcom.ru"
//---- íîìåð âåðñèè èíäèêàòîðà
#property version   "1.00"
//---- îòðèñîâêà èíäèêàòîðà â ãëàâíîì îêíå
#property indicator_chart_window 
//---- äëÿ ðàñ÷¸òà è îòðèñîâêè èíäèêàòîðà íå èñïîëüçóþòñÿ áóôåðû
#property indicator_buffers 0
//---- íå èñïîëüçóþòñÿ ãðàôè÷åñêèå ïîñòðîåíèÿ
#property indicator_plots  0
//+-----------------------------------+
//|  îáúÿâëåíèå ïåðå÷èñëåíèÿ          |
//+-----------------------------------+
enum Number
  {
   Number_0,
   Number_1,
   Number_2,
   Number_3
  };
//+-----------------------------------+
//|  îáúÿâëåíèå ïåðå÷èñëåíèÿ          |
//+-----------------------------------+  
enum Width
  {
   Width_1=1, //1
   Width_2,   //2
   Width_3,   //3
   Width_4,   //4
   Width_5    //5
  };
//+-----------------------------------+
//|  îáúÿâëåíèå ïåðå÷èñëåíèÿ          |
//+-----------------------------------+
enum STYLE
  {
   SOLID_,//Ñïëîøíàÿ ëèíèÿ
   DASH_,//Øòðèõîâàÿ ëèíèÿ
   DOT_,//Ïóíêòèðíàÿ ëèíèÿ
   DASHDOT_,//Øòðèõ-ïóíêòèðíàÿ ëèíèÿ
   DASHDOTDOT_   //Øòðèõ-ïóíêòèðíàÿ ëèíèÿ ñ äâîéíûìè òî÷êàìè
  };
//+----------------------------------------------+
//| Âõîäíûå ïàðàìåòðû èíäèêàòîðà                 |
//+----------------------------------------------+
input string  SirName="PriceGrid";          //Ïåðâàÿ ÷àñòü èìåíè ãðàôè÷åñêèõ îáúåêòîâ
input uint  Digits_=2;                      //ðàçðÿä ñåòêè
input uint  Total=20;                        //êîëè÷åñòâî áëîêîâ ñåòêè ñâåðõó èëè ñíèçó îò öåíû
input color  Color_ = clrBlueViolet;        //öâåò óðîâíÿ
input STYLE  Style_ = DASHDOTDOT_;          //ñòèëü ëèíèè óðîâíÿ
input Width  Width_ = Width_1;              //òîëùèíà ëèíèè óðîâíÿ 
//+----------------------------------------------+
int middle,size;
string ObjectNames[];
double Pow10,PointPow10,PriceGrid[],Price[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+  
void OnInit()
  {
//---- ðàñïðåäåëåíèå ïàìÿòè ïîä ìàññèâû ïåðåìåííûõ  
   size=int(Total*2);
   ArrayResize(ObjectNames,size);
   ArrayResize(PriceGrid,size);
   ArrayResize(Price,size);
//---- èíèöèàëèçàöèÿ èì¸í
   for(int count=0; count<size; count++) ObjectNames[count]=SirName+" PriceLine "+string(count);
//---- èíèöèàëèçàöèÿ ïåðåìåííûõ         
   Pow10=MathPow(10,Digits_);
   PointPow10=_Point*Pow10;
   middle=(size/2)-1;
//---- èíèöèàëèçàöèÿ ïåðåìåííûõ         
   for(int count=middle; count<size; count++) PriceGrid[count]=+PointPow10*(count-middle);  
   for(int count=middle-1; count>=0; count--) PriceGrid[count]=-PointPow10*(middle-count);
//----
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+    
void OnDeinit(const int reason)
  {
//----
   for(int count=0; count<size; count++) ObjectDelete(0,ObjectNames[count]);
//----
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(
                const int rates_total,    // êîëè÷åñòâî èñòîðèè â áàðàõ íà òåêóùåì òèêå
                const int prev_calculated,// êîëè÷åñòâî èñòîðèè â áàðàõ íà ïðåäûäóùåì òèêå
                const datetime &time[],
                const double &open[],
                const double& high[],     // öåíîâîé ìàññèâ ìàêñèìóìîâ öåíû äëÿ ðàñ÷¸òà èíäèêàòîðà
                const double& low[],      // öåíîâîé ìàññèâ ìèíèìóìîâ öåíû  äëÿ ðàñ÷¸òà èíäèêàòîðà
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[]
                )
  {
//----   
  double res=PointPow10*MathFloor(close[rates_total-1]/PointPow10);
  for(int count=0; count<size; count++) Price[count]=res+PriceGrid[count];    
  for(int count=0; count<size; count++) SetHline(0,ObjectNames[count],0,Price[count],Color_,Style_,Width_,ObjectNames[count]+DoubleToString(Price[count],_Digits));
//----
   ChartRedraw(0);
//----   
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|  Ñîçäàíèå ãîðèçîíòàëüíîãî, öåíîâîãî óðîâíÿ                       |
//+------------------------------------------------------------------+
void CreateHline
(
 long   chart_id,      // èäåíòèôèêàòîð ãðàôèêà
 string name,          // èìÿ îáúåêòà
 int    nwin,          // èíäåêñ îêíà
 double price,         // öåíîâîé óðîâåíü
 color  Color,         // öâåò ëèíèè
 int    style,         // ñòèëü ëèíèè
 int    width,         // òîëùèíà ëèíèè
 string text           // òåêñò
 )
//---- 
  {
//----
   ObjectCreate(chart_id,name,OBJ_HLINE,0,0,price);
   ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
   ObjectSetInteger(chart_id,name,OBJPROP_STYLE,style);
   ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,width);
   ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
   ObjectSetInteger(chart_id,name,OBJPROP_BACK,true);
//----
  }
//+------------------------------------------------------------------+
//|  Ïåðåóñòàíîâêà ãîðèçîíòàëüíîãî, öåíîâîãî óðîâíÿ                  |
//+------------------------------------------------------------------+
void SetHline
(
 long   chart_id,      // èäåíòèôèêàòîð ãðàôèêà
 string name,          // èìÿ îáúåêòà
 int    nwin,          // èíäåêñ îêíà
 double price,         // öåíîâîé óðîâåíü
 color  Color,         // öâåò ëèíèè
 int    style,         // ñòèëü ëèíèè
 int    width,         // òîëùèíà ëèíèè
 string text           // òåêñò
 )
//---- 
  {
//----
   if(ObjectFind(chart_id,name)==-1) CreateHline(chart_id,name,nwin,price,Color,style,width,text);
   else
     {
      //ObjectSetDouble(chart_id,name,OBJPROP_PRICE,price);
      ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
      ObjectMove(chart_id,name,0,0,price);
     }
//----
  }
//+------------------------------------------------------------------+

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