//-------------------------------------------------------------------- // ravi.mq4 //--------------------------------------------------------------- 1 -- #property copyright "Copyright © Roman Shiredchenko, 2009" //-------------------------------------------------------------------- #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Blue #property indicator_color2 Green #property indicator_color3 Red //---- indicator parameters extern int Period_Ema=13; extern int Period_Macd1=12; extern int Period_Macd2=26; extern int Period_Macd3=9; double ExtBuffer0[]; double ExtBuffer1[]; double ExtBuffer2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { SetIndexBuffer(0,ExtBuffer0); SetIndexBuffer(1,ExtBuffer1); SetIndexBuffer(2,ExtBuffer2); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexStyle(2,DRAW_HISTOGRAM); IndicatorShortName("impulsmodify"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- TODO: add your code here //---- return(0); } //---------------------------------------------------------------- int start() // Специальная функция start() { //----------------------------------------------------------------- double EMA1, EMA2, SumEMA; // 2 МА для расчета значений индикатора EMA double M_0, M_1, SumMacd ; // Значение MAIN MACD на 0 и 1 барах //--------------------------------------------------------------- 4 -- int i1 = 0; // переменные для открытия закрытия позиции //---средняя ЕМА и майн МАКДи растут ExtBuffer1[1] = 0; ExtBuffer0[1] = 0; ExtBuffer2[1] = 0; EMA1=iMA(NULL, PERIOD_D1,Period_Ema,0,MODE_EMA,PRICE_CLOSE,i1); // Значение EМА1 current EMA2=iMA(NULL, PERIOD_D1,Period_Ema,0,MODE_EMA,PRICE_CLOSE,i1+1); // Значение EМА2 prev SumEMA = 0; SumEMA = EMA1 - EMA2; M_0=iMACD(NULL, PERIOD_D1,Period_Macd1,Period_Macd2,Period_Macd3,PRICE_CLOSE,MODE_MAIN,i1); // M_1=iMACD(NULL, PERIOD_D1,Period_Macd1,Period_Macd2,Period_Macd3,PRICE_CLOSE,MODE_MAIN,i1+1); // SumMacd=0; SumMacd=M_0-M_1; if (SumEMA>0 && SumMacd>0) ExtBuffer1[1] = 4; // mas green if (ExtBuffer1[1] == 0) { if (SumEMA<0 && SumMacd<0) // если ема и макди уменьшаются, то рисуй красную лин { ExtBuffer2[1] = 2; } else ExtBuffer0[1] = 3; // иначе рисуй blue линию гистограммы } //------------------------------------------- return; // Выход из спец. ф-ии start() } //-------------------------------------------------------------- 15 --