//+------------------------------------------------------------------+ //| Universalny_Sound_indicator.mq4 //| Copyright © 2011, lukas1 //| Правообладатель Лукашук Виктор Геннадьевич aka lukas1 //| Внимание: данная программа не будет работать принципиально //| со стандартными встроенными индикаторами, //| работает только с пользовательскими индикаторами. //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, lukas1" #property link "lukas1@ngs.ru" #property indicator_separate_window //---- indicator parameters extern string Вписать_Название_Индикатора="MACD";//Name extern double Уровень_Сигнализации_1 = 0.0002; //Level1 extern double Уровень_Сигнализации_2 = 0.0; //Level2 extern double Уровень_Сигнализации_3 = -0.0002; //Level3 extern string Имя_Wave_файла_1 = "alert.wav"; //wavefile1 extern string Имя_Wave_файла_2 = "alert.wav"; //wavefile2 extern string Имя_Wave_файла_3 = "alert.wav"; //wavefile3 /*движение индикатора только вверх = +1; если только вниз тогда = -1; если оба движения и вверх и вниз = 0; */ extern int Сигнал_О_Движении_Вверх_1 = 0;//оба направления extern int Сигнал_О_Движении_Вверх_2 = 0;//оба направления extern int Сигнал_О_Движении_Вверх_3 = 0;//оба направления #property indicator_color1 Silver #property indicator_width1 2 //---- indicator buffers double Buffer2[]; //---- int br1=0,br2=0,br3=0; string ticker; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() {ticker=StringTrimRight(StringTrimLeft(Вписать_Название_Индикатора)); IndicatorBuffers (1); IndicatorDigits (Digits); IndicatorShortName("UniSound ("+ticker+")"); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,Buffer2); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() {int limit; int counted_bars = IndicatorCounted(); //---- check for possible errors if(counted_bars < 0) return(-1); //---- last counted bar will be recounted if(counted_bars > 0) counted_bars--; limit = Bars - counted_bars; if(counted_bars==0) limit--; //---- for(int i = limit; i >=0; i--) { Buffer2[i]=iCustom(Symbol(),0, ticker, 0,i); } signal(Уровень_Сигнализации_1,Имя_Wave_файла_1, Сигнал_О_Движении_Вверх_1, br1); br1=Bars; signal(Уровень_Сигнализации_2,Имя_Wave_файла_2, Сигнал_О_Движении_Вверх_2, br2); br2=Bars; signal(Уровень_Сигнализации_3,Имя_Wave_файла_3, Сигнал_О_Движении_Вверх_3, br3); br3=Bars; return(0); } //+------------------------------------------------------------------+ void signal(double level, string wave, int moving, int bari) { if( (Buffer2[2]level ) && (moving==1 || moving==0)&& barilevel && Buffer2[1]