Особенности языка mql5, тонкости и приёмы работы - страница 225
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
что это значит? можно мысль развернуть?
выдалось время проверить: да фокус неудался, ChartID()=12345 для визуального и невизуального..(такой вот константный ChartID тестера)
зато ChartGetInteger(ChartID(),CHART_WIDTH_IN_PIXELS) выдаёт честную -1 если экрана нет. Можно по ней определять физику - есть куда что выводить или нету. Потому как флагов наплодили много, а что там на VPS вообще неизвестно
Ещё внезапный нюанс MQL - виртуальные методы не вызываются из конструкторов.
в коде
вот так вот нельзя :-) Из конструктора будет вызываться OnAttach родительского класса ; А при обычном обращении - дочернего.
это нельзя понять, это надо запомнить :-)
Ещё внезапный нюанс MQL - виртуальные методы не вызываются из конструкторов.
в коде
вот так вот нельзя :-) Из конструктора будет вызываться OnAttach родительского класса ; А при обычном обращении - дочернего.
это нельзя понять, это надо запомнить :-)
Почему же нельзя понять? Инициализация указателя на метод в таблице виртуальных методов происходит в конструкторе. Сначала вызывается конструктор родительского класса, потом наследника. Соответственно, при выполнении тела конструктора родительского класса, в таблице виртуальных методов указатель указывает еще на адрес метода базового класса.
PS. Это к вечному холивару на тему, надо ли учить C++. Если именно учить, докапываясь до сути вещей, а не зубрить, то такие вещи само собой разумеющимися становятся)
Почему же нельзя понять? Инициализация указателя на метод в таблице виртуальных методов происходит в конструкторе. Сначала вызывается конструктор родительского класса, потом наследника. Соответственно, при выполнении тела конструктора родительского класса, в таблице виртуальных методов указатель указывает еще на адрес метода базового класса.
PS. Это к вечному холивару на тему, надо ли учить C++. Если именно учить, докапываясь до сути вещей, а не зубрить, то такие вещи само собой разумеющимися становятся)
после скриптов, где всё можно, несколько неожиданно что "конструктор не может быть виртуальным" :-)
после скриптов, где всё можно, несколько неожиданно что "конструктор не может быть виртуальным" :-)
Для Вашей "беды", есть вот такое решение: https://habr.com/ru/post/64369/
PS. Не совсем то, конечно, но как общее направление мысли
после скриптов, где всё можно, несколько неожиданно что "конструктор не может быть виртуальным" :-)
неожиданно?
Представьте, что вызвался бы HiLow::OnAttach. Если бы в HiLow были новые поля и OnAttach бы их считывал, то было бы "использование неинициализированных переменных" (т.к. конструктор HiLow еще не начала выполняться).
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2017.09.22 20:43
POSITION_TIME_UPDATE имеет отношение только в изменению лота позиции. Например, частичное закрытие позиции на любом типе счета или доливка на неттинге.
Изменения же SL/TP-уровней на POSITION_TIME_UPDATE не влияют.
Перефразировав, на POSITION_TIME_UPDATE влияют только модификации, имеющие отражение в Истории торгов - сделки. SL/TP-уровни к таким модификациям не относятся, поэтому не влияют.
Да, действительно, на реальном счёте так и есть.
Но собрав советник, пробую его в тестере, и выясняется что в тестере изменение SL/TP-уровней влияют на POSITION_TIME_UPDATE
Вот выдержка из логов.
Здесь жёлтым выделил время открытия позиции, а затем (на следующем тике) красным время модификации (выставления) SL и TP к ней. Далее принтом проверяю время POSITION_TIME и POSITION_TIME_UPDATE - оно разное.
Там где модификация SL и TP укладывается в ту же секунду, время POSITION_TIME и POSITION_TIME_UPDATE разумеется одинаковое.
Спасибо за информацию!
При частичном исполнении отложек меняется поле ORDER_TIME_SETUP_MSC.
Как следствие, DEAL_TIME_MSC может быть меньше ORDER_TIME_SETUP_MSC своего ордера.
Пример.