Уже давно собираюсь начать разработку новой стратегии с новыми элементам анализа, но, в общем, пока не к спеху. Где-то через неделю-две попробую начать. В общем, я уже ни шатко-ни валко начал подготовительные работы. Получится из этого что нибудь или нет, пока не знаю. Увижу, что не получается, брошу.
Стратегия будет разрабатываться, моделироваться и тестироваться на Python. При удачном исходе будет перенесена в DLL C++. Ну, а нет, так нет — их много было неудачных.
Возникла идея публиковать по ходу пьесы тесты графика доходности на СЛ. Всякие ваши эквити, шарпы и прочие критерии мне без разницы — я этим не пользуюсь — считайте сами, если захотите.
Что вы увидите — только графики доходности в ходе развития модели, от первых, и если повезёт, до последних, возможно, чего-то реально стоящих. Займет это, я полагаю, около 2-3-х месяцев
Но, и, оч возможно, стратегия будет брошена, если выяснится, что гипотезы не оправдались, или она не даёт преимущества перед предыдущими стратегиями.
Саму стратегию, вы, разумеется, в любом случае не увидите. И,, хотя многие ее элементы были описаны в моих топиках, сами по себе они мало что значат.
Интересно вам посмотреть эволюцию графика доходности по ходу разработки стратегии?
Интересно — ставьте плюсы, пишите комменты. Неинтересно — проходите мимо. А я по результатам решу, стоит тратить время и этим заниматься, или ну его.
Единственная стратегия на рынке: купи дешево, продай дорого. Других не существует. Вопрос только в определении: где дешево, а где дорого.©
Эта крылатая фраза написана в моем профиле. Если хозяин не найдется, считаю своей.
Цена актива и ее изменения определяются групповым поведением участников торгов. Если посмотреть на график любого рыночного актива в любом масштабе, то мы увидим, что кривая имеет явный волнообразный характер. Дно волны — это, по мнению коллективного разума, дешево. Гребень волны — это дорого.
Для большего впечатления можно провести на графике пресловутый ЗигЗаг, на котором мы совсем четко увидим максимумы и минимумы, где нужно было покупать, а где продавать. При этом настройки ЗигЗага не имеют никакакого значения. Все тоже самое мы увидим при любых настройках. Только при одних настройках ЗигЗага сделки будут частыми и продолжаться 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