Indicators: MACD Histogram WIS

 

MACD Histogram WIS:

MACD lines and histogram for the Impulse trading system.

MACD Histogram WIS

Author: Vladimir Gospodinov

 

Владимир, добрый вечер!

Народ очень прекрасно окрашивает бары во все цвета. Я сам не программист, но понимаю о чем речь.

Посмотрите скрин. Прилагаю код, может быть возьмете из него блок окраски и пришьете к своему индикатору, тогда будет совсем как у Элдера.

//+------------------------------------------------------------------+
//|                                                      CTG_Map.mq4 |
//|                                                CompanyName "CTG" |
//|                                     http://chaostradinggroup.com |
//+------------------------------------------------------------------+
#property copyright "CTG"
#property link      "http://chaostradinggroup.com"
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Green
#property indicator_color2 CLR_NONE
#property indicator_color3 LimeGreen
#property indicator_color4 CLR_NONE
#property indicator_color5 Red
#property indicator_color6 CLR_NONE
#property indicator_color7 Pink
#property indicator_color8 CLR_NONE
//---- indicator parameters
extern int MA_Period=8;
extern int MA_Shift=0;
extern int MA_Method=0;
extern double k1=1.5;
//---- indicator buffers
double ExtMapBuffer[];
double ExtGistBuffer[];
double ExtRistBuffer[];
double ExtBullBuffer[];
double ExtBearBuffer[];
double ExtZedBuffer[];
double ExtGist1Buffer[];
double ExtRist1Buffer[];
double b,b1;
//----
int ExtCountedBars=0,limit,s0,s1,r,s2,s3,s4;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   int    draw_begin;
   string short_name;
//---- drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY, 2,Green);
SetIndexEmptyValue(0,0.0);
SetIndexShift(0,MA_Shift);   
SetIndexStyle(1,DRAW_NONE);
SetIndexEmptyValue(1,0.0);
SetIndexShift(1,MA_Shift); 
SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY, 2,LimeGreen );  
SetIndexEmptyValue(2,0.0);
SetIndexShift(2,MA_Shift);   
SetIndexStyle(3,DRAW_NONE);
SetIndexEmptyValue(3,0.0);   
SetIndexShift(3,MA_Shift);  
SetIndexStyle(4,DRAW_HISTOGRAM,EMPTY, 2,Red);
SetIndexEmptyValue(4,0.0); 
SetIndexShift(4,MA_Shift);
SetIndexStyle(5,DRAW_NONE);
SetIndexEmptyValue(5,0.0); 
SetIndexShift(5,MA_Shift);   
SetIndexStyle(6,DRAW_HISTOGRAM,EMPTY, 2,Pink );
SetIndexEmptyValue(6,0.0); 
SetIndexShift(6,MA_Shift);
SetIndexStyle(7,DRAW_NONE);
SetIndexEmptyValue(7,0.0); 
SetIndexShift(7,MA_Shift); 
   
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
   if(MA_Period<2) MA_Period=2;
   draw_begin=MA_Period-1;
//---- indicator short name
         short_name="CTG-Map(";
   IndicatorShortName(short_name+MA_Period+")");
   SetIndexDrawBegin(0,draw_begin);
//---- indicator buffers mapping
   SetIndexBuffer(0,ExtGistBuffer);   
   SetIndexBuffer(1,ExtRistBuffer); 
   SetIndexBuffer(2,ExtGist1Buffer);   
   SetIndexBuffer(3,ExtRist1Buffer);    
   SetIndexBuffer(4,ExtBearBuffer);   
   SetIndexBuffer(5,ExtZedBuffer);   
   SetIndexBuffer(6,ExtBullBuffer);   
   SetIndexBuffer(7,ExtMapBuffer);   
//---- index labels
   SetIndexLabel(0,"Green zone"); 
   SetIndexLabel(1,NULL);
   SetIndexLabel(2,"Green zone light");
   SetIndexLabel(3,NULL);   
   SetIndexLabel(4,"Red zone");   
   SetIndexLabel(5,NULL);   
   SetIndexLabel(6,"Red zone light");
   SetIndexLabel(7,NULL);
     
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   if(Bars<=MA_Period) return(0);
   ExtCountedBars=IndicatorCounted()-1;
//---- check for possible errors
//  if (ExtCountedBars<0) return(-1);
//---- last counted bar will be recounted
   if (ExtCountedBars>1) ExtCountedBars--;
    // else ExtCountedBars=0;
     //----
  limit=Bars-ExtCountedBars;
for(s1=0; s1<=limit; s1++)
{
if (s1==0)
{
ExtGistBuffer[s1]=0;
ExtRistBuffer[s1]=0;
ExtGist1Buffer[s1]=0;
ExtRist1Buffer[s1]=0;
ExtBearBuffer[s1]=0;
ExtZedBuffer[s1]=0;
ExtBullBuffer[s1]=0;
ExtMapBuffer[s1]=0;
}
if (iCustom(NULL,0,"CTG_Map",MA_Period,MA_Shift,MA_Method,k1,5,s1)!=0)
{
ExtGistBuffer[s1]=High[s1];
ExtRistBuffer[s1]=Low[s1];
}
if (iCustom(NULL,0,"CTG_Map",MA_Period,MA_Shift,MA_Method,k1,1,s1)!=0)
{
ExtGist1Buffer[s1]=High[s1];
ExtRist1Buffer[s1]=Low[s1];
}
if (iCustom(NULL,0,"CTG_Map",MA_Period,MA_Shift,MA_Method,k1,2,s1)!=0)
{
ExtBearBuffer[s1]=High[s1];
ExtZedBuffer[s1]=Low[s1];
}
if (iCustom(NULL,0,"CTG_Map",MA_Period,MA_Shift,MA_Method,k1,0,s1)!=0)
{
ExtBullBuffer[s1]=High[s1];
ExtMapBuffer[s1]=Low[s1];
}
}
return(0);
}
 

И еще вот такой вариант есть...

//+------------------------------------------------------------------+
//|                                                 Zone_Trading.mq4 |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_color3 LightGray
#property indicator_color4 LightGray
//---- buffers
double Buffer1[];
double Buffer2[];
double Buffer3[];
double Buffer4[];
#define SkippedBars 39 //=34+5
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//----
   SetIndexStyle(0,DRAW_HISTOGRAM, STYLE_SOLID);
   SetIndexBuffer(0,Buffer1);
   SetIndexLabel(0,NULL);
//----
   SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID);
   SetIndexBuffer(1,Buffer2);
   SetIndexLabel(1,NULL);
//----
   SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID);
   SetIndexBuffer(2,Buffer3);
   SetIndexLabel(2,NULL);
//----
   SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID);
   SetIndexBuffer(3,Buffer4);
   SetIndexLabel(3,NULL);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Zone Trading                                                     |
//+------------------------------------------------------------------+
int start()
  {
   int    i;
   int    counted_bars=IndicatorCounted();
//----
   if(Bars<=SkippedBars) return(0);
//---- 
   i=Bars-SkippedBars-1;
   if(counted_bars>SkippedBars-1) i=Bars-counted_bars-1;
   while(i>=0)
     {
      // Green
      if ((iAO(Symbol(), Period(), i)>iAO(Symbol(), Period(), i+1))&&(iAC(Symbol(), Period(), i)>iAC(Symbol(), Period(), i+1)))
        {
         Buffer1[i]=High[i];
         Buffer2[i]=Low[i];
         Buffer3[i]=Low[i];
         Buffer4[i]=Low[i];
         i--;
         continue;
        }
      // Red
      if ((iAO(Symbol(), Period(), i)<iAO(Symbol(), Period(), i+1))&&(iAC(Symbol(), Period(), i)<iAC(Symbol(), Period(), i+1)))
        {
         Buffer1[i]=Low[i];
         Buffer2[i]=High[i];
         Buffer3[i]=Low[i];
         Buffer4[i]=Low[i];
         i--;
         continue;
        }
      // Gray
      Buffer1[i]=Low[i];
      Buffer2[i]=Low[i];
      Buffer3[i]=High[i];
      Buffer4[i]=Low[i];
      i--;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Blaid73:

И еще вот такой вариант есть...

Это как раз то что я имел ввиду когда говорил что не окрашивает :)


Первый вариант на вид более удачный но и в нем тоже используются цены High и Low вместо Open и Close

 

Насколько я понимаю, бар окрашивается в интервале между H и L, причем тут С и О? Отметки С и О есть на каждом баре, все прекрасно видно.

Расчет по зонам в Zone_Trading.mq4 осуществляется внутри кода индикаторов АО и АС, а там установлены Median Price. В чем проблема, не понятно.

Если можете, объясните, хотя если невозможно окрасить бары в вашем варианте индикатора, то разговор бесполезный :)

В том виде, в котором есть сейчас можно использовать - это главное. Хотя хочется как всегда удобства, полного сервиса :)

Roman. опубликовал свою версию того же индикатора, есть разница в показаниях, хотя рассчитываются те же величины теми же методами.

Ну и у вас понагляднее будет. Спасибо!

 

Еще один пример окраски баров

//+------------------------------------------------------------------+ 
//| prusax_v2.mq4                                                    |
//| 2008 modified by zIG                                             |
//+------------------------------------------------------------------+ 
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 White
#property indicator_color2 White
#property indicator_color3 Red
#property indicator_color4 Red
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
//---- buffers 
double BufferUP[];
double BufferDN[];
double BufferUP1[];
double BufferDN1[];
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
int init()
  {
   string short_name;
//---- indicator line 
   IndicatorBuffers(4);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,BufferUP);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1,BufferUP1);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexBuffer(2,BufferDN);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexBuffer(3,BufferDN1);
   SetIndexDrawBegin(0,10);
   SetIndexDrawBegin(1,10);
   SetIndexDrawBegin(2,10);
   SetIndexDrawBegin(3,10);
//---- 
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars=IndicatorCounted();
   for(i=Bars-counted_bars-1;i>=0;i--)
   
     {double AO=iAO(NULL,0,i);
         
         if(AO>0)
           {
            BufferUP[i]   =Close[i];
            BufferUP1[i]  =Open[i];
            BufferDN[i]    =0.0;
            BufferDN1[i]   =0.0;
           }
         if(AO<0)
              {
               BufferUP[i]   =0.0;
               BufferUP1[i]  =0.0;
               BufferDN[i]    =Open[i];
               BufferDN1[i]   =Close[i];
              }
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+ 
 
Blaid73:

Насколько я понимаю, бар окрашивается в интервале между H и L, причем тут С и О? Отметки С и О есть на каждом баре, все прекрасно видно.

Расчет по зонам в Zone_Trading.mq4 осуществляется внутри кода индикаторов АО и АС, а там установлены Median Price. В чем проблема, не понятно.

Если можете, объясните, хотя если невозможно окрасить бары в вашем варианте индикатора, то разговор бесполезный :)

В том виде, в котором есть сейчас можно использовать - это главное. Хотя хочется как всегда удобства, полного сервиса :)

То что можно было сделать сделали до меня. Нужно ждать нового терминала и mql5, может там это дефолтом будет и не нужны будут эти извращения!

А вот почему важна именно цена закрытия


А индикатор делал для себя т.к в терминале нет ни линий с гистограммой ни возможности применить импульсную систему, поэтому совместил и поделился

 

Все равно не понял про цену закрытия, поясните. Если уж я пойму, то все остальные точно, вопрос закроем. Спасибо.

 
Здравствуйте! Я не являюсь специалистом в программировании на данном языке, да и вообще специалистом в программировании. Но мне очень понравились эти новые возможности. Скачал фойл MACD Histogram WIS.mq4. Но не понимаю как его установить на МТ4. Подскажите как это сделать? Куда, в какую папку вставлять и как его запускать? Мне больше нравится МТ4 (возможно высталять несколько противоположных ордеров), чем МТ5 (невозможно высталять противоположные ордера). может быть подскажите еще какие то актуальные на данный момент торговые сигналы?
 

Добрый день Владимир,

с помощю macd histogram wis я на протажении одного месяца поднял тренеровочный аккаунт с 10000 до 116000. Использовал дневной и недеьный тайммфреймы. Теперь занимаюсь накопленикем средсв для реальной торговли. Индикатор очень хороший для несуетливых и для тех кто может постоянно следеть за ним. Благодарю. Есть просьба – дайте пожалуйста фрагмент кода чтобы добавит к индикатору звуковой сигнал при изменении цвета последнего бара по сравнению с предедущим. Спасибо за вашее время.

Reason: