//+------------------------------------------------------------------+
//|                                         ShCat.mq4 (version 1.04) |
//|                                    Copyright 2015, Egor Murikov. |
//|                                               gogen777@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Egor Murikov."
#property link      "gogen777@gmail.com"
#property version   "1.04"
#property strict
#property script_show_inputs
//--- input parameters
input int      Magic=123;        //Идентификатор ордера
input string   coment="ShCat";   //Комментарий

input datetime ExecuteDT = D'00:15:00'; // время исполнения скрипта по времени брокера (см. окно котировок)

input int      Slippage=0;       //Проскальзывание
input double   Lot = 0.01;       //Лотность

input bool     UseFixedPrice = false;  // Использовать указанную цену, а не цену по стратегии "КШ"
input double   FixedPrice = 1.0000;    // "Опорная" цена, которая будет использоваться, если UseFixedPrice = true

input datetime Expiration = __DATETIME__; // Время истечения ордера


input int      P1_Offset = 75;   //Смещение первого лимитника
input int      P1_SL = 160;      //SL первого лимитника
input int      P1_TP = 0;        //TP первого лимитника
input int      P2_Offset = 100;  //Смещение второго лимитника
input int      P2_SL = 160;      //SL второго лимитника
input int      P2_TP = 0;        //TP второго лимитника
input int      P3_Offset = 150;  //Смещение третьего лимитника
input int      P3_SL = 160;      //SL третьего лимитника
input int      P3_TP = 50;       //TP третьего лимитника
MqlDateTime  dtCur;      
MqlDateTime  dtExe;
datetime CT,ET; 
int h,m;     

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   CT = TimeCurrent();
   ET = ExecuteDT;
   TimeToStruct(CT,dtCur);
   TimeToStruct(ET,dtExe);
   h = dtExe.hour;
   m = dtExe.min;
   if(dtCur.hour > dtExe.hour)      
   {
      dtCur.day++;
      dtCur.hour = 0;
      dtCur.min = 0;
      CT = StructToTime(dtCur);
      dtCur.hour = h;
      dtCur.min = m;
      ET = StructToTime(dtCur);
   }
   
   while(CT <= ET)
   {
      CT = TimeCurrent();   
   }
   
   double   Price    = 0.;                                              //Цена
   int      ti;
   int      Mult = 1;
   datetime Exp = Expiration;
   
   if (Digits == 3 || Digits == 5)       Mult = 10;
   

   if(UseFixedPrice)    Price = FixedPrice;
   else                 Price = iOpen(Symbol(),PERIOD_D1,0);
   Alert("Price:",Price);

   if(Exp > 0 && Exp <= TimeCurrent())
   {
      Alert("Неверное время истечения ордера:",Expiration," <выставляем ордера без срока истечения>");
      Exp = 0;
   }


   ti=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Price - _Point*P1_Offset*Mult,Slippage*Mult,Price - _Point*P1_SL*Mult,Price - _Point*P1_TP*Mult,coment,Magic,Exp,clrGreen);
   if(ti!=-1)     Alert("Установлен ордер BuyLimit1:",ti);               
   else           Alert("Ордер BuyLimit1 не установлен");
   ti=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Price - _Point*P2_Offset*Mult,Slippage*Mult,Price - _Point*P2_SL*Mult,Price - _Point*P1_TP*Mult,coment,Magic,Exp,clrGreen);
   if(ti!=-1)     Alert("Установлен ордер BuyLimit2:",ti);               
   else           Alert("Ордер BuyLimit2 не установлен");
   ti=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Price - _Point*P3_Offset*Mult,Slippage*Mult,Price - _Point*P3_SL*Mult,Price - _Point*P3_TP*Mult,coment,Magic,Exp,clrGreen);
   if(ti!=-1)     Alert("Установлен ордер BuyLimit3:",ti);               
   else           Alert("Ордер BuyLimit3 не установлен");


   ti=OrderSend(Symbol(),OP_SELLLIMIT,Lot,Price + _Point*P1_Offset*Mult,Slippage*Mult,Price + _Point*P1_SL*Mult,Price + _Point*P1_TP*Mult,coment,Magic,Exp,clrRed);
   if(ti!=-1)     Alert("Установлен ордер SellLimit1:",ti);               
   else           Alert("Ордер SellLimit1 не установлен");
   ti=OrderSend(Symbol(),OP_SELLLIMIT,Lot,Price + _Point*P2_Offset*Mult,Slippage*Mult,Price + _Point*P2_SL*Mult,Price + _Point*P2_TP*Mult,coment,Magic,Exp,clrRed);
   if(ti!=-1)     Alert("Установлен ордер SellLimit2:",ti);               
   else           Alert("Ордер SellLimit2 не установлен");
   ti=OrderSend(Symbol(),OP_SELLLIMIT,Lot,Price + _Point*P3_Offset*Mult,Slippage*Mult,Price + _Point*P3_SL*Mult,Price + _Point*P3_TP*Mult,coment,Magic,Exp,clrRed);
   if(ti!=-1)     Alert("Установлен ордер SellLimit3:",ti);               
   else           Alert("Ордер SellLimit3 не установлен");
   


   }
//+------------------------------------------------------------------+
