а как реализовано переключение трендовой от флетовой стратегий?
В смысле ? У меня никаких переключений.
Каждая ТС - это просто объект, наследник базового класса-шаблона CEAPartsFactoryT (темплейт фабрики частей эксперта), в своем конструкторе она прописывается в глобальный статический массив. Соответственно, в приведенном примере, на этапе начальной инициализации - в статическом массиве оказываются четыре указателя.
Далее, общий "каркас" советника в стандартной функции OnInit() просматривает этот массив, проверяет, чтобы указатели в нем указывали на существующие объекты-ТС, проверяет, чтобы не повторялись магики, и вызывает функцию OnInit() у каждого из указателей.
Затем, в стандартной функции OnTick() - этот общий "каркас" вызывает у каждого указателя функцию OnTick().
По этой функции каждая ТС анализирует ситуацию, и выдает запросы на совершение торговых действий - складывает их в очередь. После этоого общий шаблон - последовательно исполняет их, очищая очередь.
Соответственно, отдельные ТС друг про друга "не знают". У них есть возможность выяснить это, я ее предусмотрел, но пока ни разу не пользовался - нужды не было.
В приведенном коде - две трендовых и две флетовых ТС работают совершенно независимо. "Переключения", как такового, нет - каждый OnTick() проходит во все четыре ТС, и уже сами ТС смотрят, когда им работать, а когда нет. В теории может быть открыто куча одинаковых сделок, причем половина будет открыта трендовыми, а другая - флетовыми ТС.
Реально - каждая ТС оптимизируется отдельно, и если ограничение по времени показывает улучшение результатов - оно будет задействовано. Но, опять же - совершенно независимо для всех четырех (или сколько их там будет) ТС.
Каждая ТС - это просто объект, наследник базового класса-шаблона CEAPartsFactoryT (темплейт фабрики частей эксперта), в своем конструкторе она прописывается в глобальный статический массив. Соответственно, в приведенном примере, на этапе начальной инициализации - в статическом массиве оказываются четыре указателя.
Далее, общий "каркас" советника в стандартной функции OnInit() просматривает этот массив, проверяет, чтобы указатели в нем указывали на существующие объекты-ТС, проверяет, чтобы не повторялись магики, и вызывает функцию OnInit() у каждого из указателей.
Затем, в стандартной функции OnTick() - этот общий "каркас" вызывает у каждого указателя функцию OnTick().
По этой функции каждая ТС анализирует ситуацию, и выдает запросы на совершение торговых действий - складывает их в очередь. После этоого общий шаблон - последовательно исполняет их, очищая очередь.
Соответственно, отдельные ТС друг про друга "не знают". У них есть возможность выяснить это, я ее предусмотрел, но пока ни разу не пользовался - нужды не было.
В приведенном коде - две трендовых и две флетовых ТС работают совершенно независимо. "Переключения", как такового, нет - каждый OnTick() проходит во все четыре ТС, и уже сами ТС смотрят, когда им работать, а когда нет. В теории может быть открыто куча одинаковых сделок, причем половина будет открыта трендовыми, а другая - флетовыми ТС.
Реально - каждая ТС оптимизируется отдельно, и если ограничение по времени показывает улучшение результатов - оно будет задействовано. Но, опять же - совершенно независимо для всех четырех (или сколько их там будет) ТС.
Мне интересна эта тема. Но к сожелению не так хорошо знаком с програмированием. А у вас шаблона не найдется для общего каркаса?
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
а как реализовано переключение трендовой от флетовой стратегий?
Тебе-то зачем? Ну, автоматом ))) Можно кнопочкой
а как реализовано переключение трендовой от флетовой стратегий?
В смысле ? У меня никаких переключений.
Каждая ТС - это просто объект, наследник базового класса-шаблона CEAPartsFactoryT (темплейт фабрики частей эксперта), в своем конструкторе она прописывается в глобальный статический массив. Соответственно, в приведенном примере, на этапе начальной инициализации - в статическом массиве оказываются четыре указателя.
Далее, общий "каркас" советника в стандартной функции OnInit() просматривает этот массив, проверяет, чтобы указатели в нем указывали на существующие объекты-ТС, проверяет, чтобы не повторялись магики, и вызывает функцию OnInit() у каждого из указателей.
Затем, в стандартной функции OnTick() - этот общий "каркас" вызывает у каждого указателя функцию OnTick().
По этой функции каждая ТС анализирует ситуацию, и выдает запросы на совершение торговых действий - складывает их в очередь. После этоого общий шаблон - последовательно исполняет их, очищая очередь.
Соответственно, отдельные ТС друг про друга "не знают". У них есть возможность выяснить это, я ее предусмотрел, но пока ни разу не пользовался - нужды не было.
В приведенном коде - две трендовых и две флетовых ТС работают совершенно независимо. "Переключения", как такового, нет - каждый OnTick() проходит во все четыре ТС, и уже сами ТС смотрят, когда им работать, а когда нет. В теории может быть открыто куча одинаковых сделок, причем половина будет открыта трендовыми, а другая - флетовыми ТС.
Реально - каждая ТС оптимизируется отдельно, и если ограничение по времени показывает улучшение результатов - оно будет задействовано. Но, опять же - совершенно независимо для всех четырех (или сколько их там будет) ТС.
В смысле ? У меня никаких переключений.
Каждая ТС - это просто объект, наследник базового класса-шаблона CEAPartsFactoryT (темплейт фабрики частей эксперта), в своем конструкторе она прописывается в глобальный статический массив. Соответственно, в приведенном примере, на этапе начальной инициализации - в статическом массиве оказываются четыре указателя.
Далее, общий "каркас" советника в стандартной функции OnInit() просматривает этот массив, проверяет, чтобы указатели в нем указывали на существующие объекты-ТС, проверяет, чтобы не повторялись магики, и вызывает функцию OnInit() у каждого из указателей.
Затем, в стандартной функции OnTick() - этот общий "каркас" вызывает у каждого указателя функцию OnTick().
По этой функции каждая ТС анализирует ситуацию, и выдает запросы на совершение торговых действий - складывает их в очередь. После этоого общий шаблон - последовательно исполняет их, очищая очередь.
Соответственно, отдельные ТС друг про друга "не знают". У них есть возможность выяснить это, я ее предусмотрел, но пока ни разу не пользовался - нужды не было.
В приведенном коде - две трендовых и две флетовых ТС работают совершенно независимо. "Переключения", как такового, нет - каждый OnTick() проходит во все четыре ТС, и уже сами ТС смотрят, когда им работать, а когда нет. В теории может быть открыто куча одинаковых сделок, причем половина будет открыта трендовыми, а другая - флетовыми ТС.
Реально - каждая ТС оптимизируется отдельно, и если ограничение по времени показывает улучшение результатов - оно будет задействовано. Но, опять же - совершенно независимо для всех четырех (или сколько их там будет) ТС.
у меня для этих целей создан класс расчета канала и класс торговли.
создаю сколько надо копий или вызываю разные стратегии. для каждой вызываю свой торговый класс. И все отлично работает.