Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
Simple_Moving_Average
//+-----------------------------------------------------------------------------------------------+
//| Simple Moving Average.mq4 |
//| Copyright 2016, Andrey Minaev |
//| https://www.mql5.com/ru/users/id.scorpion |
//+-----------------------------------------------------------------------------------------------+
#property copyright "Copyright 2016, Andrey Minaev"
#property link "https://www.mql5.com/ru/users/id.scorpion"
#property version "1.00"
#property strict
// Ïàðàìåòðû ñîâåòíèêà
extern string sParametersEA = ""; // Ïàðàìåòðû ñîâåòíèêà
extern double dLots = 0.01; // Êîëè÷åñòâî ëîòîâ
extern int iStopLoss = 30; // Óðîâåíü óáûòêà (â ïóíêòàõ)
extern int iTakeProfit = 30; // Óðîâåíü ïðèáûëè (â ïóíêòàõ)
extern int iSlippage = 3; // Ïðîñêàëüçîâàíèå (â ïóíêòàõ)
extern int iMagic = 1; // Èíäåíòèôèêàòîð ñîâåòíèêà
// Ïàðàìåòðû èíäèêàòîðà
extern string sParametersMA = ""; // Ïàðàìåòðû èíäèêàòîðà
extern int iPeriodMA = 14; // Ïåðèîä óñðåäíåíèÿ
// Ãëîáàëüíûå ïåðåìåííûå
double dMA;
//+-----------------------------------------------------------------------------------------------+
int OnInit()
{
// Åñëè áðîêåð èñïîëüçóåò 3 èëè 5 çíàêîâ ïîñëå çàïÿòîé, òî óìíîæàåì íà 10
if(Digits == 3 || Digits == 5)
{
iStopLoss *= 10;
iTakeProfit *= 10;
iSlippage *= 10;
}
return(INIT_SUCCEEDED);
}
//+-----------------------------------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+-----------------------------------------------------------------------------------------------+
void OnTick()
{
// Ïîëó÷èì çíà÷åíèå èíäèêàòîðà
dMA = iMA(Symbol(), 0, iPeriodMA, 0, MODE_SMA, PRICE_CLOSE, 0);
// Åñëè íåò îòêðûòûõ îðäåðîâ, òî âõîäèì â óñëîâèå
if(bCheckOrders() == true)
{
// Åñëè ïîÿâèëñÿ ñèãíàë íà ïîêóïêó, òî îòêðîåì îðäåð íà ïîêóïêó
if(bSignalBuy() == true)
vOrderOpenBuy();
// Åñëè ïîÿâèëñÿ ñèãíàë íà ïðîäàæó, òî îòêðîåì îðäåð íà ïðîäàæó
if(bSignalSell() == true)
vOrderOpenSell();
}
}
//+-----------------------------------------------------------------------------------------------+
//| Ôóíêöèÿ ïðîâåðêè îòêðûòûõ îðåäðîâ |
//+-----------------------------------------------------------------------------------------------+
bool bCheckOrders()
{
// Ïåðåáåðåì â öèêëå îðäåðà, äëÿ ïðîâåðêè îòêðûòûõ îðäåðîâ äàííûì ñîâåòíèêîì
for(int i = 0; i <= OrdersTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderSymbol() == Symbol() && OrderMagicNumber() == iMagic)
return(false);
return(true);
}
//+-----------------------------------------------------------------------------------------------+
//| Ôóíêöèÿ ïîèñêà ñèãíàëà íà ïîêóïêó |
//+-----------------------------------------------------------------------------------------------+
bool bSignalBuy()
{
if(dMA > Open[1] && dMA < Close[1])
return(true);
return(false);
}
//+-----------------------------------------------------------------------------------------------+
//| Ôóíêöèÿ ïîèñêà ñèãíàëà íà ïðîäàæó |
//+-----------------------------------------------------------------------------------------------+
bool bSignalSell()
{
if(dMA < Open[1] && dMA > Close[1])
return(true);
return(false);
}
//+-----------------------------------------------------------------------------------------------+
//| Ôóíêöèÿ îòêðûòèÿ îðäåðà íà ïîêóïêó |
//+-----------------------------------------------------------------------------------------------+
void vOrderOpenBuy()
{
int iOTi = 0; // Òèêåò îðäåðà
iOTi = OrderSend(Symbol(), OP_BUY, dLots, Ask, iSlippage, 0, 0, "", iMagic, 0, clrNONE);
// Ïðîâåðèì îòêðûëñÿ ëè îðäåð
if(iOTi > 0)
// Åñäè äà, òî âûñòàâèì óðîâíè óáûòêà è ïðèáûëè
vOrderModify(iOTi);
else
// Åñëè íåò, òî ïîëó÷èì îøèáêó
vError(GetLastError());
}
//+-----------------------------------------------------------------------------------------------+
//| Ôóíêöèÿ îòêðûòèÿ îðäåðà íà ïðîäàæó |
//+-----------------------------------------------------------------------------------------------+
void vOrderOpenSell()
{
int iOTi = 0; // Òèêåò îðäåðà
iOTi = OrderSend(Symbol(), OP_SELL, dLots, Bid, iSlippage, 0, 0, "", iMagic, 0, clrNONE);
// Ïðîâåðèì îòêðûëñÿ ëè îðäåð
if(iOTi > 0)
// Åñäè äà, òî âûñòàâèì óðîâíè óáûòêà è ïðèáûëè
vOrderModify(iOTi);
else
// Åñëè íåò, òî ïîëó÷èì îøèáêó
vError(GetLastError());
}
//+-----------------------------------------------------------------------------------------------+
//| Ôóíêöèÿ ìîäèôèêàöèè îðäåðà |
//+-----------------------------------------------------------------------------------------------+
void vOrderModify(int iOTi)
{
int iOTy = -1; // Òèï îðäåðà
double dOOP = 0; // Öåíà îòêðûòèÿ îðäåðà
double dOSL = 0; // Ñòîï Ëîññ
int iMag = 0; // Èäåíòèôèêàòîð ñîâåòíèêà
double dSL = 0; // Óðîâåíü óáûòêà
double dTP = 0; // Óðîâåíü ïðèáûëè
// Âûáåðåì ïî òèêåòó îòêðûòûé îðäåð, ïîëó÷èì íåêîòîðûå çíà÷åíèÿ
if(OrderSelect(iOTi, SELECT_BY_TICKET, MODE_TRADES))
{
iOTy = OrderType();
dOOP = OrderOpenPrice();
dOSL = OrderStopLoss();
iMag = OrderMagicNumber();
}
// Åñëè îðäåð îòêðûë äàííûé ñîâåòíèê, òî âõîäèì â óñëîâèå
if(OrderSymbol() == Symbol() && OrderMagicNumber() == iMag)
{
// Åñëè Ñòîï Ëîññ òåêóùåãî îðäåðà ðàâåí íóëþ, òî ìîäèôèöèðóåì îðäåð
if(dOSL == 0)
{
if(iOTy == OP_BUY)
{
dSL = NormalizeDouble(dOOP - iStopLoss * Point, Digits);
dTP = NormalizeDouble(dOOP + iTakeProfit * Point, Digits);
bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0, clrNONE);
}
if(iOTy == OP_SELL)
{
dSL = NormalizeDouble(dOOP + iStopLoss * Point, Digits);
dTP = NormalizeDouble(dOOP - iTakeProfit * Point, Digits);
bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0, clrNONE);
}
}
}
}
//+-----------------------------------------------------------------------------------------------+
//| Ôóíêöèÿ îáðàáîòêè îøèáîê |
//+-----------------------------------------------------------------------------------------------+
void vError(int iErr)
{
switch(iErr)
{
case 129: // Íåïðàâèëüíàÿ öåíà
case 135: // Öåíà èçìåíèëàñü
case 136: // Íåò öåí
case 138: // Íîâûå öåíû
Sleep(1000);
RefreshRates();
break;
case 137: // Áðîêåð çàíÿò
case 146: // Ïîäñèñòåìà òîðãîâëè çàíÿòà
Sleep(3000);
RefreshRates();
break;
}
}
//+-----------------------------------------------------------------------------------------------+
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
---