Продолжаю учить язык программирования Питон.
Начал разбираться с фреймворком 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
В первом сообщении подробно, а внизу — краткое описание задачи
Пол-литры я заначил :)))