Привет всем! В предыдущих статьях я описывал свой тестер, разработанный на C#, и, несколько раз подчёркивал, что переключение между двумя режимами (тестирование/торговля) может быть простым. Код стратегий не должен зависеть от того, кто поставщик маркет-даты и куда уходят заявки – в тестовую базу или на сервер брокера. Конечно, это лишь один из подходов, и кому-то он покажется странным, но, главное его достоинство заключается в том, что тестирование приближается к реальности, что даёт более достоверные результаты. Вопрос в следующем: как, имея один и тот же код, получать разные по функциональности программы? Один из вариантов – использовать инверсию управления и внедрение зависимостей! Об этом сегодня и пойдёт речь.
Приведу пример нехорошего (иногда, говорят – с запашком) кода:
class Strategy { public Strategy() { var mgr = new TestOrderManadger(); mgr.PlaceOrder(...); } }
Здесь плохо то, что класс Strategy зависит от класса TestOrderManadger. В такой реализации нельзя начать использовать какой-нибудь другой менеджер заявок (AnotherOrderManadger) без перекомпиляции библиотеки с классом Strategy. Тем более тут нарушается принцип единства ответственности – класс Strategy, помимо своей прямой обязанности, также, создаёт внутри себя зависимости. Чтобы исправить ситуацию, можно использовать интерфейсы:
interface IOrderMandger { void PlaceOrder(); } class TestOrderManadger : IOrderMandger { public void PlaceOrder(){} } class Strategy { public Strategy(IOrderMandger orderMandger) { var mgr = orderMandger; mgr.PlaceOrder(...); } }
Боковик на рынке фьючерса на доллар-рубль, который, по моим наблюдениям, начался с 17 октября, основательно «попортил нервы» авторам торговых систем, принимающим участие в Полигоне. Открывать позицию или не открывать? Но поскольку торговые системы не знают, что такое колебания и сомнения, то они, не дрогнув открывали и закрывали позиции на вышеуказанном боковике, уничтожая заработанную ранее прибыль. Поэтому к завершению Полигона лидеры поменялись. По результатам 15-ти рабочих дней Полигона на первое место вышла ТС «АпенДаун» (+5,93%), на второе — ТС «Лисица» (+4,80%). Третье место досталось ТС «Скользи» (+3,94%). Подробности в прилагаемом видео.
P.S. Следующий Полигон состоится с 18 декабря по 5 января. Присоединяйтесь!
Фьючерс на доллар-рубль был сегодня весьма волатильным. Рос с утра, снижался под завершение дневной сессии. Фьючерс на индекс РТС был более спокоен. Нырок вниз с утра и боковик до конца дня.
Все больше ТС, которые торгуются на Полигоне, выходят в «плюс», хотя есть и аутсайдеры. В лидерах по-прежнему ТС «Дровосек» (8,25%), второе место у ТС «Лисица» (4,80%), а на третьем месте закрепилась ТС «Скользи» (3,23%). Подробности в прилагаемом видео.
Сегодняшний день на рынке прошел примерно по вчерашнему сценарию. Фьючерс на доллар-рубль с утра ушел вниз, а потом весь подрастал. Движение фьючерса на индекс РТС было более волатильным, а закончил день этот фьючерс примерно на уровне утреннего открытия.
С утра некоторые ТС, которые участвуют в Полигоне, попытались восстановить ранее закрытые с «плюсом» короткие позиции. Но рынок их наказал за излишнюю поспешность. В лидерах по-прежнему ТС «Дровосек» (15,55%). За ним следует ТС «Лисица» (9,98%). На третье место на текущий момент вышла ТС «Скользи» (3,23%), которая задвинула на четвертое место ТС «ММ17» (2,18%). Подробности в прилагаемом видео.
Привет всем! В предыдущем посте рассматривались два объекта, которые формируют закрытые позиции и считают статистику торговли (IClosePositionManager, IResultManager). Сегодняшняя статья будет посвящена визуализации этих данных и общей архитектуре торговой системы.
В своё время я рассказывал про паттерн проектирования MVC, что логика должна быть отделена от визуализации, и ещё, что у каждой формы должен быть свой презентер. Также хотел отметить, что проект лучше разбивать на несколько логических модулей (библиотек классов в c#). Свой проект я разделил на: definitions – содержит базовые, ни от кого не зависящие классы, интерфейсы и описания, local – реализация интерфейсов для локального тестера, smartcom – реализация интерфейсов для коннектора, в данном случае смарткома, strategies – вынес в отдельный модуль все стратегии, UI – внешний интерфейс системы (формы и их презентеры) и т.д. В каждом таком модуле я обычно создаю ещё несколько папок – в модулеUI, например, есть папка interfaces, presenters и views.
Фьючерс на доллар-рубль сегодня весь день медленно-медленно подрастал. Фьючерс на индекс РТС двигался примерно теми же темпами в противоположном направлении.
Я уже писал, что ТС, которые участвуют в Полигоне, в большинстве своем держали шорт по Si или лонг по Ri. Причем большинство из них по своим текущим стопам уже находились в «плюсе». И сегодня вот по этим стопам их короткие позиции стали частично закрываться.
В лидерах по-прежнему ТС «Дровосек» (17,47%). Ему в спину дышит ТС «Лисица» (11,77%). Пытается догнать эту двойку ТС «ММ17» (2,20%). Подробности в прилагаемом видео.
Фьючерс на доллар-рубль начал сегодня день сильным движением вниз, но затем в течение дня двигался в обратном направление, и закрытие рынка оказалось выше открытия. Фьючерс на индекс РТС вел себя примерно также, хотя его движение в течение дня больше напоминало «боковик» нежели какое-то направленное движение.
ТС, которые участвуют в Полигоне, чувствуют себя хорошо, так как держат шорт по Si или лонг по Ri. Причем, большинство из них по своим текущим стопам уже находятся в «плюсе». Лидер Полигона на текущий момент не изменился. Это – ТС «Дровосек». За прошедшие с начало работы Полигона дни ее результат достиг 17,60%. Подробности в прилагаемом видео.
Представляю торговую систему «купи-продай».
Суть ее очень проста: Покупаем некоторое количество бумаг (start_qty), и выставляем заявки по лесенке на продажу через определенное количество пунктов.
Шаг лесенки назовем step. Да, бумаги следует продавать одинаковыми пачками, по qty_in_step лотов.
(Оставляем пока за бортом поста тему — а что делать, если купили, выставили заявки на продажу, а бумага пошла вниз?)
Поведение Equity при разных start_qty приведено на рисунке.
Индикаторы можете скачать со страницы www.xsharp.ru/indikators файл StockTest.zip, два индикатора:
1. StockTest.lua — проставляет метки сделок. Ее следует добавить на график бумаги;
2. StockEquity.lua — строит кривую Equity, следует добавить на отдельное окно.
Успешной игры по тренду!