Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2454

 
Artyom Trishkin #:

Читайте документацию.

Всегда читайте что возвращает любая функция и проверяйте полученное значение на ошибочное. Это аксиома.

Понял.

Еще раз спасибо.

 

Здравствуйте.

Расскажите, пожалуйста, про функцию #property strict (или порекомендуйте где подробнее про нее прочитать).

Указание компилятору на применение особого строгого режима проверки ошибок (см. Обновленный MQL4)


- сведения - говорящие ни о чем....


В подавляющем большинстве случаев удаляю эту строку... Нормально ли это ?

В частности,  выражение :

Close_Symbol_1[i]=iClose(Symbol_1,0,i);    с закомментированной строкой  #property strict - выполняется на "ура"...

... если комментарий удаляю - ошибка :

"Array out of range" (индекс за пределами массива) не приводит к критической ошибке*


(... но, выполнение программы останавливает...)

... и комментарий к ней :

Обновленный MQL4

* Следует обратить особое внимание на ошибку "Array out of range" - многие старые пользовательские индикаторы при запуске на графике будут выдавать эту ошибку в новом компиляторе в режиме strict. Желательно найти причину и устранить её.


Массив объявлен... У него есть какие-то пределы ? (имеется ввиду индикаторный массив)

Заранее благодарен !!!

 

Помогите разобраться в работе функции CTrade::Buy. Последняя строчка в ней такая:

return(PositionOpen(symbol_name,ORDER_TYPE_BUY,volume,price,sl,tp,comment));

Константа ORDER_TYPE_BUY означает рыночный ордер на покупку. Но зачем тогда указывается цена? Ведь цена нужна при создании лимитного ордера, но не рыночного. В чём тут подвох?

 
graf1976 #:

В подавляющем большинстве случаев удаляю эту строку... Нормально ли это ?

Нет конечно

graf1976 #:

Массив объявлен... У него есть какие-то пределы ? (имеется ввиду индикаторный массив)

Есть - количество баров на периоде графика, на котором запущен индикатор (содержится в предопределённой переменной rates_total, либо может быть получено при помощи Bars()).

Если берёте значения для расчёта индикатора за пределами массива, то что, простите, индикатор рассчитает, если там случайные данные из памяти?

Всегда используйте #property strict и исправляйте все ошибки и предупреждения. Если, конечно, хотите делать хорошие программы.

 
Artyom Trishkin #:

Нет конечно

Есть - количество баров на периоде графика, на котором запущен индикатор (содержится в предопределённой переменной rates_total, либо может быть получено при помощи Bars()).

Если берёте значения для расчёта индикатора за пределами массива, то что, простите, индикатор рассчитает, если там случайные данные из памяти?

Всегда используйте #property strict и исправляйте все ошибки и предупреждения. Если, конечно, хотите делать хорошие программы.

Т.е. сама команда  Close_Symbol_1[i]=iClose(Symbol_1,0,i); не виновата, а я где то ошибся с параметрами цикла и переменная " i " вышла за пределы массива ?
 
graf1976 #:
Т.е. сама команда  Close_Symbol_1[i]=iClose(Symbol_1,0,i); не виновата, а я где то ошибся с параметрами цикла и переменная " i " вышла за пределы массива ?

Здесь попробуйте спросить - там знают всё точно и сразу.

 
Irakly #:

Помогите разобраться в работе функции CTrade::Buy. Последняя строчка в ней такая:

Константа ORDER_TYPE_BUY означает рыночный ордер на покупку. Но зачем тогда указывается цена? Ведь цена нужна при создании лимитного ордера, но не рыночного. В чём тут подвох?

Цена нужна в любом случае, рыночный ордер не исключение, так как существует такое понятие, как проскальзывание.

Представьте ситуацию: вы отправляете запрос на покупку без указания цены, и пока ваш запрос обрабатывают (пинг и т. д.), цена скачет на 100–500 пунктов вверх.

Вам нужна позиция по такой цене? Нет.

Поэтому при отправке запроса на покупку по рынку вы указываете текущую цену и допустимое проскальзывание.

 
Здравствуйте, форумчане! Подскажите пожалуйста как мне получить номера баров при смене тренда индикатора "supertrend". Заранее благодарен. 
 
Peter “Skilaton” #:
Здравствуйте, форумчане! Подскажите пожалуйста как мне получить номера баров при смене тренда индикатора "supertrend". Заранее благодарен. 

выбросить в помойку "supertrend"

это уже притча-во-языцях

 
Peter “Skilaton” #:
Здравствуйте, форумчане! Подскажите пожалуйста как мне получить номера баров при смене тренда индикатора "supertrend". Заранее благодарен. 
iBarShift()