Особенности языка mql5, тонкости и приёмы работы - страница 61
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
я сейчас столкнулся с проблемой, когда в истории более 1000 сделок и при вызове функции обработки истории, например посчитать прибыль истории. + добавить прибыль текущих сделок - информация на графике начинает подтормаживать и подвисает сам терминал. Т.е. котировки приходят с задержкой.
Без кода можно только гадать.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
Alexey Navoykov, 2017.07.21 17:04
Отсутствие множественного наследования в MQL конечно удручает. Однако можно выкрутиться подручными способами: шаблонами и макросами - куда ж без них )
Вот такой вариант сваял. Все исходные классы должны объявляться в виде шаблонов, задающих родительский класс.
Конечно тут есть нюансы, связанные с тем, что классы наследуются последовательно (в заданном нами порядке), а не параллельно (как в настоящем множественному наследовании). В частности, они будут иметь разные приоритеты при возникновении перегрузки. Кроме того, если один и тот же шаблонный класс участвует в цепочке наследования несколько раз, то это будут совершенно разные классы, никак не связанные друг с другом. Поэтому тут надо быть осторожным. Но с интерфейсами проблем нет, можно наследовать без ограничений.
А если без объявления в виде шаблонов?
Например, имеем две готовых самодостаточных библиотеки:
class CLib1 : public CClass1 { };и
class CLib2 : public CClass2 { };
Нужно в классе программы сделать так, чтобы было такое наследование:
CLib1--> CLib2 --> CProgram так, чтобы в классе CProgram были доступны обе библиотеки. И, соответственно, в CLib2 была доступна библиотека CLib1
При этом как-то изменять код обеих библиотек нельзя.
Возможно такое?
При множественном наследовании это было бы так наверное:
class CProgram : public CLib1,CLib2 { };
А если без объявления в виде шаблонов?
Например, имеем две готовых самодостаточных библиотеки:
class CLib1 : public CClass1 { };и
class CLib2 : public CClass2 { };
Нужно в классе программы сделать так, чтобы было такое наследование:
CLib1--> CLib2 --> CProgram так, чтобы в классе CProgram были доступны обе библиотеки. И, соответственно, в CLib2 была доступна библиотека CLib1
При этом как-то изменять код обеих библиотек нельзя.
Возможно такое?
При множественном наследовании это было бы так наверное:
class CProgram : public CLib1,CLib2 { };
Вы ничего не потеряете, если сделаете так:
class CProgram { CLib1 lib1; CLib2 lib2; };
Вы ничего не потеряете, если сделаете так:
Наверное, лучший способ получить данные от асинхронных Copy-функций (CopyRates, CopyTicks и т.д.) - через EventChartCustom.
Особенно актуально для индикаторов.
Есть возможность узнать, что произошла смена торгового сервера, а не просто счета - AccountInfoString(ACCOUNT_SERVER) в OnDeinit (советника, не индикатора) вернет новый торговый сервер.
Памятка
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Моё недовольство к тестеру стратегий. к разрабочикам MQL
fxsaber, 2017.12.04 09:11
Результат
Есть целый класс индикаторов, которые накладывают на график цены графики цен других символов. Сделаны они единообразно - через индикаторные буферы.
Однако, в MT5 имеется замечательный OBJ_CHART, который позволяет реализовать эту задачу гораздо красивее и без индикаторных буферов.
Например, Вы можете накидывать любой индикатор и тут же видеть, как он выглядит на другом символе.
Схема рабы - несколько чартов отображаются в виде фона основного чарта.
Например, Вы можете накидывать любой индикатор и тут же видеть, как он выглядит на другом символе.
Схема рабы - несколько чартов отображаются в виде фона основного чарта.