Price Data Components
Orders Execution
0
Views
0
Downloads
0
Favorites
e-MondayF_LS
//+------------------------------------------------------------------+
//| e-MondayF_LS.mq4 |
//| Êèì Èãîðü Â. aka KimIV |
//| http://www.kimiv.ru |
//| |
//| 31.01.2006 Ñîâåòíèê ïî ñòðàòåãèè Ïîíåäåëüíèê ïðîòèâ ïÿòíèöû |
//| ñ ðàçäåëüíîé ñèñòåìîé âûõîäîâ äëÿ ïîçèöèé LONG è SHORT. |
//|21/02/2006 Äîáàâèë ôóíöèþ âûáîðà ðàáî÷åãî ëîòà. |
//|Andrei Karasev (av1976) |
//+------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link "http://www.kimiv.ru"
#define MAGIC 20060131
//------- Âíåøíèå ïàðàìåòðû ñîâåòíèêà --------------------------------
extern string _P_Long = "---------- Ïàðàìåòðû äëÿ ïîêóïîê";
extern int lRangeFriday = 0; // Äèàïàçîí ïÿòíèöû (Open-Close)
extern int lHourOpenPos = 5; // Âðåìÿ îòêðûòèÿ ïîçèöèè
extern int lDayForClose = 4; // Äåíü äëÿ çàêðûòèÿ ïîçèöèè
extern int lHourClosePos = 11; // Âðåìÿ çàêðûòèÿ ïîçèöèè
extern int lStopLoss = 55; // Ðàçìåð ñòîïà
extern int lTakeProfit = 150; // Ðàçìåð òýéêà
extern bool lUseTrailing = False; // Èñïîëüçîâàòü òðàë
extern int lTrailingStop = 0; // Ðàçìåð òðàëà
extern string _P_Short = "---------- Ïàðàìåòðû äëÿ ïðîäàæ";
extern int sRangeFriday = 20; // Äèàïàçîí ïÿòíèöû (Open-Close)
extern int sHourOpenPos = 11; // Âðåìÿ îòêðûòèÿ ïîçèöèè
extern int sDayForClose = 5; // Äåíü äëÿ çàêðûòèÿ ïîçèöèè
extern int sHourClosePos = 13; // Âðåìÿ çàêðûòèÿ ïîçèöèè
extern int sStopLoss = 55; // Ðàçìåð ñòîïà
extern int sTakeProfit = 340; // Ðàçìåð òýéêà
extern bool sUseTrailing = True; // Èñïîëüçîâàòü òðàë
extern int sTrailingStop = 65; // Ðàçìåð òðàëà
//---- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà -------------------------------
bool bLastBuy;
int Slippage = 3;
int NumberOfTry = 9;
bool UseSound = True;
string NameFileSound = "expert.wav";
extern bool ShowComment = True; // Ïîêàçûâàòü êîììåíòàðèè
color clOpenBuy = LightBlue;
color clOpenSell = LightCoral;
color clModifyBuy = Aqua;
color clModifySell = Tomato;
color clCloseBuy = Blue;
color clCloseSell = Red;
int TrailingStop, TrailingStep=5;
//------- Ïîêëþ÷åíèå âíåøíèõ ìîäóëåé ---------------------------------
#include <b-Lots.mqh>
#include <stdlib.mqh>
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
void deinit() {
if (!IsTesting()) Comment("");
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
void start() {
int bs=0;
if (DayOfWeek()==1 && Minute()<5) {
bs=GetSignal();
if (Hour()==lHourOpenPos && bs>0) OpenPosition();
if (Hour()==sHourOpenPos && bs<0) OpenPosition();
}
if (bLastBuy) {
if (DayOfWeek()==lDayForClose && Hour()>=lHourClosePos) CloseAllPositions();
TrailingStop=lTrailingStop;
if (lUseTrailing) TrailingPositions();
} else {
if (DayOfWeek()==sDayForClose && Hour()>=sHourClosePos) CloseAllPositions();
TrailingStop=sTrailingStop;
if (sUseTrailing) TrailingPositions();
}
if (!IsTesting() && ShowComment) {
Lots=GetSizeLot();
Comment(" Lots="+DoubleToStr(Lots, 1));
}
}
//+------------------------------------------------------------------+
//| Îòêðûòèå ïîçèöèè |
//+------------------------------------------------------------------+
void OpenPosition() {
double ldStop=0, ldTake=0;
int bs=GetSignal();
if (!ExistPosition()) {
if (bs>0) {
if (lStopLoss!=0) ldStop=Ask-lStopLoss*Point;
if (lTakeProfit!=0) ldTake=Ask+lTakeProfit*Point;
SetOrder(OP_BUY, Ask, ldStop, ldTake);
bLastBuy=True;
}
if (bs<0) {
if (sStopLoss!=0) ldStop=Bid+sStopLoss*Point;
if (sTakeProfit!=0) ldTake=Bid-sTakeProfit*Point;
SetOrder(OP_SELL, Bid, ldStop, ldTake);
bLastBuy=False;
}
}
}
//+------------------------------------------------------------------+
//| Âîçâðàùàåò òîðãîâûé ñèãíàë |
//+------------------------------------------------------------------+
int GetSignal() {
double op1=iOpen (NULL, PERIOD_D1, 1);
double cl1=iClose(NULL, PERIOD_D1, 1);
int bs=0;
if (op1-cl1>lRangeFriday*Point) bs=1;
if (cl1-op1>sRangeFriday*Point) bs=-1;
return(bs);
}
//+------------------------------------------------------------------+
//| Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ ïîçèöèè ïî íîìåðó |
//+------------------------------------------------------------------+
bool ExistPosition() {
bool Exist=False;
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
Exist=True; break;
}
}
}
}
return(Exist);
}
//+------------------------------------------------------------------+
//| Óñòàíîâêà îðäåðà |
//| Ïàðàìåòðû: |
//| op - îïåðàöèÿ |
//| pp - öåíà |
//| ldStop - óðîâåíü ñòîï |
//| ldTake - óðîâåíü òåéê |
//+------------------------------------------------------------------+
void SetOrder(int op, double pp, double ldStop, double ldTake) {
color clOpen;
if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell;
Lots=GetSizeLot();
OrderSend(Symbol(),op,Lots,pp,Slippage,ldStop,ldTake,"",MAGIC,0,clOpen);
}
//+------------------------------------------------------------------+
//| Çàêðûòèå âñåõ ïîçèöèé ïî ðûíî÷íîé öåíå |
//+------------------------------------------------------------------+
void CloseAllPositions() {
for (int i=OrdersTotal()-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) {
if (OrderType()==OP_BUY) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clCloseBuy);
}
if (OrderType()==OP_SELL) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell);
}
}
}
}
}
//+------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå ïîçèöèè ïðîñòûì òðàëîì |
//+------------------------------------------------------------------+
void TrailingPositions() {
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) {
if (OrderType()==OP_BUY) {
if (Bid-OrderOpenPrice()>TrailingStop*Point) {
if (OrderStopLoss()<Bid-(TrailingStop+TrailingStep-1)*Point) {
ModifyStopLoss(Bid-TrailingStop*Point, clModifyBuy);
}
}
}
if (OrderType()==OP_SELL) {
if (OrderOpenPrice()-Ask>TrailingStop*Point) {
if (OrderStopLoss()>Ask+(TrailingStop+TrailingStep-1)*Point || OrderStopLoss()==0) {
ModifyStopLoss(Ask+TrailingStop*Point, clModifySell);
}
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Ïåðåíîñ óðîâíÿ StopLoss |
//| Ïàðàìåòðû: |
//| ldStopLoss - óðîâåíü StopLoss |
//| clModify - öâåò ìîäèôèêàöèè |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStop, color clModify) {
double ldOpen=OrderOpenPrice();
double ldTake=OrderTakeProfit();
OrderModify(OrderTicket(), ldOpen, ldStop, ldTake, 0, clModify);
}
//+------------------------------------------------------------------+
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
---