Skip to content

vlkulpinov/trade

Repository files navigation

#Пакет для локальной разработки

Мы подготовили пакет для локальной разработки стратегий на C++. Он включает в себя набор библиотек и файлов, достаточный для разработки и тестирования стратегий на вашем компьютере.

Пакет опубликован на GitHub. Его можно скачать следующей командой (должен быть установлен Git):

git clone https://github.com/hftbattle/hftbattle.git

Подробнее об использовании пакета для локальной разработки:

##Установка зависимостей

Для установки зависимостей на Ubuntu можно запустить скрипт packages_ubuntu.sh, находящийся в корне репозитория:

./packages_ubuntu.sh

Скрипт устанавливает:

  • Компилятор g++ 4.9,

  • CMake 2.8.4 и выше:

sudo apt-get install cmake

Для установки зависимостей на Mac OS X можно запустить скрипт packages_mac.sh, находящийся в корне репозитория:

./packages_mac.sh

Скрипт устанавливает:

  • Компилятор Apple LLVM 6.0 и выше (подробное описание процедуру установки здесь):
xcode-select --install
  • Менеджер пакетов Homebrew:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • CMake 2.8.4 и выше:
brew install cmake

Для запуска под Windows необходимо иметь:

Необходимо установить скачанный компилятор с настройками:

--rev=0 --bootstrap --jobs=4 --threads=posix --exceptions=seh --arch=x86_64

Затем следует добавить файл с бинарниками в переменную окружения path:

setx path "%path%;YOUR_PATH_TO_MINGW\x86_64-4.9.2-posix-seh-rt_v3-rev0\mingw64\bin"
  • CMake 2.8.4 и выше:

Например, можно поставить CLion, CMake будет в комплекте. Далее необходимо добавить путь до cmake.exe в переменную окружения PATH.

  • Python 2.7 и выше. Можно скачать здесь.

Биржевые данные

В репозитории пакета находится папка data, в которой содержатся данные за несколько часов работы биржи (строка в конфиге "date": "2015.09.29") для торгового инструмента контеста – ES.

Этого достаточно для того, чтобы:

  • убедиться, что ваш код компилируется,
  • отладить вашу стратегию.

Однако чтобы проверить саму идею стратегии, вы можете скачать данные за один полный торговый день 2015.12.23 по этой ссылке.

Это можно сделать вручную или с помощью скрипта download.py, лежащего в корне репозитория:

./download.py

Скрипт скачает файл data.zip и разархивирует его в папку data.

Для тестирования стратегии на полном дне нужно изменить строку с датой в конфиге на 2015.12.23:

"date": "2015.12.23"

Запуск стратегии

По умолчанию ваша стратегия должна быть реализована в одном файле user_strategy.cpp. Соответствующий стратегии конфиг называется user_strategy.json.

Для компиляции стратегии надо выполнить команду

./build.py

Она соберет вашу стратегию в библиотеку и положит ее в папку build.

Для запуска стратегии нужно выполнить команду

./run.py strategies/user_strategy/user_strategy.json

Для запуска из CLion необходимо

  • задать исполняемый файл: для этого заходим в Run > Edit configurations, там задаем в качестве Executable исполняемый файл, соответствующий вашей платформе. Например, для Mac OS X исполняемый файл называется mac_launcher и лежит в корне репозитория.

  • прописать путь до конфига в аргументах командной строки: для этого в той же вкладке Run > Edit configurations в строчке Program arguments пишем относительный путь до конфига вашей стратегии от корня репозитория, например:

./strategies/user_strategy/user_strategy.json
  • сбилдить проект, выполнив Run > Build.
  • запустить симуляцию, нажав кнопку Run.

Добавление стратегии

Со временем у вас может возникнуть необходимость разрабатывать одновременно несколько различных стратегий или идей. При этом держать все в рамках одного файла user_strategy.cpp станет неудобно. Расскажем, как нужно добавлять новые стратегии в пакете для локальной разработки.

1. Создать cpp и json файлы

Каждая стратегия это пара файлов: [strategy_name].cpp и [strategy_name].json. Имя стратегии [strategy_name] должно быть уникальным среди всех ваших стратегий и примеров, находящихся в репозитории по умолчанию.

Стратегия должна лежать в поддиректории каталога strategies, будь то strategies/user_strategy или любая другая созданная вами директория strategies/my_strategy_dir. При этом в одной поддиректории можно создавать сколько угодно стратегий.

2. Зарегистрировать стратегию

При этом если конфиг для новой стратегии можно просто скопировать из user_strategy.json, то cpp-файл придется немного подправить. А именно, нужно зарегистрировать свою новую стратегию следующей командой в конце cpp-файла:

REGISTER_CONTEST_STRATEGY(UserStrategy, [strategy_name])

Например, если вы назвали файл-стратегию best_strategy_ever.cpp, то вам нужно добавить следующую строку в конец файла best_strategy_ever.cpp:

REGISTER_CONTEST_STRATEGY(UserStrategy, best_strategy_ever)

Необходимость регистрировать новую стратегию вызвана особенностями динамической линковки стратегий с симулятором. При этом на арену [{{ book["contest.arena.name"] }}]({{ book["contest.arena.url"] }}) вы можете посылать код стратегий, не заботясь о регистрации, система сделает это за вас, даже если вы послали со своей регистрацицей.

3. Перезагрузить CMake

После добавления новой стратегии, нужно дать знать стратегии и симулятору друг о друге. Для этого нужно перезагрузить CMake.

Для тех, кто работает из консоли, это означает, что нужно просто заново выполнить скрипт build.py:

./build.py

Если же вы работаете из CLion, то нужно выполнить Tools > CMake > Reload CMake Project. После чего сбилдить проект с помощью Run > Build.

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published