Прошу написать простой индикатор

 
Прошу написать простой индикатор, вот исходя из этих формул и приложенной ниже картинки:
H-O=C1
C-L=C2
C1+C2=D-движение вверх(на картинке показано как "D" белого цвета)
O-L=X1
H-C=X2
X1+X2=Z-движение вниз(на картинке показано как "Z" красного цвета)
Просьба, если можно, чтобы можно было менять толщину и цвет и чтобы при переходе на другой таймфрейм они не возвращались в первоначальное положение.
Заранее благодарю!
 

Попробуй этот

//+------------------------------------------------------------------+ 
//| prusax.mq4 
//| 
//+------------------------------------------------------------------+ 
 
#property indicator_separate_window 
#property indicator_buffers 2 
#property indicator_color1 White 
#property indicator_color2 Red 
#property indicator_width1 3
#property indicator_width2 3
 
 
//---- buffers 
double BufferUP[];
double BufferDN[];
 
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function | 
//+------------------------------------------------------------------+ 
int init() 
{ 
string short_name; 
//---- indicator line 
IndicatorBuffers(2); 
SetIndexStyle(0,DRAW_HISTOGRAM); 
SetIndexBuffer(0,BufferUP); 
SetIndexStyle(1,DRAW_HISTOGRAM); 
SetIndexBuffer(1,BufferDN);
SetIndexDrawBegin(0,10); 
SetIndexDrawBegin(1,10); 
//---- 
return(0); 
} 
//+------------------------------------------------------------------+ 
//| 
//+------------------------------------------------------------------+ 
int start() 
{ 
int i,counted_bars=IndicatorCounted(); 
 
 
for(i=Bars-counted_bars-1;i>=0;i--)
 
{
BufferUP[i] = ((High[i]-Open[i])+(Close[i]-Low[i]));
BufferDN[i] = -((Open[i]-Low[i])+(High[i]-Close[i]));
}
 
 
return(0); 
} 
//+------------------------------------------------------------------+
 
sashken:

Попробуй этот

//+------------------------------------------------------------------+ 
//| prusax.mq4 
//| 
//+------------------------------------------------------------------+ 
 
#property indicator_separate_window 
#property indicator_buffers 2 
#property indicator_color1 White 
#property indicator_color2 Red 
#property indicator_width1 3
#property indicator_width2 3
 
 
//---- buffers 
double BufferUP[];
double BufferDN[];
 
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function | 
//+------------------------------------------------------------------+ 
int init() 
{ 
string short_name; 
//---- indicator line 
IndicatorBuffers(2); 
SetIndexStyle(0,DRAW_HISTOGRAM); 
SetIndexBuffer(0,BufferUP); 
SetIndexStyle(1,DRAW_HISTOGRAM); 
SetIndexBuffer(1,BufferDN);
SetIndexDrawBegin(0,10); 
SetIndexDrawBegin(1,10); 
//---- 
return(0); 
} 
//+------------------------------------------------------------------+ 
//| 
//+------------------------------------------------------------------+ 
int start() 
{ 
int i,counted_bars=IndicatorCounted(); 
 
 
for(i=Bars-counted_bars-1;i>=0;i--)
 
{
BufferUP[i] = ((High[i]-Open[i])+(Close[i]-Low[i]));
BufferDN[i] = -((Open[i]-Low[i])+(High[i]-Close[i]));
}
 
 
return(0); 
} 
//+------------------------------------------------------------------+
Ну что же, великолепно, большое Вам спасибо! Не знаю как прилепить картинку, в первом письме пытался, не получилось. Александр, а на самих барах можно такое испольник, как я просил в первый раз?
 

пробуй этот:

//+------------------------------------------------------------------+ 
//| prusax_v2.mq4 
//| 
//+------------------------------------------------------------------+ 
 
#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 3
#property indicator_width2 3
#property indicator_width3 3
#property indicator_width4 3
 
//---- 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--)
 
{
BufferUP[i]    = High[i];
BufferUP1[i]   = High[i]+((High[i]-Open[i])+(Close[i]-Low[i]));
BufferDN[i]    = Low [i];
BufferDN1[i]   = Low [i]-((Open[i]-Low[i])+(High[i]-Close[i]));
}
 
 
return(0); 
} 
//+------------------------------------------------------------------+
 
sashken:

пробуй этот:

//+------------------------------------------------------------------+ 
//| prusax_v2.mq4 
//| 
//+------------------------------------------------------------------+ 
 
#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 3
#property indicator_width2 3
#property indicator_width3 3
#property indicator_width4 3
 
//---- 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--)
 
{
BufferUP[i]    = High[i];
BufferUP1[i]   = High[i]+((High[i]-Open[i])+(Close[i]-Low[i]));
BufferDN[i]    = Low [i];
BufferDN1[i]   = Low [i]-((Open[i]-Low[i])+(High[i]-Close[i]));
}
 
 
return(0); 
} 
//+------------------------------------------------------------------+

Второй получился не совсем так: не в самом баре, как хотелось, а над баром и под баром. Я незнаю как послать на этот форум картинку, я Вам вышлю на Ваш адрес, посмотрите пожалуйста!
 

Вот что из этого получилось:

//+------------------------------------------------------------------+ 
//| prusax_v6.mq4 
//| 
//+------------------------------------------------------------------+ 
 
#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 3
#property indicator_width2 3
#property indicator_width3 3
#property indicator_width4 3
 
//---- 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--)
 
{
BufferUP[i]    = High[i];
BufferUP1[i]   = (High[i]-(((High[i]-Open[i])+(Close[i]-Low[i]))/2));
BufferDN[i]    = (High[i]-(((High[i]-Open[i])+(Close[i]-Low[i]))/2));
BufferDN1[i]   = (High[i]-(((High[i]-Open[i])+(Close[i]-Low[i]))/2))-(((Open[i]-Low[i])+(High[i]-Close[i]))/2);
}
 
 
return(0); 
} 
//+------------------------------------------------------------------+

Может кому пригодится... Или идеи какие-нибудь появятся

Причина обращения: