0
Views
0
Downloads
0
Favorites
mv-e-DailyRange
//+--------------------------------------------------------------------------+
//| mv-e-DailyRange.mq4 |
//| Ìàêñèì Âàñèëåíêî Â. MaxV42 |
//| http:// |
//| Òàéìôðåéì H1. |
//| Âåðñèÿ 1.0: |
//+--------------------------------------------------------------------------+
#property copyright "Ìàêñèì Âàñèëåíêî Â. MaxV42"
#property link "http://"
//+------------------------------------------------------------------+
#include <b-Positions.mqh> // Áèáëèîòåêà ôóíêöèé äëÿ ðàáîòû ñ ïîçèöèÿìè. (Êèì Èãîðü Â.)
#include <b-Orders.mqh> // Áèáëèîòåêà ôóíêöèé äëÿ ðàáîòû ñ îðäåðàìè. (Êèì Èãîðü Â.)
#include <b-Lots.mqh> // Áèáëèîòåêà ôóíêöèé ðàñ÷¸òà ðàçìåðà ëîòà. (Êèì Èãîðü Â.)
//+------------------------------------------------------------------+
// Âíåøíèå ïàðàìåòðû ñîâåòíèêà
extern string Exp_Coment1= "--- Âíåøíèå ïàðàìåòðû ñîâåòíèêà ---";
extern int MagicNumber = 12345; // MagicNumber
extern bool UseTrailing = false; // Èñïîëüçîâàòü òðàë
extern bool Use.Buy = true; // îêðûâàòü ïîçèöèè ïîêóïêè
extern bool Use.Sell = true; // îêðûâàòü ïîçèöèè ïðîäàæè
extern int DailyRange.Buy = 100; // äèñòàíöèÿ â ïóíêòàõ îò äíåâíîãî High[0] äëÿ îòêðûòèÿ ïîçèöèè Buy
extern int DailyRange.Sell = 138; // äèñòàíöèÿ â ïóíêòàõ îò äíåâíîãî Low[0] äëÿ îòêðûòèÿ ïîçèöèè Sell
extern int SessionTrade.Begin = 21; // Íà÷àëî òîðãîâîé ñåñèè
extern int SessionTrade.Finish = 21; // Çàâåðøåíèå òîðãîâîé ñåñèè
extern bool Use.SessionFilter = true; // Âêë/âûêë âðåìåííîãî ôèëüòðà òîðãîâëè
extern string Exp_Coment2= "0-ïðîñòîé òðàë, 1-èñïîëüçîâàòü 1-st Level Stop/Reverse è 1-st Level Stop/Reverse";
extern int Trailing.Type = 0; // 0 - ïðîñòîé òðàë, 1 - èñïîëüçîâàòü "1-st Level Stop/Reverse" è "1-st Level Stop/Reverse"
extern string Exp_Coment3= "0-StopLoss è TakeProfit íå èñïîëüçóþòñÿ";
extern int StopLoss.Buy = 86; // Ñòîï ëîññ â ïóíêòàõ
extern int TakeProf.Buy = 130; // Òåéê ïðîô â ïóíêòàõ
extern int StopLoss.Sell = 142; // Ñòîï ëîññ â ïóíêòàõ
extern int TakeProf.Sell = 146; // Òåéê ïðîô â ïóíêòàõ
//+------------------------------------------------------------------+
// ïàðàìåòðû òåõíè÷åñêèõ èíäèêàòîðîâ
int nBars=0;
//+------------------------------------------------------------------+
int init() { // expert initialization function
return(0);
}
//+------------------------------------------------------------------+
int deinit() { // expert deinitialization function
return(0);
}
//+------------------------------------------------------------------+
int start() { // expert start function
// íîâûé áàð íå ïîÿâèëñÿ
if(!isNewBar()) return;
// ----- Òîðãîâàÿ ôóíêöèÿ
Trade(Criterion());
return(0);
}
//+------------------------------------------------------------------+
int Criterion() { // Ôóíêöèÿ âû÷èñëåíèÿ òîðãîâûõ êðèòåðèåâ.
bool IsOpenBuy =ExistPositions(NULL, OP_BUY, MagicNumber, 0); // ôëàã ñóùåñòâîâàíèÿ ðûíî÷íûõ Buy-îðäåðîâ
bool IsOpenSell=ExistPositions(NULL, OP_SELL, MagicNumber, 0); // ôëàã ñóùåñòâîâàíèÿ ðûíî÷íûõ Sell-îðäåðîâ
datetime dSessionTrade.Begin=StrToTime(TimeToStr(Time[0],TIME_DATE)+" "+DoubleToStr(SessionTrade.Begin,0)+":00");
datetime dSessionTrade.Finish=StrToTime(TimeToStr(Time[0],TIME_DATE)+" "+DoubleToStr(SessionTrade.Finish,0)+":00");
//--------------------------------------------------------- 1 --
// óñëîâèå äëÿ ïîêóïêè
if(Use.Buy && !IsOpenBuy && //
(iHigh(Symbol(),PERIOD_D1,0)-MarketInfo(Symbol(),MODE_ASK))/Point>DailyRange.Buy) { //
// ----- ôèëüòð ïî âðåìåíè òîðãîâëè ÍÅ âêëþ÷åí
if(!Use.SessionFilter) return(10);
// ----- ôèëüòð ïî âðåìåíè òîðãîâëè âêëþ÷åí
if(Time[0]>=dSessionTrade.Begin && Time[0]<=dSessionTrade.Finish) {
return(10);
}
}
// óñëîâèå äëÿ çàêðûòèÿ Buy ïî ñòîëîññó
if( IsOpenBuy && DistMarketAndPos(NULL, OP_BUY, MagicNumber)<=StopLoss.Buy*(-1) && StopLoss.Buy>0 )
return(11);
// óñëîâèå äëÿ çàêðûòèÿ Buy ïî òåéêïðîôèòó
if( IsOpenBuy && DistMarketAndPos(NULL, OP_BUY, MagicNumber)>=TakeProf.Buy && TakeProf.Buy>0 )
return(11);
//--------------------------------------------------------- 2 --
// óñëîâèå äëÿ ïðîäàæè
if(Use.Sell && !IsOpenSell && //
(MarketInfo(Symbol(),MODE_BID)-iLow(Symbol(),PERIOD_D1,0))/Point>DailyRange.Sell) { //
// ----- ôèëüòð ïî âðåìåíè òîðãîâëè ÍÅ âêëþ÷åí
if(!Use.SessionFilter) return(20);
// ----- ôèëüòð ïî âðåìåíè òîðãîâëè âêëþ÷åí
if(Time[0]>=dSessionTrade.Begin && Time[0]<=dSessionTrade.Finish) {
return(20);
}
}
// óñëîâèå äëÿ çàêðûòèÿ Sell ïî ñòîëîññó
if( IsOpenSell && DistMarketAndPos(NULL, OP_SELL, MagicNumber)<=StopLoss.Sell*(-1) && StopLoss.Sell>0 )
return(21);
// óñëîâèå äëÿ çàêðûòèÿ Sell ïî òåéêïðîôèòó
if( IsOpenSell && DistMarketAndPos(NULL, OP_SELL, MagicNumber)>=TakeProf.Sell && TakeProf.Sell>0 )
return(21);
return(0);
}
void Trade(int TradeSignal) { // Òîðãîâàÿ ôóíêöèÿ
// TradeSignal - òèï òîðãîâîé îïåðàöèè:
// 10 - îòêðûòèå Buy
// 20 - îòêðûòèå Sell
// 11 - çàêðûòèå Buy
// 21 - çàêðûòèå Sell
// 0 - çíà÷èìûõ êðèòåðèåâ íåò
bool IsOpenBuy =ExistPositions(NULL, OP_BUY, MagicNumber, 0); // ôëàã ñóùåñòâîâàíèÿ ðûíî÷íûõ Buy-îðäåðîâ
bool IsOpenSell=ExistPositions(NULL, OP_SELL, MagicNumber, 0); // ôëàã ñóùåñòâîâàíèÿ ðûíî÷íûõ Sell-îðäåðîâ
switch(TradeSignal) {
//--------------------------------------------------------- 1 --
case 10: // Òîðãîâûé êðèòåðèé = Buy
if(IsOpenSell) ClosePosFirstProfit(NULL, OP_SELL, MagicNumber); // Çàêðûòü âñå Sell
OpenPosition(NULL, OP_BUY, GetSizeLot(), 0, 0, MagicNumber, ""); // Îòêðûòü Buy
break; // Ïîòîðãîâàëè - óõîäèì
//--------------------------------------------------------- 2 --
case 11: // Òîðã. êðèò. = çàêðûòèå Buy
ClosePosFirstProfit(NULL, OP_BUY, MagicNumber); // Çàêðûòü âñå Buy
break; // Ïîòîðãîâàëè - óõîäèì
//--------------------------------------------------------- 2 --
case 20: // Òîðãîâûé êðèòåðèé = Sell
if(IsOpenBuy) ClosePosFirstProfit(NULL, OP_BUY, MagicNumber); // Çàêðûòü âñå Buy
OpenPosition(NULL, OP_SELL, GetSizeLot(), 0, 0, MagicNumber, ""); // Îòêðûòü Sell
break; // Ïîòîðãîâàëè - óõîäèì
//--------------------------------------------------------- 4 --
case 21: // Òîðã. êðèò. = çàêðûòèå Sell
ClosePosFirstProfit(NULL, OP_SELL, MagicNumber); // Çàêðûòü âñå Sell
break; // Ïîòîðãîâàëè - óõîäèì
//--------------------------------------------------------- 5 --
case 0: // Óäåðæàíèå îòêðûòûõ ïîçèöèé
if(IsOpenSell || IsOpenBuy) {
if(UseTrailing) {
if(Trailing.Type==0) SimpleTrailing(NULL, -1, MagicNumber); // Ïðîñòîé òðàë ïîçèöèé
}
}
break; // Ïîòîðãîâàëè - óõîäèì
}
return;
}
//+---------------------------------------------------------------------------+
bool isNewBar() { // Ôóíêöèÿ âîçâðàùàåò true, åñëè ïîÿâèòüñÿ íîâûé áàð, èíà÷å false
if(nBars!=Bars) {
nBars=Bars; return(true);
}
return(false);
}
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
---