Orders Execution
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
Maus
//+------------------------------------------------------------------+
//| MAus.mq4 |
//| Áóøèí Èãîðü |
//| www.zuzabush@yandex.ru |
//| Þæíî-Ñàõàëèíñê |
//| |
//| Âåøàòü òîëüêî íà îäèí ãðàôèê |
//| |
//+------------------------------------------------------------------+
#property copyright "Áóøèí Èãîðü"
#property link "www.zuzabush@yandex.ru"
//------- Âíåøíèå ïàðàìåòðû ------------------------------------------
extern bool ProfitTrailing = True; // Òðàëèòü òîëüêî ïðîôèò
extern int TrailingStop = 12; // Íà÷àëüíûé ðàçìåð òðàëà
extern int TrailingStep = 2; // Øàã òðàëà
extern int Otstup = 25; // Äèñòàíöèÿ
extern double MovingPeriod = 25;
extern double MovingShift = 6;
extern double Lot = 0.1;
extern double SLEquty = 140; // Âèðòóàëüíûé ñòîï
extern bool UseSound = True; // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
extern string NameFileSound = "expert.wav"; // Íàèìåíîâàíèå çâóêîâîãî ôàéëà
double VSL;
double ma;
int order;
int Lots ;
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
void start() {{ if(OrdersTotal()<2) VSL=AccountBalance();
if(AccountEquity()>VSL+ SLEquty) CloseAll();}
if (OrdersTotal()<1)Lots = Lot*10;
else Lots = OrdersTotal()*Lot*20;
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
if (( Ask>ma)&&(OrdersTotal()<1))
order= OrderSend(Symbol(),OP_BUY,Lots*0.1,Ask,3,0,0,"",5,0);
if(( Ask>ma)&&(OrderOpenPrice()-Bid>Otstup*Point))
OrderSend(Symbol(),OP_BUY,Lots*0.1,Ask,3,0,0,"",5,0);
if((Bid<ma)&&(Ask-OrderOpenPrice()>Otstup*Point))
OrderSend(Symbol(),OP_SELL,Lots*0.1,Bid,3,0,0,"",5,0);
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ( OrderSymbol()==Symbol()) {
TrailingPositions();
}
}
}
}
//+------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå ïîçèöèè òðàëîì |
//+------------------------------------------------------------------+
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 |
//| Ïàðàìåòðû: |
//| ldStopLoss - óðîâåíü StopLoss |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss) {
bool fm;
fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
if (fm && UseSound) PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
// Çàêðûâàåì âñå îðäåðà |
//+------------------------------------------------------------------+
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); }
}
}
}
}
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
---