Проект демонстрирует возможную архитектуру для автоторговли. Можно брать за основу при реализации автоторговли на любых языках программирования. Прект состоит из 3 основных частей:
- advisors: торговые советники
- historydata: исторические бары
- tests: тестирование торговых советников на истории
- trader: автоторговля по заданным стратегиям
Советник рекомендует позицию в отрезке [-1;+1] от шорт "на все" до лонг "на все". Это позволяет гибко менять позицию. В качестве примера приводится простейшая стратегия (не рекомендуется для использования). Оснонвная идея строить стратегии из индикаторов как из кубиков:
def sample(self):
volInd = indicators.Volatility(self._stdVol, 100)
ind = indicators.WeightSum([
indicators.Turtle(3),
indicators.Turtle(6),
])
ind = indicators.EmaRebalance(volInd, ind, 1.0/25)
ind = indicators.VolatilityWrapper(volInd, ind)
ind = indicators.CandleValidator(ind)
return ind
Пример тестирования стратегии на квартальных фьючерсах Si c 2009 года. Папка ~/TradingData/minutes5 должна содержать исторические котировки квартальных фьючерсов.
$python3 -m tests --advisor sample --security Si --startyear 2009
Чтобы торговать, нужно реализовать протокол Trader. Проект содержит следующие реализации этого протокола:
- MockTrader: не выводит заявки, можно использовать для тестирования
- QuikTrader: для торговли через терминал Quik, по аналогии с проектом QuikSharp. Для работы нужно установить Lua скрипты для Quik.
- MultyTrader: хранит словарь Trader и позволяет вызывать любой из них. Удобен, если надо работать со многими счетами, брокерами.
При необходимости можно реализовать другие Trader (finam, alor, T).
Запуск автоторговли:
$python3 -m trader