Блог им. engineman
Освоение языка программирования – это один из самых сложных и трудоемких этапов создания торгового робота. Возникает естественное желание найти такой язык, освоив который мы раз и навсегда закрыли бы для себя вопрос изучения других языков и сконцентрировались непосредственно на написании торговых роботов. Выбранный язык должен позволить нам реализовать робота любой сложности и при этом быть актуальным для различных платформ. C# как раз является таким языком.
WealthLab, StockSharp, TSLab позволяют совершить весь перечень работ, начиная тестированием и заканчивая реализацией.TSLab — Торговые Роботы без программирования
Эта платформа является основателем визуального редактора для программирования роботов. Программа TSLab позволяет создавать роботов с помощью “кубиков”, каждый из которых выполняет определенные функции. Чтобы написать стратегию, нам нужно соединить кубики между собой. Такой подход к созданию роботов удобен тем, что помогает представить сложные вещи в простом и привычном нам виде.
Как было сказано выше, платформа TSLab поддерживает язык C#. Те же самые кубики, в конечном счете, и есть программный код, написанный на C#. Есть возможность писать непосредственно на C# с использованием TSLab API, что существенно расширяет возможности. Можно комбинировать код на C# и кубики, самостоятельно программируя недостающие элементы.
Торговые роботы StockSharp — 100% программирования
StockSharp – это библиотека для торговых роботов, написанная на C#. Написание роботов с помощью библиотеки StockSharp идет непосредственно в среде для программирования Visual Studio. Довольно сложно доступно и коротко описать принцип работы с библиотекой в словах.
Из опыта проведения курсов по программированию на плаформе StockSharp, можно привести такую статистику: среднее время, которое уходит на освоение библиотеки у человека не являющегося профессиональным программистом – в лучшем случае около 6 месяцев. Из этих 6 месяцев, 2 – это изучение основ программирования, еще 2 – изучение библиотеки, последние 2 месяца – это самостоятельная работа с библиотекой в попытках написать робота. Этот срок с учетом того, что вы будете регулярно заниматься программированием.
TSLab или StockSharp?
TSLab и StockSharp являются противоположностями, и конечный выбор стоит за вами. Нельзя сказать, что одна платформа хуже или лучше другой, все зависит только от ваших целей и ваших возможностей. Еще один интересный факт, говорящий о том, что ни один из подходов не является универсальным и идеальным – TSLab развивает свой API, т.е. подход создания роботов с помощью программирования, а StockSharp разрабатывает S#.Studio – платформу, представляющую собой графическую часть для программной библиотеки, призванную облегчить работу трейдера. Судя по всему, обе компании осознают свои слабые места и стараются устранять их. Идеальным вариантом платформы для создания торгового робота представляется решение, когда трейдер может начать с визуального конструктора и дорасти до роботов, полностью написанных на языке программирования. Наиболее близким к той цели выглядит платформа TSLab, визуальный редактор уже готов, TSLab.API развивается очень быстро более прост в освоении, нежели S#.API.
Торговые роботы WealthLab
WealthLab представляет собой некоторую промежуточную стадию между StockSharp и TSLab. Визуальный редактор в WLD есть, но он плохо развит. Стратегии пишутся на языке программирования, но первые простые стратегии можно начать писать уже через месяц или даже через несколько недель после активного изучения программирования. Сравнивая с другими рассматриваемыми нами платформами, сильной стороной WealthLab является хорошо развитый и продуманный тестер стратегий. Если мы говорим о тестировании внутридневных и среднесрочных стратегий, WealthLab, пожалуй – наиболее удобное решение. Графическое представление результатов тестирования и некоторые другие дополнительные возможности, делают работу очень комфортной. Есть и недостаток – WLD использует только одно ядро процессора для вычислений, в результате чего скорость тестирования довольно низкая, если сравнивать со скоростью тестирования на TSLab.
WLD разрабатывался для европейского и американского рынка. Несмотря на большую популярность этой платформы на российском рынке, до сих пор не разработан ни один официальный коннектор от WLD к российским терминалам. Это является существенным недостатком WLD. На момент написания статьи, существует несколько решений от сторонних российских разработчиков, позволяющих подсоединять WLD к российским торговым платформам.
Тестовый доступ предоставляется бесплатно на 7 календарных дней. ФОРТС доступен только в просмотровом режиме.» Не бесплатно кажется
С 1 мая 2016 года ежемесячная стоимость TSLab у брокеров будет составлять:
— Финам: 2600 руб, Plaza — 4000 руб, HFT — 3500 руб
— ITInvest: 3500 руб, Plaza — 4500 руб
— Алор: 2400 руб, Plaza — 4000 руб
— Риком: 2400 руб, Plaza — 4000 руб
— Открытие: 2400 руб, Plaza — 4000 руб
— Солид: 2400 руб, Plaza — 4000 руб
— Церих: 2400 руб, Plaza — 4000 руб, IB = 3500 руб
— БКС: 2400 руб, Plaza — 4000 руб
тестирование — тслаб дает возможность выразить стратегию в виде алгоритма\блок-схемы без знаний языка С# (хотя приветствуется) и анализировать ее на истории.
Достаточно много алгоритмических фондов (в том числе и крупных) используют тслаб+плаза2 и т.п.
?
)))
Он является, как раз, таким языком, на котором них*я сложного вообще написать невозможно, статическая типизация будет бить по рукам при каждом поползновении к чему то сложному:)
почитайте вот тут об этом
norvig.com/design-patterns/design-patterns.pdf
То есть там по умолчанию не написано про минусы c# и не возможность создания сложного кода.
Хотел развить диалог, но как то не очень выходит.
Вы путаете статическую типизацию с явной. Я про статическую говорил
хз, может я плохо объясняю. Вот есть у Вас класс A, от него наследует другой класс B. Есть экземпляр этого другого класса, например foo, который на сообщение bar отвечает 1. Этот bar он наследует от A — от суперкласса. Пусть есть некая функция, которая принимает класс в качестве аргумента, и меняет в нем слот: fu = function(theClass, slotName, newSlotValue){theClass[slotName] = newSlotValue}, после того как Ваш класс A прошел через эту ф-цию, вышеупомянутый объект foo будет отвечать на сообщение bar по другому. Вы не сможете это сделать в языке со статической типизацией тривиально. А в динамически типизированном языке Вы сможете это сделать всегда, с любым классом/типом — изменить, удалить, добавить слот, все что угодно, как угодно менять поведение. То есть, эта функция подойдет для любого типа, ничего не будет проверяться, если нет такого слота — он будет добавлен, если есть — изменен.
В статически типизированных языках и сама концепция наследования отличается. Там используется копирование, а в динамике — делегирование. Поэтому, изменив или добавив в рантайме какой-то слот, это все тут же унаследуется всеми детьми, внуками и тд.
Упрощенный пример: представьте себе реализацию паттерна Observer, где будет в качестве слушателя добавляться произвольный объект, объект любого типа, и при добавлении сразу навешиваться реакция на событие, а при удалении — удаляться. Вы этого не сможете сделать в статически-типизированном языке.
велс лаб увы не для российского рынка
Самое сложное, это стратегия и её формализация в коде, даже элементарные вещи, бывает очень сложно описать в алгоритме.
А вторая сложность, это сами платформы и их код с глюками (про WealthLab не знаю).