Блог им. SergeyEgorov

Где робот хранит свои данные?

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


Контекст торговых данных реализует интерфейс:

public interface DataContext
{
    T Get<T>();
}

Поэтому у вас есть по-меньшей мере три способа обращения к коллекциям и наборам, содержащимся в контексте торговых данных:

/// Получите ссылку на контекст торговых данных
DataContext tradingDataContext = TradingData.Instance;

/// Если вам нужно только читать данные из коллекции, используйте такой вызов
IEnumerable<Tick> ticks = tradingDataContext.Get<IEnumerable<Tick>>();

/// Если вы хотите изменять содержимое коллекции, добавляя или удаляя ее элементы
/// но чтобы при этом не срабатывали алгоритмы, наблюдающие изменение коллекции
/// используйте следующий вызов
ICollection<Bar> bars = tradingDataContext.Get<ICollection<Bar>>();

/// Если вы хотите изменять содержимое коллекции, заставляя при этом срабатывать
/// алгоритмы, наблюдающие за ее содержимым, используйте такой вызов
ObservableCollection<Trade> trades = tradingDataContext.Get<ObservableCollection<Trade>>();

★6
7 комментариев
Я один видео по программированию никогда не смотрю? Как и по настройке всяких программ…
avatar
Spekyl, :-) Наверное не один, статью просмотрели 143 раза, а видео всего 7 раз. :-)
avatar
что это за фреймворк? чем отличается, например, от s#?
видео не смотрел…
avatar
Качнул исходники, судя по качеству кода s# даже и рядом не стоял. По функционалу пока разбираюсь, но первое впечатление крайне положительное.
avatar
denbkh, Качество кода нас самих не очень устраивает и мы его каждый день стараемся рефакторить, устраняя даже небольшие дублирования и некрасивости.

Вообще, как поклонники дядюшки Боба Мартина и процесса гибкой разработки agilemanifesto.org/iso/ru/, мы всегда сначала пишем тесты, потом код. Поэтому весь наш код покрыт модульными тестами и аналогом приемочных тестов, написанных с использованием техники модульного тестирования. Так что даже там, где наш код не выглядит красиво, его работоспособность все равно гарантирована тестами.

В части функциональности мы пытаемся разработать конструкцию, с небольшим количеством основных, повторно используемых, коротких фрагментов кода, реализующих повседневно необходимый трейдеру набор возможностей. При этом мы все еще пробуем разные подходы, пытаясь найти-вывести органичный для предметной области API, который был бы пусть не интуитивно, но понятен и удобен большинству трейдеров, практикующих программирование.
avatar
Вы наверно меня не так поняли, я имел ввиду что у вас как раз с кодом все очень даже ок, на мой взгляд, по сравнению с вышеупомянутой библиотекой. Юнит тесты, нормальная связность компонентов. Когда я последний раз смотрел S# у них даже в библиотеку подключения к SmartCom'у было притянуто столько всего включая XAML, что без кучи ихних зависимостей поюзать ее невозможно.
Ну и надо не забывать что у s# исходники за бабло или для особо приближенных. А отладка ихнего обфусцированного кода то еще удовольствие, да :)
avatar
denbkh, :-) Я вас правильно понял. Спасибо за то, что похвалили, просто сами мы еще не вполне довольны своим кодом, поэтому я написал что мы продолжаем работать над качеством даже уже существующего и работающего кода.

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

теги блога SergeyEgorov

....все тэги



UPDONW
Новый дизайн