Первая программа на Backtrader

На этом уроке мы сделаем первую программу на фреймворке для алгоритмической торговли 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.

 

Видео по теме:

 

Оцените статью
Репост в TG и VK
Алготрейдинг шаг за шагом. Создай торгового робота на Python с нуля по нашим урокам. Автоматизируй торговлю на бирже по собственной стратегии.