Shell. Простой контейнер для стратегий, имеется ли?
Atom Ответить
22.12.2018


Такой вопрос:

S#.API дает огромный диапазон возможностей, это да, но Shell позиционируется как коробка, где все готово, не нужно особо разбираться в программировании - знай подставляй стратегии и будет тебе счастье. К слову, такая концепция идеально подходит под меня. Но есть некоторые НО. Накидал тут для себя план вхождения в продукт, уже решил задачи: "научиться качать историю", "запустить бэктест встроенной стратегии", "запустить в бой встроенную стратегию". Теперь ближайший на очереди: "запилить и отбэктестить свою стратегию", а затем "в бой её же".

Тут столкнулся со следующими трудностями. Без погружения в API создать свою стратегию не тривиальная задача - причем речь о том, что собственно понять, как с помощью API запилить логику стратегии - не сложно, а вот понять, что и как надо делать ещё чтобы стратегию интегрировать - уже намного сложнее.

В readme к Shell есть список действий как добавить стратегию - по-моему он слегка упрощен. И второй момент: в стратегии SMA Strategy, которая идет в комплекте очень много кода, который не описывает логику стратегии, логика стратегии, как я понимаю, укладывается в метод ProcessCandle(). Взял полностью копировал код стратегии SMA и на её основе составить свою - не получилось - или не компилируется, или панели кастрированные, или Start strategy не нажимается. В readme написано, что если хотите умолчательные панели - не наследуйтесь от интерфейсов IHaveTestControl и IHaveMonitoringControl - либо я как-то не так "не наследовался" либо умолчательные панели какие-то слишком кастрированные).

Возможно ли (может оно так и работает, просто я что-то не так делаю) сделать какой-то контейнер, где я, условно говоря, заменяю тока название класса, и код в метода ProcessCandle() и все, стратегия работает. При этом набор функциональных возможностей такой же как дает стратегия из комплекта поставки. Т.е. чтоб мне не надо было писать какой-то код чтобы получить простейшие вещи - поля "Тестировать До" и т.д.

Короче взять код стратегии из примеров "чистых" кодов стратегии и интегрировать это в Shell чтобы можно было и тестировать и торговать как по мне ни разу не тривиальная задача. А хотелось бы чтоб была ей)). Ну или сориентируйте пож. как-то в рамках обозначенного набора сложностей)).

Заранее спасибо.

Теги:


Спасибо:




9 Ответов
Support

Фотография
Дата: 24.12.2018
Ответить


Добрый день

Спасибо за отзыв. Скажите, чем именно не подходит в данном случае стратегия СМА? В ней можно сделать именно то, что вы хотите. Удалите код из ProcessCandle и замените его своим.
Спасибо:

Replikant

Фотография
Курсы
Дата: 26.12.2018
Ответить


Удалить код из ProcessCandle - без проблем - одна стратегия, меняю логику внутри готового каркаса (пример стратегии из комплекта) - все работает, все отлично. Проблема возникает когда я пытаюсь делать две стратегии)).

Вот я создаю новую папку новой стратегии в папке стратегий, копирую туда все файлы от SMA стратегии. Дальше делаю все что рекомендовано в readme по добавлению стратегии - ну там добавить стратегию в словарь и т.д. Дальше надо переименовывать класс новой стратегии иначе студия ругается - это понятно, два раза один класс описываю - все переименовываю - норм, но ещё ругается на файлы вида SmaNewStratMonitoringControl.Xaml.cs, там тоже что-то начинаю переименовывать но не до конца понятно что там точно нужно делать, потому что студия много на что ругается. Тут мне надоедает, я возвращаюсь к фразе из readme, в которой сказано что если не хочешь можешь не переопределять контролы тестирования и т.д. Пробую комментировать public LayoutPanel AddMonitorigPanel() в коде стратегии и public LayoutPanel AddTestPanel() . В общем мне или не удается убрать ошибки, либо все компилируется (кажется как раз когда я комментирую переопределение контролов), но кнопка Open Test Panel не реагирует на нажатие, ничего не открывается. Короче в результате всех этих экспериментов что-то получалось но ни разу не получалось запустить эту новую стратегию на бэктестинг (речь о том, что я не правил ещё саму логику стратегии, просто пытался создать полную копию но как отдельную стратегию).

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

Как-то так.
Автор топика
Спасибо:

Replikant

Фотография
Курсы
Дата: 26.12.2018
Ответить


Ну или можете сделать полную копию (по логике работы) встроенной SMA стратегии, но чтоб они вместе компилировались без ошибок? А я уже посмотрю по факту, что именно вы сделали.
Автор топика
Спасибо:

Support

Фотография
Дата: 26.12.2018
Ответить


Вы можете написать код своей стратегии в классе SmaStrategy.
Спасибо:

Replikant

Фотография
Курсы
Дата: 26.12.2018
Ответить


Support Перейти
Вы можете написать код своей стратегии в классе SmaStrategy.

Этот комментарий меня вообще не приближает к цели)).

А такой вариант - этот же процесс не сложный добавить стратегию в Shell, вы можете в дистрибутив зашить две стратегии а не одну (не важно какая именно будет вторая)? А я уже сам пойму, как оно работает и как добавлять новую стратегию на основе существующей.

Автор топика
Спасибо:

Support

Фотография
Дата: 27.12.2018
Ответить


Спасибо за ваш отзыв. Передали пожелание разработчикам.
Спасибо:

Replikant

Фотография
Курсы
Дата: 27.12.2018
Ответить


Support Перейти
Спасибо за ваш отзыв. Передали пожелание разработчикам.


Это не то чтобы прям отзыв, скорее просьба о помощи)). Ладно, ещё поколдую, если что - вернусь с более конкретными вопросами. Спасибо!
Автор топика
Спасибо:

Support

Фотография
Дата: 10.01.2019
Ответить


Добрый день

Пожалуйста, возьмите последнюю версию. В неё добавлены три стратегии. Так же исправлено тестирование, использующее тиковые данные вместо свечных.
Спасибо:

Replikant

Фотография
Курсы
Дата: 10.01.2019
Ответить


Круто, спасибо!

Поизучаю в ближайшее время.
Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy