Программирование


Про программирование в алготрейдинге и полезные навыки

По моему опыту в алготрейдинге (под алготрейдингом я подразумеваю поиск закономерностей и их использование) большая часть времени уходит на исследования, это примерно 90% времени. Однако, часто можно услышать критику примерно следующего плана.
  • Нужно писать код на питоне/джаве, можно в два счета набросать торгового робота. Нафиг Си и С++, сложна.
  • Не нужно изобретать велосипеды, все уже сделано за нас. Зря потратить время, бери готовое и действуй. Метатрейдер в помощь.
  • Нужно всегда писать чистый код, а не говнокод. 
Если все это верно, то получается, что успех в алготрейдинге (да и в IT) должен зависеть от этих факторов. Однако, к примеру, на практике большая часть доли в проекте принадлежит обычно не программистам (т.е. людям, которые вообще могут не уметь программировать), хороший код не обязательно принесет много денег, да и сложные алгоритмы порой без разницы, на каком языке реализовывать, быстрее они не напишутся.

Если объяснить проще, то успех не равен чистоте, хорошести и прочим характеристикам кода. Тогда почему происходит акцентуация на подобные факторы? 

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

Библиотека С++ для загрузки экономических новостей

Есть один хороший сайт www.investing.com с экономическими новостями, которым пользуются многие трейдеры на Форексе. И решил я как-то раз попробовать посмотреть, что будет на бэктестинге торговли по новостям. Поковырявшись в страничке экономического календаря сделал в итоге С++ библиотеку для загрузки новостей. Для http запросов библиотека использует curl. Новости загружаются по UTC времени, загрузить их можно со времен начала эпохи UNIX

Класс для хранения одной новости:
/** \brief Класс Новостей
*/
class News
{
public:
	std::string name;          /**< Имя новости */
	std::string currency;      /**< Валюта новости */
	std::string country;       /**< Страна новости */
	int level_volatility = -1; /**< Уровень волатильности (-1 не инициализировано,  низкий уровень = 0, средний 1, высокий 2) */
	double previous;           /**< Предыдущее значение */
	double actual;             /**< Актуальное значение */
	double forecast;           /**< Предсказанное значение */
	bool is_previous = false;  /**< Наличие предыдущего значения */
	bool is_actual = false;    /**< Наличие актуального значения */
	bool is_forecast = false;  /**< Наличие предсказанного значения */
	uint64_t timestamp = 0;    /**< Метка времени новости */

	News() {};
};
Для хранения массива исторических данных новостей используется библиотека 

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

Про тестирование стратегий на фьючерсах

Просто несколько строк про свой опыт.

Тестер стратегий у меня самописный (java), что даёт неплохую производительность и возможность запрограммировать именно то, что нужно мне.

Обычная склейка фьючерсов не используется из-за нестыковок цены соседних контрактов, которые портят как расчёт прибылей/убытков, так и значения индикаторов.

Свечные данные сохраняются из терминала QUIK скриптом на QLua в ежедневном режиме отдельно по каждому инструменту. Получается, что для каждого фьючерса есть вся его история в виде csv-файлов «финамовского» OHLCV-формата. Тестер умеет загружать временные ряды из этих файлов за любой период времени.

Для каждого фьючерса прописаны 3 даты: дата экспирации, день, предшествующий экспирации, и день экспирации предыдущего фьючерса. В коде это выглядит примерно так:

SiH9("Si-3.19", "SiH9", "Si", 20190321, 20190320, 20181220),
SiM9("Si-6.19", "SiM9", "Si", 20190620, 20190619, 20190321),
SiU9("Si-9.19", "SiU9", "Si", 20190919, 20190918, 20190620),
SiZ9("Si-12.19", "SiZ9", "Si", 20191219, 20191218, 20190919),

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

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

Мой плейлист обогатился нефтяным отчетом (СА, дроны, ipo Арамко).

Кто читал об этой истории здесь: smart-lab.ru/blog/571765.php, тому это видео ни к чему. Хотя свежая информация присутствует.

Да что ходить вокруг, да около.
Смотрим и думаем… а что это было?



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

Терминалы и брокеры (почему TRANSAQ лучший в мире терминал)

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

Объясню. Я как алгоритмист, перепробовал множество самых разных терминалов, коннекторов и связок для торговли на разных рынках. И со всей ответственностью заявляю:

Transaq, у нет равных по:
— скорости
— эффективности использования ресурсов компьютера
— стабильности подключения к серверу (при нормальном брокере)
— лёгкости написания и запуска алгоритмических стратегий

Вот всё остальное, что я пробовал на рынке (не будем перечислять, но поверьте это практически всё, что есть на рынке) — это жуто тормозящее, лагающее г… но (простите за дворовый стиль изложения)). И не надо оценивать терминал по «красивости» всяких кнопочек и градиентов. Проф-трейдеру это вообще не нужно. Да пусть он будет хоть чёрно-белый, лишь бы работал как «жидкий терминатор» в смысле неубиваемости.

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

Победа России на Олимпиаде по информатике!

Четыре золотые медали завоевали российские школьники на 31-й Международной олимпиаде по информатике.

Стали известны предварительные результаты 31-й Международной олимпиады по информатике, которая состоялась в Баку (Азербайджан). В состязании приняли участие более 300 школьников из 88 стран мира. Российская сборная завоевала четыре золотые медали и заняла первое место в медальном зачёте.
Победа России на Олимпиаде по информатике!
Медалей удостоены:
Ильдар Гайнуллин (лицей имени Н.И. Лобачевского Казанского (Приволжского) федерального университета, Казань) – золото
Егор Лифарь (школа «Интеллектуал», Москва) – золото
Александр Морозов (Президентский физико-математический лицей № 239, Санкт-Петербург) – золото
Владимир Романов (школа-интернат имени А.Н. Колмогорова Московского государственного университета имени М.В. Ломоносова, Москва) – золото

По центру (самый мелкий, в черной футболке) — Ильдар, гордость современной информатики России, Он — Топ 2 в мировом рейтинге. Выше его только (пока) Бенджамин Чи, американец.

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

Как Docker может помочь при разработке торговых роботов?

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



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

Рецензия на книгу. C. Conlan, "Automated Trading with R"

Рецензия на книгу «Automated Trading with R» — Chris Colan (Amazon)

C. Conlan, «Automated Trading with R: Quantitative Research and Platform Development», 2016, 217 стр.

Bethesda, Maryland, USA
ISBN-13 (pbk): 978-1-4842-2177-8 ISBN-13 (electronic): 978-1-4842-2178-5
DOI 10.1007/978-1-4842-2178-5

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



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

....все тэги
UPDONW