возьмите это с большой долей соли, поскольку я только на минуту смотрел код в блокноте ... но это выглядит ужасно для вставленного кода (i = 0; ilt; limit; i ) {if (ValSum # 91; i # 93; gt; (High # 91; i # 93; Low # 91; i # 932 ValSum # 91; i 1 # 93; lt; (High # 91; i 1 # 93; Low # 91; i 1 # 932) {MainVal # 91; i # 93; = High # 91; i # 93 ;; } else if (ValSum # 91; i # 93; lt; (High # 91; i # 93; Low # 91; i # 932 ValSum # 91; i 1 # 93; gt; (High # 91; i 1 # 93; Low # 91; i 1 # 932) {MainVal # 91; i # 93; = Low # 91; i # 93 ;; } else MainVal # 91; i # 93; = EMPTY_VALUE; } сначала вы проверяете, верно ли что-то И что-то еще (я предполагаю, что это ваш «сигнал на покупку»). если это не так, то вы делаете 2 теста для противоположного типа набора сигналов. если это не удается, вы прибегаете к установке empty_value. плохо плохо плохо плохо плохо плохо плохо код. у первого теста есть 2 возможности провалиться, то же самое со вторым, и затем вы помечаете конец этого ужасного, если структурируете окончательное значение «я сдаюсь». Типы запуска «если тогда еще, если тогда еще, если тогда еще» плохо работают. никогда «если», разделите понятия на логические блоки. Вставленный код, если что-то {} else {если что-то новое {} else {}}, гораздо проще увидеть, к какому разделу относятся какие тесты и к каким оценкам они будут относиться. опять же, НИКОГДА не «если». Кроме того, используйте правильные скобки с вашими оценками. не запускайте тесты ... 'if (a lt; b c = d || f gt; g x * y = 5 - 3)'. используйте скобки, если (((a lt; b) (c == d)) || ((f gt; g) (x * y = 2)) {} обычно существует определенный порядок операций, которые определяют порядок a Набор операций будет оценен, но нет никаких оснований полагаться на это правило (которое может меняться в зависимости от языка), что также делает бесконечно более сложным чтение того, какими должны быть оценки по отдельности и как они группируются вместе в целом. не запускайте блоки if и не запускайте оценки или присваивания. вам следует переписать код для чего-то подобного, что имеет гораздо меньше шансов на появление типографских ошибок, а также гораздо более читабельности Затем вы можете перейти оттуда к выяснению фактической проблемы. Вставленный код double test1, test2; for (i = 0; ilt; limit; i ) {test1 = (High # 91; i # 93; Low) # 91; i # 932; test2 = (High # 91; i 1 # 93; Low # 91; i 1 # 932; MainVal # 91; i # 93; = EMPTY_VALUE; if ((ValSum # 91; i # 93; gt; test1) (ValSum # 91; i 1 # 93; lt; test2)) MainVal # 91; i # 93; = High # 91; i # 93 ;; if ( (ValSum # 91; я # 93; л; test1) (ValSum # 91; i 1 # 93; gt; test2)) MainVal # 91; i # 93; = низкий # 91; i # 93 ;; редактировать: возможно, почему код выглядит таким дерьмом ... но почему очевидно, что DECOMPILED MQL есть в первом прикрепленном сообщении? ты вор?