Постов с тегом "торговая система": 3521

торговая система


Торговая система своими руками. Часть 4. Локальная маркет-дата. Семафоры.

    • 11 сентября 2017, 14:23
    • |
    • k100
  • Еще

     Привет всем! В предыдущий раз я описал, как стратегии выставляют заявки. Сегодня будет ещё более интересная тема: получение маркет-даты. Для упрощения, под маркет-датой, буду иметь в виду тиковые данные (время, цена, объём).

     Я уже рассказывал про классы стратегий,  про то, что они используют интерфейс, который отвечает за получение маркет-даты – IMarketDataGate. Внутри себя, стратегии подписываются на событие AddTick из IMarketDataGate – т.е. на каждый тик стратегия проводит свой анализ данных, расчеты, и, при определённых условиях, выставляет заявки. Стратегии не важно, как генерируются тики – она просто реагирует на это событие. IMarketDataGate, имеет два варианта реализации. Первый – это обёрткой над COM библиотекой брокера (в моём случае – смартком). Тут всё просто – каждый день, кроме праздников и выходных, с 10 часов, магическим образом, начинают литься тики – их мне посылает система брокера. А вот для организации локальных бэктестов, нужен какой-то иной источник данных – некая имитация брокера по части генерации тиков. И тут-то и появляется наш герой – ITickGenerator.

interface ITickGenerator
{
   event EventHandler<StockTickEventArgs> OnTick;
   event Action OnEnd;
   void Start(string symbol);
}


( Читать дальше )

Торговая система для новичка 2. День пятый

Фьючерс на доллар-рубль сегодня вырос. Скорее всего, это — пятничная коррекция движению в этом активе, которое было в течение недели. Кто-то хочет спокойно спать в выходные.
На основании предложений от моих друзей из фейсбука я сделал несколько версий Базы, и они теперь своими различными подходами к открытию и закрытию позиций дают пищу для размышлений. А это, в свою очередь, делает мой сериал «Торговая система для новичка» интересней. Подробности см. в видео.


Торговая система для новичка 2. День четвертый

Уж не знаю, что «они там курят», но фьючерс на доллар-рубль сегодня утром сделал еще одну ступеньку вниз. Это сыграло на руку гиперактивной Базе, которая с утра открыла короткую позицию. Спокойная и рассудительная ТСН2 остается пока без открытых позиций. Так и хочется сказать: Что там думать! Трясти надо!
От моих друзей из фейсбука продолжают поступать предложения по улучшению Базы. Сегодня сделал вторую версию Базы с фиксированным стопом, переходящим в скользящий стоп. Более подробно см. в видео.


Торговая система для новичка 2. День третий

Фьючерс на доллар-рубль сегодня, как и вчера, провел день в боковике, хотя понижательный тренд, как мне кажется, на этом рынке сохраняется. От моих друзей из фейсбука начали поступать предложения по улучшению Базы. База – это заготовка для торговой системы, которая наряду с торговой системой ТСН2 участвует в сериале. Одно из таких предложений я сегодня реализовал. Более подробно см. в видео.


Торговая система для новичка 2. День второй

Сегодня фьючерс на доллар-рубль после неуверенного движения вверх в первой половине дня, резко обвалился на новостях с нефтяного рынка во второй половине. В сериале участвуют ТСН2, торговая система, подготовленная мной и База, заготовка для ТС, которую я рассчитываю с помощью моих друзей, «довести до ума». ТСН2 пока идентифицирует происходящее на рынке как боковик и позиций за два прошедших дня не открывала. База, наоборот, вчера открыла длинную позицию, сегодня ее закрыла и тут же открыла короткую. Заготовка, что вы хотите?!


Торговая система своими руками. Часть 3. Выставление заявок.

    • 05 сентября 2017, 14:48
    • |
    • k100
  • Еще

     Добрый день. В предыдущем посте были описаны базовые компоненты – классы обёртки над API брокера. Не хотелось нагружать их дополнительной логикой, поэтому оставим их как есть, и перейдём к чуть более сложному объекту. На сцене появляется IOrderManager, который отвечает за заявки и сделки по ним.

interface IOrderManager
{
   List<Order> GetOrders(string symbol, int strategyID);
   void PlaceOrder(string symbol, int strategyID, OrderAction action, OrderType type, double price, double amount, double stopPrice);
} 

     Всего два метода – выставить заявку и получить их список. Но, у реализации IOrderManager’а непростая задача – надо не просто выставлять заявки, но также хранить какая стратегия это сделала и какие прошли сделки. Получается, у OrderManager’а есть некое состояние – список заявок/сделок, поэтому этот объект относится больше к модели, чем к сервисному слою программы. Перед этим я описывал IPortfolioGate – класс-обёртка для работы с портфелем, вот у него нет состояния, он просто транслирует вызов методов внешней COM библиотеки, а вот OrderManager это некий дополнительный уровень над всем этим – у него появляются «знания» о предметной области, и именно он используется в классах стратегий.
     Также, появляются две сущности – заявка (Order) и сделка (Trade). Класс Order имеет список сделок прошедших по данной заявке.

class Order
{
   public string Symbol { get; set; }
   public OrderAction Action { get; set; }
   public double Price { get; set; }
   …
   public List<Trade> Trades { get; set; }
}


( Читать дальше )

Торговая система для новичка 2. День первый

Наблюдение за рынком само по себе может принести существенную пользу для новичка. Но часто у новичка для этого нет ни времени, ни возможностей. Это первое, в чем может оказать помощь начинающему торговый сериал «Торговая система для новичка», который я начинаю сегодня. Для того чтобы интересней было наблюдать за рынком, я сделал трендовую систему, и рынок мы будем «видеть» как бы сквозь нее. В течение 2-х недель я каждый день буду делать видео, в котором можно будет увидеть, как ведет в течения дня себя рынок, как реагирует на это сделанная мной ТС. Если ТС будет делать ошибки – хорошо. Зритель (новичок) их запомнит и уже не повторит в своей торговле. Если ТС не будет делать ошибок – тоже хорошо, так как после окончания сериала я буду готов выслать эту ТС (после выполнения небольшого, не денежного условия) любому желающему. Приятного просмотра.
P.S. Про первый сериал «Торговая система для новичка» см.здесь https://smart-lab.ru/blog/343430.php


Апдейт модели LQI за Август'17 - 10+% годовых в $$$ не слезая с дивана!

    • 03 сентября 2017, 22:27
    • |
    • MadQuant
  • Еще

Апдейт модели LQI за Август'17 - 10+% годовых в $$$ не слезая с дивана!
Результаты консервативной количественной инвестиционной модели LQI (lazy quantitative investing), о которой я писал ранее (http://smart-lab.ru/blog/384110.php), за август (результаты за прошлый месяц: smart-lab.ru/blog/412521.php). Хотя месяц и не был слишком удачным для S&P 500 и для модели — ей удалось остаться в плюсе и обогнать свои бенчмарки:

weight monthly.ret
XLY 0.085 -2.03
XLP 0.143 -1.00
XLE 0.093 -5.46
XLF 0.127 -2.26
XLV 0.089 1.98
XLI 0.104 0.51
XLB 0.000 0.71
XLK 0.000 2.40
XLU 0.106 2.71
IYZ 0.000 -1.21
VNQ 0.000 -0.71
SHY 0.000 0.17
TLT 0.115 2.69
GLD 0.140 4.29


Предыдущие веса были опубликованы утром 1-го августа, соответственно доходности приведены за период с закрытия 1-го августа до закрытия 31-го августа.
Корреляция между весами и ретурнами положительная — 0.061. Хотя модель и сделала серьезную ошибку, взяв весом 9.3% XLE, сильно упавший за месяц — однако это было компенсировано верными решениями о покупке топ-перформеров месяца — XLV, XLU, TLT и в особенности GLD (с максимальным весом 14%). Вследствие этого модели удалось обогнать свои бенчмарки (SPY & EQW — equal-weighted портфель из торгуемых тикеров) в терминах ретурна и риска (максимальная просадка). Сравнение — на графике в начале: SPY — +0.1%, EQW — +0.2%, LQI — +0.5%. Просадки: SPY — 2.1%, EQW — 1.5%, LQI — 1.0%. В целом модель перформила в августе в рамках своего риск-ретурн профиля.



( Читать дальше )

Посоветуйте, как торговать на сползающей пиле?

    • 01 сентября 2017, 15:09
    • |
    • FullCup
  • Еще
Всем удачной профитной торговли!
.
Моя Торговая Система (ТС) берет нормально движения, терпимо торгует на фтэт-пиле и на вялорастущей пиле.
Но как попадает на вяловнизсползающую пилу, так весь профит вдребезги!!!
Вот внизу ссылка на отчет с интересными всем графиками (Эквити):
.
Август 2017. Отчет торговли нефтью с FullCup.
.
Вы сразу угадаете, где ТС «попала» на  вяловнизсползающую пилу!
.
Вот как на ней торговать? Подскажите, дайте совет...
Буду признателен за конструктив!

Торговая система своими руками. Часть 2. Базовые компоненты.

    • 01 сентября 2017, 11:36
    • |
    • k100
  • Еще

     Приветствую! В предыдущем посте была теория, теперь к делу. Кое-что буду упрощать, чтобы представить картинку в целом.

     Итак, чтобы проект не зависел от API внешней com библиотеки (SmartCom или д.р.), чтобы в коде стратегий  не использовались специфические типы, разработку я начала с обёрток над смарткомом. Я определил три базовых интерфейса: IConnectGate, IMarketDataGate и IPortfolioGate. Соответственно для подключения, для получения маркет-даты и для выставления заявок и работы с портфелем. Причём каждый из этих трёх интерфейсов мне надо было реализовать минимум дважды – для смарткома и для локального тестера.

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



( Читать дальше )

....все тэги
UPDONW
Новый дизайн