e-almet





//+------------------------------------------------------------------+
//|                                                      e-almet.mq4 |
//|                                                    almet & KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//|   14.11.2005                                                     |
//| 1. Âû÷èñëÿåòñÿ, ñêîëüêî ñîñòàâëÿåò 10 ï. îò â÷åðàøíåé            |
//|    ñâå÷è 10/(H-L)                                                |
//| 2.  13.00 ïî GMT (ïîë÷àñà ïîñëå íîâîñòåé) óìíîæàåì ï.1 íà 2     |
//|    (åñëè â÷åðàøíÿÿ ñâå÷à 0-200 ï., åñëè áîëüøå, òî íà 3 è ò.ä.)  |
//|    è íà ñðåäíþþ ïî ýòîìó äíþ (fxmagazine ¹64, ñòð.50) è ýòî      |
//|    ÷èñëî ðàññòàâëÿåì â äâå ñòîðîíû îò open ÷àñà, ñî ñòîïîì 25    |
//|    è ïðîôèòîì 10. Åñëè îðäåð ñðàáîòàë â ìèíóñå, æäåì, ïîêà       |
//|    ñðàáîòàåò âòîðîé.                                             |
//+------------------------------------------------------------------+
#property copyright "almet & KimIV"
#property link      "http://www.kimiv.ru"
#define   MAGIC     20051114

//------- Âíåøíèå ïàðàìåòðû ñîâåòíèêà --------------------------------
extern string _Parameters_Trade = "----- Ïàðàìåòðû òîðãîâëè";
extern double Lots          = 0.1;   // Ðàçìåð òîðãóåìîãî ëîòà
extern int    StopLoss      = 25;    // Ðàçìåð ôèêñèðîâàííîãî ñòîïà
extern int    TakeProfit    = 10;    // Ðàçìåð ôèêñèðîâàííîãî òýéêà
extern int    HourSetOrders = 14;    // Âðåìÿ óñòàíîâêè îðäåðîâ
extern int    HourDelOrders = 22;    // Âðåìÿ óäàëåíèÿ îðäåðîâ
extern int    Slippage      = 3;     // Ïðîñêàëüçûâàíèå öåíû

extern string _Parameters_Expert = "----- Ïàðàìåòðû ñîâåòíèêà";
extern color clOpenBuy    = LightBlue;    // Öâåò îòêðûòèÿ ïîêóïêè
extern color clOpenSell   = LightCoral;   // Öâåò îòêðûòèÿ ïðîäàæè
extern color clModifyBuy  = Aqua;         // Öâåò ìîäèôèêàöèè ïîêóïêè
extern color clModifySell = Tomato;       // Öâåò ìîäèôèêàöèè ïðîäàæè
extern color clCloseBuy   = Blue;         // Öâåò çàêðûòèÿ ïîêóïêè
extern color clCloseSell  = Red;          // Öâåò çàêðûòèÿ ïðîäàæè

//---- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà -------------------------------

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

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start() {
  if (Hour()==HourSetOrders && Minute()<1) SetOrders();
  if (Hour()==HourDelOrders) DeleteAllOrders();
}

//+------------------------------------------------------------------+
//| Óñòàíîâêà îðäåðîâ                                                |
//+------------------------------------------------------------------+
void SetOrders() {
  double ldStop=0, ldTake=0;
  double Hi1=iHigh(NULL,PERIOD_D1,1);
  double Lo1=iLow (NULL,PERIOD_D1,1);
  double wch=(Hi1-Lo1);
  int    f; if (wch>0.02) f=3; else f=2;
  double dt=0.001/wch*f*GetAveDayRange(Symbol())*Point;
  Hi1=NormalizeDouble(Ask+dt, Digits);
  Lo1=NormalizeDouble(Bid-dt, Digits);

  // Âåðõíèé îðäåð íà ïîêóïêó
  if (!ExistOrder(1)) {
    if (StopLoss!=0) ldStop=Hi1-StopLoss*Point;
    if (TakeProfit!=0) ldTake=Hi1+TakeProfit*Point;
    SetOrder(OP_BUYSTOP, Hi1, ldStop, ldTake, 1);
  }

  // Íèæíèé îðäåð íà ïðîäàæó
  if (!ExistOrder(2)) {
    if (StopLoss!=0) ldStop=Lo1+StopLoss*Point;
    if (TakeProfit!=0) ldTake=Lo1-TakeProfit*Point;
    SetOrder(OP_SELLSTOP, Lo1, ldStop, ldTake, 2);
  }
}

//+------------------------------------------------------------------+
//| Âîçâðàùàåò ñðåäíèé äíåâíîé äèàïàçîí èíñòðóìåíòà                  |
//+------------------------------------------------------------------+
int GetAveDayRange(string sym) {
  int adr=0;
  if (sym=="EURUSD") {
    if (DayOfWeek()==1) adr=92;
    if (DayOfWeek()==2) adr=102;
    if (DayOfWeek()==3) adr=101;
    if (DayOfWeek()==4) adr=83;
    if (DayOfWeek()==5) adr=80;
  }
  if (sym=="GBPUSD") {
    if (DayOfWeek()==1) adr=110;
    if (DayOfWeek()==2) adr=128;
    if (DayOfWeek()==3) adr=123;
    if (DayOfWeek()==4) adr=98;
    if (DayOfWeek()==5) adr=96;
  }
  if (sym=="USDCHF") {
    if (DayOfWeek()==1) adr=141;
    if (DayOfWeek()==2) adr=162;
    if (DayOfWeek()==3) adr=158;
    if (DayOfWeek()==4) adr=121;
    if (DayOfWeek()==5) adr=117;
  }
  if (sym=="USDJPY") {
    if (DayOfWeek()==1) adr=95;
    if (DayOfWeek()==2) adr=104;
    if (DayOfWeek()==3) adr=106;
    if (DayOfWeek()==4) adr=77;
    if (DayOfWeek()==5) adr=72;
  }
  return(adr);
}

//+------------------------------------------------------------------+
//| Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ îðäåðà èëè ïîçèöèè ïî íîìåðó       |
//+------------------------------------------------------------------+
bool ExistOrder(int mn) {
  bool Exist=False;
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC+mn) {
        Exist=True; break;
      }
    }
  }
  return(Exist);
}

//+------------------------------------------------------------------+
//| Óñòàíîâêà îðäåðà                                                 |
//| Ïàðàìåòðû:                                                       |
//|   op     - îïåðàöèÿ                                              |
//|   pp     - öåíà                                                  |
//|   ldStop - óðîâåíü ñòîï                                          |
//|   ldTake - óðîâåíü òåéê                                          |
//|   mn     - äîáàâèòü ê MAGIC                                      |
//+------------------------------------------------------------------+
void SetOrder(int op, double pp, double ldStop, double ldTake, int mn) {
  color clOpen;

  if (op==OP_BUYSTOP) clOpen=clOpenBuy;
  else clOpen=clOpenSell;
  OrderSend(Symbol(),op,Lots,pp,Slippage,ldStop,ldTake,"",MAGIC+mn,0,clOpen);
}

//+------------------------------------------------------------------+
//| Óäàëåíèå âñåõ îðäåðîâ                                            |
//+------------------------------------------------------------------+
void DeleteAllOrders() {
  for (int i=OrdersTotal()-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderMagicNumber()>MAGIC && OrderMagicNumber()<=MAGIC+2) {
        if (OrderSymbol()==Symbol()) {
          if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) {
            OrderDelete(OrderTicket());
          }
        }
      }
    }
  }
}
//+------------------------------------------------------------------+





Sample





Analysis



Market Information Used:

Series array that contains the highest prices of 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

Other Features:

BackTest : USDJPY on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDCHF on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:0.00 Total Net Profit:0.00

BackTest : USDCAD on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-01 Profit Factor:0.00 Total Net Profit:0.00

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-05-01 to 2010-05-31 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-06-01 to 2010-06-30 Profit Factor:0.00 Total Net Profit:0.00

Request Backtest for e-almet


From : (yyyy/mm/dd) To: (yyyy/mm/dd)

Pair: Period: