На этом уроке мы сделаем первую программу на фреймворке для алгоритмической торговли BackTrader. Это самая простая программа уровня “Привет Мир”.
Взаимодействие всех основных компонентов Backtrader, рассмотренных в предыдущем уроке, позволяет обрабатывать входные данные и вычислять коэффициенты, формулировать и реализовывать стратегию, получать и исполнять ордера, отслеживать и измерять эффективность сделок и стратегии в целом.
Главный модуль Cerebro (“мозг”, движок) управляет всем этим процессом, начиная со сбора исходных данных, последовательной обработки каждого нового бара и заканчивая предоставлением результатов.
При изучении Backtrader желательно постоянно обращаться к официальной документации.
Возьмем код нашей первой программы, практически совпадающий с примером из раздела “Quickstart Guide”.
import backtrader as bt
if __name__ == "__main__":
cerebro = bt.Cerebro()
print("Начальный капитал: %.2f" % cerebro.broker.getvalue())
cerebro.run()
print("Конечный капитал: %.2f" % cerebro.broker.getvalue())
Запустим программу и получим ответ:
Начальный капитал: 10000.00 Конечный капитал: 10000.00
Итак, первое что нам надо обязательно сделать – импортировать backtrader и указать для удостава сокращенное обращение bt.
Далее создать движок BackTrader – cerebro, создав экземпляр класса bt.Cerebro()
И наконец запустить движок (запустить торговую систему).
В программе мы выводим также сумму начального и конечного капитала, которая ровняется 10000 (Значение по умолчанию).
Давайте изменим первоначальное значение нашего капитала (кэш):
import backtrader as bt
if __name__ == "__main__":
cerebro = bt.Cerebro()
cash = 777.717171
cerebro.broker.setcash(cash)
print("Начальный капитал: %.2f" % cerebro.broker.getvalue())
cerebro.run()
print("Конечный капитал: %.2f" % cerebro.broker.getvalue())
подробнее смотри документацию Broker→Reference→set_cash(cash) или сокращенно setcash
И для начинающих изучать пайтон отдельно мы рассмотрим 2 момента:
- для чего необходима конструкция if __name__ == “__main__”
- материал по F строкам,
ведь мы можем сделать вывод не только как print(“Начальный капитал: %.2f” % cerebro.broker.getvalue()), но как print(f”Начальный капитал: {cerebro.broker.getvalue():.2f}”)
Смотрите подробнее об этом на нашем сайте в разделе Python.
Видео по теме: