Всем привет. Соорудил такой вот код. Но при запуске индикатора на график, всегда выдает алерт по последней стрелки, а потом работает как надо. Как сделать что бы алерт не выскакивал при запуске индикатора на графике?
Не выводить алерт, если Counted_bars==0
Это косвенно перекрывает мой вопрос. Сильно подозреваю, что j, v объявлены без инициализации нулем. Почему-то многие свято уверены, что за них дух святой и всемогущий обнулит локальные переменные в такой ситуации
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &Time[], const double &Open[], const double &High[], const double &Low[], const double &Close[], const long &TickVolume[], const long &Volume[], const int &Spread[]) { int i,j; // будут иметь непредсказуемые значения }
***
Да просто нужно перед проверкой условия возникновения сигнала сбрасывать v в ноль. То есть:
int i, Counted_bars; Counted_bars=IndicatorCounted(); i=Bars-Counted_bars-1; while(i>=0) { v = 0; if(iRSI(NULL, 0, 14, PRICE_CLOSE, i)>70) { j=1; v=1; } else if(iRSI(NULL, 0, 14, PRICE_CLOSE, i)<30&&j!=2) { j=2; v=2; } i--; } if (v==1) { Alert(Symbol()," ","ВНИЗ"); v=0; } if (v==2) { Alert(Symbol()," ","ВВЕРХ"); v=0; }
Да просто нужно перед проверкой условия возникновения сигнала сбрасывать v в ноль. То есть:
Спасибо большое, все работает с занулением переменной V . С Counted_bars==0 не пробывал.
Поторопился с выводами. Если занулить V то вроде как бы все работает. Но на самом деле пока условие выполняется на текущем баре, идут бесконечные алерты
Поторопился с выводами. Если занулить V то вроде как бы все работает. Но на самом деле пока условие выполняется на текущем баре, идут бесконечные алерты
Да, конечно же. Чтобы такого не было, нужно запоминать время последнего Alert. Обычно делаю так:
void DoAlert(string text) { static datetime lastAlertTime = 0; if (lastAlertTime == iTime(NULL, 0, 0)) return; lastAlertTime = iTime(NULL, 0, 0); Alert(Symbol(), ": ", text); } ... if (v != 0) DoAlert((v == 1)? "ВНИЗ" : "ВВЕРХ");
Да, конечно же. Чтобы такого не было, нужно запоминать время последнего Alert. Обычно делаю так:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет. Соорудил такой вот код. Но при запуске индикатора на график, всегда выдает алерт по последней стрелки, а потом работает как надо. Как сделать что бы алерт не выскакивал при запуске индикатора на графике?