Блог им. SergeyEgorov |Про рыночные псевдоэмуляторы

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

const market = new Market();
const trader = { name: 'Broker Father' };
const traderId = market.register(trader);
const offer = {
  trader: traderId,
  shares: [
    {
      name: 'EDEN',
      totalShares: 1000000000.00,
      pricePerShare: 1000.00,
      currency: 'USD'
    }
  ]
};

market.forSell(offer);

Блог им. SergeyEgorov |Как получить информацию о сделках?

Продолжаем рассматривать контекст торговых данных (ru.sazan.trader.Data.TradingDataContext). В этом видео показано как пользоваться вызовами методов расширения GetTrades для того, чтобы получить коллекцию (IEnumerable<Trade>) сделок для торгуемой стратегии или для конкретной заявки.

Кроме того, в видео показано как пользоваться одним из методов, позволяющих эмулировать комплект, содержащий сигнал (Signal), заявку (Order) и сделку (Trade), которые могут потребоваться в тестовых классах для проверки правильности срабатывания обработчиков на вход и выход.


Блог им. SergeyEgorov |Миграция адаптера ru.sazan.trader.smartcom

Поскольку новые тестовые счета Ай Ти Инвест регистрирует на торговом контуре Matrix, то мы убираем адаптер для SmartCOM 2 на дальнюю полку и начинаем переезд на SmartCOM версии 3. Новое видео показывает что нужно изменить в нашем демонстрационном роботе ru.sazan.scalper, чтобы он начал работать на новом тестовом торговом контуре. Не забудьте предварительно установить себе саму третью версию компонента SmartCOM.


Блог им. 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>>();


Блог им. SergeyEgorov |Как собрать историю стакана?

Тема нового видео предложена трейдерами, изучающими возможности библиотеки. В общем фильма отвечает на вопрос «Как за десять минут написать сборщика статистики очереди заявок (стакана) для финансового инструмента?».

Если вам для решения вашей проблемы не требуются исторические данные о сделках и заявках за несколько прошедших лет, а достаточно статистики за неделю, или две, то вы легко можете собрать на основе нашего скальпирующего робота инструмент, который будет «слушать» очереди заявок и записывать их результаты в текстовые файлы с разделителями. А уже эти текстовые файлы вы легко сможете распотрошить с помощью популярных средств работы с табличными данными, такими как Microsoft Excel или OpenOffice Calc или LibreOffice Calc.

Однако, не забывайте пожалуйста что нет смысла записывать данные с тестового контура Ай Ти Инвест. Там данные идут с задержкой и в них вносятся какие-то искажения.


Исходный код скальпера все там же, в открытом репозитории битбакет.

Блог им. SergeyEgorov |Бесплатная библиотека для программирования роботов

Открываю исходный код, который мы используем для сборки наших торговых роботов.

Разработку я начал год назад и нашей главной целью было как можно быстрее, и как можно с меньшими затратами начать торговать алгоритмически. Цели как мне кажется мы вполне достигли, потому что используя наш подход мы сегодня можем реализовывать и ставить на торговлю новые алгоритмы очень быстро (в течение одного рабочего дня даже).

Я записал несколько коротеньких видео, все вместе они потянут на час с небольшим, в которых постарался показать концептуальную основу библиотеки и как с ее помощью можно за час собрать и запустить робота.


  Видео можно скачать файлом отсюда. (Формат avi, размер 27.4 Мб)


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

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