Алготрейдинг на Python. Торговые роботы.
485 subscribers
32 photos
2 files
42 links
Канал блога алготрейдинг.рф
В 48 начал изучать Python с нуля. Здесь делюсь знаниями и рассказываю о том, что получается сделать.
админ: @Severland
чат "Алготрейдинг АлгоКоллектива" t.me/algotrading_ru
чат "Flet-GUI для Python программ" t.me/flet_GUI
Download Telegram
Всем привет! Нашел на этой неделе время и протестировал работу с БД SQLlite. Почитал первые главы одного замечательного учебника по SQL и воспользовался шпаргалками с Хабра. Ссылки на эти источники есть в статье моего блога.
Написал в качестве эксперимента два скрипта. С помощью первого все файлы с котировками акций загнал в одну базу данных с транформацией времени в unix время. На все ушло 48мин. Вторым скриптом обратно из базы данных сгенерировал csv файлы с котировками. - на все ушло 15 мин.

#python_с_нуля #sql #sqllite
Впечатления - отличные, за исключением скорости. У меня ssd диск и на hdd видимо время будет еще дольше. С другой стороны это время затрачено вообще на все акции на всей их многолетней истории и с 4 разными таймфреймами. Уверен, что при записи потока живых данных по нескольким акциям вопрос времени вообще не будет препятствием к использованию sqllite. Чтение же данных идет намного быстрее записи и это для анализа и тестирования стратегий очень хорошо.
Еще в ходе эксперимента я нашел одну ошибку в первой версии программы Тахометр трейдера, а именно нашел несколько дублей строк. При записи в БД эти несколько дублей исчезли благодаря соответствующему sql запросу. В самой программе эту проблему также устраню при следующей модернизации.
И последнее. Во время написания скрипта пришла мысль, "а почему бы Мосбирже не отправлять данные, как минимум текущие "живые", по технологии WebSocket?" Почитал про эту технологию подробнее - однозначно должна быть именно такая передача данных, по этой технологии например идут данные на постоянно меняющийся график акций в вашем браузере. А get запросы, создают временные "рывки" в получении данных. Постоянно надо крутить циклы с их отправкой. Вообщем я задал в телеге вопрос представителю мосбиржи, на что получил ответ: "да, все по гет запросам. Про вебсокет ходят только разговоры пока. Конкретики по ним пока нет".

#мосбиржа #Algopack
Уже на первом этапе изучения языка python я думаю все, как и я, озадачиваются вопросом – как быть с секретными данными – логины, пароли, токены и т.п. Как и где их хранить? Ну не прописывать же их явно в тексте программы, а потом еще и на Гитхабе размещать. Особенно эта тема актуальна в сфере алготрейдинга, здесь думать о доступах и секретности паролей надо в первую очередь.
Решением могут стать "переменные среды". Что это такое, как их определять + простые примеры я изложил в новом конспекте знаний на своем блоге.

#python_с_нуля #пароли
Всем привет! Прям замкнутый круг получается у меня... начал изучать Flet, чтобы сделать оболочку программы и заткнулся с пониманием ООП. Стал смотреть курс Сергея Балакирева по ООП. По ходу просмотра вижу СПЛОШНЫЕ пробелы в "поверхностных" знаниях и решил посмотреть его базовый курс "Добрый, добрый Python с Сергеем Балакиревым". 😁
Вроде нелогично все вновь с начала начинать, ведь 5 мес(!) уже прошло с первых попыток что-то изучить в Python 😱. И я знал об этом курсе с самого начала, но не решался к нему приступить, т.к. он казался громоздким и сложным, соответственно жалко и время. Поэтому в конце прошлого года начинал я с различных миниуроков, чтения отдельных глав разных книг, частично смотрел курс по python от Богдана Стащука.  И вроде бы знания основные стали появляться, но все равно какая то бессистемность и недостаточность в понимании. В результате, спустя время, я таки смотрю курс "Добрый, добрый Python с Сергеем Балакиревым". И искренне рекомендую его всем начинающим!!!👍
Если вам сложно сразу пройти этот курс, жалеете время - то вернитесь к курсу через какое-то время после первого погружения в python с помощью других методик. Но спустя время к просмотру этот курс в любом случае будет очень полезен!
Курс выложен на платформе Stepik и он совершенно бесплатный!
Чем хорош этот курс:
1)видеоформат с отличным разъяснением учебного материала,
2) текстовый вариант лекций на сайте автора,
3) практические задания на степике по пройденному материалу (прям крайне полезная штука),
4) по итогу прохождения курса Вы получаете сертификат на платформе Stepik.
И как обычно, в первую очередь для себя, я решил сразу делать краткий конспект, чтобы только "соль" была - самое главное и все на одной странице. Весь материал чтобы был с ссылками на уроки курса - если возникает необходимость внимательного изучения забытого, то не рыться и не искать где это. Конспект наполняю, он закрыт паролем, т.к. часть материала там без рерайта - авторские выдержки с курса. Для сообщества моего канала пароль могу выложить, если будет интерес.

P.S. Сегодня 3й день изучения, постараюсь курс пройти по возможности быстрее, информация воспринимается куда как лучше, чем в самом начале знакомства с Python. Реально агитирую всем новичкам пройти его. Позже отчитаюсь о получении сертификата - для меня сейчас это имеет значение.💪
Ура! Я закончил этот курс, ровно за один месяц – день в день! Когда брался за него, я думал о куда как более быстром темпе и сроках прохождения, но сегодня, уже пройдя этот курс, я сознаю, что для меня даже месяц – это почти как подвиг. И без режима “гонки” потребовалось бы куда как больше времени. Кроме того за этот же месяц был создан конспект.

Мой огромный респект и благодарность автору курса – хорошая подача материала, а главное – отличные задачи по темам, от которых Python порой для меня превращался в некое подобие гадюки). Да, и это было бесплатно! Если Вы только погружаетесь в изучение языка, то это то, что Вам необходимо. Если появляется желание бросить курс из-за задач – смело пропускайте самые сложные и двигайтесь дальше. Но решить большую их часть – надо!

Мои достижения – Получен сертификат с отличием и результатом в 98%, решено полтысячи задач, получено 900 баллов из 917 возможных. Решено всё, кроме всех задач из раздела “Битовые операции”. Также из-за тупикового состояния я вынужден был искать в интернете решения по 4 задачам и потом просто вникал, что и как в них было реализовано. Сейчас главное не утратить полученные навыки, т.к. по некоторым темам уже кое-что забывается. Но благо у меня теперь есть этот конспект, который для меня стал и учебником и справочником, а это 2150 строк, почти 250тыс знаков, более 200 ссылок. Здесь всё на одной странице и с множеством ссылок на “подробности”. Я буду рад, если и Вам он пригодится.

Что дальше? Ну видимо нужно будет снова пройтись хотя бы по верхам ООП (ранее начинал смотреть ООП и отложил тему, поняв что сначала нужно знать базу). И однозначно для технического анализа надо будет изучить Pandas, т.к. оперировать с тысячами данных OHLCV с помощью обычных множеств Python представляется достаточно сложным и малоэффективным мероприятием.

#python_с_нуля
Обобщил информацию про Jupyter Notebook.
Что такое.
В каких приложениях можно пользоваться интегрированным Jupyter Notebook.
Как установить и запустить Jupyter Notebook в VScode.
Как установить на компьютер оригинальный Jupyter Notebook и JupyterLab для работы через браузер, в чем их отличия.
Ячейки с кодом и текстом, режим навигации и режим редактирования.
И самое главное - функциональный список быстрых клавиш с их описанием.
В общем то все для того, чтобы полноценно начать работать с Jupyter Notebook. По сути это отличный инструмент для изучения программирования и экспериментирования с различными блоками кода, в т.ч. для исследований и анализа рынков. В Jupyter Notebook и планирую изучить основы Pandas.
ссылка на материал:
https://xn--80agadetfnxfwx.xn--p1ai/python/jupyter-dlya-algotreydera/

#python_с_нуля #Jupyter_Notebook
Всем привет! Давно на связь не выходил, т.к. весенняя трудотерапия на полевых работах, а также эпизодические сеансы апитерапии на небольшой пасеке временно снизили темп самообразования.
До текущего момента я читал только отдельные статьи по всевозможным индикаторам и базовым понятиям теханализа от различных блоггеров-трейдеров. Сейчас я хочу поделиться комплектом книжек (фото), которые приобрел по настоятельной рекомендации одного хорошего человека, с которым познакомился через свой блог. Планирую прочесть их до конца лета, получится быстрее - замечательно. Обязательно буду делиться своими впечатлениями.
#книги
Также скоро закончу курс по Pandas, от которого пока двойственные впечатления, поделюсь позже. Но что точно - Pandas очень полезный и удобный инструмент для анализа исторических данных. И видимо скоро я начну с ним делать уже различные эксперименты, черпая идеи как из представленной литературы, так и из собственных соображений. Поэтапно, чтобы уже на практике освоить этот пандас, начиная с элементарных задач, типа каких свечек на графике больше. А затем переходить к более сложным задачам, опираясь на теорию теханализа и дополнительно используя библиотеку TA-lib, для которой есть обертки для Pandas. Больше эксперементов, больше понимания, больше шансов создавать успешные торговые стратегии.
#pandas
Я прошел курс “Pandas для Анализа данных” от Сергея Дубинина.
Написал детальный конспект курса в своем блоге https://xn--80agadetfnxfwx.xn--p1ai/python/pandas-konspekt-znaniy-dlya-algotreydera/

Есть понимание библиотеки, но закрепленными знаниями не могу похвастаться. Очень двойственные впечатления от курса. Посмотреть бесплатные видеоуроки - рекомендую, как минимум для получения базовых понятий - они донесены хорошо. Далее курс становится лично для меня монотонным и сложным для восприятия.

Я прошел все видеоуроки, но решать задачи (платная часть курса) с определенного момента бросил, набрав 185 баллов из 314 возможных. На конец мая 2024г количество обучаемых на этом курсе на Степике составило 655, на предпоследней теме “Тип данных Datetime” до последней задачи дошло и решило 5% от общего числа – 33 студента. А последнюю задачу последней темы “Дополнительные задачи” Верно решил только 1 учащийся. И я не думаю, что причина тут только в сложности задач, скорее всего в отсутствии достаточного интереса и стимула у обучаемых. Должно быть что-то более интересное и практическое.

При этом я ни в коей мере не ставлю под сомнение ценность поданной информации в видеоуроках – курс полезен. Созданный мной конспект выполнен опираясь именно на него.
#pandas
Что точно могу рекомендовать - книги. На мой взляд лучшие из свежих и на русском - 1)Pandas в действии. Борис Пасхавер. 2023 и 2)Python для сложных задач. Наука о данных. Джейк Вандер Плас. 2024

Переведу немного дух уделяя больше времени отдыху на свежем воздухе и начну практические эсперименты с Pandas на исторических данных. Плюсом начну тестить и использовать для анализа библиотеку TA-lib, для которой есть обертки для Pandas.
#книги #pandas
Несколько дней назад я получил и уже начал читать еще одну книгу "Механизм трейдинга. Как построить бизнес на бирже" Тимофея Мартынова (смартлаб).
Первые 70 страниц автор отрезвляет читателя, спускает фантазеров на землю и аргументированно, с данными статистики и различных исследований отговаривает вас заниматься трейдингом. И вообще дает новый взгляд на такие понятия как счастье, распоряжение временем жизни и о видах деятельности, на которое уходит это драгоценное время.
С первых же страниц понравился стиль изложения материала. Понимаешь, что автор - аналитик и профессиональный трейдер, а эта книга не ради книги, а ради ее содержания.
Автор признает, что 6 лет торговал в убыток и призывает: "Не повторяйте моих ошибок!"
Сейчас я закончил читать 5ю главу (1/3 книги) и очевидно, что самые главные причины неудач в трейдинге решает алготрейдинг. Это вдохновляет!
Алготрейдеры упоминаются в книге более 50 раз. Читаю с удовольствием, книгу рекомендую!
#книги
Всем привет! Это промежуточный пост.
Тот кто следит за моим каналом в ТГ или моим блогом наверняка помнят, что зимой после изучения самых основ Python я написал первую программу "Тахометр трейдера". Позже я выявил в ней ошибку возможного дублирования строк после обновления данных. Самое интересное, что данные с мосбиржи приходят в виде Dataframe и сейчас мне уже проще с ними оперировать в Pandas. Поэтому запланирую я правку программы в относительно скором времени.
Второе - проводил эксперименты с переносом данных в БД SQLlite и хотел даже Postgress начинать смотреть. Отсекаю это - время не бесконечно. Кроме этого для торгового робота и бэктестинга главное скорость и по возможности простота. Работать с файлами намного проще и точно не медленней, чем с БД.
Для обработки данных - ориентир на Pandas. Уже небольшую аналитику пробовал делать. На эту тему сделаю серию постов вскоре, хотя лето сильно снизило мой темп))
Читаю Мартынова с удовольствием. И спасибо двум читателям, которые в личке написали ранее свое мнение и советы.
"Не отпускает" вчерашнее прочтение очередной главы книги Мартынова. Вот некоторые цитаты:
- Теханализ в общепринятом смысле – увлечение для домохозяек и надежда для лудоманов. Эдвард Торп, математик и человек, который сделал на бирже миллиарды долларов прочитав книгу о техническом анализе понял, что это пустая трата времени.
- Опытный портфельный управляющий А.Варюшкин не уставал повторять: «Теханализ – это танцы с бубном у костра. Я не знаю ни одного человека, который бы разбогател, используя технический анализ».
- Из множества моих знакомых успешных стабильных трейдеров нет никого, кто делал бы деньги, торгуя по канонам классического технического анализа. Те, кто зарабатывает технически, глядя на график, используют результаты собственных наблюдений за рынком, торгуя свои идеи.
- Если вы начнете свой пусть с авторитетного учебника по техническому анализу Джека Швагера, толщиною в 1000 страниц, то что происходит с вашим Механизмом? Во-первых, вы изначально начинаете «копать» не с того конца, даже не задумываясь о реальной цели трейдинга. Во-вторых, из 1000 страниц вы получаете 800 страниц ложной информации.
- Большинство успешных трейдеров, которых я знаю, нигде ни у кого не учились и не посещали соответствующих семинаров.

и так далее. Также по всей книге я прослеживаю выводы, что преимущество в трейдинге именно у алготрейдеров.

P.S. Пробовал сегодня найти книгу "Биржевая торговля. Игра по собственным правилам" (Кургузкин) и безуспешно. Ни в продаже, ни в электронном варианте. Если кто-то сможет поделиться - буду очень благодарен!
#книги
Мартынов при этом отмечает "Однако стоит понимать, что в техническом анализе есть и такие инструменты, которые в определенных условиях могут оказаться полезными."
Какой период бэктестинга для задач алготрейдинга Вы считаете лучшим?
Anonymous Poll
15%
менее 60 дней
12%
2 мес
6%
2 мес - 6 мес
18%
6 мес - 1 год
49%
более года
fourPriceDoji доджи 4х цен
Cвeчa Doji — oднa из paзвopoтныx мoдeлeй cвeчнoгo aнaлизa, кoтopую иногда мoжнo нaблюдaть нa гpaфикax. Ocoбeннocть этoй cвeчи в тoм, чтo у нee coвceм мaлeнькoe тeлo и бoльшaя тeнь. Taкaя фopмa oзнaчaeт, чтo цeнa oткpытия и цeнa зaкpытия cвeчи pacпoлoжeны пoчти нa oднoм и тoм жe уpoвнe.  Япoнcкaя cвeчa Дoджи фopмиpуeтcя, кoгдa нa pынкe нeт кpупныx игpoкoв, a caм pынoк нaxoдитcя в paвнoвecии. Однако в получаемых с Мосбиржи данных мы видим целое "море" свечей Доджи, в которых все значения Open-High-Low-Close одинаковые. Эти свечи приходят тогда, когда биржа не работает и за пределами торговой сессии. На скриншоте свежий пример по одной из акций.

Такие данные, с одной стороны, ничего хорошего для исследований или в расчетах торгового робота дать не могут. Тот же Чечет считает, что их надо удалять.
удалить fourPriceDoji в Pandas действительно просто, но есть 2 момента:
1)Они могут теоретически появиться в торговое время на малом таймфрейме и на неликвидных инструментах - хотя нам такие инструменты в основном не интересны и
2)если из минуток в Pandas делать другие таймфреймы (ресемплинг), то в результате получаем данные с объемами, которые разнятся с данными мосбиржи. Т.е. тот же часовой, дневной график не будет содержать объема удаленных fourPriceDoji свечей.