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 Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---