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

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

Доброе утро.

Когда вставляете кусок кода, пользуйтесь кнопочкой </>, будет гораздо читабельнее, выше я Вам писал, что "так лучше прикреплять".

В посте 8518 я прислал Вам Ваш же код, в который добавил уже выключатель. Нужно только разнести первую строчку во входящие переметры, вторую в ОнТик.

 
Sergey Voytsekhovsky:

Я конечно не очень подхожу на роль советчика, но задача вроде не сложная.

Обратите внимание на то что я не влезаю в сам Ваш код, там многое очень спорно, даже для меня(чайника), начиная с того что Ваша функция имеет тип void. Этот тип используется либо для указания того, что функция не возвращает значения, либо в качестве параметра функции обозначает отсутствие параметров. А у Вас в конце кода - return(Exist);

Объявите входящую переменную, пропишите её как параметр для Вашей функции и выходите из функции если во "входящих" 'этой переменной будет присвоено значение Ложь.

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

int n = 0;

int OnInit()
 {
  f();
 }

void OnTick()
 {
  Print(n);
  f();
 }

void f()
 {
  n += n*3+12;
 }
 
Priffekt:
Добрый день, все значения я поменял,но меня интересует возможность отключения самой функции в настройках эксперта.

Если нужна возможность отключения какой-то функции в настройках советника, то надо поставить переменную-флаг

input bool flag = true; // флаг отключения

void OnTick()
 {
  if(flag)
   f();
 }

void f()
 {
  // что-то выполняем
 }
Функция f() будет выполнена только при условии что flag == true;
 
Alexey Viktorov:

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

Странно, вообще-то это цитата из справочника MQL5, полностью выглядит так: 

"Тип void и константа NULL

Синтаксически тип void является фундаментальным типом наравне с типами char, uchar, bool, short, ushort, int, uint, color, long, ulong, datetime, float, double и string. Этот тип используется либо для указания того, что функция не возвращает значения, либо в качестве параметра функции обозначает отсутствие параметров.

Предопределенная константная переменная NULL имеет тип void. Она может быть присвоена переменным любых других фундаментальных типов без преобразования. Также допускается сравнение переменных фундаментальных типов со значением NULL".


А цитировал я этот кусок текста потому-что у автора топика функция имеет тип void, тоесть не должна ничего возвращать, а возвращает  "...return(Exist);". Что наверное не правильно, как вы думаете?

Про обработку данных вообще речи не было. Собственно допускаю что где-то неправ, ибо только постигаю азы, в любом случае спасибо за информацию.

 
 
 
Alekseu Fedotov:

"...return(Exist);",

возвращаемое значение, функцией

как то так
 

Да, Вы правы, я был невнимателен и отнес этот ретурн к предыдущей (выше которая) функции.

 
Alexey Viktorov:

Это не о том... Я просто не внимательно прочёл выделенное.

Выделенное viod означает отсутствие параметров. Но писать это не обязательно. Нет параметров, ну и не надо...

Да, вы правы, я тоже был невнимателен.

 

Вопрос к знатокам плиз. 

Предъистория - пытаюсь написать советник, нашёл скрипт, который меня устраивает по функционалу. Хочу из него слепить функцию, готовлю окружение, естественно есть пересечения в стандартных библиотеках. Когда создаются объекты классов, они естественно немного по разному называются.Хочу понять чем отличаются вот такие записи и не несёт ли значёк " * " в себе какого-либо тайного смысла, можно ли их переименовать в единый вид внутри будующих функций ???

CTrade         trade;
CPositionInfo  apos;
CSymbolInfo    asymbol;


CTrade         *m_trade;
CSymbolInfo    *m_symbol;
CPositionInfo  *m_position_info; 

 

Помогите, как узнать первую координату времени линии тренда?

price = NormalizeDouble(ObjectGetValueByShift("trend",0),Digits);//ЦЕНА НА ТЕКУЩЕМ
Причина обращения: