Индикаторы форекс Обсуждение, поиск и тестирование индикаторов для MT4.

Ответить
10.10.2013, 12:16
Аватар для evreg
evreg evreg вне форума Заблокирован
Регистрация: 10.04.2012 / Сообщений: 3
Поблагодарили 0 раз(а) / Репутация: 1

По умолчанию Помогите пожалуйста дополнить индикатор BetterVolume 1.4

Индикатор довольно прост, мне нужно небольшое дополнение, которое позволяет проигрывать звуковой файл, когда индикатор рисует бар объема определенного цвета, скажем красного или зеленого, как это сделать, буду весьма благодарен. Код индикатора ниже:

Скрытый текст


#property copyright ""
#property link ""

#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 Red
#property indicator_color2 DeepSkyBlue
#property indicator_color3 Yellow
#property indicator_color4 Lime
#property indicator_color5 White
#property indicator_color6 Magenta
#property indicator_color7 Maroon

#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
#property indicator_width5 2
#property indicator_width6 2

extern int NumberOfBars = 500;
extern string Note = "0 means Display all bars";
extern int MAPeriod = 100;
extern int LookBack = 20;


double red[],blue[],yellow[],green[],white[],magenta[],v4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexBuffer(0,red);
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexLabel(0,"Climax High ");

SetIndexBuffer(1,blue);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexLabel(1,"Neutral");

SetIndexBuffer(2,yellow);
SetIndexStyle(2,DRAW_HISTOGRAM);
SetIndexLabel(2,"Low ");

SetIndexBuffer(3,green);
SetIndexStyle(3,DRAW_HISTOGRAM);
SetIndexLabel(3,"HighChurn ");

SetIndexBuffer(4,white);
SetIndexStyle(4,DRAW_HISTOGRAM);
SetIndexLabel(4,"Climax Low ");

SetIndexBuffer(5,magenta);
SetIndexStyle(5,DRAW_HISTOGRAM);
SetIndexLabel(5,"ClimaxChurn ");

SetIndexBuffer(6,v4);
SetIndexStyle(6,DRAW_LINE,0,2);
SetIndexLabel(6,"Average("+MAPeriod+")");

IndicatorShortName("Better Volume 1.4" );


//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{

double VolLowest,Range,Value2,Value3,HiValue2,HiValue3,Lo Value3,tempv2,tempv3,tempv;
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
if ( NumberOfBars == 0 )
NumberOfBars = Bars-counted_bars;
limit=NumberOfBars; //Bars-counted_bars;


for(int i=0; i<limit; i++)
{
red[i] = 0; blue[i] = Volume[i]; yellow[i] = 0; green[i] = 0; white[i] = 0; magenta[i] = 0;
Value2=0;Value3=0;HiValue2=0;HiValue3=0;LoValue3=9 9999999;tempv2=0;tempv3=0;tempv=0;


VolLowest = Volume[iLowest(NULL,0,MODE_VOLUME,20,i)];
if (Volume[i] == VolLowest)
{
yellow[i] = NormalizeDouble(Volume[i],0);
blue[i]=0;
}

Range = (High[i]-Low[i]);
Value2 = Volume[i]*Range;

if ( Range != 0 )
Value3 = Volume[i]/Range;


for ( int n=i;n<i+MAPeriod;n++ )
{
tempv= Volume[n] + tempv;
}
v4[i] = NormalizeDouble(tempv/MAPeriod,0);


for ( n=i;n<i+LookBack;n++)
{
tempv2 = Volume[n]*((High[n]-Low[n]));
if ( tempv2 >= HiValue2 )
HiValue2 = tempv2;

if ( Volume[n]*((High[n]-Low[n])) != 0 )
{
tempv3 = Volume[n] / ((High[n]-Low[n]));
if ( tempv3 > HiValue3 )
HiValue3 = tempv3;
if ( tempv3 < LoValue3 )
LoValue3 = tempv3;
}
}

if ( Value2 == HiValue2 && Close[i] > (High[i] + Low[i]) / 2 )
{
red[i] = NormalizeDouble(Volume[i],0);
blue[i]=0;
yellow[i]=0;

}


if ( Value3 == HiValue3 )
{
green[i] = NormalizeDouble(Volume[i],0);
blue[i] =0;
yellow[i]=0;
red[i]=0;
}
if ( Value2 == HiValue2 && Value3 == HiValue3 )
{
magenta[i] = NormalizeDouble(Volume[i],0);
blue[i]=0;
red[i]=0;
green[i]=0;
yellow[i]=0;
}
if ( Value2 == HiValue2 && Close[i] <= (High[i] + Low[i]) / 2 )
{
white[i] = NormalizeDouble(Volume[i],0);

magenta[i]=0;
blue[i]=0;
red[i]=0;
green[i]=0;
yellow[i]=0;

}


}
//----

//----
return(0);
}
//+------------------------------------------------------------------+
[свернуть]

Последний раз редактировалось chocolate; 10.10.2013 в 12:42.
10.10.2013, 14:20
Аватар для Sergan1311
Sergan1311 Sergan1311 на форуме Почётный гражданин
Регистрация: 29.11.2010 / Сообщений: 463
Поблагодарили 445 раз(а) / Репутация: 447
алерт для каждого цвета отдельно
Успех - это переход от одной неудачи к другой с нарастающим энтузиазмом.
evreg , OlegZ 
10.10.2013, 16:31
Аватар для evreg
evreg evreg вне форума Заблокирован
Регистрация: 10.04.2012 / Сообщений: 3
Поблагодарили 0 раз(а) / Репутация: 1
ок, большое спасибо, а вы не знаете что нужно поменять в коде, чтобы алерты срабатывали не при открытии нового бара, а сразу после того как бар поменял цвет, но еще не закрылся?

и как сделать так чтобы звуковой алерт проигрывался не раз, а вплоть до появления новой свечи/бара

Последний раз редактировалось NSerega; 10.10.2013 в 17:41.
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 14:15. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO