Как разбить ценовой график на зоны?

 
Как настроить ценовой график в Meta Trader 4 так,чтобы ,когда текущие столбцы гистограмм
Awesome Oscillator(AO) и Accelerator Oscillator(AC) выше столбцов,которые им предшествуют,
соответствующий ценовой бар был окрашен в зеленый цвет.И если текущие столбцы гистограмм
"АС" и "АО"ниже столбцов,которые им предшествуют ,соответствующий ценовой бар был окрашен
в красный цвет.Если "АС" и "АО" имеют разные цвета,окрас ценового бара был серым.То есть
разбить ценовой график на зоны красную,зеленую и серую.Что несомненно делает график более
удобным в использовании.
 
Берешь Heiken Ashi, добавляешь пару буферов в индикатор, чуток меняешь логику - готово.
 
Rosh хотел сказать, что надо написАть пользовательский индикатор, который и будет разукрашивать бары =)
 
это как примерно?Если не сложно подскажите более подробно.
 
это индикатор, положи его в indicators
//=============================================================================
// Zone With Signal.mq4
// Copyright © 2005, PTG Sowtware
// PTGSoft@mail.ru
//=============================================================================
// For SM Bars With MFI we recommend next chart settings ( press F8
// or select on menu 'Charts'->'Properties...'):
// - On 'Common' Tab disable 'Chart on Foreground' checkbox
//=============================================================================

#include <comlib.mqh>

#property copyright "Copyright © 2005, PTG Sowtware"
#property link      "PTGSoft@mail.ru"
#property indicator_chart_window
#property indicator_buffers 4

//=============================================================================
// Custom indicator shared variables
//=============================================================================

double GreenZoneBuffer[];
double RedZoneBuffer[];
double GrayZoneBuffer[];
double BlueZoneBuffer[];

//=============================================================================
// Custom indicator initialization function
//=============================================================================

int init()
{	
	
	SetIndexStyle(0, DRAW_HISTOGRAM, 0, 1, Green);
	SetIndexStyle(1, DRAW_HISTOGRAM, 0, 1, Red);
	SetIndexStyle(2, DRAW_HISTOGRAM, 0, 1, Gray);
	SetIndexStyle(3, DRAW_HISTOGRAM, 0, 1, Blue);	

	
	SetIndexBuffer(0, GreenZoneBuffer);
	SetIndexBuffer(1, RedZoneBuffer);
	SetIndexBuffer(2, GrayZoneBuffer);
	SetIndexBuffer(3, BlueZoneBuffer);

	return(0);	
}

//=============================================================================
// Custor indicator deinitialization function
//=============================================================================

int deinit()
{
	return(0);
}

//=============================================================================
// Custom indicator iteration function
//=============================================================================

int start()
{
	double cur_AO, prv_AO, cur_AC, prv_AC;	

	//=== Draw Zone ===
	for(int i = 0; i < Bars; i++)
	{
		if(iBWZone(NULL, 0, OP_BUY, i)) // Green zone
		{		
			GreenZoneBuffer[i] = High[i];
			RedZoneBuffer[i]   = Low[i];
			GrayZoneBuffer[i]  = 0.0;
			BlueZoneBuffer[i]  = 0.0;			
		}
		
		else if (iBWZone(NULL, 0, OP_SELL, i)) // Red zone
		{
			GreenZoneBuffer[i] = Low[i];
			RedZoneBuffer[i]   = High[i];
			GrayZoneBuffer[i]  = 0.0;
			BlueZoneBuffer[i]  = 0.0;
      }

		else // Gray zone
		{
			GreenZoneBuffer[i] = 0.0;
			RedZoneBuffer[i]   = 0.0;
			GrayZoneBuffer[i]  = High[i];
			BlueZoneBuffer[i]  = Low[i];
      }
	}

	return(0);

}
  
//=============================================================================
// End. Thank you for nothing!
//=============================================================================



Это библиотека, ее положи в libraries

//=============================================================================
// comlib.mq4
// Copyright © 2005, PTG Sowtware
// PTGSoft@mail.ru
//=============================================================================

#property copyright "Copyright © 2005, PTG Sowtware"
#property link      "PTGSoft@mail.ru"
#property library


//=============================================================================
// Вычисляет зоны по АО и АС
// Параметры:
// <mode> тип зоны: 0 - зеленая; 1 - красная; 2 - серая
// Функция возвращаети <истина>, если бар номер <shift> соответствует
// режиму <mode>. в обратном случае возвращается ложь
//=============================================================================
bool iBWZone(string symbol, int timeframe, int mode, int shift)
{
	bool result = false;
	double cur_AO, prv_AO, cur_AC, prv_AC;
	
	// здесь я в наглую перебил параметр
	// валюты, пока берется только текущая валюта графика
	cur_AO = iAO(NULL, timeframe, shift);
	prv_AO = iAO(NULL, timeframe, shift + 1);
		
	cur_AC = iAC(NULL, timeframe, shift);
	prv_AC = iAC(NULL, timeframe, shift + 1);
		
	if((cur_AO > prv_AO) &&
	   (cur_AC > prv_AC) &&
	   (mode == OP_BUY))
	{
		result = true;
	}
		
	else if ((cur_AO < prv_AO) &&
	         (cur_AC < prv_AC) &&
	         (mode == OP_SELL))
	{
		result = true;
	}

	else if(mode == 2)
	{
		result = true;
	}

	else
	{
		result = false;
	}
	
	return(result);
}

//=============================================================================
// Функция возвращает строковое представление периода
//=============================================================================
string PeriodToStr(int period)
{
	switch(period)
	{
		case 1:
			return("M1");
			break;
		case 5:
			return("M5");
			break;
		case 15:
			return("M15");
			break;
		case 30:
			return("M30");
			break;			
		case 60:
			return("H1");
			break;
		case 240:
			return("H4");
			break;
		case 1440:
			return("D1");
			break;
		case 10080:
			return("W1");
			break;
		case 43200:
			return("MN");
			break;
		default:
			return("Sorry! Unkwown period");
			break;
	}	
}

//=============================================================================
// Функция возвращает цену последнего фрактала
// для бара № <shift>, <mode> - режим покупка/продажа 
//=============================================================================
double GetPriceLastFractal(string symbol, int timeframe, int mode, int shift)
{
	double currprice;
	
	while(currprice == 0)
	{
		currprice = iFractals(symbol, timeframe, mode, shift);
		shift++;
	}
	
	return(currprice);
}

//=============================================================================
// Функция возвращает смещение от бара № <shift> для последнего фрактала
// , <mode> - режим покупка/продажа 
//=============================================================================
int GetShiftLastFractal(string symbol, int timeframe, int mode, int shift)
{
	double currprice;
	
	while(currprice == 0)
	{
		currprice = iFractals(symbol, timeframe, mode, shift);
		shift++;
	}
	
	return(shift);
}

//=============================================================================
// End. Thank you for nothing!
//=============================================================================



Это инклудник, его полжи в include

//=============================================================================
// comlib.mqh
// Copyright © 2005, PTG Sowtware
// PTGSoft@mail.ru
//=============================================================================

#import "comlib.ex4"

bool   iBWZone(string symbol, int timeframe, int mode, int shift);
string PeriodToStr(int period);
double GetPriceLastFractal(string symbol, int timeframe, int mode, int shift);
int    GetShiftLastFractal(string symbol, int timeframe, int mode, int shift);
 
можешь и в один файл это все собрать, я просто библиотеку в нескольких индикаторах использую, для этого перенеси процедуру iBWZone в код индикатора.
 
Все большое спасибо заработало!!!!