В роботах, особенно с большим кол-вом настроек, бывает, требуется как-то визуально выделить некоторые Параметры и/или разделить их на группы. В OsEngine имеется такая возможность, и сегодня мы рассмотрим доступный функционал, как он выглядит и как им пользоваться.
Знакомиться с функционалом будем на примере робота VisualSettingsParametersExample. Открываем проект OsEngine в Visual Studio и находим файл в папке RobotsTechSamples:
Открываем робота, смотрим Конструктор:
Выделены 2 области:
1. Привычное создание Параметров. Здесь отдельные настройки для Лонга и Шорта.
2. Настройки оформления Параметров (цвета и границы).
Подробнее нас интересует 2 область. Тут происходит настройка оформления Параметров.
Для этого используются соответствующие конкретной настройке методы:
SetForeColorParameter() – устанавливает цвет текста Параметра;
SetSelectionColorParameter() – устанавливает цвет выделенного текста Параметра;
SetBorderUnderParameter() – устанавливает границу под Параметром.
Все эти методы принимают имя Параметра (string), цвет (System.Drawing.Color), а третий еще и толщину границы (int). Вызываются они у ParamGuiSettings из любого места в роботе, ниже в коде посмотрим как.
Еще есть метод обновления окна Параметров RePaintParameterTables(), его применение для визуального оформления рассмотрим в конце статьи.
С помощью вышеупомянутых методов настраиваем вид Параметров. Первая сверху зона – настраиваем Параметры, относящиеся к Лонгу (цвет текста и цвет выделенного текста). Ниже – аналогичным образом для Шорта другие цвета. А в третьей зоне устанавливаем границы под Параметрами для дополнительного разделения на группы.
Настроили, теперь посмотрим, как это все выглядит. Запускаем OsEngine, находим робота и добавляем:
Добавили. Открываем Параметры:
Видим наше визуальное оформление. Настройки Лонг и Шорт разделены границами на блоки, и Параметры в каждом блоке имеют свои оттенки.
Теперь про Параметр WeightBidAsk. Параметр придуман для примера, практического смысла в нем может не быть. Это вес бидов или асков в стакане относительно суммы бидов и асков (в контрактах/лотах) в процентах.
Посмотрим, как в режиме реального времени обновлять и раскрашивать этот Параметр. Будем считать суммы бидов и асков и смотреть чего больше. Если больше бидов, то будем красить Параметр в зеленый цвет, если асков – в красный. И выводить его % от суммы бидов и асков.
Идем в обработчик события обновления стакана:
На входе некоторые проверки, взятие снимка стакана, и далее по пунктам разбираем:
1. Проверка интервала времени, пройденного с момента предыдущего обновления. Она нужна для корректной работы обновления, для которого метод RePaintParameterTables() не следует вызывать чаще, чем каждые 100 миллисекунд. Будьте аккуратнее с этим.
2. Считаем суммы бидов и асков в стакане.
3. Выполняем проверки, чего больше — бидов или асков. В зависимости от результата устанавливаем значение Параметру WeightBidAsk и задаем нужный цвет. Далее вызываем метод RePaintParameterTables(), он обеспечивает обновление Параметров в окне, благодаря чему значение и цвет меняются в режиме реального времени.
4. Фиксируем время обновления, чтобы работала логика в пункте №1.
Посмотрим, как это выглядит. Подключаем робота к бирже, выбираем какой-нибудь инструмент, открываем окно Параметров:
Видим в Параметре WeightBidAsk значение 76,5% зеленым цветом – это значит, что 76,5% от суммы всех бидов и асков составляют биды. Значение и цвет обновляются в реальном времени.
Вот и всё. Теперь знаем, как можно оформить Параметры на свой вкус.
Спасибо за внимание! Прибыльных алгоритмов и всего доброго!