Ошибка при вызове функции нахождения максимальной цены. - страница 2

 
Renat Akhtyamov:

не еще, а для того чтобы увидеть

либо присвоить значение функции переменной и делать с ней все что угодно

например

такой вопрос еще:
а каким образом в переменную result (внутри тела функции) вообще попадает какой то результат?
(в данном случае максимальной цены чарта)
ведь у нас же указано в условии что должно произойти в случае false в разрезе доступа к чарту:
 if(!ChartGetDouble(chart_ID,CHART_PRICE_MAX,sub_window,result))
        {
         //--- выведем сообщение об ошибке в журнал "Эксперты"
         Print(__FUNCTION__+", Error Code = ",GetLastError());
        }
И переменная result инициирована пустым значением:
double result=EMPTY_VALUE;

в случае true - ничего не указано что должно произойти с переменной - почему тогда она изменяет свое значение?
(из empty на какое то другое)

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Ценовые константы - Константы индикаторов - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Mike Kharkov:
такой вопрос еще:
а каким образом в переменную result (внутри тела функции) вообще попадает какой то результат?
(в данном случае максимальной цены чарта)
ведь у нас же указано в условии что должно произойти в случае false в разрезе доступа к чарту:
И переменная result инициирована пустым значением:

в случае true - ничего не указано что должно произойти с переменной - почему тогда она изменяет свое значение?
(из empty на какое то другое)

ну это уже сам MQL постарался, т.к. они придумали такое

можно объявить: double  result; вообще в самом верху кода, т.е. на глобальном уровне, тогда результат выполнения этой функции будет сразу понятен Вашему коду

но эту строчку нужно будет убрать:

double result=EMPTY_VALUE;
false там будет, если какие то параметры функции
ChartGetDouble

заданы не верно

а если

result!=false || result!=EMPTY_VALUE

здесь Ваше право - допишите сами

по умолчанию здесь переменная result просто присвоит результат выполнения и все, так получается

счас вот подумал, что в result лучше записать сразу true, т.е.:

 double result=true

if(!ChartGetDouble(chart_ID,CHART_PRICE_MAX,sub_window,result))
        {
         //--- выведем сообщение об ошибке в журнал "Эксперты"
         Print(__FUNCTION__+", Error Code = ",GetLastError());
        }

и потом при необходимости применить ветвление условия с помощью else

 double result=true

if(!ChartGetDouble(chart_ID,CHART_PRICE_MAX,sub_window,result))
        {
         //--- выведем сообщение об ошибке в журнал "Эксперты"
         Print(__FUNCTION__+", Error Code = ",GetLastError());
        }
else
{....}
код будет более понятным