0
Views
0
Downloads
0
Favorites
PercentChange
//+------------------------------------------------------------------+
//| PercentChange.mq4 |
//| Yuriy Tokman (YTG) |
//| http://ytg.com.ua/ |
//+------------------------------------------------------------------+
#property copyright "Yuriy Tokman (YTG)"
#property link "http://ytg.com.ua/"
#property version "1.00"
#property strict
#property indicator_chart_window
input int MaxBars = 300;
input int DisplayDistance = 5;
input color DisplayGainColor = clrGreen;
input color DisplayLossColor = clrRed;
input int DisplayFontSize = 8;
input int DisplayAfterComma = 2;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
GetDell();
Comment("");
//---
}
//+------------------------------------------------------------------+
//| 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[])
{
//---
string perc,name;
double _start;
//---
int limit=rates_total-prev_calculated;
if(prev_calculated==0)limit--;
else limit++;
if(MaxBars>0 && limit>MaxBars) limit=MaxBars;
//---
for( int i=0; i<limit && !IsStopped(); i++)
{
//((a-b):((a+b):2))*100
//à-öåíà îòêðûòèÿ b-öåíà çàêðûòèÿ
_start = - ((Open[i]-Close[i])/((Open[i]+Close[i])/2)) * 100;
//---
if(_start>=0)
{
name = "ytg_A-" + TimeToStr(Time[i], TIME_DATE|TIME_MINUTES);
perc =DoubleToStr(_start, DisplayAfterComma) + "%";
TextCreate(0,name,0,Time[i],Low[i]-DisplayDistance*Point,perc,"Arial",DisplayFontSize,DisplayGainColor,90,ANCHOR_RIGHT);
}
else if(_start<0)
{
name = "ytg_Y-" + TimeToStr(Time[i], TIME_DATE|TIME_MINUTES);
perc =DoubleToStr(_start, DisplayAfterComma) + "%";
TextCreate(0,name,0,Time[i],High[i]+DisplayDistance*Point,perc,"Arial",DisplayFontSize,DisplayLossColor,90,ANCHOR_LEFT);
}
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Ñîçäàåò îáúåêò "Òåêñò" |
//+------------------------------------------------------------------+
bool TextCreate(const long chart_ID=0, // ID ãðàôèêà
const string name="Text", // èìÿ îáúåêòà
const int sub_window=0, // íîìåð ïîäîêíà
datetime time=0, // âðåìÿ òî÷êè ïðèâÿçêè
double price=0, // öåíà òî÷êè ïðèâÿçêè
const string text="Text", // ñàì òåêñò
const string font="Arial", // øðèôò
const int font_size=10, // ðàçìåð øðèôòà
const color clr=clrRed, // öâåò
const double angle=0.0, // íàêëîí òåêñòà
const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // ñïîñîá ïðèâÿçêè
const bool back=false, // íà çàäíåì ïëàíå
const bool selection=false, // âûäåëèòü äëÿ ïåðåìåùåíèé
const bool hidden=true, // ñêðûò â ñïèñêå îáúåêòîâ
const long z_order=0) // ïðèîðèòåò íà íàæàòèå ìûøüþ
{
//---
if(ObjectFind(name)>=0)ObjectDelete(name);//åñëè text óæå ñîçäàí óäàëÿåì åãî, ââèäó ñëó÷àéíîãî ïåðåòàñêèâàíèÿ ìûøüþ
//--- ñáðîñèì çíà÷åíèå îøèáêè
ResetLastError();
//--- ñîçäàäèì îáúåêò "Òåêñò"
if(!ObjectCreate(chart_ID,name,OBJ_TEXT,sub_window,time,price))
{
Print(__FUNCTION__,
": íå óäàëîñü ñîçäàòü îáúåêò \"Òåêñò\"! Êîä îøèáêè = ",GetLastError());
return(false);
}
//--- óñòàíîâèì òåêñò
ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- óñòàíîâèì øðèôò òåêñòà
ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- óñòàíîâèì ðàçìåð øðèôòà
ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- óñòàíîâèì óãîë íàêëîíà òåêñòà
ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
//--- óñòàíîâèì ñïîñîá ïðèâÿçêè
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- óñòàíîâèì öâåò
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- îòîáðàçèì íà ïåðåäíåì (false) èëè çàäíåì (true) ïëàíå
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- âêëþ÷èì (true) èëè îòêëþ÷èì (false) ðåæèì ïåðåìåùåíèÿ îáúåêòà ìûøüþ
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ñêðîåì (true) èëè îòîáðàçèì (false) èìÿ ãðàôè÷åñêîãî îáúåêòà â ñïèñêå îáúåêòîâ
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- óñòàíîâèì ïðèîðèòåò íà ïîëó÷åíèå ñîáûòèÿ íàæàòèÿ ìûøè íà ãðàôèêå
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- óñïåøíîå âûïîëíåíèå
return(true);
}
//----
void GetDell( string name = "ytg_")
{
string vName;
for(int i=ObjectsTotal()-1; i>=0;i--)
{
vName = ObjectName(i);
if (StringFind(vName,name) !=-1) ObjectDelete(vName);
}
}
//----
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
---