Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 494

 
Vitalii Ananev:

Таким образом у вас будет открыто 4-ре ордера.

Если советник открывает ордера не правильно, то проверяйте логику где вы указываете условия при которых должны открываться позиции в функции CheckForOpen() .  И еще проверьте условия времени работы советника if (CurrTime < EaStartTime || CurrTime >= EaEndTime). Я бы на вашем месте использовал функцию  if (TimeHour(TimeCurrent()) = час начала работы && TimeMinute(TimeCurrent()) = минуты начала работы ). Час и минуты начала работы задаются в переменных типа int или uint.

Открывал по 3 ордера,но не так как я задумывал.Хотел до трех ордеров,но по одному ордеру на каждый новый бар.Бывают такие моменты,когда несколько баров подряд дают положительные сигналы.

А по времени проблем нет,работает в строго отведенный период времени. 

 
Nickolay72:

Открывал по 3 ордера,но не так как я задумывал.Хотел до трех ордеров,но по одному ордеру на каждый новый бар.Бывают такие моменты,когда несколько баров подряд дают положительные сигналы.

А по времени проблем нет,работает в строго отведенный период времени. 

Условие: если бар открытия последней позиции не равен нулю и количество открытых позиций меньше максимально допустимого, то можно открыть новую позицию.
 

Карпутову     2016.01.13_05:14 МСК. Здравствуйте, господин Карпутов! Я написал в MQL4

.mq4 файл, получил .ex4 файл. Но в тестере стратегий он не работает. Конечная

цель у меня была написать советник для МТ4. В MQL5 у меня получался .mq5 и

.ex5 файлы. И .ex5 файл открывал сделки. В четвёртой версии есть отличия от

пятой и я ещё полохо ориентируюсь в MQL языке, поэтому плохо получается.     

Сейчас я не стал сильно разбираться что не так, файл журнала тестера сохранён. Я

попробую перевести что написал тестер. А пока прошу Вас может Вы подскажете

что же не так написано в программном коде? Пока Вы ответите, я попробую сам

разобраться.
     Я с удивлением обнаружил у себя в четвёртой версии эдитора вариант написания

советника примерно то, что собирался написать. Но это не я писал. Прилагаю

файлы журнала тестера и скриншот. 05:30 МСК.   Журнал тестераКарпутовуКарпутову

Файлы:
20160112.log  7 kb
 
Николай Никитюк:

     2016.01.13_05:14 МСК. Здравствуйте, господин Карпутов! Я написал в MQL4

.mq4 файл, получил .ex4 файл. Но в тестере стратегий он не работает. 

А чего вы код в виде картинок выложили? )) Кто в них будет разбираться?
 
Николай Никитюк:


Вставьте, пожалуйста, свой код в сообщение правильно: Правильно вставляем код на форуме
 

Где найти описание ошибок?

Я вот не пойму, что не нравится компилятору, зачем он меня предупреждает?

check operator precedence for possible error; use parentheses to clarify precedence


if(Low[X]>PriceBuy && High[X]>PriceBuy ||
               Low[X]<PriceBuy && High[X]<PriceBuy)
               calcBarX++;

 и тут

expression has no effect


         for(calc_day;calc_day>0; calc_day--)
           {
            if(iLow(Symbol(),TF_3Day,calc_day)<iLow(Symbol(),TF_3Day,calc_day+1)) calc_day_OK++;
            else break;
           }

 
-Aleks-:

Где найти описание ошибок?

Я вот не пойму, что не нравится компилятору, зачем он меня предупреждает?

Вообще-то компилятор кроме текста ошибки ещё сообщает номер строки кода в которой ошибка и позицию в строке.
 
Karputov Vladimir:
Вообще-то компилятор кроме текста ошибки ещё сообщает номер строки кода в которой ошибка и позицию в строке.
Это так - в первом случае на знаки сравнения по очереди - видимо между "или" надо поставить скобку, а во втором случае  ругается на скобку в которой логическое выражение записано.
 

По первому случаю разобрался - поставил в скобки по два сравнения и не ругается - неужели была логическая ошибка - т.е. результаты сравнения могла замениться из-за "или"?

Остался открытый вопрос со вторым выражением - что там не так - есть идеи?

 
-Aleks-:

По первому случаю разобрался - поставил в скобки по два сравнения и не ругается - неужели была логическая ошибка - т.е. результаты сравнения могла замениться из-за "или"?

Остался открытый вопрос со вторым выражением - что там не так - есть идеи?

Надо помнить что проверка условия в новом mql4 производится не полностью. То-есть в условии

if(Low[X]>PriceBuy && High[X]>PriceBuy ||
               Low[X]<PriceBuy && High[X]<PriceBuy)

если Low[x] не больше PriceBuy то дальше проверка проводится не будет. Об этом и сообщается в описании ошибки. Соответственно если первую пару заключить в скобки, то при невыполнении этой пары будет проверена вторая пара условий.

Второй вопрос.

for(calc_day;calc_day>0; calc_day--)

Чему равно calc_day??? Может быть меньше нуля? Компилятор не знает что заложено в логике... Вот и предупреждает о возможном не эффективном цикле.