Обсуждение статьи "Непрерывная скользящая оптимизация (Часть 7): Стыковка логической части автооптимизатора с графикой и управление графикой из программы"

 

Опубликована статья Непрерывная скользящая оптимизация (Часть 7): Стыковка логической части автооптимизатора с графикой и управление графикой из программы:

Данная статья является предпоследней и описывает стыковку графической части программы автооптимизатора с его логической частью. В ней рассматривается процесс запуска и оптимизации, начиная от нажатия кнопки до переадресации менеджеру оптимизаций.

Как уже неоднократно говорилось, ViewModel является стыковочной прослойкой между графической частью приложения и программной реализацией логики. По сути, она является программным представлением графики, где реализованы обращения к логике приложения и реакция графики на коллбэки логической части приложения. Соответственно, каждому изменяемому полю графической части приложения соответствует публичное свойство из части ViewModel. Данные свойства могут быть, как только лишь геттерами, что исключает возможность их изменения из графики, так и сеттерами, что позволяет перезаписать объект, кроющийся за данным свойством. Мы уже подробно рассматривали технологию связки данных в предыдущих частях, посему здесь лишь приведем пару примеров. 

Связка текстовых полей осуществляется при помощи свойств с доступом, как для записи, так и для чтения данных. Рассмотрим в качестве примера поле, в котором указывается имя актива, на котором будет производиться оптимизация. XAML разметка данного поля крайне проста.

    

<TextBox Width="100"          IsEnabled="{Binding EnableMainTogles, UpdateSourceTrigger=PropertyChanged}"          Text="{Binding AssetName}"/>

Помимо задания ширины текстового окна мы видим поля IsEnabled и Text. Первое из них отвечает за доступность поля для редактирования. Если оно выставлено в режим true, то поле становится доступным для редактирования, если же false, то соответственно заблокировано. Свойство Text содержит сам текст, введенный в данное поле. Далее напротив каждого из них мы видим конструкцию в фигурных скобках. Все что находится в ней, задает связь объекта с определенным публичным свойством из класса ViewModel, указанным после параметра "Binding".

Автор: Andrey Azatskiy

 

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

Пользовательский критерий оптимизации, вижу, пока не появился и высота в календаре.... Раз уж OnTester() используется в обязательном порядке, можно было вообще обойтись только пользовательским критерием. Ну и в очередной раз хочу позудеть насчёт автоматизации ввода периодов тестирования. У меня практика показывает что тестовую форвард-оптимизацию лучше проводить на периодах по 3-5 недель, на нескольких инструментах. Писать вручную все периоды на каждый кусок - занятие не для слабонервных. Не трудно создать скрипт средствами MQL5 для получения и вывода в строку периодов, но из за ограничений песочницы и формата придётся вручную переносить их в Автооптимизатор. В ваших силах сделать это в функционале программы. Пусть лично вам это и не нужно, но такие большие и сложные статьи вы кому писали?

Надёжность работы - приимущество вашего Автооптимизатора перед известным аналогом а сложность настройки  - недостаток. Зато у вас инструкция есть, для тех кто ее найдёт.

 
Good Beer:

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

Пользовательский критерий оптимизации, вижу, пока не появился и высота в календаре.... Раз уж OnTester() используется в обязательном порядке, можно было вообще обойтись только пользовательским критерием. Ну и в очередной раз хочу позудеть насчёт автоматизации ввода периодов тестирования. У меня практика показывает что тестовую форвард-оптимизацию лучше проводить на периодах по 3-5 недель, на нескольких инструментах. Писать вручную все периоды на каждый кусок - занятие не для слабонервных. Не трудно создать скрипт средствами MQL5 для получения и вывода в строку периодов, но из за ограничений песочницы и формата придётся вручную переносить их в Автооптимизатор. В ваших силах сделать это в функционале программы. Пусть лично вам это и не нужно, но такие большие и сложные статьи вы кому писали?

Надёжность работы - приимущество вашего Автооптимизатора перед известным аналогом а сложность настройки  - недостаток. Зато у вас инструкция есть, для тех кто ее найдёт.

Благодарю Вас за комментарий. Как я написал в заключении к статье, все дополнения я добавлю в последней статье. Это одна из ранее запланированных. Я постарался описать во всех статьях что опубликованы - всю программу целиком от той части что выгружает отчеты до внутренней структуры самого автооптимизатора. Про обещанные правки помню и уже работаю над ними. Однако опубликую их в следующей статье, так как сперва нужно было завершить описание первой версии программы. Как в университете помнится нам преподаватель один говорил : "Не будет же компания по производству автомобилей менять тормозную систему на новую, на уже выпускаемой версии автомобилей". 
Касательно кода, то он прикладывается к статье и вы можете его менять разбирать и модернизировать если будет такая потребность (обещанные правки внесу, а если потребуется что то более индивидуальное то можете добавить как вариант или же просто поразбираться если интересно будет) от того и пишу так подробно что бы была картина того как все работает. Разбиение периодов автоматическое добавлю.