– Привет! В предыдущий раз, ты рассказывал про дата-сервис, про отдельный слой доступа к данным. Расскажи теперь про сами сущности и репозитории. При помощь чего ты вытягиваешь данные из таблиц?
– Ок. Если необходимо сохранять сделки и статистику, или откуда-то брать исторические котировки для тестов, то неплохо использовать БД. Но, как с ней общаться? Есть несколько способов. В C#, есть например традиционный ADO.NET, но речь пойдёт не о нём. В прошлый раз мы отделили работу с БД от бизнес-логики, это уже очень здорово, но можно пойти дальше! Есть способ общаться с самой БД на достаточно абстрактном уровне, инкапсулируя детали формирования самих запросов. Такой способ лучше вписывается в концепцию объектно-ориентированного проектирования, и называется он ORM (object relation mapping).
– Хм, я что-то слышал про ORM. У меня сложилось неоднозначное ощущение, вроде, есть целое сообщество, кто против них (OrmHate), и считает это антипаттерном. Все эти дополнительные уровни абстракции, и вообще, они наверно дико тормозные?
0:00 Куда я пропал со smart-lab.ru
01:09 Почему мне больше не интересна политика
01:58 Почему мне вообще были интересны политические темы
03:00 Как изменился Саратов за последний год
04:20 Почему меня потянуло на «высокое»
06:20 Для чего нужно учить стихи. Какая связь с трейдингом
07:50 Пушкин и золотой запас
09:00 О чем буду говорить дальше
За сегодняшний день фьючерс на доллар-рубль нарисовал красивую пилу с четырьмя зубцами. Во всяком случае именно так выглядел график этого инструмента на пятиминутках. Две недели сериала «Торговая система для новичка» пролетели быстро, и сегодня был последний день. Как закончили сериал торговая система «ТСН2» и Базы см. в прилагаемом видео.
Вчерашняя попытка роста фьючерса на доллар-рубль не удалась. Рынок сегодня открылся падением в этом инструменте, а к концу дневной сессии снижение цен фьючерса на доллар-рубль усилилось. ТС «ТСН2» продолжает держать длинную позицию, а Базы, каждая по-своему, реагируют на изменившуюся ситуацию. Подробности см. в видео.
Приветствую. В предыдущем посте описывался интерфейс для генерации тиковых данных – ITickGenerator. Его реализации могут быть разными: данные могут генерироваться на лету, или браться из БД. В случае с БД, возникает необходимость в организации ещё одного слоя приложения – слоя доступа к данным. TickGenerator, всё также будет оповещать подписчиков (стратегии, которые выставляют заявки), но по тем данным, которые он получит из БД.
Сейчас не важно, какая будет база данных, и где она будут храниться – на сервере, в файлах или в оперативной памяти. Не важно, также, какие специфические библиотеки и драйвера буду для этого использоваться. Сейчас, я просто приведу пример того, как можно разделить бизнес-логику приложения и слой доступа к данным.
Я создал отдельный модуль, и там и развернул всю архитектуру, связанную с БД, основные компоненты которой: сущности, репозитории и дата-сервис.
Хотя понятие сущности (Entity), само по себе, достаточно общее, здесь, буду применять его в узком смысле – это классы, представляющие таблицы БД, возможно, с какой-то дополнительной логикой. В простейшем случае, одна сущность – одна таблица. Между сущностями может быть связь (например, один ко многим), которая отражается и в связи между таблицами. Сущность описывается полями класса, которые отражают колонки таблиц.
Рынок фьючерса на доллар-рубль сегодня, как и вчера был достаточно волатильным, но при этом все же вырос. ТС «ТСН2» продолжает держать длинную позицию. Четыре моих Базы также работают, но по-своему. Каждая из них демонстрирует определенный подход к открытию и закрытию позиций. Подробности см. в видео.
Сегодняшний день на рынке фьючерса на доллар-рубль при всем желании скучным не назовешь. Фьючерс активно рос до 12.00, потом до 15.00 снижался, а затем рос с откатами практически до закрытия дневной сессии. ТС «ТСН2» на этом движении открыла длинную позицию, не отставали от нее и мои «заготовки» — Базы. Подробности см. в видео.
Фьючерс на доллар-рубль сегодня открылся свечкой вниз, но остальной день провел в боковом движении. По моим наблюдениям, волатильность на рынке фьючерса на доллар-рубль прилично снизилась, что может являться основанием для развития тренда.
Мои друзья из фейсбука продолжают давать свои предложения по модификации Базы. Предлагают дополнить ее индикатором ADX в качестве фильтра. Я последовал этому совету, и теперь есть третья версия Базы, где ADX служит не только фильтром, но и участвует в формировании сигнала на закрытие позиции. Подробности см. в видео.
Привет всем! В предыдущий раз я описал, как стратегии выставляют заявки. Сегодня будет ещё более интересная тема: получение маркет-даты. Для упрощения, под маркет-датой, буду иметь в виду тиковые данные (время, цена, объём).
Я уже рассказывал про классы стратегий, про то, что они используют интерфейс, который отвечает за получение маркет-даты – IMarketDataGate. Внутри себя, стратегии подписываются на событие AddTick из IMarketDataGate – т.е. на каждый тик стратегия проводит свой анализ данных, расчеты, и, при определённых условиях, выставляет заявки. Стратегии не важно, как генерируются тики – она просто реагирует на это событие. IMarketDataGate, имеет два варианта реализации. Первый – это обёрткой над COM библиотекой брокера (в моём случае – смартком). Тут всё просто – каждый день, кроме праздников и выходных, с 10 часов, магическим образом, начинают литься тики – их мне посылает система брокера. А вот для организации локальных бэктестов, нужен какой-то иной источник данных – некая имитация брокера по части генерации тиков. И тут-то и появляется наш герой – ITickGenerator.
interface ITickGenerator { event EventHandler<StockTickEventArgs> OnTick; event Action OnEnd; void Start(string symbol); }