Всё равно не работает, не выводит Alert...!!! - страница 2 12 Новый комментарий Виктор 2008.01.23 22:46 #11 komposter писал (а): Звуковые сигналы в индикаторахЭк Вы его, Андрей... Пусть сначала учебник освоит. zax 2008.01.24 19:10 #12 Народ, посмотрите пожалуйста вот накатал Индикатор который по моей задумке должен выводить Алерт при пересечении МА... Посмотрите что не так, следовал примерам как описано в Звуковые сигналы в индикаторах ... //+------------------------------------------------------------------+ //| Custom MS-Signal.mq4 | //| Copyright © 2004, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2004, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Red //---- indicator parameters extern int MA_Period=13; extern int MA_Shift=0; extern int MA_Method=0; //---- indicator buffers double ExtMapBuffer[]; double SignalBuffer[]; //---- int ExtCountedBars=0; static int i=0, limit = 0; #define SIGNAL_BAR 1 //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { int draw_begin; string short_name; //---- drawing settings SetIndexStyle(0,DRAW_LINE); SetIndexShift(0,MA_Shift); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); if(MA_Period<2) MA_Period=13; draw_begin=MA_Period-1; //---- indicator short name switch(MA_Method) { case 1 : short_name="EMA("; draw_begin=0; break; case 2 : short_name="SMMA("; break; case 3 : short_name="LWMA("; break; default : MA_Method=0; short_name="SMA("; } IndicatorShortName(short_name+MA_Period+")"); SetIndexDrawBegin(0,draw_begin); //---- indicator buffers mapping SetIndexBuffer(0,ExtMapBuffer); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { if(Bars<=MA_Period) return(0); ExtCountedBars=IndicatorCounted(); //---- check for possible errors if (ExtCountedBars<0) return(-1); //---- last counted bar will be recounted if (ExtCountedBars>0) ExtCountedBars--; //---- switch(MA_Method) { case 0 : sma(); break; case 1 : ema(); break; case 2 : smma(); break; case 3 : lwma(); } //---- done for(i = 0; i < limit; i++) SignalBuffer[i] = iMAOnArray(ExtMapBuffer,Bars,MA_Period, 0, MA_Method, i); static int PrevSignal = 0, PrevTime = 0; if(SIGNAL_BAR > 0 && Time[0] <= PrevTime ) return(0); //---- Отмечаем, что этот бар проверен PrevTime = Time[0]; if(PrevSignal <= 0) { //---- Проверяем, не пересеклись ли линии на прошлом баре: if(ExtMapBuffer[SIGNAL_BAR] - SignalBuffer[SIGNAL_BAR] > 0 && SignalBuffer[SIGNAL_BAR+1] - ExtMapBuffer[SIGNAL_BAR+1] >= 0) { //---- Если пересеклись, отмечаем что последний сигнал - бай PrevSignal = 1; //---- и выводим информацию: Alert("sMACD (", Symbol(), ", ", Period(), ") - BUY!!!"); // Print("sMACD (", Symbol(), ", ", Period(), ") - BUY!!!"); // Comment("sMACD (", Symbol(), ", ", Period(), ") - BUY!!!"); // PlaySound("Alert.wav"); } } if(PrevSignal >= 0) { if(SignalBuffer[SIGNAL_BAR] - ExtMapBuffer[SIGNAL_BAR] > 0 && ExtMapBuffer[SIGNAL_BAR+1] - SignalBuffer[SIGNAL_BAR+1] >= 0) { PrevSignal = -1; Alert("sMACD (", Symbol(), ", ", Period(), ") - SELL!!!"); // Print("sMACD (", Symbol(), ", ", Period(), ") - SELL!!!"); // Comment("sMACD (", Symbol(), ", ", Period(), ") - SELL!!!"); // PlaySound("Alert.wav"); } } return(0); дальше я просто обрезал стандартный индикатор МА ... Andrey Khatimlianskii 2008.01.29 23:16 #13 zax: дальше я просто обрезал стандартный индикатор МА... А вот этого делать не стоило... ExtMapBuffer вообще не заполняется, SignalBuffer, соответственно, тоже пустой. Неужели сложно вставить готовый код? Там же есть пример с МАКД-ом. 12 Новый комментарий
дальше я просто обрезал стандартный индикатор МА...ExtMapBuffer вообще не заполняется, SignalBuffer, соответственно, тоже пустой.
Неужели сложно вставить готовый код? Там же есть пример с МАКД-ом.