e-Monday_LS





//+------------------------------------------------------------------+
//|                                                  e-Monday_LS.mq4 |
//|                                           Êèì Èãîðü Â. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//|    16.12.2005  Ñîâåòíèê ïî ñòðàòåãèè Ïîíåäåëüíèê ïðîòèâ ïÿòíèöû  |
//|  ñ ðàçäåëüíîé ñèñòåìîé âûõîäîâ äëÿ ïîçèöèé LONG è SHORT.         |
//+------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link      "http://www.kimiv.ru"
#define   MAGIC     20051216

//------- Âíåøíèå ïàðàìåòðû ñîâåòíèêà --------------------------------
extern string _Parameters_Trade = "----- Ïàðàìåòðû òîðãîâëè";
extern int    lStopLoss     = 45;    // Ðàçìåð ôèêñèðîâàííîãî ñòîïà
extern int    lTakeProfit   = 180;   // Ðàçìåð ôèêñèðîâàííîãî òýéêà
extern int    lDayForClose  = 4;     // Äåíü äëÿ çàêðûòèÿ ïîçèöèè
extern int    lHourClosePos = 10;    // Âðåìÿ çàêðûòèÿ ïîçèöèè
extern int    sStopLoss     = 35;    // Ðàçìåð ôèêñèðîâàííîãî ñòîïà
extern int    sTakeProfit   = 250;   // Ðàçìåð ôèêñèðîâàííîãî òýéêà
extern int    sDayForClose  = 2;     // Äåíü äëÿ çàêðûòèÿ ïîçèöèè
extern int    sHourClosePos = 13;    // Âðåìÿ çàêðûòèÿ ïîçèöèè
extern int    HourOpenPos   = 11;    // Âðåìÿ îòêðûòèÿ ïîçèöèè
extern int    RangeFriday   = 0;     // Äèàïàçîí ïÿòíèöû (Open-Close)
extern double Lots          = 0.1;   // Ðàçìåð òîðãóåìîãî ëîòà
extern int    Slippage      = 3;     // Ïðîñêàëüçûâàíèå öåíû

//---- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà -------------------------------
bool   bLastBuy;
int    NumberOfTry   = 9;
bool   UseSound      = True;
string NameFileSound = "expert.wav";
color  clOpenBuy     = LightBlue;
color  clOpenSell    = LightCoral;
color  clModifyBuy   = Aqua;
color  clModifySell  = Tomato;
color  clCloseBuy    = Blue;
color  clCloseSell   = Red;

//------- Ïîêëþ÷åíèå âíåøíèõ ìîäóëåé ---------------------------------
#include <a-SimpleTrailing.mqh>
#include <stdlib.mqh>

void deinit() { Comment(""); }

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start() {
  if (DayOfWeek()==1 && Hour()==HourOpenPos && Minute()<=10) OpenPosition();
  if (bLastBuy) {
    if (DayOfWeek()==lDayForClose && Hour()>=lHourClosePos) CloseAllPositions();
    TrailingStop=80;
  } else {
    if (DayOfWeek()==sDayForClose && Hour()>=sHourClosePos) CloseAllPositions();
    TrailingStop=100;
  }
  if (UseTrailing) TrailingPositions();
}

//+------------------------------------------------------------------+
//| Îòêðûòèå ïîçèöèè                                                 |
//+------------------------------------------------------------------+
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 (MathAbs(op1-cl1)>RangeFriday*Point) {
    if (op1>Ask) bs=1;
    if (op1<Bid) 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;
  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);
        }
      }
    }
  }
}
//+------------------------------------------------------------------+





Sample





Analysis



Market Information Used:

Series array that contains close prices for each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders

It automatically opens orders when conditions are reached
It Closes Orders by itself

Other Features: