Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
cm-insurer
//+------------------------------------------------------------------+
//| Copyright © 2014, Vladimir Hlystov |
//| Çàêðûâàåò âñå îðäåðà ïðè îïðåäåëåííîì ïðîôèòå |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, http://cmillion.narod.ru"
#property link "cmillion@narod.ru"
#property version "1.0"
#property description "Ñîâåòíèê âûñòàâëÿåò íà ðàññòîÿíèè îò êðàéíèõ îðäåðîâ ñòîï îðäåðà óêàçàííîãî îáúåìà, ïîñëå èõ ñðàáàòûâàíèÿ è äîñòèæåíèÿ ñóììàðíîãî ïðîôèòà âñåõ îðäåðîâ äàííîé âàëþòíîé ïàðå, ñîâåòíèê âñå çàêðûâàåò ïîçèöèè ïî ýòîé ïàðå"
#property strict
//-------------------------------------------------------------------
extern double PercentProfitClose = 0.1; //çàêðûâàòü âñå îðäåðà ïðè ïîëó÷åíèè ïðîôèòà â ïðîöåíòå îò äåïîçèòà
extern double Lot = 5; //ëîò ñòðàõóþùåãî ñòîï îðäåðà
extern int delta = 25; //ðàññòîÿíèå äî ñòîï îðäåðà îò êðàéíåé ïîçèöèè
//--------------------------------------------------------------------
int init()
{
if (IsTesting())
{
int err=OrderSend(Symbol(),OP_SELL,Lot/2,NormalizeDouble(Bid,Digits),30,0,0,NULL,0,0,Red);
}
return(0);
}
//-------------------------------------------------------------------
int deinit()
{
return(0);
}
//-------------------------------------------------------------------
int start()
{
double Profit=0,LB=0,LS=0,OL=0,MaxPrice=0,MinPrice=0;
int b=0,s=0,bs=0,ss=0,OT;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol() == Symbol())
{
OT = OrderType();
OL = OrderLots();
double OOP = OrderOpenPrice();
if (MaxPrice<OOP) MaxPrice=OOP;
if (MinPrice>OOP || MinPrice==0) MinPrice=OOP;
if (OT==OP_BUY)
{
b++;LB+= OL;
Profit+=OrderProfit();
}
if (OT==OP_SELL)
{
s++;LS+= OL;
Profit+=OrderProfit();
}
if (OT==OP_BUYSTOP) bs++;
if (OT==OP_SELLSTOP) ss++;
}
}
}
//---
if (Profit>=AccountBalance()/100*PercentProfitClose)
{
Alert("Äîñòèãíóò óðîâåíü ïðîôèòà = "+DoubleToStr(Profit,2));
CloseAll();
}
//---
int err;
if (bs==0)
{
err=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(MaxPrice+delta*Point,Digits),30,0,0,NULL,0,0,Blue);
}
if (ss==0)
{
err=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(MinPrice-delta*Point,Digits),30,0,0,NULL,0,0,Red);
}
return(0);
}
//------------------------------------------------------------------
bool CloseAll()
{
bool error=true;
int j,err,nn,OT;
while(true)
{
for (j = OrdersTotal()-1; j >= 0; j--)
{
if (OrderSelect(j, SELECT_BY_POS))
{
if (OrderSymbol() == Symbol())
{
OT = OrderType();
if (OT>1)
{
error=OrderDelete(OrderTicket());
}
if (OT==OP_BUY)
{
error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3,Blue);
if (error) Alert(Symbol()," Çàêðûò îðäåð N ",OrderTicket()," ïðèáûëü ",OrderProfit(),
" ",TimeToStr(TimeCurrent(),TIME_SECONDS));
}
if (OT==OP_SELL)
{
error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,Red);
if (error) Alert(Symbol()," Çàêðûò îðäåð N ",OrderTicket()," ïðèáûëü ",OrderProfit(),
" ",TimeToStr(TimeCurrent(),TIME_SECONDS));
}
if (!error)
{
err = GetLastError();
if (err<2) continue;
if (err==129)
{ Comment("Íåïðàâèëüíàÿ öåíà ",TimeToStr(TimeCurrent(),TIME_MINUTES));
Sleep(5000);
RefreshRates();
continue;
}
if (err==146)
{
if (IsTradeContextBusy()) Sleep(2000);
continue;
}
Comment("Îøèáêà ",err," çàêðûòèÿ îðäåðà N ",OrderTicket()," ",TimeToStr(TimeCurrent(),TIME_MINUTES));
}
}
}
}
int k=0;
for (j = 0; j < OrdersTotal(); j++)
{
if (OrderSelect(j, SELECT_BY_POS))
{
if (OrderSymbol() == Symbol())
{
OT = OrderType();
if (OT==OP_BUY || OT==OP_SELL) k++;
}
}
}
if (k==0) break;
nn++;
if (nn>10) {Alert(Symbol()," Íå óäàëîñü çàêðûòü âñå ñäåëêè, îñòàëîñü åùå ",k);return(0);}
Sleep(1000);
RefreshRates();
}
return(1);
}
//--------------------------------------------------------------------
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
---