Господа знатоки, подскажите плиз, в чем разница (если можно с объяснением)
в строке проставил лишние скобки (и эффективность сова выросла в разы):
if((iCCI(Symbol(),0,Period_CCI,PRASE_TIPIKAL_,0)>0 )
Что происходит из-за скобок обрамляющих iCCI. Точно знаю что они вносят свою коррекцию, но не пойму какую. И работает ли условие iCCI>0?
В вашем примере должна быть ошибка при компиляции. Есть левая открывающая скобка "(", а правой закрывающей ")" нет.
Господа знатоки, подскажите плиз, в чем разница (если можно с объяснением)
в строке проставил лишние скобки (и эффективность сова выросла в разы):
if((iCCI(Symbol(),0,Period_CCI,PRASE_TIPIKAL_,0)>0 )
Что происходит из-за скобок обрамляющих iCCI. Точно знаю что они вносят свою коррекцию, но не пойму какую. И работает ли условие iCCI>0?
Нужно увидеть, какой код следует после последней закрывающей скобки. Ведь сейчас количество открывающих и закрывающих скобок не одинаково.
P. S. И что такое PRASE_TIPIKAL? )) Знаю только PRICE_TYPICAL...
Количество скобок одинаково полная строка выглядит так:
if(iCCI(Symbol(),0,Period_CCI,PRICE_TYPICAL,0) > 0 && iCCI(Symbol(),0,Period_CCI,PRICE_TYPICAL,1 < 0) && MA_1_t > MA_2_t + Rastvor*Point )
{ Opn_B=true; }
{ Opn_B=true; }
Ошибка, выделил красным. Не должен компилировать по идее.
Полная строка выглядит так
if((iCCI(Symbol(),0,Period_CCI,PRICE_TYPICAL,0) < CCI_Flet) && (iCCI(Symbol(),0,Period_CCI,PRICE_TYPICAL,1) < CCI_Flet) && MA_1_t > MA_2_t + Rastvor_Flet*Point )
{ Opn_B=true; comment_Opn="сигнал на Buy-флет"; break; }
Полная строка выглядит так
if((iCCI(Symbol(),0,Period_CCI,PRICE_TYPICAL,0) < CCI_Flet) && (iCCI(Symbol(),0,Period_CCI,PRICE_TYPICAL,1) < CCI_Flet) && MA_1_t > MA_2_t + Rastvor_Flet*Point )
{ Opn_B=true; comment_Opn="сигнал на Buy-флет"; break; }
Вот теперь другое дело, не вижу тут лишних скобок.
Вот теперь другое дело, не вижу тут лишних скобок.
Имелось ввиду пара лишних скобок, даже две пары...
(iCCI(Symbol(),0,Period_CCI,PRICE_TYPICAL,0) < CCI_Flet) &&
Имелось ввиду пара лишних скобок, даже две пары...
(iCCI(Symbol(),0,Period_CCI,PRICE_TYPICAL,0) < CCI_Flet) &&
Если вы правы и производительность увеличивается это может быть связано с обработкой логической операции а именно первой операции. Если выражение является ЛОЖЬ - дальнейшее выполнение прекращается.
if ( (iCCI(Symbol(),0,Period_CCI,PRICE_TYPICAL,0) < CCI_Flet) && (iCCI(Symbol(),0,Period_CCI,PRICE_TYPICAL,1) < CCI_Flet) && MA_1_t > MA_2_t + Rastvor_Flet*Point ) { Opn_B=true; comment_Opn="сигнал на Buy-флет"; break; }
скобки вокруг операции < и > не нужны и ни на что не влияют, их приоритет больше операции &&
а вот с операцией ИЛИ т.е. ||
есть момент. В старом MQL4 ее приоритет выше чем у &&
и код
if ( a || b && c || d ) { Print("ok"); }
Работал бы по другому, чем в strict режиме mql4 и mql5. Поэтому тут скобки нужны для надежности. Но об этом даже компилятор предупреждает (чтобы те, кто переносит код на новую версию обратили внимание).
Всегда поражаюсь записи в одну строчку, может в редакторе места мало?
Наверное действительно мало раз в одну строку ставишь круглую и фигурную скобки...
А если пробелы поставить после if будет быстрей работать??? Но после запятой никогда не надо ставить пробел... иначе код вообще работать не будет...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Господа знатоки, подскажите плиз, в чем разница (если можно с объяснением)
в строке проставил лишние скобки (и эффективность сова выросла в разы))):
if((iCCI(Symbol(),0,Period_CCI,PRICE_TYPICAL,0) < CCI_Flet) && (iCCI(Symbol(),0,Period_CCI,PRICE_TYPICAL,1) < CCI_Flet) && MA_1_t > MA_2_t + Rastvor_Flet*Point )
{ Opn_B=true; comment_Opn="сигнал на Buy-флет"; break; }
Что происходит из-за скобок обрамляющих iCCI. Точно знаю что они вносят свою коррекцию, но не пойму какую. И работает ли условие iCCI>0?