Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Модераторов прошу вынести все обсуждения в отдельную ветку. При чем таких веток с обсуждениями преимуществ ООП уже с десяток наверно.
Ещё один вопрос: В чём разница между объявлением переменной, получения\создания указателя, созданием экземпляра объекта. Точней не сама разница, а в каких случаях что лучше применять. Например для открытия позиции достаточно объявить переменную
А в каких случаях правильней использовать указатель, в каких случаях без экземпляра объекта не обойтись.
Какие плюсы и минусы имеют тот или иной способ?
1. Если объект в глобальной области видимости, это статический объект. Он размешается в статической памяти и существует пока существует программа.
Его конструктор вызывается перед вызовом первой функции программы. Деструктор вызывается после OnDeinit().
Например так:
Или даже так:
Он будет уничтожен при выходе из блока. При уничтожении вызывается деструктор.
Так как размер стека обычно ограничен, в стеке нельзя размещать очень большие объекты.
Пример:
В этом примере создаются две переменные. Объект класса MyClass в динамической памяти.
И переменная pObject - указатель на Myclass. Ей присваивается адрес объекта в динамической памяти.
При выходе из функции переменная pObject будет уничтожена, но объект в динамической памяти останется.
Для того чтобы была возможность его удалить, нужно где-то сохранить его адрес.
При их создании и уничтожении, также вызываются конструктор и деструктор.
Доступ к динамическим переменным обычно занимает больше времени чем к локальным.
Всё это Вы должны учитывать, когда создаёте какой-то объект.
1. Если объект в глобальной области видимости, это статический объект. Он размешается в статической памяти и существует пока существует программа.
...
Я правильно понимаю, что при таком варианте
не учитывая предупреждение компилятора, позиция может открыться с магиком не 123 ?
То-есть в функции OnTick создастся новый объект и в нём магик не будет равен 123.
Я правильно понимаю, что при таком варианте
не учитывая предупреждение компилятора, позиция может открыться с магиком не 123 ?
То-есть в функции OnTick создастся новый объект и в нём магик не будет равен 123.
SetExpertMagicNumber
Я правильно понимаю, что при таком варианте
не учитывая предупреждение компилятора, позиция может открыться с магиком не 123 ?
То-есть в функции OnTick создастся новый объект и в нём магик не будет равен 123.
Да, правильно. Это два разных объекта. Так как локальный объект trade в OnTick имеет то же самое название, что и глобальный объект, то в функции OnTick возможен доступ только к нему. Глобальный объект оказался вне области видимости. Поэтому для локального объекта trade MagicNumber еще не установлен.
Я правильно понимаю, что при таком варианте
не учитывая предупреждение компилятора, позиция может открыться с магиком не 123 ?
То-есть в функции OnTick создастся новый объект и в нём магик не будет равен 123.
Всё точно так же, как и с переменными.
И фокус:
А зачем тогда вообще нужен этот SetExpertMagicNumber ?
Устанавливает объекту торгового класса магик. Объектов класса CTrade может быть не один на всю программу как это принято делать сейчас в кодобазе. Это же объект. И объект этот служит для проведения торговых операций. И вовсе не обязательно делать на всю программу один объект, и каждый раз при необходимости смены магика, проскальзывания и других устанавливаемых при инициализации параметров, их заново переустанавливать. Можно для каждого их торгуемых символов создать свой торговый объект, задать ему необходимые параметры в соответствии со свойствами символа, которому принадлежит этот конкретный объект класса CTrade, и спокойно торговать получая указатель на нужный объект нужного торгового класса от нужного символа, и не переопределяя при этом установленные параметры.
А можно для работы с иным магиком задать отдельный торговый объект с соответствующими настройками. Ведь магиков-то может быть и несколько в одном эксперте.
Всё зависит от понимания того, что, и как мы используем.
Устанавливает объекту торгового класса магик. Объектов класса CTrade может быть не один на всю программу как это принято делать сейчас в кодобазе. Это же объект. И объект этот служит для проведения торговых операций. И вовсе не обязательно делать на всю программу один объект, и каждый раз при необходимости смены магика, проскальзывания и других устанавливаемых при инициализации параметров, их заново переустанавливать. Можно для каждого их торгуемых символов создать свой торговый объект, задать ему необходимые параметры в соответствии со свойствами символа, которому принадлежит этот конкретный объект класса CTrade, и спокойно торговать получая указатель на нужный объект нужного торгового класса от нужного символа, и не переопределяя при этом установленные параметры.
А можно для работы с иным магиком задать отдельный торговый объект с соответствующими настройками. Ведь магиков-то может быть и несколько в одном эксперте.
Всё зависит от понимания того, что, и как мы используем.
В таком случае это
SetExpertMagicNumber Устанавливает идентификатор эксперта
некорректное описание?
Я так понимал, что если устанавливается для эксперта, то любые ордера/позиции должны иметь этот магик. ((