Добрый день
прошу помочь, проблема в следующем:
пишу советника, и тут заметил что неправильно он мне сигнал один выдает. Есть условие: if (zn_RSI3_[2][1])>70 ... , которое выполняется, когда zn_RSI3_[2][1] равно 9 (на данный момент), т.е. оно меньше, а не больше 70. а если меняю знак условия (if (zn_RSI3_[2][1]) < 70 ...) то перестает выполняться условие в скобках {}. почему он может работать наоборот?
Извиняюсь, неправильно написал, просто сидел уже по разному менял значения и перебирал варианты почему так может быть
изначально строка вот так выглядит: if (zn_RSI3_[1][1]<DoubleToStr(30,2)) {
проблема сохраняется
Извиняюсь, неправильно написал, просто сидел уже по разному менял значения и перебирал варианты почему так может быть
изначально строка вот так выглядит: if (zn_RSI3_[1][1]<DoubleToStr(30,2)) {
проблема сохраняется
Наверное имелся в виду NormalizeDouble, а то вы строку сравниваете на больше/меньше
DoubleToStr подставлял, т.к. думал что поможет в этом проблема, значение получается 30,00
без нее значение просто 30. выражение слева на момент публикации моего вопроса было 9,7, т.е. должно было выполнится условие в скобках, чего не происходило
(выводимые значения проверял через вывод Print(...))
DoubleToStr подставлял, т.к. думал что поможет в этом проблема, значение получается 30,00
без нее значение просто 30. выражение слева на момент публикации моего вопроса было 9,7, т.е. должно было выполнится условие в скобках, чего не происходило
(выводимые значения проверял через вывод Print(...))
Покажите код, в том числе где по принту проверяете....
Print (DoubleToStr((zn_RSI3_[2][1]),2));
if (DoubleToStr((zn_RSI3_[2][1]),2)<(DoubleToStr(30,2))){
RSI_TARGET_buy=RSI_TARGET_buy+2;
RSI_TARGET_D1_1_time=iTime(Symbol(),PERIOD_D1,1);}
if (DoubleToStr((zn_RSI3_[2][1]),2)>(DoubleToStr(70,2))){
RSI_TARGET_sell=RSI_TARGET_sell+2;
RSI_TARGET_D1_1_time=iTime(Symbol(),PERIOD_D1,1);}
на данный момент начало выполняться условие:
RSI_TARGET_sell=RSI_TARGET_sell+2; Print (zn_RSI3_[2][2]);
RSI_TARGET_D1_1_time=iTime(Symbol(),PERIOD_D1,1);}
хотя значение zn_RSI3_[2][2] = 9,91 (через принт), если вписываю руками это значение, все нормально, условие не выполняется...
на данный момент начало выполняться условие:
RSI_TARGET_sell=RSI_TARGET_sell+2; Print (zn_RSI3_[2][2]);
RSI_TARGET_D1_1_time=iTime(Symbol(),PERIOD_D1,1);}
хотя значение zn_RSI3_[2][2] = 9,91 (через принт), если вписываю руками это значение, все нормально, условие не выполняется...
Print (DoubleToStr((zn_RSI3_[2][1]),2));
if (DoubleToStr((zn_RSI3_[2][1]),2)<(DoubleToStr(30,2))){
RSI_TARGET_buy=RSI_TARGET_buy+2;
RSI_TARGET_D1_1_time=iTime(Symbol(),PERIOD_D1,1);}
if (DoubleToStr((zn_RSI3_[2][1]),2)>(DoubleToStr(70,2))){
RSI_TARGET_sell=RSI_TARGET_sell+2;
RSI_TARGET_D1_1_time=iTime(Symbol(),PERIOD_D1,1);}
А вы имеете представление как сравниваются строки? Зачем здесь DoubleToStr()?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день
прошу помочь, проблема в следующем:
пишу советника, и тут заметил что неправильно он мне сигнал один выдает. Есть условие: if (zn_RSI3_[2][1])>70 ... , которое выполняется, когда zn_RSI3_[2][1] равно 9 (на данный момент), т.е. оно меньше, а не больше 70. а если меняю знак условия (if (zn_RSI3_[2][1]) < 70 ...) то перестает выполняться условие в скобках {}. почему он может работать наоборот?