Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Привет, Энрико,
Я нашел способ обработки функции Calculate, теперь включающий функцию гистерезиса, которая, похоже, работает, когда MA и индикатор TEMA пересекаются.
Однако я столкнулся с проблемой при работе с менеджером ордеров. Это происходит, когда я запускаю тестер стратегий для нескольких циклов во время оптимизации. Первые циклы работают нормально, но после нескольких циклов ордер выставляется на каждую свечу.
Здесь все работает нормально:
Но здесь менеджер ордеров начинает выставлять несколько ордеров:
Когда я отлаживал следующую часть кода COrderManager, оператор orders_total = OrdersTotal(); становится 1, когда он работает, но становится 0, когда он не работает, что приводит к тому, что условие if m_max_order>orders_total всегда оценивается как true.
Надеюсь, вы сможете помочь разобраться с этим.
С наилучшими пожеланиями/
Карл
Привет, Карл,
Я никогда раньше не сталкивался с этой проблемой. Метод OrdersTotal() просто подсчитывает количество активных объектов COrder. Если что-то не так с кодом стратегии, то это должно быть исправлено. Если нет, то, должно быть, есть какая-то проблема в том, как управляются (создаются/уничтожаются) экземпляры COrder и/или как они подсчитываются. Я дам вам знать, как только столкнусь с этой проблемой.
Привет, Энрико,
Гугление по проблемам mt5 OrdersTotal() показывает, что у других тоже есть проблемы. Например, тестер стратегий с этой стратегией. Набор экспертов также загружен, так что вы можете запустить тестер стратегий с теми же входными данными, что и я.
С наилучшими пожеланиями/
Karl
Привет, Энрико,
Гугление по проблемам mt5 OrdersTotal() показывает, что у других тоже есть проблемы. Например, тестер стратегий с этой стратегией. Набор экспертов также загружен, так что вы можете запустить тестер стратегий с теми же входными данными, что и я.
С наилучшими пожеланиями/
Карл
Спасибо за файлы, Карл. Я столкнулся с проблемой, которую вы описали.
В главном включаемом файле измените это (OnInit):
на это:
И это (OnDeinit):
на это:
По какой-то причине данные, сохраненные из предыдущих сессий, перезагружаются в будущие сессии. Поэтому проблема возникает только после начального бэктеста, иногда с некоторой утечкой памяти. Судя по моему тестированию, проблема существует только в режиме неттинга, но не в режиме хеджирования MT4 или MT5. Но дайте мне знать, если вы продолжите испытывать эту проблему. Приведенный выше код не позволяет загружать и сохранять данные во время бэктестинга и оптимизации (я упустил это из виду при написании последней статьи).
Кроме того, что касается функции OrdersTotal() в MT5, она подсчитывает только отложенные ордера (не эквивалент OrdersTotal в MT4). Код в TradeOpen для OrderManager:
использует метод OrdersTotal() класса, который является просто оберткой метода COrders (одноименного). COrders расширяет CArrayObj, поэтому на самом деле он не использует родную для MT5 функцию OrdersTotal(). Вышеприведенное также эквивалентно использованию:
С другой стороны, если мы используем:
, это явно вызывает родную функцию MT5. Возможно, вы уже знакомы с этим, но на всякий случай для тех, кто столкнется с подобной проблемой.
Спасибо Энрико. Проблема исчезла.
/Карл
Привет, Энрико,
На Github по адресу iceron/MQLx есть уведомление об изменении m_new_signal и m_new_signal_close.
m_signal_new может быть изменен методом void CSignalsBase::NewSignal(const bool value), но для изменения m_new_signal_close нет никаких методов.
Не могли бы вы подробнее рассказать об использовании m_new_signal и m_new_signal_close?
С наилучшими пожеланиями
Карл
Работают ли эти методы с вашим MT5Bridge?
Здравствуйте, мастера!
У меня возникла серьезная проблема с пониманием "подсчета свечей" (Первая, вторая, третья = idx, idx++, ...) в следующем коде Mql Signal, который относится к классу SignalAC.
Может ли кто-нибудь помочь проникнуть в число idx при движении в кодах вниз?
Заранее спасибо.