0
Views
0
Downloads
0
Favorites
price
//+------------------------------------------------------------------+
//| Price.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 description "Öåíîâàÿ ìåòêà"
//---- îòðèñîâêà èíäèêàòîðà â ãëàâíîì îêíå
#property indicator_chart_window
//---- äëÿ ðàñ÷åòà è îòðèñîâêè èíäèêàòîðà íå èñïîëüçóþòñÿ áóôåðû
#property indicator_buffers 0
//---- íå èñïîëüçóþòñÿ ãðàôè÷åñêèå ïîñòðîåíèÿ
#property indicator_plots 0
//+----------------------------------------------+
//|Ïåðå÷èñëåíèå äëÿ âàðèàíòîâ îïðåäåëåíèÿ òðåíäà |
//+----------------------------------------------+
enum PriceMode
{
BID=0, //áèäû
ASK //àñêè
};
//+----------------------------------------------+
//| Âõîäíûå ïàðàìåòðû èíäèêàòîðà |
//+----------------------------------------------+
input string SirName="Price"; //Ïåðâàÿ ÷àñòü èìåíè ãðàôè÷åñêèõ îáúåêòîâ
input PriceMode Price=BID; //Ñïîñîá îïðåäåëåíèÿ öåíû
input uint Digits_=0; //Ðàçðÿä îêðóãëåíèÿ
input color Color_= clrMagenta; //Öâåò öåíû
input uint FontSize = 2; //Ðàçìåð öåíîâûõ ìåòîê
input int Shift = 10; //Ñäâèã öåíîâûõ ìåòîê ïî ãîðèçîíòàëè â áàðàõ
//+----------------------------------------------+
color clr;
int Normalize;
string ObjectNames;
double PointPow10;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
void OnInit()
{
//---- èíèöèàëèçàöèÿ èìåí
ObjectNames=SirName+" PriceLable";
//---- èíèöèàëèçàöèÿ ïåðåìåííûõ
PointPow10=_Point*MathPow(10,Digits_);
Normalize=int(_Digits-Digits_);
//----
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//----
ObjectDelete(0,ObjectNames);
//----
ChartRedraw(0);
}
//+------------------------------------------------------------------+
//| 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[])
{
//---- èíäåêñàöèÿ ýëåìåíòîâ â ìàññèâàõ êàê â òàéìñåðèÿõ
ArraySetAsSeries(close,false);
ArraySetAsSeries(time,false);
double price;
if(Price==BID) price=close[rates_total-1];
else
{
ArraySetAsSeries(spread,false);
price=close[rates_total-1]+_Point*spread[rates_total-1];
}
double res=NormalizeDouble(PointPow10*MathCeil(price/PointPow10),Normalize);
datetime time0=time[rates_total-1]+PeriodSeconds()*Shift;
//----
string info=ObjectNames+" "+DoubleToString(res,Normalize);
SetRightPrice(0,ObjectNames,0,time0,res,Color_,FontSize,info);
//----
ChartRedraw(0);
return(rates_total);
}
//+------------------------------------------------------------------+
//| RightPrice creation |
//+------------------------------------------------------------------+
void CreateRightPrice(long chart_id,// chart ID
string name, // object name
int nwin, // window index
datetime time, // price level time
double price, // price level
color Color, // price color
int fontsize, // price size
string text // òåêñò
)
{
//----
ObjectCreate(chart_id,name,OBJ_ARROW_RIGHT_PRICE,nwin,time,price);
ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
ObjectSetInteger(chart_id,name,OBJPROP_BACK,false);
ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,fontsize);
ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
ObjectSetInteger(chart_id,name,OBJPROP_SELECTED,false);
ObjectSetInteger(chart_id,name,OBJPROP_SELECTABLE,false);
//----
}
//+------------------------------------------------------------------+
//| RightPrice reinstallation |
//+------------------------------------------------------------------+
void SetRightPrice(long chart_id,// chart ID
string name, // object name
int nwin, // window index
datetime time, // price level time
double price, // price level
color Color, // price color
int fontsize, // price size
string text // òåêñò
)
{
//----
if(ObjectFind(chart_id,name)==-1) CreateRightPrice(chart_id,name,nwin,time,price,Color,fontsize,text);
else
{
ObjectMove(chart_id,name,0,time,price);
ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
}
}
//+------------------------------------------------------------------+
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
---