Price Data Components
Orders Execution
0
Views
0
Downloads
0
Favorites
ProfitInd-2
//+----------------------------------------------------------------------+
//| 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 AllSymbols = true; // Åñëè TRUE - òî âûâîäÿòñÿ ñäåëêè ïî âñåì èíñòðóìåíòàì, FALSE - ïî òåêóùåìó èíñòðóìåíòó
int HTickets; // Âñåãî îðäåðîâ â èñòîðèè
int Delta = 20; // Ðàçíèöà â âûñîòå ìåæäó îòîáðàæàåìîé ìåòêîé è ìàêñèìàëüíîé öåíîé äíÿ (High-çíà÷åíèå)
datetime LastTime;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
ClearAllObjects(); // óäàëèì âîçìîæíûå îñòàâøèåñÿ îáúåêòû
LastTime = 0;
HTickets=0;
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
ClearAllObjects();
return(0);
}
//+------------------------------------------------------------------+
//| óäàëÿåò âñå îáúåêòû Èíäèêàòîðà ñ ãðàôèêà |
//+------------------------------------------------------------------+
void ClearAllObjects()
{
for (int i=0; i<ObjectsTotal(); i++) // óäàëèì âñå ìåòêè ïðè äåèíèöèàëèçàöèè ýêñïåðòà
{
string name = "lbProfit" + DoubleToStr( i, 0) ;
if (ObjectFind(name)>=0) ObjectDelete(name);
}
}
//+------------------------------------------------------------------+
//| ìíîæèòåëü çíà÷åíèÿ ïóíêòîâ â çàâèñèìîñòè îò òî÷íîñòè èíñòðóìåíòà |
//+------------------------------------------------------------------+
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) ;
if (AllSymbols) // åñëè âûáðàíû âñå ñèìâîëû, òî âûâîäèì òèï âàëþòû
string EXT = AccountCurrency();
else // èíà÷å âûâîäèì òèï âàëþòíîé ïàðû
EXT = Symbol();
string TEXT = DoubleToStr( Profit, 2) + " " + EXT;
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 (HTickets==OrdersHistoryTotal() && LastTime==iTime(Symbol(),PERIOD_M1,0)) return(0);
HTickets = OrdersHistoryTotal();
LastTime = iTime(Symbol(),PERIOD_M1,0);
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 && (AllSymbols==false || (AllSymbols==true && OrderSymbol()==Symbol() )))
{
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
---