← 戻る

S#.Designer - доступна beta 4

Выложена новая бета Дизайнера.

Прежде всего - что мы добавили:

  1. Выделение линий при наведении на них + выделение всех линий, соединенных с выделенным блоком:

8a3c9deb6cefc7a348ae6c6e8ffa3063.gif

  1. Автоматическое переименование элементов. Действует для элементов: Формула, Переменная, Условие, Индикатор и Свечи.

  2. Элементы для снятия заявки, ее замены. Самое время начать делать котирование на кубиках![flapper]

674271d39d8decae32e183a0d0792e9e.png

  1. Авто-сохранение стратегий. Кнопки сохранить теперь нет (разве только для экспорта стратегии для своего коллеги).

  2. Точки-остано на весь элемент в случае пользования отладчиком.

  3. Подсвечивание ошибочного элемента в случае возникновения ошибки с последующим отображением ошибки ввиде подсказки.

  4. Открытие-сокрытие сокета с ценой у элемента открытия позиции (если идет регистрация меркетной заявки).

Исправленные ошибки:

  1. Фикс ошибки редактирования настроек свечек http://stocksharp.ru/posts/m/36987/
  2. Фикс загрузки портфелей после перезапуска в случае ранее произведенного подключения к торгам http://stocksharp.ru/posts/m/36982/
  3. Фикс элемента Защита позиции http://stocksharp.ru/posts/m/37055/
  4. Фикс ошибки http://stocksharp.ru/posts/m/36990/

Надеюсь вам всем понравится использование нашей программы! Огромное спасибо за Иван З. и Senex-у за их неоценимый вклад в развитие Дизайнера!

Конкурс раздачи плюшек за бета-тестирование еще действует.

Предыдущее обсуждение здесь.

**:::center

Скачать <<

このトピックは参考になりましたか?

トピックを共有

コメント (53)

ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください

Lexuz77
Lexuz77

Добрый день! Подскажите - можно ли использовать S#.Designer для стратегий парного трейдинга/арбитража? Пока что нет полной документации - в каком направлении "копать"? Как например построить хотя бы спред 2х инструментов (Sec1-Sec2) ? Какие данные сравнивать? В тслабе я брал закрытие каждого бара по инструментам и сравнивал их между собой - как это тут можно сделать? Спасибо!

Mikhail Sukhov
Mikhail Sukhov 著者

Я бы наверное сделал как-то так:

4044670bfeaf3af45ea7ccec5c968ed1.png

Проверку не делал, но подход думаю понятен. Брать можно хоть конец, хоть начало свечи. Можно по тикам строить. Каждый график - это отдельная панель. Накладывать несколько свечей на 1 панель графика нельзя.

Lexuz77
Иван З.
Иван З.

Для элемента переменная,сделать галочку "параметры" по умолчанию, убирать эту галочку если введено значение. Сэкономит пару кликов. 2) Баг. а) выделяем элемент TimeFrameCandle__00-05-00. б) переносим на раб. стол элемент Сравнение в) сам баг. Не можем выбрать оператор. г) жмем мышкой на пустое место раб. стола, возвращаемся на элемент Сравнение. Баг пропадает. Тоже для "Логическое условие", "Логическая функция с одним аргументом" 3) Для элемента сравнение значения левый, правый сделать "значение 1", "значение 2" по умолчанию. Сэкономит пару кликов. 4) Для элемента Конвертер. При создании привязки, пропадает тип в свойствах 5) "Логическая функция с одним аргументом", только одна функция not(a), полагаю будут другие? 6) Для элемента "Сравнения", "Логическая функция с одним аргументом", "Логическое условие". И для всех элементов где на выходе логическое значение. Сделать галочку Инверсный выход. При ее установки появляется дополнительный выход, с инверсным значением. Сам инверсный выход можно обвести в кружок, как это принято на логических схемах. Сэкономит количество блоков и кликов. Я знаю что есть элемент not(a), но его надо ставить засорять схему. 7) А еще для выше описанный элементов было бы круто чтоб можно было выбрать тип выхода, логический или числовое значение. Если выбрал числовое то на выходе 0 или 1. В таком случае даже на график вывести можно будет эти значения через 1 блок индикатора сма, сейчас я не знаю как логическое значение вывести на график. А это очень важно для отладки. Да и многим проще с 0 и 1 работать. 8) Ни с того ни с сего, вылетел дизайнер, просто перешел из окна блокнота на окно дизайнера, время было около 13:25. Без сообщений и предложений. Логи приложил, но в них на это время ничего нет. Загрузил дизайнер, стратегия в последнем виде как я ее помню. Автосохранение работает! 9) При ошибке в схеме, ошибку показывает 3 раза на разных блоках. Пока эмитировал, дизайнер рухнул еще раз, время 14:44. Но на этот раз с окошком. Логи приложу.

Как всётаки вывести логические значения на график? без этого работа дальше не пойдет.

Mikhail Sukhov
Иван З.
Иван З.

При останове, попытался открыть вкладку свойства. На элементе конвертер. Дизайнер упал. Вроде описывал проблему уже. Еще лог. Время около 21:18

Mikhail Sukhov
Mikhail Sukhov 著者

Иван З.: При останове, попытался открыть вкладку свойства. На элементе конвертер. Дизайнер упал. Вроде описывал проблему уже. Еще лог. Время около 21:18

Логи хорошие. На будущее уточнение - что такое останова? Это остановка бэктестинга, или остановка на точке прерывания?

Mikhail Sukhov
Mikhail Sukhov 著者

Иван З.: При останове, попытался открыть вкладку свойства. На элементе конвертер. Дизайнер упал. Вроде описывал проблему уже. Еще лог. Время около 21:18

В логах есть ошибки, связанные с наличием настроек от старых версий. На работу это не влияет, как я понимаю, но лог засоряет.

Иван З.
Иван З.

У индикаторов в свойствах подписать какой тип данных на вход принимает. Сейчас это проверить можно только протестировав. Да и вообще описание индикаторов не помешало бы.

Mikhail Sukhov
Mikhail Sukhov 著者

Эх, пропали выходные😭

Lexuz77
Lexuz77

У меня крашится постоянно, если просто в режиме эмуляции выбрать любой кубик конвертера данных :(

Lexuz77
Lexuz77

У меня крашится постоянно, если в режиме эмуляции просто выбрать любой кубик конвертера данных...
https://yadi.sk/i/ujVmDu9ewRoUi

Иван З.
Иван З.

Наткнулся на очень любопытное поведение. Решил сделать схему где будут выводиться логические значения на график. Суть такая, если свеча красная то SMA с периодом 1 период выдает -1 а если зеленая то 1. На рисунке видно что индикатор опаздывает от свечей на 1 период. И если он опаздывает то от куда берется первое значение индикатора. Наставил везде точек прерывания, и стал смотреть что за чем идет. Каждый шаг отмечен циферкой. То есть, раньше всего происходит инициализация переменной -1, и она доходит до графика шаги 1-4. Потом происходит инициализация переменной 1, она тоже доходит до графика шаги 5-8. Надо заметить, что на шагах 1-8 нельзя нажать кнопку стоп, она неактивна(серая). Получается что на шаге 9, у меня уже есть одно значение индикатора, и ни одной свечи. Дальше расчеты идет нормально, но это первое значение оно лишнее, что и дает смещение индикатора на 1 период. А на графике это смотрится как запаздывание индикатора. Инициализацию переменных до того как до них дойдет очередь использования считаю не верным. Пока отлавливал это все. Дизайнер упал еще пару раз. В этот раз во время прокрутки и настройки графиков, во время точек прерывания. Время не скажу точно и точный причины, поздно было разбираться. Логи и схемку прикладываю.

Еще, когда дизайнер останавливается в первой точке прерывания, кнопка продолжить не активна, после нажатия на схему становиться активна.

Иван З.
Иван З.

В такой ситуации у меня ни когда не работает элемент "И". Схему уменьшил до минимальной. На входах всегда true, но никогда не проходит дальше. Схему приложил.

Mikhail Sukhov
Mikhail Sukhov
Mikhail Sukhov 著者

В следующей версии будет вот это:

a28537303368dcadfe07ee6d3f133421.png

Кто догадается по картинке, что на ней особенного?

Lexuz77
Lexuz77

Свою стратегию можно будет в DLL запаковать?

Mikhail Sukhov
Mikhail Sukhov 著者

Lexuz77: Свою стратегию можно будет в DLL запаковать?

Можно будет загружать стратегии, написанные на C#.

Это для тех, кто программирует на C#, и Дизайнер можно будет использовать как готовую графическую оболочку без кодирования.

nikifor
nikifor

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

зы и у стакана при попытке выбрать свойство программа падает.

Mikhail Sukhov
Mikhail Sukhov 著者

nikifor: хорошо бы при создании новой стратегии там уже были бы минимально необходимые элементы источник, свечи, график, закрытие, объем и комиссия. вот и вопрос - как задать комиссию ?

Такого блока нет. Комиссия задается через тестирование в настройках. Скорее всего это не было перенесено из АПИ.

Mikhail Sukhov
Mikhail Sukhov 著者

Так

84c77d59d77bc5a485d9aa24d7cfa487.png

Иван З.
Иван З.

Mikhail Sukhov: Так

Это просто прекрасная новость. Вы планируете сделать ДЛЛ стратегию целиком? Или можно будет написать на C# какой-нибудь блок отдельно? Второй вариант был бы интересен тем, что можно было бы привлечь сообщество к написанию блоков. Понимаю, что сообщество почти не участвует в разработке S#(порог вхождения высокий), но если продукт будет популярен, то написание небольших блоков было бы полезно. Судя по форуму ТСлаба, там много длл индикаторов раздают с открытым кодом. Я не знаю как это у ТСлаба работает, тем не менее народ там что то пишет и делится.

Еще хотелось бы узнать по поводу поста http://stocksharp.ru/posts/m/37185/ проблема подтвердилась?

Mikhail Sukhov
Mikhail Sukhov 著者

Иван З.: Вы планируете сделать ДЛЛ стратегию целиком?

Я не понял этой фразы.

Иван З.: Или можно будет написать на C# какой-нибудь блок отдельно?

Будет два кубика - DLL + C# код. Сделана они для того, чтобы стратегии, написанные в VisualStudio или во встроенном редакторе, можно было запускать в дизайнере. В первую очередь для тех, кто пишет стратегии на S#.API, и хочет как минимум визуализировать бэктестинг. Сразу готовая оболочка. Ну и как второе - для реального подключения.

Иван З.: Второй вариант был бы интересен тем, что можно было бы привлечь сообщество к написанию блоков. Понимаю, что сообщество почти не участвует в разработке S#(порог вхождения высокий), но если продукт будет популярен, то написание небольших блоков было бы полезно.

У нас кубики можно создавать из кубиков. Позиция такая, что все таки большинство C# не понимает.

Иван З.: Еще хотелось бы узнать по поводу поста http://stocksharp.ru/posts/m/37185/ проблема подтвердилась?

Пока не удалось. так как есть другая проблема. Я отпишусь как будут результаты проверки.

Иван З.
Иван З.

Иван З.: В первую очередь для тех, кто пишет стратегии на S#.API, и хочет как минимум визуализировать бэктестинг. Сразу готовая оболочка. Ну и как второе - для реального подключения.

Когда пишешь стратегию, необходимо выводить отладочную информацию, желательно на график. Я выше описал проблемы с выводом на график логических значений. Будет ли реализован механизм вывода какой либо информации из ДЛЛ стратегии?

Mikhail Sukhov
Mikhail Sukhov 著者

Иван З.: Когда пишешь стратегию, необходимо выводить отладочную информацию, желательно на график. Я выше описал проблемы с выводом на график логических значений. Будет ли реализован механизм вывода какой либо информации из ДЛЛ стратегии?

Я так и не понял, в чем там проблема. Вывод на график возможен свечек или индикаторов. Поэтому нужно сделать свой индикатор, и выводить через него.

Иван З.
Иван З.

Mikhail Sukhov:

Иван З.: Когда пишешь стратегию, необходимо выводить отладочную информацию, желательно на график. Я выше описал проблемы с выводом на график логических значений. Будет ли реализован механизм вывода какой либо информации из ДЛЛ стратегии?

Я так и не понял, в чем там проблема. Вывод на график возможен свечек или индикаторов. Поэтому нужно сделать свой индикатор, и выводить через него.

Там проблема в том, что еще до появления первой свечки. В индикаторе появляется значение, а не должно появляться. И в итоге при пришедших 0 свечах 1 значение индикатора, при пришедших 2 свечах 3 значения индикатора, при пришедших 10 свечах 11 значений индикатора. Эта проблема воспроизводится если на входе индикатора есть блок "Постоянная". В моем варианте это 2 блока "Постоянная" со значениями 1 и -1. Если на входе индикатора убрать все блоки "Постоянная" то проблема уходит. Все становиться нормально при пришедших 0 свечах 0 значений индикатора, при пришедших 2 свечах 2 значения индикатора, при пришедших 10 свечах 10 значений индикатора. Проблема по моему из-за того, что блок "Постоянная" инициализируется раньше всех блоков в стратегии(это можно проверить наставив везде точек прерывания), а надо бы тогда когда до него очередь дойдет.
Еще раз повторюсь, что по моему скромному мнению это проблема не в индикаторе, и не в графике. А в том, что в индикатор значение приходит от блока "Постоянная" еще до того как стратегия начала считаться. Надеюсь теперь понятней. Так все же. Будет ли реализован механизм вывода какой либо информации из ДЛЛ стратегии?

Mikhail Sukhov
Mikhail Sukhov 著者

Иван З.: Проблема по моему из-за того, что блок "Постоянная" инициализируется раньше всех блоков в стратегии

А переменна до старта стратегии внутри себя имеет какое-то значение?

Иван З.: Так все же. Будет ли реализован механизм вывода какой либо информации из ДЛЛ стратегии?

Как минимум - логи. Через C# всяко по проще работать с логами, графиком.

Иван З.
Иван З.

Mikhail Sukhov: А переменна до старта стратегии внутри себя имеет какое-то значение?

Конечно имеют, 1 и -1. Она в любом случае будет иметь значение, если я не укажу свое, будет 0.

Mikhail Sukhov
Mikhail Sukhov 著者

Иван З.:

Mikhail Sukhov: А переменна до старта стратегии внутри себя имеет какое-то значение?

Конечно имеют, 1 и -1. Она в любом случае будет иметь значение, если я не укажу свое, будет 0.

Нет, там должно быть значение по умолчанию. И триггер не срабатывает до тех пор, пока значение не обновляется.

nikifor
nikifor

это очень интересное решение 😊 но может все таки кубик? бытует мнение что можно тестировать без комиссии но практика лично меня убедила в обратном. и главное - регулируя комиссию у некоторых стратегий можно регулировать частоту сделок и прочие параметры

Mikhail Sukhov
Mikhail Sukhov 著者

Какой кубик?

nikifor
nikifor

Абсолютная комиссия, относительная комиссия, относительная комиссия с минимумом ну или в свойствах алгоритма их задовать.

Mikhail Sukhov
Mikhail Sukhov 著者

Надо чуть по подробнее. А почему кубик? Тоесть это часть алгоритма, и она как-то влияет на реальную торговлю?

nikifor
nikifor

это важно в первую очередь для тестирования. предположим алгоритм предполагает использование нескольких источников и к примеру RI Si и BR. сейчас у них у каждого своя комиссия и если сделок 1 -5 то пес бы с ним но когда сделок 800 и выше и не дай бог они скальперские то комиссия существенно влияете на результат тестирования и если ее не учитывать то реальность больно докажет свою правоту. я так на валютной секции торговал : брокер брал комиссию за своп сделки(перенос позиции с плечем через ночь) в процентах, а я ни как их учесть не мог и программа считала что все нормально анализируя информацию о реальных сделках. Информацию о своп и комиссии брокер дает только в отчете. Вот и получалось что вычитая из прибыли комиссию программа давала удовлетворительный результат, а в реальности шел слив депо. из этого следует что для реальной торговли учитывать комиссию надо.

Бытует мнение что увеличивая комиссию можно нивелировать проскальзывание. Одно время я по результатам прошедшего фьючерса визуально подбирал значение блока комиссии для тестов (сравнивал холмики), это для того чтобы понимать что то что ты видишь на тесте будет действительно так в реале.

Mikhail Sukhov
Mikhail Sukhov 著者

nikifor: это важно в первую очередь для тестирования. предположим алгоритм предполагает использование нескольких источников и к примеру RI Si и BR. сейчас у них у каждого своя комиссия и если сделок 1 -5 то пес бы с ним но когда сделок 800 и выше и не дай бог они скальперские то комиссия существенно влияете на результат тестирования и если ее не учитывать то реальность больно докажет свою правоту.

Так, видимо не поняли мой вопрос. Влияние комиссии на бэктестинг, конечно же, понятно. В S#.API это давно заложено http://doc.stocksharp.ru/html/da275a7f-ff6f-4dc7-8451-bf4fc22624a6.htm Вопрос только в том, каким образом это отобразить в Дизайнере. Я пока не совсем понимаю, как тут используется кубик. Кубик - это часть алгоритма. Тоесть он что-то берет на вход, что-то выдает на выход. Можете пояснить?

Мне лично кажется кубик нелогичным. Куда логичнее - это настройка бэктестера с указанием правил комиссий.

nikifor
nikifor

Mikhail Sukhov:

nikifor: это важно в первую очередь для тестирования. предположим алгоритм предполагает использование нескольких источников и к примеру RI Si и BR. сейчас у них у каждого своя комиссия и если сделок 1 -5 то пес бы с ним но когда сделок 800 и выше и не дай бог они скальперские то комиссия существенно влияете на результат тестирования и если ее не учитывать то реальность больно докажет свою правоту.

Так, видимо не поняли мой вопрос. Влияние комиссии на бэктестинг, конечно же, понятно. В S#.API это давно заложено http://doc.stocksharp.ru/html/da275a7f-ff6f-4dc7-8451-bf4fc22624a6.htm Вопрос только в том, каким образом это отобразить в Дизайнере. Я пока не совсем понимаю, как тут используется кубик. Кубик - это часть алгоритма. Тоесть он что-то берет на вход, что-то выдает на выход. Можете пояснить?

Мне лично кажется кубик нелогичным. Куда логичнее - это настройка бэктестера с указанием правил комиссий.

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

в догонку: вот https://www.finam.eu/solutions/forex/instruments пример инструментов которые абсолютно не торгуемы алго на текущий момент и все из за пункта "Комиссия за перенос позиций (% годовых)" - зуб даю что это отображается только в отчете но должны быть учтены при тестировании

Иван З.
Иван З.

Теперь понял, должно быть вот так. Это совсем не очевидно.

nikifor
nikifor

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

и второй вопрос - могу ли я дать программе историю в текстовом либо csv формате?

Mikhail Sukhov
Mikhail Sukhov 著者

nikifor: по чему при закачке истории с финама Дизайнер постоянно падает? качаю только минутки и 5минутки , правда порядка 30 инструментов одновременно. или может качать отдельно каждый инструмент?

Из-за этого http://stocksharp.ru/forum/6958/hydra-perestala-kachat-s-finam/

nikifor: и второй вопрос - могу ли я дать программе историю в текстовом либо csv формате?

Да

nikifor
nikifor

я не корректно поставил вопрос: могу ли я дать программе историю в текстовом либо csv формате в виде одного файла скачанного с сайта финама http://www.finam.ru/profile/moex-akcii/uralkaliy/export/?market=1&em=19623&code=URKA&apply=0&df=1&mf=0&yf=2014&from=01.01.2014&dt=31&mt=11&yt=2014&to=31.12.2014&p=2&f=URKA_140101_141231&e=.txt&cn=URKA&dtf=1&tmf=1&MSOR=1&mstime=on&mstimever=1&sep=1&sep2=1&datf=1&at=1 ? если да то как это сделать.

Mikhail Sukhov
Mikhail Sukhov 著者

Да, но нужно исправить формат файла под Дизайнер.

nikifor
nikifor

где можно подробно об этом прочитать?(какой формат, куда и как подтключать)

nikifor
nikifor

ну да. все предельно ясно. 😀 осталось понять как это использовать в Designer.

Mikhail Sukhov
Mikhail Sukhov 著者

Тестирую индексы:

1a1761e47ee590c8a599830779bb69ad.png

Рисует вот так:

54f71ce30f0ca7e25c648aab79a76c31.png

nikifor
nikifor

это будет в новом билде? версия 4.3.17.0 пробовал повторить но не нашел элемента который у Вас на картинках назван RiZ6/SiZ6

Mikhail Sukhov
Mikhail Sukhov 著者

nikifor: это будет в новом билде? версия 4.3.17.0 пробовал повторить но не нашел элемента который у Вас на картинках назван RiZ6/SiZ6

В новом.

nikifor
nikifor

Mikhail Sukhov:

nikifor: это будет в новом билде? версия 4.3.17.0 пробовал повторить но не нашел элемента который у Вас на картинках назван RiZ6/SiZ6

В новом. а такого как ночные сборки Вы не практикуете? руки чешутся.

Lexuz77
Lexuz77

Вопрос - а с выхода кубика, где мы делим RIZ6 на SIZ6 можно будет подать на вход такого же кубика, где мы уже этот индекс поделим/ умножим/прибавим/отнимем еще от какого нибуть инструмента/индекса? Другими словами - можно ли будет строить сложные индексы,состоящие из нескольких инструментов?

Mikhail Sukhov
Mikhail Sukhov 著者

Lexuz77: Вопрос - а с выхода кубика, где мы делим RIZ6 на SIZ6 можно будет подать на вход такого же кубика, где мы уже этот индекс поделим/ умножим/прибавим/отнимем еще от какого нибуть инструмента/индекса? Другими словами - можно ли будет строить сложные индексы,состоящие из нескольких инструментов?

Так кубик же с произвольным количеством работает инструментов. Хоть все 20 основных эмитентов загнать, из которых наш РИ создается.

Lexuz77
Lexuz77

Mikhail Sukhov:

Lexuz77: Вопрос - а с выхода кубика, где мы делим RIZ6 на SIZ6 можно будет подать на вход такого же кубика, где мы уже этот индекс поделим/ умножим/прибавим/отнимем еще от какого нибуть инструмента/индекса? Другими словами - можно ли будет строить сложные индексы,состоящие из нескольких инструментов?

Так кубик же с произвольным количеством работает инструментов. Хоть все 20 основных эмитентов загнать, из которых наш РИ создается. Ну так тут же еще в другом вопрос - у этих "эмитентов" разные веса (коэффициенты) Например: строим спред (RIZ62)+(SIZ63) и торгуем его так же (2лота РИ на 3лота СИ в одну сторону) На фотке как раз график такого спреда (снизу зеленый)

Lexuz77
Lexuz77

Ну а если немного "поколдовать" с коэффициентами, то можно и такое вот получить :)

Mikhail Sukhov
Mikhail Sukhov 著者

Lexuz77: Ну а если немного "поколдовать" с коэффициентами, то можно и такое вот получить :)

Я выставил формулу 2 * RI / 3 * Si но все равно не так как у вас на картинке

b9729c2a7bd9f6f288780df695dfb5e6.png

Mikhail Sukhov
Mikhail Sukhov 著者

Mikhail Sukhov:

Lexuz77: Ну а если немного "поколдовать" с коэффициентами, то можно и такое вот получить :)

Я выставил формулу 2 * RI / 3 * Si но все равно не так как у вас на картинке

b9729c2a7bd9f6f288780df695dfb5e6.png

Ошибка со скобками, надо (2 * RI) / (3 * Si)

fe477f3a2c1e275a9938a6ff27250380.png

Lexuz77
Lexuz77

По формуле (RIZ62) + (SIZ63) (именно ПЛЮС, а не деление!!!) должно получатся вот так (использую индикатор написанный на луа в квике), значение спреда правильное - 394000 (можно проверить в экселе.) ЗЫ: график, где синусоида - это пока что секрет фирмы 😊 - пробовал торговать его в ТСлаб - он на такое не способен оказался - слишком "тормозной"

Senex
Senex

Не могу понять как работает и работает ли кубик "Сравнение". При эмуляции значения на входы подаются, но на выходе который у меня соединен с блоком "Открытия позиции" ничего не происходит и соответственно позиции не открываются.