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

 
ANDREY #:

Я предлагаю вставить в мой код нужный код из класса  CTrade благодаря которому в функцию открытия ордера в моем коде  будет вставлен параметр СЛ  и ордер  закроется по СЛ. Параметр СЛ в функция открытия ордера ,  тоже пожалуйста вставте для полной ясности.
Спасибо

А самому почитать класс Ctrade не судьба?


Или посмотреть какие параметры можно вставить кроме лота


 
Valeriy Yastremskiy #:
В метаэдитор ставите курсор на нужный непонятный оператор и нажимаете ф1.  Про идентификатор не понял. В функцию нельзя передать не определенную переменную, без значения. По ссылке если передавать то переменная должна иметь значение и потом в функции может быть перерасчитана.

Это как? Я что-то не понял что вы имели ввиду…

 
ANDREY #:

 А я могу в коде создать такую переменную и пользоваться ею? 

Можете

const int magic = 123;

И нигде в коде не сможете изменить значение переменной. Компилятор отловит это и выдаст ошибку.

 
Alexey Viktorov #:

А самому почитать класс Ctrade не судьба?


Или посмотреть какие параметры можно вставить кроме лота


Спасибо. Читал несколько раз , но пока смысл написанного до меня или  не доходит, или доходит неправильно. Надеюсь , что теперь с Вашей помощью дойдет...

 
Alexey Viktorov #:

Можете

И нигде в коде не сможете изменить значение переменной. Компилятор отловит это и выдаст ошибку.

Тогда получается ,что все имена переменных превращенных в константы , которые являются параметрами функций по умолчанию  имеют обязательное обозначение const  перед своим объявлением? По аналогии с input  и extern ?  То есть,  const превращает переменную в константу? И в программе обозначение   const  и само объявление и инициализация этих переменных нигде не прописывается?  const и значение  спрятано внутри программы и тот кто пишет код mql   не видит в коде ни const , ни значение переменной ? А видит только ее имя из заглавных букв среди параметров той или иной функции?

 
Alexey Viktorov #:

Это как? Я что-то не понял что вы имели ввиду…

Ну тут с допущениями конечно, есть значения по умолчанию конечно. Но по логике всего программирования, если переменная не имеет определенного значения, ее нельзя передать в функцию.

 
ANDREY #:

Тогда получается ,что все имена переменных превращенных в константы , которые являются параметрами функций по умолчанию  имеют обязательное обозначение const  перед своим объявлением? По аналогии с input  и extern ?  То есть,  const превращает переменную в константу? И в программе обозначение   const  и само объявление и инициализация этих переменных нигде не прописывается?  const и значение  спрятано внутри программы и тот кто пишет код mql   не видит в коде ни const , ни значение переменной ? А видит только ее имя из заглавных букв среди параметров той или иной функции?

Переменные

Спецификаторы доступа

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

Спецификатор const объявляет переменную константой, и не позволяет изменять значение этой переменной в процессе выполнения программы. Допускается однократная инициализация переменной при ее объявлении.

Это из справки мт4.

Переменные - Основы языка - Справочник MQL4
Переменные - Основы языка - Справочник MQL4
  • docs.mql4.com
Переменные - Основы языка - Справочник MQL4
 
ANDREY #:

Спасибо. Читал несколько раз , но пока смысл написанного до меня или  не доходит, или доходит неправильно. Надеюсь , что теперь с Вашей помощью дойдет...

Вот вам доказательство того, что написание примеров кода абсолютно бесполезная помощь. Ведь нет никакой разницы что читать, код класса или чей-то код и не факт, что правильный. Главное понимать что пишешь и что должен получить в итоге. А получив, проверяешь и, убедившись что результат удовлетворяет, применять это и в других местах своего кода.

 
ANDREY #:

Спасибо

Какие параметры передаваемые в функцию являются  ИДЕНТИФИКАТОРАМИ? Какой признак по которому можно отличить параметр идентификатор от параметра  НЕидентификатора?
Как я понял ИДЕНТИФИКАТОР - это переменная превращенная в константу. Все переменные превращенные в константу являются идентификаторами? И имена всех этих переменных состоят только из заглавных букв? А что идентификаторы идентифицируют? Например  идентификатор ОР_BYU имеет значение 1. Это значит что где то в программе есть список типов ордеров каждому из которых соответствует определенная цифра? И если программа встретит на своем пути имя переменной  ОР_BYU и получит от нее 1 , программа сравнит 1 с другими номерами типов ордеров , и как только произойдет совпадение , программа выберет тип ордера с цифрой 1. И это будет ордер  BYU И по этому алгоритму действует любой параметр идентификатор, передаваемый в функцию?

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

И они не всегда обязательно константны. ТФ, типы ордеров, ответы на исполнение ордеров понятно константны, а рыночное окружение нет. 

 
ANDREY #:

А почему же тогда в СПРАВОЧНИКАХ 4 и 5 эти переменные явно не упоминаются и уж тем более не описываются. Тогда как переменные других типов описываются очень подробно.
И это труднообъяснимо потому что переменные конст. употребляются очень часто, почти в каждом коде , в отличии например от типа переменной с плавающей точкой , которая встречается редко, но описывается в Справочниках детально.

https://book.mql4.com/ru/basics/vars

https://www.mql5.com/ru/docs/constants

Константы и переменные - Основы языка - Учебник по MQL4
Константы и переменные - Основы языка - Учебник по MQL4
  • book.mql4.com
Константы и переменные - Основы языка - Учебник по MQL4
Причина обращения: