Orders Execution
0
Views
0
Downloads
0
Favorites
VR---Limit_losses
//+------------------------------------------------------------------+
//| VR---Limit losses.mq4 |
//| "Copyright 2014, www.trading-go.ru Project." |
//| "http://www.trading-go.ru" |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, www.trading-go.ru Project."
#property link "http://www.trading-go.ru"
#property version "1.00"
#property strict
//Äíåâíîé ëèìèò â âàëþòå äåïîçèòà
input double DayLimit=100;
// Ìåäæèê íîìåð îðäåðîâ ïðè -1 ñîâåòíèê êîíòðîëèðóåò âñå îðäåðà è ðó÷íûå è ñîâåòíèêîâ, ïðè 0 òîëüêî ðó÷íûå.
input int Magic=-1;
// Ïîñêàëüçûâàíèå ïðè çàêðûòèè îðäåðîâ
input int Slippage=20;
bool trade_flag=false; // Ôëàã ðàçðåøåíèÿ òîðãîâëè
string text=""; // òåêñòîâàÿ ïåðåìåííàÿ
//+------------------------------------------------------------------+
void OnTick()
{
double DayProfit=0; // ïåðåìåííàÿ äëÿ ïîäñ÷åòà îáùåãî ïðîôèòà
int counter=0; // ñ÷åò÷èê îðäåðîâ
datetime op=0,time=TimeCurrent(); // äîïîëíèòåëüíûå ïåðåìåííûå è ïåðåìåííàÿ ñ âðåìåíåì ñåðâåðà
RefreshRates(); // Îáíîâèì äàííûå (äëÿ âðåìåíè ñåðâåðà)
for(int i=OrdersHistoryTotal()-1; i>=0; i--) // Îáðàòèìñÿ ê ñèòîðèè îðäåðîâ
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) // âûáðàëè îðäåð ðàññìîòðèì åãî
if(OrderMagicNumber()==Magic || Magic==-1) // åñëè ýòî íàø ìåäæèê
{
op=OrderOpenTime(); // çàïîìíèì âðåìÿ åãî îòêðûòèÿ
if(TimeDayOfYear(op)==TimeDayOfYear(time) && TimeYear(op)==TimeYear(time)) // ïðîâåðèì äàòó îòêðûòèÿ îðäåðà åñëè ýòî ñåãîäíÿ à òàê æå ïðîâåðèì ãîä
DayProfit+=OrderProfit()+OrderCommission()+OrderSwap(); // ñóììèðóåì ïðèáûëü
}
for(int i=OrdersTotal()-1; i>=0; i--) // îáðàòèìñÿ ê òåêóùåìó ñïèñêó îòêðûòûõ îðäåðîâ
if(OrderSelect(i,SELECT_BY_POS)) // âûáðàëè îðäåð ðàññìîòðèì åãî
if(OrderMagicNumber()==Magic || Magic==-1) // åñëè ýòî íàø ìåäæèê
{
counter++; // ïîñ÷èòàåì îðäåðà
DayProfit+=OrderProfit()+OrderCommission()+OrderSwap(); // ñóììèðóåì ïðèáûëü
}
if((DayProfit+DayLimit)<=0){ trade_flag=true; text=" STOP";} else text=" allowed"; // åñëè ñóììà ëèìèòà íàäåíü è ïðèáûëè çà äåíü ìåíüøå èëè ðàâíà 0 çíà÷èò íàø ëèìèò èçðàñõîäîâàí
// ïåðåâåäåì ôëàã â çàïðåòíîå ñîñòîÿíèå è çàïèøåì òåêñò â ïåðåìåííóþ
if(trade_flag==true&&counter>0)close_all(); // åñëè ôëàã â çàïðåòíîì ñîñòîÿíèè è îðäåðà åñòü çàêðûòü âñå îðäåðà
if(DayProfit==0){trade_flag=false; text=" allowed";} // åñëè íà÷àëñÿ íîâûé äåíü çíà÷èò ïðîôèò áóäåò ðàâåí 0 ïåðåâåñòè ôëàã â ðàáî÷åå ñîñòîÿíèå
// è çàïèøåì òåêñò â ïåðåìåííóþ
Comment(
"\n","DayLimit ",DoubleToStr(DayLimit,2), // Âûâîäèò íà ýêðàí óñòàíîâëåííûé ëèìèò
"\n","DayProfit ",DoubleToStr(DayProfit,2), // Âûâîäèò íà ýêðàí òåêóùèé ïðîôèò çà äåíü
"\n","Dostupno",DoubleToStr(DayProfit+DayLimit,2), // Âûâîäèò íà ýêðàí îñòàòîê îò ëèìèòà
"\n","Trade ",text // Âûâîäèò íà ýêðàí ñîîáùåíèå î ðàçðåøåíèè òîðãîâàòü èëè íåò
);
}
//+------------------------------------------------------------------+
// Ôóíêöèÿ çàêðûòèÿ âñåõ îðäåðîâ
void close_all()
{
double price=0; // Ñîçäàäèì ïåðåìåííóþ äëÿ öåíû
for(int i=OrdersTotal()-1; i>=0; i--) // îáðàòèìñÿ ê ñïèñêó îòêðûòûõ îðäåðîâ
if(OrderSelect(i,SELECT_BY_POS)) // ðàçáèðàåì êàæäûé îðäåð
if(OrderMagicNumber()==Magic || Magic==-1) // åñëè óñëîâèÿ ìåäæèêà íàøè
{
if(OrderType()==0)price=MarketInfo(OrderSymbol(),MODE_BID); // åñëè ïîïàëñÿ áàé îðäåð çàïîìíèì öåíó äëÿ çàêðûòèÿ
if(OrderType()==1)price=MarketInfo(OrderSymbol(),MODE_ASK); // åñëè ïîïàëñÿ ñåë îðäåð çàïîìíèì öåíó äëÿ çàêðûòèÿ
if(!IsTradeContextBusy()) // ïðîâåðèì ïîòîê
if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(price,(int)MarketInfo(OrderSymbol(),MODE_DIGITS)),Slippage,clrGreen)==false) // çàêðîåì îðäåð åñëè íå óäàëîñü
Print(StringConcatenate(__FUNCTION__," OrderClose ",GetLastError())); // âûâåäåì ñîîáùåíèå
}
}
//+------------------------------------------------------------------+
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
---