e-5mSAR_v[1].0.2





/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//|                                                e-5mSAR_v.0.2.mq4 |
//|                                           Êèì Èãîðü Â. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//| 30.09.2005  5-ìèíóòíûé ïàðàáîëè÷åñêèé âõîä                       |
//| 02.10.2005  v.0.1 Ñäåëàë îäèí âõîä íà îäèí áàð                   |
//| 03.10.2005  v.0.2 Òðàë                                           |
//+------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link      "http://www.kimiv.ru"
#define   MAGIC     20050930

//------- Âíåøíèå ïàðàìåòðû ñîâåòíèêà --------------------------------
extern string _Parameters_Trade = "---------- Ïàðàìåòðû òîðãîâëè";
extern double Lots           = 0.1;    // Ðàçìåð òîðãóåìîãî ëîòà
extern int    StopLoss       = 18;     // Ðàçìåð ôèêñèðîâàííîãî ñòîïà
extern int    TakeProfit     = 60;     // Ðàçìåð ôèêñèðîâàííîãî òýéêà
extern bool   ProfitTrailing = True;   // Òðàëèòü òîëüêî ïðîôèò
extern int    TrailingStop   = 15;     // Ôèêñèðîâàííûé ðàçìåð òðàëà
extern int    TrailingStep   = 3;      // Øàã òðàëà
extern int    Slippage       = 5;      // Ïðîñêàëüçûâàíèå öåíû
extern bool   UseHourTrade   = True;   // Èñïîëüçîâàòü âðåìÿ òîðãîâëè
extern int    HourBegTrade   = 4;      // Âðåìÿ íà÷àëà òîðãîâëè
extern int    HourEndTrade   = 19;     // Âðåìÿ êîíöà òîðãîâëè
extern string _Parameters_Indicator = "---------- Ïàðàìåòðû èíäèêàòîðîâ";
extern double StepParabolic = 0.03;    // Øàã ïàðàáîëèêà
extern double MaxParabolic  = 0.3;     // Ìàêñèìóì ïàðàáîëèêà
extern string _Parameters_Expert = "---------- Ïàðàìåòðû ñîâåòíèêà";
extern bool   UseOneAccount = True;    // Òîðãîâàòü òîëüêî íà îäíîì ñ÷¸òå
extern int    NumberAccount = 71597;   // Íîìåð òîðãîâîãî ñ÷¸òà
extern string Name_Expert   = "e-5mSAR_v.0.2";
extern bool   UseSound      = True;         // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
extern string NameFileSound = "expert.wav"; // Íàèìåíîâàíèå çâóêîâîãî ôàéëà
extern color  clOpenBuy     = LightBlue;    // Öâåò îòêðûòèÿ ïîêóïêè
extern color  clOpenSell    = LightCoral;   // Öâåò îòêðûòèÿ ïðîäàæè
extern color  clModifyBuy   = Aqua;         // Öâåò ìîäèôèêàöèè ïîêóïêè
extern color  clModifySell  = Tomato;       // Öâåò ìîäèôèêàöèè ïðîäàæè
extern color  clCloseBuy    = Blue;         // Öâåò çàêðûòèÿ ïîêóïêè
extern color  clCloseSell   = Red;          // Öâåò çàêðûòèÿ ïðîäàæè

//---- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà -------------------------------
int prevBar;    // Ïðåäûäóùåå êîëè÷åñòâî áàðîâ

//------- Ïîäêëþ÷åíèå âíåøíèõ ìîäóëåé --------------------------------

//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
void deinit() {
  Comment("");
}

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start() {
  if (UseOneAccount && AccountNumber()!=NumberAccount) {
    Comment("Òîðãîâëÿ íà ñ÷¸òå: "+AccountNumber()+" ÇÀÏÐÅÙÅÍÀ!");
    return;
  } else Comment("");

  if (UseHourTrade && (Hour()<HourBegTrade || Hour()>=HourEndTrade)) {
    Comment("Âðåìÿ òîðãîâëè åù¸ íå íàñòóïèëî!");
    return;
  } else Comment("");

  CheckForOpen();
  TrailingPositions();
}

//+------------------------------------------------------------------+
//| Ïðîâåðêà óñëîâèé äëÿ âõîäà                                       |
//+------------------------------------------------------------------+
void CheckForOpen() {
  double ldStop=0, ldTake=0;
  double sar0=iSAR(NULL, 0, StepParabolic, MaxParabolic, 0);
  double sar1=iSAR(NULL, 0, StepParabolic, MaxParabolic, 1);

  if (!ExistPosition() && prevBar!=Bars) {
    if (sar1>Open[1] && sar0<Bid) {
      if (StopLoss!=0) ldStop=Ask-StopLoss*Point;
      if (TakeProfit!=0) ldTake=Ask+TakeProfit*Point;
      SetOrder(OP_BUY, Ask, ldStop, ldTake);
      prevBar=Bars;
    }
    if (sar1<Open[1] && sar0>Ask) {
      if (StopLoss!=0) ldStop=Bid+StopLoss*Point;
      if (TakeProfit!=0) ldTake=Bid-TakeProfit*Point;
      SetOrder(OP_SELL, Bid, ldStop, ldTake);
      prevBar=Bars;
    }
  }
}

//+------------------------------------------------------------------+
//| Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ îðäåðà èëè ïîçèöèè                 |
//+------------------------------------------------------------------+
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) Exist=True;
    }
  }
  return(Exist);
}

//+------------------------------------------------------------------+
//| Óñòàíîâêà îðäåðà                                                 |
//| Ïàðàìåòðû:                                                       |
//|   op     - îïåðàöèÿ                                              |
//|   pp     - öåíà                                                  |
//|   ldStop - óðîâåíü ñòîï                                          |
//|   ldTake - óðîâåíü òåéê                                          |
//+------------------------------------------------------------------+
void SetOrder(int op, double pp, double ldStop, double ldTake) {
  color  clOpen;
  string lsComm=GetCommentForOrder();
  if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell;
  OrderSend(Symbol(),op,Lots,pp,Slippage,ldStop,ldTake,lsComm,MAGIC,0,clOpen);
  if (UseSound) PlaySound(NameFileSound);
}

//+------------------------------------------------------------------+
//| Ãåíåðèðóåò è âîçâðàùàåò ñòðîêó êîìåíòàðèÿ äëÿ îðäåðà èëè ïîçèöèè |
//+------------------------------------------------------------------+
string GetCommentForOrder() {
  return(Name_Expert);
}

//+------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå ïîçèöèè ïðîñòûì òðàëîì                             |
//+------------------------------------------------------------------+
void TrailingPositions() {
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderMagicNumber()>MAGIC && OrderMagicNumber()<=MAGIC+5) {
        if (OrderSymbol()==Symbol()) {
          if (OrderType()==OP_BUY) {
            if (!ProfitTrailing || (Bid-OrderOpenPrice())>TrailingStop*Point) {
              if (OrderStopLoss()<Bid-(TrailingStop+TrailingStep-1)*Point) {
                ModifyStopLoss(Bid-TrailingStop*Point, clModifyBuy);
              }
            }
          }
          if (OrderType()==OP_SELL) {
            if (!ProfitTrailing || 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) {
  bool   fm;
  double ldOpen=OrderOpenPrice();
  double ldTake=OrderTakeProfit();

  fm=OrderModify(OrderTicket(), ldOpen, ldStop, ldTake, 0, clModify);
  if (fm && UseSound) PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+





Sample





Analysis



Market Information Used:

Series array that contains open prices of each bar


Indicator Curves created:


Indicators Used:

Parabolic Stop and Reverse system


Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders
It automatically opens orders when conditions are reached
It can change open orders parameters, due to possible stepping strategy

Other Features:


It plays sound alerts