Продолжаю учить язык программирования Питон.
Начал разбираться с фреймворком backtrader.
https://www.backtrader.com/
Он позволяет качать котировки с YahooFinance и анализировать их. Можно гонять разные стратегии, считать сколько заработал или потерял. По себе знаю, что самое трудное — сделать первые шаги. Потом всё идёт гораздо легче. Так вот, описываю первые шаги, чтобы получить вот такую картинку. Это код из базового примера с их заглавной страницы, я сам ничего не писал.
Это стратегия по пересечению скользяшек. На графике видно, что все сделки убыточные (вверху красные кружочки). При удачных сделках они были бы синие. Но дело не в убыточности отдельной стратегии, а в том, чтобы освоить фреймворк.
1. Качаем питон и устанавливаем
https://www.python.org/
2. Запускаем чёрное окошко — cmd.exe
3. В командной строке пишем:
pip install backtrader
это установит фреймворк, а потом
pip install requests
без этого не заработает данный пример. Ему нужна эта библиотека, чтобы качать котировки с YahooFinance
4. По идее вся подготовительная работа сделана. Осталось только запустить среду разработки. Она уже есть в установленном вами питоне (
IDLE):
С виду это обычный блокнот. В него кидаем этот код и сохраняем с любым именем. Но расширение строго определено: .py
Сам код:
from datetime import datetime
import backtrader as bt
class SmaCross(bt.SignalStrategy):
params = (('pfast', 10), ('pslow', 30),)
def __init__(self):
sma1, sma2 = bt.ind.SMA(period=self.p.pfast), bt.ind.SMA(period=self.p.pslow)
self.signal_add(bt.SIGNAL_LONG, bt.ind.CrossOver(sma1, sma2))
cerebro = bt.Cerebro()
data = bt.feeds.YahooFinanceData(dataname='MSFT', fromdate=datetime(2011, 1, 1),todate=datetime(2012, 12, 31))
cerebro.adddata(data)
cerebro.addstrategy(SmaCross)
cerebro.run()
cerebro.plot()
Текст кода интуитивно понятен. Речь идёт про пересечение двух скользяшек с периодом 10 и 30. Анализируются акции Microsoft за 2011 и 2012 годы. Рассматриваются только сигналы на покупку. Покупка происходит при пересечении двух мувингов. Не надо быть программистом, чтобы понять это из данного кода.
Вверху нажимаете Run Module
и получаете картинку как у меня:
Стратегия убыточна. Что и требовалось доказать :)
--
Мой канал на
YouTube
Что за кривой код который пропустил сигналы на вход и выход отмеченные красными стрелками?
Ну и вопрос по питону, кто-нибудь в курсе, как инициализируется переменная self.p? Я вижу включенную переменную params, но как интерпретатор знает что ее имя можно сократить до p?
Я в итоге остановился на питоне, так как у него есть селениум, который позволяет выкачивать отчетность компаний и потом спокойно переводить финансовую информацию в удобный мне вид.
Проблему я сформулировал здесь:
community.backtrader.com/topic/2023/help-with-starting-using-bt
В первом сообщении подробно, а внизу — краткое описание задачи
Пол-литры я заначил :)))