Обсуждение статьи "Разрабатываем мультивалютный советник (Часть 22): Начало перехода на горячую замену настроек"

 

Опубликована статья Разрабатываем мультивалютный советник (Часть 22): Начало перехода на горячую замену настроек:

Если мы взялись за автоматизацию проведения периодической оптимизации, то надо позаботиться и об автоматическом обновлении настроек советников, которые уже работают на торговом счёте. Также это должно позволять запускать советник в тестере стратегий и менять его настройки в рамках одного прохода.

Давайте попробуем подробнее описать словами, чего мы хотим достичь. В идеале работа системы должна выглядеть примерно так:

  1. Генерируется проект с текущей датой в качестве даты окончания периода оптимизации. 
  2. Проект запускается на конвейере. Его выполнение занимает некоторое время от нескольких дней — до нескольких недель.
  3. Результаты загружаются в итоговый советник. Если итоговый советник ещё не торговал, то он запускается на реальном счёте. Если он уже и так работал на счёте, то его параметры заменяются на новые, полученные после завершения прохождения конвейера последним проектом.
  4. Переходим к пункту 1.

Рассмотрим каждый из этих пунктов. Для реализации первого пункта у нас уже есть советник-скрипт генерации проекта из прошлой части, в котором мы можем с помощью параметров выбрать дату окончания оптимизации. Но запускается он пока только вручную. Это можно исправить, добавив дополнительный этап в конвейер выполнения проекта, генерирующий новый проект по окончанию всех остальных этапов текущего проекта. Тогда вручную мы можем запустить его только в первый раз.

Для второго пункта нам достаточно иметь терминал с установленным советником Optimization.ex5, у которого в параметрах указана нужная база данных. Как только в ней появятся новые невыполненные задачи проектов, они будут запущены на выполнение в порядке очереди. Последний этап, идущий перед этапом создания нового проекта, должен в каком-то виде передавать результаты оптимизации проекта итоговому советнику.

Третий пункт самый сложный. Мы уже сделали один вариант передачи параметров итоговому советнику, но он пока что требует выполнения ручных операций: необходимо запустить отдельный советник, выполняющий экспорт библиотеки параметров в файл, затем скопировать этот файл в папку проекта, а потом ещё и перекомпилировать итоговый советник. Хотя выполнение этих операций мы теперь уже можем переложить на программный код, сама схема начинает казаться излишне громоздкой. Хотелось бы сделать что-то более простое и надёжное.

Автор: Yuriy Bykov