Orders Execution
Indicators Used
2
Views
0
Downloads
0
Favorites
Dematus
//+------------------------------------------------------------------+
//| Dematus.mq4 |
//| Zuzabush-Ñàõàëèí |
//| www.Zuzabush@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Zuzabush"
#property link "www.Zuzabush@yandex.ru"
extern double TEquty = 5; // Øàã òðàëà ñðåäñòâ
extern double VSEquty = 99999;// Âèðòóàëüíûé ñòîï
extern double StartTEquty = 20; // Ñòàðò òðàëà ñðåäñòâ
extern int Distance = 50; // Ìèíèìàëüíàÿ äèñòàíöèÿ îòêðûòèÿ
extern int SL = 99999;// CòËîññ íî ýòî ñåêðåò
extern double Lot = 0.1; // Ðàçìåð ïåíèñà õà-õà
extern bool ProfitTrailing = True; // Òðàëèòü òîëüêî ïðîôèò
extern int TrailingStop = 50; // Ôèêñèðîâàííûé ðàçìåð òðàëà
extern int TrailingStep = 2; // Øàã òðàëà
int mn = 270309;
double VSL;
static datetime prevtime = 0;
int order;
int KL;
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
trailequiti();
Comment(" Ñðåäñòâà = ",AccountEquity(),"\n"," Áàëàíñ = ",AccountBalance(),"\n"," Ñòîï = ",VSL);
//--------------------------------------------------------------------------------------------+
if(prevtime == Time[0]) return(0);
KL =OrdersTotal()+1;
if ((OrdersTotal()<1)&&(iDeMarker(NULL,0,14,2)<0.3)&&(iDeMarker(NULL,0,14,0)>0.3))
order=OrderSend(Symbol(),OP_BUY,Lot,Ask,5,Ask-SL*Point,0,"",5,0);
if ((OrdersTotal()<1)&&(iDeMarker(NULL,0,14,2)>0.7)&&(iDeMarker(NULL,0,14,0)<0.7))
order=OrderSend(Symbol(),OP_SELL,Lot,Bid,5,Bid+SL*Point,0,"",5,0);
OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);
if ((Bid-OrderOpenPrice()>Distance*Point)&&(iDeMarker(NULL,0,14,2)>0.7)&&(iDeMarker(NULL,0,14,0)<0.7))
order=OrderSend(Symbol(),OP_SELL,KL*Lot,Bid,5,Bid+SL*Point,0,"",5,0);
if ((OrderOpenPrice()-Ask>Distance*Point)&&(iDeMarker(NULL,0,14,2)<0.3)&&(iDeMarker(NULL,0,14,0)>0.3))
order=OrderSend(Symbol(),OP_BUY,KL*Lot,Ask,5,Ask-SL*Point,0,"",5,0);
prevtime = Time[0];
TrailingPositions();
}
//+------------------------------------------------------------------+
// Òðàë ñðåäñòâ |
//+------------------------------------------------------------------+
void trailequiti()
{
if(OrdersTotal()==0) VSL=AccountBalance()-VSEquty;
if(AccountEquity()-TEquty-StartTEquty > AccountBalance()) {
if(AccountEquity()-TEquty > VSL) VSL=AccountEquity()-TEquty; }
if(AccountEquity()<VSL) CloseAll();
}
//+------------------------------------------------------------------+
// Çàêðûâàåì âñå îðäåðà |
//+------------------------------------------------------------------+
void CloseAll()
{
int ticket, i;
while(OrdersTotal()>0) {
for(i=OrdersTotal()-1;i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<2){
if(OrderType()==OP_BUY) {
RefreshRates();
ticket=OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
if(!ticket) Print(" Îøèáêà! ",GetLastError());
Sleep(1000); }
if(OrderType()==OP_SELL) {
RefreshRates();
ticket=OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);
if(!ticket) Print(" Îøèáêà! ",GetLastError());
Sleep(1000); }
}
}
}
}
//+------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå ïîçèöèè ïðîñòûì òðàëîì |
//+------------------------------------------------------------------+
void TrailingPositions() {
double pBid, pAsk, pp;
pp = MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_BUY) {
pBid = MarketInfo(OrderSymbol(), MODE_BID);
if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) {
ModifyStopLoss(pBid-TrailingStop*pp);
return;
}
}
}
if (OrderType()==OP_SELL) {
pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
ModifyStopLoss(pAsk+TrailingStop*pp);
return;
}
}
}
}
//+------------------------------------------------------------------+
//| Ïåðåíîñ óðîâíÿ StopLoss |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss) {
bool fm;
fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
}
//+------------------------------------------------------------------+
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
---