Navigation:Home > Content >

e-almet.mq4

Time: 2016-12-15 | Download file:e-almet.mq4

//+------------------------------------------------------------------+
//|                                                      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=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());
          }
        }
      }
    }
  }
}
//+------------------------------------------------------------------+

Recommend