Единственная стратегия на рынке: купи дешево, продай дорого. Других не существует. Вопрос только в определении: где дешево, а где дорого.©
Эта крылатая фраза написана в моем профиле. Если хозяин не найдется, считаю своей.
Цена актива и ее изменения определяются групповым поведением участников торгов. Если посмотреть на график любого рыночного актива в любом масштабе, то мы увидим, что кривая имеет явный волнообразный характер. Дно волны — это, по мнению коллективного разума, дешево. Гребень волны — это дорого.
Для большего впечатления можно провести на графике пресловутый ЗигЗаг, на котором мы совсем четко увидим максимумы и минимумы, где нужно было покупать, а где продавать. При этом настройки ЗигЗага не имеют никакакого значения. Все тоже самое мы увидим при любых настройках. Только при одних настройках ЗигЗага сделки будут частыми и продолжаться 15-30 минут, при других от 30 минут до нескольких часов, а при третьих могут продолжаться и несколько дней. Выбирай по вкусу, и работай.
Простите за банальность, работа с данными начинается с их получения из внешнего источника. Мы будем получать их из CSV-файла архива котировок, скачанного с сайта Финам. Для работы с другими источниками вам надо будет немного изменить программу.
Я уже давно не работаю непосредственно с CSV, и храню все данные в БД SQLite. Поначалу я хотел написать программу чтения CSV с нуля, но выяснилось, что я уже подзабыл как это делается, однако нашелся рояль в кустах — моя старая библиотека читающая данные из CSV-файла непосредственно в программу. Ее мы и будем использовать.
Собственно, Python и ориентирован на работу с библиотеками, и не нужно знать что там внутри, важно только уметь с ними работать, а сами программы с использованием библиотек станут очень простыми.
Для начала качаем с Финам историю в формате CSV-файла следующего вида:
<TICKER>,<PER>,<DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL> SPFB.Si-12.20,1,04/05/20,10:00:00,76900.0000000,76990.0000000,76900.0000000,76990.0000000,3 SPFB.Si-12.20,1,04/05/20,10:06:00,77695.0000000,77695.0000000,77400.0000000,77400.0000000,8 SPFB.Si-12.20,1,04/05/20,10:08:00,77781.0000000,77781.0000000,77700.0000000,77750.0000000,30 SPFB.Si-12.20,1,04/05/20,10:13:00,78088.0000000,78098.0000000,78088.0000000,78098.0000000,6 SPFB.Si-12.20,1,04/05/20,10:14:00,78100.0000000,78100.0000000,78100.0000000,78100.0000000,1