Price Data Components
Orders Execution
0
Views
0
Downloads
0
Favorites
ProfitInd
//+----------------------------------------------------------------------+
//| ProfitInd.mq4 |
//| Copyright © 2010, Mike Zhitnev |
//| http://Forex-Robots.ru |
//| ******************************************************************** |
//| Äàííûé èíäèêàòîð îòîáðàæàåò íà ãðàôèêå ïîëó÷åííóþ ïðèáûëü |
//| çà êàæäûé òîðãîâûé äåíü. Êîððåêòíî ðàáîòàåò íà ïåðèîäàõ îò M1 äî H4. |
//| ******************************************************************** |
//| Ðàçðàáàòûâàþ äëÿ Âàñ ýêñïåðòû è èíäèêàòîðû íà çàêàç. |
//| Ïîäðîáíîñòè íà ñàéòå http://Forex-Robots.ru |
//| E-mail: admin@Forex-Robots.ru |
//+----------------------------------------------------------------------+
#property copyright "Copyright © 2010, Mike Zhitnev"
#property link "http://Forex-Robots.ru"
#property indicator_chart_window
extern color ProfitColor = Aqua; // öâåò ðåçóëüòàòà ïðèáûëüíîé ñäåëêè
extern color LossColor = Red; // öâåò ðåçóëüòàòà óáûòî÷íîé ñäåëêè
extern color ZeroColor = White; // öâåò ðåçóëüòàòà íóëåâîé ñäåëêè
extern bool EveryTickRefresh = false; // îáíîâëÿòü ëè ðåçóëüòàòû èç èñòîðèè îðäåðîâ
// êàæäûé òèê, èëè òîëüêî ïî ïîÿâëåíèþ â èñòîðèè íîâûõ îðäåðîâ
// (ïî óìîë÷àíèþ òîëüêî ïðè ïîÿâëåíèè íîâûõ îðäåðîâ)
int LastTicket; // Òèêåò ïîñëåäíåãî òèêåòà â èñòîðèè
int Delta = 20; // Ðàçíèöà â âûñîòå ìåæäó îòîáðàæàåìîé ìåòêîé è ìàêñèìàëüíîé öåíîé äíÿ (High-çíà÷åíèå)
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
LastTicket = -1;
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
for (int i=0; i<ObjectsTotal(); i++) // óäàëèì âñå ìåòêè ïðè äåèíèöèàëèçàöèè ýêñïåðòà
{
string name = "lbProfit" + DoubleToStr( i, 0) ;
if (ObjectFind(name)>=0) ObjectDelete(name);
}
return(0);
}
//+------------------------------------------------------------------+
//| ìíîæèòåëü çíà÷åíèÿ ïóíêòîâ â çàâèñèìîñòè îò òî÷íîñòè èíñòðóìåíòà |
//+------------------------------------------------------------------+
int SetValueX10(int Value)
{
if (Point==0.00001) // Âû÷èñëèì çíà÷åíèå äëÿ èíñòðóìåíòîâ ñ (5) çíàêàìè
Value = MathRound(Value * 0.0001 / Point);
if (Point==0.001) // Âû÷èñëèì çíà÷åíèå äëÿ èíñòðóìåíòîâ ñ (3) çíàêàìè
Value = MathRound(Value * 0.01 / Point);
return (MathRound(Value));
}
//+------------------------------------------------------------------+
//| Âûâîäèò ìåòêó äëÿ äíÿ day ñî çíà÷åíèåì ïðîôèòà Profit |
//+------------------------------------------------------------------+
int SetLabel(int day, double Profit)
{
int Win=0; // òåêóùåå
string name = "lbProfit" + DoubleToStr( day, 0) ;
string TEXT = DoubleToStr( Profit, 2) + " " + AccountCurrency();
int Error=ObjectFind(name);
if (Error==-1) ObjectCreate(name, OBJ_TEXT, Win, 0,0); // Åñëè ìåòêà-îáúåêò íå íàéäåíà, òî ñîçäàäèì íîâóþ ìåòêó
datetime TIME;
if (day>0)
TIME = iTime(Symbol(),PERIOD_D1,day) + 12*PERIOD_H1*60;
else
TIME = TimeCurrent();
ObjectSet(name, OBJPROP_TIME1, TIME);
ObjectSet(name, OBJPROP_PRICE1, iHigh(Symbol(),PERIOD_D1,day) + SetValueX10(Delta)*Point);
// óñòàíîâèì öâåò ìåòêè
int color_;
if (Profit>0) color_=ProfitColor;
if (Profit<0) color_=LossColor;
if (Profit==0) color_=ZeroColor;
int FSize = 12; // ðàçìåð øðèôòà ïî óìîë÷àíèþ
switch(Period()) // ïåðåêëþ÷àåì ðàçìåð øðèôòà â çàâèñèìîñòè îò òàéìôðåéìà
{
case PERIOD_M1:
FSize = 20; break;
case PERIOD_M5:
FSize = 18; break;
case PERIOD_M15:
FSize = 12; break;
case PERIOD_M30:
FSize = 12; break;
case PERIOD_H1:
FSize = 10; break;
default:
FSize = 10; break;
}
ObjectSetText(name,TEXT,FSize,"Arial",color_);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
if (OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)) // ïðîâåðÿåì ïîñëåäíèé îðäåð â èñòîðèè, ÷òîáû íå ÷èòàòü
{ // äàííûå âñåõ îðäåðîâ èñòîðèè ñ ïðèõîäîì íîâîãî òèêà
int Ticket = OrderTicket();
if (EveryTickRefresh==false && Ticket==LastTicket) return(0); // åñëè íåò íîâûõ îðäåðîâ â èñòîðèè, òî âûõîäèì
LastTicket = Ticket;
}
int day = 0; // äåíü
double Profit = 0; // ïðîôèò çà äåíü day
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()<=1)
{
double OProf = OrderProfit() + OrderSwap() + OrderCommission(); // Âû÷èñëèì ïðîôèò îðäåðà
if (OrderCloseTime()>iTime(Symbol(),PERIOD_D1,day)) // Åñëè âðåìÿ çàêðûòèÿ îðäåðà â ïðåäåëàõ äíÿ Day,
{
Profit = Profit + OProf; // òî ñóììèðóåì ïðîôèò îðäåðîâ äíÿ Day
}
else //  ïðîòèâíîì ñëó÷àå:
{
SetLabel(day, Profit); // Âðåìÿ çàêðûòèÿ î÷åðåäíîãî îðäåðà âíå ãðàíèöàõ äíÿ Day, óñòàíîâèì ìåòêó
Profit = OProf; // Çàïîìíèì ïðîôèò äíÿ
while (iTime(Symbol(),PERIOD_D1,day)>OrderCloseTime())
{
day++; // Ñìåùàåì ñ÷åò÷èê äíåé äëÿ óñòàíîâêè ñëåäóþùåé ìåòêè
SetLabel(day, 0); // Âûâîäèì "0 USD" â ïðîìåæóòî÷íûå äíè, êîãäà íå áûëî òîðãîâëè
}
}
}
return(0);
}
//+------------------------------------------------------------------+
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
---