Orders Execution
0
Views
0
Downloads
0
Favorites
i-Profit_001
//+----------------------------------------------------------------------------+
//| i-Profit.mq4 |
//| |
//| Êèì Èãîðü Â. aka KimIV |
//| http://www.kimiv.ru |
//| |
//| 12.05.2008 Èíäèêàòîð: |
//| - òåêóùåé ïðèáûëè |
//| - ïðèáûëè çà ñåãîäíÿ |
//| - ïðèáûëè çà â÷åðà |
//| - ïðèáûëè çà íåñêîëüêî ïðîøåäøèõ äíåé |
//| - ïðèáûëè çà òåêóùóþ íåäåëþ |
//| - ïðèáûëè çà òåêóùèé ìåñÿö |
//| - ïðèáûëè çà òåêóùèé êâàðòàë |
//| - ïðèáûëè çà òåêóùèé ãîä |
//+----------------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link "http://www.kimiv.ru"
#property indicator_chart_window
//------- Âíåøíèå ïàðàìåòðû èíäèêàòîðà ----------------------------------------+
extern int eiPercent = 5; // Ðàñ÷¸ò ïðîöåíòà ïðèáûëè îòíîñèòåëüíî:
// 0 - òåêóùåãî áàëàíñà
// 1 - áàëàíñà íà íà÷àëî äíÿ
// 2 - áàëàíñà íà íà÷àëî íåäåëè
// 3 - áàëàíñà íà íà÷àëî ìåñÿöà
// 4 - áàëàíñà íà íà÷àëî êâàðòàëà
// 5 - áàëàíñà íà íà÷àëî ãîäà
extern int eiOffsetY = 30; // Ñìåùåíèå òåêñòà ïî âåðòèêàëè
extern int eiStepY = 12; // Øàã ñìåùåíèÿ òåêñòà ïî âåðòèêàëè
extern int eiX1Row = 3; // Êîîðäèíàòà X ïåðâîé êîëîíêè
extern int eiX2Row = 165; // Êîîðäèíàòà X âòîðîé êîëîíêè
extern int eiX3Row = 240; // Êîîðäèíàòà X òðåòåé êîëîíêè
extern color ecText = Gray; // Öâåò òåêñòà
extern color ecProfit = Green; // Öâåò ïðèáûëè
extern color ecLoss = FireBrick; // Öâåò óáûòêà
//------- Ãëîáàëüíûå ïåðåìåííûå èíäèêàòîðà ------------------------------------+
//------- Áóôåðû èíäèêàòîðà ---------------------------------------------------+
//------- Ïîêëþ÷åíèå âíåøíèõ ìîäóëåé ------------------------------------------+
//+----------------------------------------------------------------------------+
//| Custom indicator initialization function |
//+----------------------------------------------------------------------------+
void init() {
DeleteObjects();
Comment("");
}
//+----------------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+----------------------------------------------------------------------------+
void deinit() {
DeleteObjects();
Comment("");
}
//+----------------------------------------------------------------------------+
//| Custom indicator iteration function |
//+----------------------------------------------------------------------------+
void start() {
datetime d0, d1, d2, d3, d4, d5, d6, d7, d8;
d0=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE));
while (TimeDayOfWeek(d0)<1 || TimeDayOfWeek(d0)>5) d0-=24*60*60;
d1=d0-24*60*60;
while (TimeDayOfWeek(d1)<1 || TimeDayOfWeek(d1)>5) d1-=24*60*60;
d2=d1-24*60*60;
while (TimeDayOfWeek(d2)<1 || TimeDayOfWeek(d2)>5) d2-=24*60*60;
d3=d2-24*60*60;
while (TimeDayOfWeek(d3)<1 || TimeDayOfWeek(d3)>5) d3-=24*60*60;
d4=d3-24*60*60;
while (TimeDayOfWeek(d4)<1 || TimeDayOfWeek(d4)>5) d4-=24*60*60;
d5=DateOfMonday();
d6=StrToTime(Year()+"."+Month()+".01");
d7=DateBeginQuarter();
d8=StrToTime(Year()+".01.01");
double tb=AccountBalance(), tp=AccountProfit();
double p0=GetProfitFromDateInCurrency("", -1, -1, d0);
double p1=GetProfitFromDateInCurrency("", -1, -1, d1)-p0;
double p2=GetProfitFromDateInCurrency("", -1, -1, d2)-p1-p0;
double p3=GetProfitFromDateInCurrency("", -1, -1, d3)-p2-p1-p0;
double p4=GetProfitFromDateInCurrency("", -1, -1, d4)-p3-p2-p1-p0;
double p5=GetProfitFromDateInCurrency("", -1, -1, d5);
double p6=GetProfitFromDateInCurrency("", -1, -1, d6);
double p7=GetProfitFromDateInCurrency("", -1, -1, d7);
double p8=GetProfitFromDateInCurrency("", -1, -1, d8);
string st;
switch (eiPercent) {
case 0 : st="òåêóùåãî" ; break;
case 1 : tb-=p0; st="íà íà÷àëî äíÿ" ; break;
case 2 : tb-=p5; st="íà íà÷àëî íåäåëè" ; break;
case 3 : tb-=p6; st="íà íà÷àëî ìåñÿöà" ; break;
case 4 : tb-=p7; st="íà íà÷àëî êâàðòàëà"; break;
default: tb-=p8; st="íà íà÷àëî ãîäà" ; break;
}
double tr=tp*100/tb;
double r0=p0*100/tb;
double r1=p1*100/tb;
double r2=p2*100/tb;
double r3=p3*100/tb;
double r4=p4*100/tb;
double r5=p5*100/tb;
double r6=p6*100/tb;
double r7=p7*100/tb;
double r8=p8*100/tb;
SetLabel("iProfit11", "Òåêóùàÿ ïðèáûëü", ecText, eiX1Row, eiOffsetY);
SetLabel("iProfit21", "Ïðèáûëü çà ñåãîäíÿ", ecText, eiX1Row, eiOffsetY+eiStepY);
SetLabel("iProfit31", "Ïðèáûëü çà "+TimeToStr(d1, TIME_DATE), ecText, eiX1Row, eiOffsetY+2*eiStepY);
SetLabel("iProfit41", "Ïðèáûëü çà "+TimeToStr(d2, TIME_DATE), ecText, eiX1Row, eiOffsetY+3*eiStepY);
SetLabel("iProfit51", "Ïðèáûëü çà "+TimeToStr(d3, TIME_DATE), ecText, eiX1Row, eiOffsetY+4*eiStepY);
SetLabel("iProfit61", "Ïðèáûëü çà "+TimeToStr(d4, TIME_DATE), ecText, eiX1Row, eiOffsetY+5*eiStepY);
SetLabel("iProfit71", "Ïðèáûëü çà íåäåëþ", ecText, eiX1Row, eiOffsetY+6*eiStepY);
SetLabel("iProfit81", "Ïðèáûëü çà ìåñÿö", ecText, eiX1Row, eiOffsetY+7*eiStepY);
SetLabel("iProfit91", "Ïðèáûëü çà êâàðòàë", ecText, eiX1Row, eiOffsetY+8*eiStepY);
SetLabel("iProfit01", "Ïðèáûëü çà ãîä", ecText, eiX1Row, eiOffsetY+9*eiStepY);
SetLabel("iProfit12", DoubleToStr(tp, 2), ColorOnSign(tp), eiX2Row, eiOffsetY);
SetLabel("iProfit22", DoubleToStr(p0, 2), ColorOnSign(p0), eiX2Row, eiOffsetY+eiStepY);
SetLabel("iProfit32", DoubleToStr(p1, 2), ColorOnSign(p1), eiX2Row, eiOffsetY+2*eiStepY);
SetLabel("iProfit42", DoubleToStr(p2, 2), ColorOnSign(p2), eiX2Row, eiOffsetY+3*eiStepY);
SetLabel("iProfit52", DoubleToStr(p3, 2), ColorOnSign(p3), eiX2Row, eiOffsetY+4*eiStepY);
SetLabel("iProfit62", DoubleToStr(p4, 2), ColorOnSign(p4), eiX2Row, eiOffsetY+5*eiStepY);
SetLabel("iProfit72", DoubleToStr(p5, 2), ColorOnSign(p5), eiX2Row, eiOffsetY+6*eiStepY);
SetLabel("iProfit82", DoubleToStr(p6, 2), ColorOnSign(p6), eiX2Row, eiOffsetY+7*eiStepY);
SetLabel("iProfit92", DoubleToStr(p7, 2), ColorOnSign(p7), eiX2Row, eiOffsetY+8*eiStepY);
SetLabel("iProfit02", DoubleToStr(p8, 2), ColorOnSign(p8), eiX2Row, eiOffsetY+9*eiStepY);
SetLabel("iProfit13", DoubleToStr(tr, 2)+" %", ColorOnSign(tr), eiX3Row, eiOffsetY);
SetLabel("iProfit23", DoubleToStr(r0, 2)+" %", ColorOnSign(r0), eiX3Row, eiOffsetY+eiStepY);
SetLabel("iProfit33", DoubleToStr(r1, 2)+" %", ColorOnSign(r1), eiX3Row, eiOffsetY+2*eiStepY);
SetLabel("iProfit43", DoubleToStr(r2, 2)+" %", ColorOnSign(r2), eiX3Row, eiOffsetY+3*eiStepY);
SetLabel("iProfit53", DoubleToStr(r3, 2)+" %", ColorOnSign(r3), eiX3Row, eiOffsetY+4*eiStepY);
SetLabel("iProfit63", DoubleToStr(r4, 2)+" %", ColorOnSign(r4), eiX3Row, eiOffsetY+5*eiStepY);
SetLabel("iProfit73", DoubleToStr(r5, 2)+" %", ColorOnSign(r5), eiX3Row, eiOffsetY+6*eiStepY);
SetLabel("iProfit83", DoubleToStr(r6, 2)+" %", ColorOnSign(r6), eiX3Row, eiOffsetY+7*eiStepY);
SetLabel("iProfit93", DoubleToStr(r7, 2)+" %", ColorOnSign(r7), eiX3Row, eiOffsetY+8*eiStepY);
SetLabel("iProfit03", DoubleToStr(r8, 2)+" %", ColorOnSign(r8), eiX3Row, eiOffsetY+9*eiStepY);
Comment("Ïðîöåíò ïðèáûëè îòíîñèòåëüíî áàëàíñà "+st);
}
//+----------------------------------------------------------------------------+
//| Âîçâðàùàåò öâåò ïî çíàêó ÷èñëà |
//+----------------------------------------------------------------------------+
color ColorOnSign(double nu) {
color lcColor=ecText;
if (nu>0) lcColor=ecProfit;
if (nu<0) lcColor=ecLoss;
return(lcColor);
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 12.05.2008 |
//| Îïèñàíèå : Âîçâðàùàåò äàòó íà÷àëà êâàðòàëà |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| (-2 - ïîçàïðîøëûé) |
//| (-1 - ïðîøëûé) |
//| no - íîìåð êâàðòàëà ( 0 - òåêóùèé) |
//| ( 1 - ñëåäóþùèé) |
//| ( 2 - ïîñëåäóþùèé) |
//+----------------------------------------------------------------------------+
datetime DateBeginQuarter(int nk=0) {
int ye=Year()-MathFloor(nk/4);
nk=MathMod(nk, 4);
int mo=Month()-MathMod(Month()+2, 3)+3*nk;
if (mo<1) {
mo+=12;
ye--;
}
if (mo>12) {
mo-=12;
ye++;
}
return(StrToTime(ye+"."+mo+".01"));
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 12.05.2008 |
//| Îïèñàíèå : Âîçâðàùàåò äàòó ïîíåäåëüíèêà |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| (-2 - ïîçàòîé íåäåëè) |
//| (-1 - ïðîøëîé íåäåëè) |
//| no - íîìåð ïîíåäåëüíèêà ( 0 - òåêóùåé íåäåëè) |
//| ( 1 - ñëåäóþùèé, áëèæàéøèé áóäóùèé) |
//| ( 2 - ïîñëåäóþùèé) |
//+----------------------------------------------------------------------------+
datetime DateOfMonday(int no=0) {
datetime dt=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE));
while (TimeDayOfWeek(dt)!=1) dt-=24*60*60;
dt+=no*7*24*60*60;
return(dt);
}
//+----------------------------------------------------------------------------+
//| Óäàëåíèå îáúåêòîâ. |
//+----------------------------------------------------------------------------+
void DeleteObjects() {
string st="iProfit";
int i, j;
for (i=0; i<10; i++) {
for (j=1; j<4; j++) ObjectDelete(st+i+j);
}
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 19.02.2008 |
//| Îïèñàíèå : Âîçâðàùàåò ñóììàðíûé ïðîôèò â âàëþòå äåïîçèòà |
//| çàêðûòûõ ñ îïðåäåë¸ííîé äàòû ïîçèöèé |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, |
//| NULL - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ (-1 - ëþáàÿ ïîçèöèÿ) |
//| mn - MagicNumber (-1 - ëþáîé ìàãèê) |
//| dt - Äàòà è âðåìÿ â ñåêóíäàõ ñ 1970 ãîäà ( 0 - ñ íà÷àëà èñòîðèè) |
//+----------------------------------------------------------------------------+
double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dt=0)
{
double p=0;
int i, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (dt<OrderCloseTime()) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
}
return(p);
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 12.10.2007 |
//| Îïèñàíèå : Óñòàíîâêà òåêñòîâîé ìåòêè |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| nm - íàèìåíîâàíèå îáúåêòà |
//| tx - òåêñò |
//| cl - öâåò ìåòêè |
//| xd - êîîðäèíàòà X â ïèêñåëàõ |
//| yd - êîîðäèíàòà Y â ïèêñåëàõ |
//| cr - íîìåð óãëà ïðèâÿçêè (0 - ëåâûé âåðõíèé) |
//| fs - ðàçìåð øðèôòà (8 - ïî óìîë÷àíèþ) |
//+----------------------------------------------------------------------------+
void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER , cr);
ObjectSet(nm, OBJPROP_FONTSIZE , fs);
}
//+----------------------------------------------------------------------------+
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
---