Блог им. 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 |25 декабря

Все нижеизложенное является плодом моего извращенного чтением smart-lab-а и программированием воображения и никогда не происходило ни в одной из известных мне реальностей. Любые совпадения случайны, а действующие лица выдуманы.

Электрические полусумерки, хаотически прорезаемые редкими светящимися пятнами работающих мониторов и мягко-приглушенным светодиодным флером пары настольных ламп покрывали открытое офисное пространство. За окном, в тревожном свете уличного фонаря бесновались снежные белые вихри декабрьской вьюги. Временами, эта хаотическая пляска на миг замирала, а в следующую секунду ветер срывался с места и яростно тащил стылые хлопья вдоль окна так, что начинало казаться что это само здание несется в пространстве, продирая угловато-уродливыми контурами пушистые снежные завесы.

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



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

Блог им. SergeyEgorov |Бесплатные учебные видео по программированию

Смотрю тема всевозможного обучения опять страшно популярна на смарт-лабе. Соответственно от себя могу предложить новые, и совершенно бесплатные учебные видео по программированию на очень модном языке C#. Видео предназначены для тех, кто никогда не программировал, но планирует постепенно приобщаться, дабы повышать качество своей алгоритмической торговли и соответственно жизни.

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

P.S. Забыл упомянуть. Видео в формате «для занятых» очень короткие, по пять минут каждое.

Блог им. SergeyEgorov |Вебинары-практикумы "C# для начинающих"

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

На вебинары приглашаются слушатели (зрители-участники), не имеющие опыта программирования совсем, или к примеру не имеющие такового успешного опыта. Поскольку наша цель коммунизм приобретение первичных навыков, присущих профессиональным программистам, то лекций не будет, все занятия будут практическими от начала и до конца.

Писать код будем на языке C#, используя бесплатную среду разработки Microsoft Visual Studio Express для Windows Desktop. Все сущности и понятия, реализуемые во время занятий, конечно же будут в основном из предметной области алгоритмической торговли.


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

Блог им. SergeyEgorov |Программируем простейший бэктестер (часть 4)

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


Блог им. SergeyEgorov |Программируем простейший бэктестер (часть 3)

Целеустремленно и неотвратимо продолжаем кодировать компоненты для простейшего бэктестера. Тема сегодняшнего видео — обработчик, который фиксирует прибыль, генерируя сигнал на закрытие позиции, когда цена достигает границы, определенной нами в настройках. Как мы и договаривались обработчик щелкает каждый раз, когда в контекст торговых данных падает новая свечка (Bar).


Блог им. SergeyEgorov |Программируем простейший бэктестер (часть 1)

Один из самых частых вопросов, который начинающие программисты-трейдеры задают мне в почту или скайп это — «Как написать бэктестер?». Глобализовать задачу не хочется, дабы она не умерла из-за потери концентрации и мотивированности, поэтому пойдем поступательно, от простейшего, к простому и за несколько итераций реализуем набор алгоритмов, которые позволят тестировать торговые стратегии, базирующиеся на свечках (Bar). Первый бэктестер должен будет уметь исполнять рыночные заявки, по цене закрытия самого последнего бара, присутствующего в контексте торговых данных, для нашего финансового инструмента. Примерный план действий такой:

  1. Реализуем класс, который эмулирует сделки для наших заявок.
  2. Реализуем класс, который последовательно читает свечки из текстового файла и добавляет их в контекст торговых данных.
  3. Реализуем к примеру пробойный обработчик на открытие позиции.
  4. Реализуем обработчик на закрытие позиции.
  5. Реализуем консольное приложение, которому можно будет передавать имя текстового файла с историческими данными и которое будет выполнять бэктест для этих данных.

Видео по первому пункту:


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

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


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

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