Price Data Components
2
Views
0
Downloads
0
Favorites
ressup
//+------------------------------------------------------------------+
//| ResSup.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
//+----------------------------------------------+
//| Îáúÿâëåíèå êîíñòàíò |
//+----------------------------------------------+
#define RESET 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="ResSup"; //Ïåðâàÿ ÷àñòü èìåíè ãðàôè÷åñêèõ îáúåêòîâ
input ENUM_TIMEFRAMES TimeFrame=PERIOD_H1; //ïåðèîä ãðàôèêà äëÿ ïîèñêà ýêñòðåìóìîâ
input uint SignalBar=1; //íîìåð áàðà äëÿ ïîèñêà ýêñòðåìóìîâ
input uint iPeriod=24; //ïåðèîä ïîèñêà ýêñòðåìóìîâ öåíû
input uint iSize=15; //äëèíà óðîâíåé â áàðàõ òåêóùåãî ãðàôèêà
input uint Digits_=0; //ðàçðÿä îêðóãëåíèÿ öåíû
input color Color_Bg = clrLavender; //öâåò ôîíà
input color Color_Up = clrLimeGreen; //öâåò ëèíèè ñîïðîòèâëåíèÿ
input STYLE Style_Up = SOLID_; //ñòèëü ëèíèè ñîïðîòèâëåíèÿ
input Width Width_Up = Width_4; //òîëùèíà ëèíèè ñîïðîòèâëåíèÿ
input color Color_Dn = clrMagenta; //öâåò ëèíèè ïîääåðæêè
input STYLE Style_Dn = SOLID_; //ñòèëü ëèíèè ïîääåðæêè
input Width Width_Dn = Width_4; //òîëùèíà ëèíèè ïîääåðæêè
input uint FontSize = 2; //ðàçìåð öåíîâûõ ìåòîê
//+----------------------------------------------+
double iLow[],iHigh[],PointPow10;
int min_rates_total1,min_rates_total2;
string UpLinesName,UpPriceName,DnLinesName,DnPriceName,BgName;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
void OnInit()
{
//---- ðàñïðåäåëåíèå ïàìÿòè ïîä ìàññèâû ïåðåìåííûõ
ArrayResize(iLow,iPeriod);
ArrayResize(iHigh,iPeriod);
//---- èíèöèàëèçàöèÿ ñòðîêîâûõ èìåí îáúåêòîâ
UpLinesName=SirName+" UpLine";
UpPriceName=SirName+" UpPrice";
DnLinesName=SirName+" DnLine";
DnPriceName=SirName+" DnPrice";
BgName=SirName+" Bg";
//---- èíèöèàëèçàöèÿ ïåðåìåííûõ
min_rates_total1=int(iPeriod+SignalBar);
min_rates_total2=int(iSize);
double Pow10=MathPow(10,Digits_);
PointPow10=_Point*Pow10;
//----
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//----
ObjectDelete(0,UpLinesName);
ObjectDelete(0,UpPriceName);
ObjectDelete(0,DnLinesName);
ObjectDelete(0,DnPriceName);
ObjectDelete(0,BgName);
//----
}
//+------------------------------------------------------------------+
//| 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[]
)
{
//---- ïðîâåðêà êîëè÷åñòâà áàðîâ íà äîñòàòî÷íîñòü äëÿ ðàñ÷åòà
if(Bars(Symbol(),TimeFrame)<min_rates_total1 || rates_total<min_rates_total2) return(RESET);
//---- êîïèðóåì âíîâü ïîÿâèâøèåñÿ äàííûå â ìàññèâû
if(CopyLow(Symbol(),TimeFrame,SignalBar,iPeriod,iLow)<=0) return(RESET);
if(CopyHigh(Symbol(),TimeFrame,SignalBar,iPeriod,iHigh)<=0) return(RESET);
double Min=PointPow10*MathRound(iLow[ArrayMinimum(iLow,0,WHOLE_ARRAY)]/PointPow10);
double Max=PointPow10*MathRound(iHigh[ArrayMaximum(iHigh,0,WHOLE_ARRAY)]/PointPow10);
datetime time1=time[rates_total-iSize];
datetime time2=time[rates_total-1];
//----
SetRectangle(0,BgName,0,time1,Min,time2,Max,Color_Bg,SOLID_,Width_1,"");
SetTline(0,UpLinesName,0,time1,Min,time2,Min,Color_Dn,Style_Dn,Width_Dn,DoubleToString(Min,_Digits));
SetTline(0,DnLinesName,0,time1,Max,time2,Max,Color_Up,Style_Up,Width_Up,DoubleToString(Max,_Digits));
SetRightPrice(0,DnPriceName,0,time2,Min,Color_Dn,FontSize);
SetRightPrice(0,UpPriceName,0,time2,Max,Color_Up,FontSize);
//----
ChartRedraw(0);
//----
return(rates_total);
}
//+------------------------------------------------------------------+
//| Ñîçäàíèå ïðÿìîóãîëüíèêà |
//+------------------------------------------------------------------+
void CreateRectangle(long chart_id, // èäåíòèôèêàòîð ãðàôèêà
string name, // èìÿ îáúåêòà
int nwin, // èíäåêñ îêíà
datetime time1, // âðåìÿ 1 öåíîâîãî óðîâíÿ
double price1, // 1 öåíîâîé óðîâåíü
datetime time2, // âðåìÿ 2 öåíîâîãî óðîâíÿ
double price2, // 2 öåíîâîé óðîâåíü
color Color, // öâåò ëèíèè
int style, // ñòèëü ëèíèè
int width, // òîëùèíà ëèíèè
string text) // òåêñò
{
//----
ObjectCreate(chart_id,name,OBJ_RECTANGLE,nwin,time1,price1,time2,price2);
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);
ObjectSetInteger(chart_id,name,OBJPROP_FILL,true);
ObjectSetInteger(chart_id,name,OBJPROP_SELECTED,false);
ObjectSetInteger(chart_id,name,OBJPROP_SELECTABLE,true);
ObjectSetInteger(chart_id,name,OBJPROP_ZORDER,true);
//----
}
//+------------------------------------------------------------------+
//| Ïåðåóñòàíîâêà òðåíäîâîé ëèíèè |
//+------------------------------------------------------------------+
void SetRectangle(long chart_id, // èäåíòèôèêàòîð ãðàôèêà
string name, // èìÿ îáúåêòà
int nwin, // èíäåêñ îêíà
datetime time1, // âðåìÿ 1 öåíîâîãî óðîâíÿ
double price1, // 1 öåíîâîé óðîâåíü
datetime time2, // âðåìÿ 2 öåíîâîãî óðîâíÿ
double price2, // 2 öåíîâîé óðîâåíü
color Color, // öâåò ëèíèè
int style, // ñòèëü ëèíèè
int width, // òîëùèíà ëèíèè
string text) // òåêñò
{
//----
if(ObjectFind(chart_id,name)==-1) CreateRectangle(chart_id,name,nwin,time1,price1,time2,price2,Color,style,width,text);
else
{
ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
ObjectMove(chart_id,name,0,time1,price1);
ObjectMove(chart_id,name,1,time2,price2);
ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
}
//----
}
//+------------------------------------------------------------------+
//| Ñîçäàíèå òðåíäîâîé ëèíèè |
//+------------------------------------------------------------------+
void CreateTline(long chart_id, // èäåíòèôèêàòîð ãðàôèêà
string name, // èìÿ îáúåêòà
int nwin, // èíäåêñ îêíà
datetime time1, // âðåìÿ 1 öåíîâîãî óðîâíÿ
double price1, // 1 öåíîâîé óðîâåíü
datetime time2, // âðåìÿ 2 öåíîâîãî óðîâíÿ
double price2, // 2 öåíîâîé óðîâåíü
color Color, // öâåò ëèíèè
int style, // ñòèëü ëèíèè
int width, // òîëùèíà ëèíèè
string text) // òåêñò
{
//----
ObjectCreate(chart_id,name,OBJ_TREND,nwin,time1,price1,time2,price2);
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);
//ObjectSetInteger(chart_id,name,OBJPROP_RAY_RIGHT,true);
ObjectSetInteger(chart_id,name,OBJPROP_RAY,true);
//ObjectSetInteger(chart_id,name,OBJPROP_SELECTED,true);
//ObjectSetInteger(chart_id,name,OBJPROP_SELECTABLE,true);
ObjectSetInteger(chart_id,name,OBJPROP_ZORDER,true);
//----
}
//+------------------------------------------------------------------+
//| Ïåðåóñòàíîâêà òðåíäîâîé ëèíèè |
//+------------------------------------------------------------------+
void SetTline(long chart_id,// èäåíòèôèêàòîð ãðàôèêà
string name, // èìÿ îáúåêòà
int nwin, // èíäåêñ îêíà
datetime time1, // âðåìÿ 1 öåíîâîãî óðîâíÿ
double price1, // 1 öåíîâîé óðîâåíü
datetime time2, // âðåìÿ 2 öåíîâîãî óðîâíÿ
double price2, // 2 öåíîâîé óðîâåíü
color Color, // öâåò ëèíèè
int style, // ñòèëü ëèíèè
int width, // òîëùèíà ëèíèè
string text) // òåêñò
{
//----
if(ObjectFind(chart_id,name)==-1) CreateTline(chart_id,name,nwin,time1,price1,time2,price2,Color,style,width,text);
else
{
ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
ObjectMove(chart_id,name,0,time1,price1);
ObjectMove(chart_id,name,1,time2,price2);
ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
}
//----
}
//+------------------------------------------------------------------+
//| 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, // Text color
int fontsize // Text font
)
//----
{
//----
ObjectCreate(chart_id,name,OBJ_ARROW_RIGHT_PRICE,nwin,time,price);
ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
ObjectSetInteger(chart_id,name,OBJPROP_BACK,true);
ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,fontsize);
//----
}
//+------------------------------------------------------------------+
//| 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, // Text color
int fontsize // Text font
)
//----
{
//----
if(ObjectFind(chart_id,name)==-1) CreateRightPrice(chart_id,name,nwin,time,price,Color,fontsize);
else ObjectMove(chart_id,name,0,time,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
---