Постов с тегом "С++": 28

С++


Хранение статистики индикаторов для ускорения работы оптимизатора и тестирования на истории

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

В качестве результата прогноза индикатора можно использовать разные варианты. Первый вариант — использовать движение цены за определенное время. Например, для конкретной стратегии используется замер движения цены за три минуты после прогноза. Цена при этом может остаться на том же уровне, что и в начале прогноза, и это надо учитывать. Другой вариант результата прогноза индикатора — исход движения цены при использовании равнозначного фиксированного тейк-профита и стоп-лосса.

Структура хранения данных выглядит так:
Хранение статистики индикаторов для ускорения работы оптимизатора и тестирования на истории

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

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

Универсальный индикатор для С++

Еще давно у меня возникла потребность получать сразу массивы значений различных индикаторов. Можно конечно создавать массив индикаторов, и затем прогонять котировки через него. Но я решил пойти другим путем и сделал индикатор «скользящее окно» или сокращенно MW, который может рассчитывать сразу массивы RSI, SMA, STD_DEV от тех значений, что содержатся в его буфере.

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

Также я добавил возможность найти MIN, MAX, STD_DEV значения окна с заданным периодом и смещением внутри буфера индикатора. Это делает индикатор еще более универсальным. 

В дальнейшем планирую расширять функционал индикатора в рамках своей C++ header-only библиотеки технического анализа

Подписывайтесь на мой телеграм-канал бинарные опционы по научному, где периодически публикуются новые библиотеки и описывается ход запуска робота на «бинарках».

Тестирование стратегий для бинарных опционов на истории. Библиотека для С++ и пример с "граалем".

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

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

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

Реализация удобного доступа к котировкам таймфрейма М1 + сжатие в 12 раз по сравнению с csv файлами

Когда еще только начал заниматься алготрейдингом, возник вопрос удобного доступа к историческим данным котировкам. Дело в том, что csv файлы могут содержать пропуски данных, а мне необходимо было получать котировки за конкретные дни года. Поэтому мне было не удобно грузить csv файл в общий массив и затем искать в нем отрезки данных. Второй проблемой было то, что минутный график (не говоря уже о тиковом) занимает много места, когда речь идет о более 20 шт. валютных пар. Конечно это уже не такая проблема, как первая, так как сейчас большая память на SSD или HHD не проблема. Но с другой стороны, хранить все >20 валютных пар уже в памяти компьютера тоже не лучший вариант, лучше было бы грузить данные по кускам. 

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

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


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

Начинающим алготрейдерам читать обязательно. На многое открывает глаза.

Не буду растекаться по древу.
Если Вы начинающий алготрейдер (не HFT), или тестируете собственные торговые стратегии и МТС, то Вам обязательно нужно прочитать эту книгу.
Нет в этой книге граалей. В качестве примеров используются классические пробойные, трендследящие, контртрендовые алгоритмы. Показана статистика их тестирования на портфелях различных инструментов. Кратко затронуты стратегии на основе сезонности, циклов, анализа астрономических ритмов, генетических алгоритмов и нейронных сетей.
Очень полезны главы посвященные анализу различных приказов и типов входа в сделки.
Часть III книги, наиболее интересная на мой взгляд, полностью посвящена анализу и реализации различных типов стратегий выхода из сделок.
Есть примеры кода на C++.
Книга суховата, в ней практически нет воды, красивой лирики. Именно поэтому она читается на одном дыхании.
Рекомендую к прочтению.

По следам Четвертой промышленной революции ...

В  следующее воскресение выйдет очень большой пост по финансовому программированию и вообще программированию. Обсудим Граали самого сложного языка программирования С++.

1) Я дам конкретные практические рекомендации что учить, приведу ссылки на самое лучшее оригинальное ПО от Microsoft.
2) Материал очень сложный, но мы обсудим как соблюсти все главные правила из очень большого потока информации. Удивительно, но это не теория вероятности, здесь можно гарантировать результат на 95%, если правильно соблюсти правила.
3) Язык C++.
 
Ни в коем случае не пропустите данный пост в следующее воскресение, ваша жизнь может кардинально измениться после прочтения информации в следующее воскресение. Если вы пару раз копируете ссылку на этот топик, буду очень признателен.

До встречи!

Коннектор QUIK на С++

Господа алготрейдеры, подскажите кто реализовывал коннектор к QUIK на С++.
Примерную схему коннектора понимаю как реализовать, но нет навыка в LUA, а время терять не хочется, может кто проконсультирует. В идеале нужна консультация под ОС Linux, но можно и под Windows, главное на С++.

Подготовительный курс «Алгоритмы и структуры данных»

    • 29 ноября 2016, 12:16
    • |
    • Viking
  • Еще
Сегодня был размещен интересный видеокурс по программированию.
    Для тех ищет возможность самостоятельно написать робота на С++ данная информация будет полезна.

    https://habrahabr.ru/company/mailru/blog/316170/


Подготовительный курс «Алгоритмы и структуры данных»


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

Курс ведет Сергей Бабичев, доцент кафедр информатики и вычислительной математики, а также теоретической и прикладной информатики в МФТИ. Под катом вас ждет восемь лекций:

  • Лекция 1. «Введение. Исполнители. Абстракции интерфейсов. Рекурсия»
  • Лекция 2. «Жадные алгоритмы»
  • Лекция 3. «Сортировки»
  • Лекция 4. «Поиск. Списки»
  • Лекция 5. «Деревья»
  • Лекция 6. «Хеш-таблицы»
  • Лекция 7. «Динамическое программирование»
  • Лекция 8. «Алгоритмы на графах»

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