//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
// AG_Trade_Criterion.mq4
// Функции вычисления торговых критериев.
// Могут применяться при построении функции автоматической торговли для AutoGraf 4
// Сергей Ковалёв, Днепропетровск, sk@autograf.dp.ua, ICQ 64015987, http://autograf.dp.ua
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
#property library   
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int AG_Trade_Criterion_1()                   // Функции вычисления торговых критериев 1
   {                                         // http://book.mql4.com/ru/samples/expert
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж 0 жж
// Возвращаемые значения:
// 10 - открытие Buy  
// 20 - открытие Sell 
//  0 - значимых критериев нет
// -1 - используется другой финансовый инструмент
//---------------------------------------------------------------------------------- 1 --
   int    Period_MA_1 = 11;                  // Период МА 1
   int    Period_MA_2 = 31;                  // Период МА 2
   double Delta_MA    = 28.0;                // Расстояние между МА 
//   double Delta_MA    = 13.0;              // Расстояние между МА 
   double MA_1;                              // Значение МА_1 текущее
   double MA_2;                              // Значение МА_2 текущее 
   string Sym   = "EURUSD";                  // Название финансового инструмента
//================================================================================== 2 ==
   if (Sym != Symbol())                      // Если это не наш финансовый инструмент..
      return(-1);                            // .. то уходим без рассуждений
//---------------------------------------------------------------------------------- 3 --
   MA_1 = iMA(NULL,0,Period_MA_1,0,MODE_LWMA,PRICE_TYPICAL,0);// МА_1 на текущем баре
   MA_2 = iMA(NULL,0,Period_MA_2,0,MODE_LWMA,PRICE_TYPICAL,0);// МА_2 на текущем баре

   if (MA_1 > MA_2 + Delta_MA*Point)         // Если разница между МА 1 и 2 большая ..
      return (10);                           // .. то возвращаем критерий открытия Buy
   if (MA_1 < MA_2 - Delta_MA*Point)         // Если разница между МА 1 и 2 большая ..
      return (20);                           // .. то возвращаем критерий открытия Sell
//================================================================================== 4 ==
   return(0);                                // Значимых критериев нет
   }
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж 5 жж
int AG_Trade_Criterion_2()                   // Функции вычисления торговых критериев 2
   {                                         // http://book.mql4.com/ru/build/conditions    
//================================================================================== 6 ==
// Возвращаемые значения:
// 10 - открытие Buy  
// 20 - открытие Sell 
// 11 - закрытие Buy
// 21 - закрытие Sell
// 0  - значимых критериев нет
// -1 - используется другой финансовый инструмент
//---------------------------------------------------------------------------------- 7 --
   int St_min = 30;                          // Минимальный  уровень стохастика
   int St_max = 70;                          // Максимальный уровень стохастика
   double Open_Level =5;                     // Уровень MACD для открытия (пунктов)
   double Close_Level=4;                     // Уровень MACD для закрытия (пунктов)
   double M_0, M_1;                          // Значение MACD MAIN   на 0 и 1 барах
   double S_0, S_1;                          // Значение MACD SIGNAL на 0 и 1 барах
   double St_M_0, St_M_1;                    // Значение Stochastic MAIN на 0 и 1 барах
   double St_S_0, St_S_1;                    // Значение Stochastic SIGNAL на 0 и 1 бар
   string Sym   = "EURUSD";                  // Название финансового инструмента
//================================================================================== 8 ==
   if (Sym != Symbol())                      // Если это не наш финансовый инструмент..
      return(-1);                            // .. то уходим без рассуждений
//---------------------------------------------------------------------------------- 9 --
   M_0=iMACD(Sym,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0);               // 0 бар
   M_1=iMACD(Sym,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,1);               // 1 бар
   S_0=iMACD(Sym,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);             // 0 бар
   S_1=iMACD(Sym,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);             // 1 бар

   St_M_0=iStochastic(Sym,PERIOD_M15,5,3,3,MODE_SMA,0,MODE_MAIN,  0);      // 0 бар
   St_M_1=iStochastic(Sym,PERIOD_M15,5,3,3,MODE_SMA,0,MODE_MAIN,  1);      // 1 бар
   St_S_0=iStochastic(Sym,PERIOD_M15,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);      // 0 бар
   St_S_1=iStochastic(Sym,PERIOD_M15,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);      // 1 бар

//--------------------------------------------------------------------------------- 10--
   double Opn = Open_Level *Point;           // Уровень MACD для открытия (отн.знач.цены)
   double Cls = Close_Level*Point;           // Уровень MACD для закрытия (отн.знач.цены)
 
   if(M_0>S_0 && -M_0>Opn && St_M_0>St_S_0 && St_S_0<St_min)
      return(10);                            // Сработал критерий открытия Buy    
   if(M_0<S_0 &&  M_0>Opn && St_M_0<St_S_0 && St_S_0>St_max)
      return(20);                            // Сработал критерий открытия Sell 

   if(M_0<S_0 &&  M_0>Cls && St_M_0<St_S_0 && St_S_0>St_max)
      return(11);                            // Сработал критерий закрытия Buy    
   if(M_0>S_0 && -M_0>Cls && St_M_0>St_S_0 && St_S_0<St_min)
      return(21);                            // Сработал критерий закрытия Sell         
//================================================================================= 11 ==
   return(0);                                // Значимых критериев нет
   }
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж Конец модуля жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж 12 жж