Единственная стратегия на рынке: купи дешево, продай дорого. Других не существует. Вопрос только в определении: где дешево, а где дорого.©
Эта крылатая фраза написана в моем профиле. Если хозяин не найдется, считаю своей.
Цена актива и ее изменения определяются групповым поведением участников торгов. Если посмотреть на график любого рыночного актива в любом масштабе, то мы увидим, что кривая имеет явный волнообразный характер. Дно волны — это, по мнению коллективного разума, дешево. Гребень волны — это дорого.
Для большего впечатления можно провести на графике пресловутый ЗигЗаг, на котором мы совсем четко увидим максимумы и минимумы, где нужно было покупать, а где продавать. При этом настройки ЗигЗага не имеют никакакого значения. Все тоже самое мы увидим при любых настройках. Только при одних настройках ЗигЗага сделки будут частыми и продолжаться 15-30 минут, при других от 30 минут до нескольких часов, а при третьих могут продолжаться и несколько дней. Выбирай по вкусу, и работай.
Недели две назад обещал ответить нашему коллеге на вопрос и написать на эту тему топик. Отвечаю и пишу.
Итак, нам пришла в голову просто бесподобная и очень простая идея Грааля. Мы имеем всего два индикатора с параметрами х1 и х2 соответственно. Их состояние описывается вектором X = [x1,x2], и в некоторой области Gv подмножества Х и находится наш Грааль, многие сделки в этой области в плюс. По крайней мере, мы так предполагаем, хотя где находится эта область и есть ли она вообще, эта Gv представляем весьма приблизительно, и мы, разумеется, хотели бы это выяснить. Рис.1.
В пространстве состояний X мы ограничили область нашего видения Грааля областью Gv, и в нее даже попал кусок настоящего Грааля G.
Запускаем оптимизацию системы по прибыли, положение и параметры области Gv меняются таким образом, что оптимизатор находит и выделяет настоящий Грааль G областью Gr в пространстве X.
Торговая система готова к употреблению.
Тем, кто не читал предыдущий топик этой темы, рекомендую для начала ознакомиться с ним [1].
В комментариях к предыдущему топику меня критиковали за неоптимальность кода Python. Однако, текст читают люди с совершенно разной подготовкой — от почти не знающих Python или знающих другие языки программирования, до продвинутых пользователей. Последние легко могут обнаружить неоптимальность кода и заменить его своим. Тем не менее, код должен быть доступен и новичкам, возможно не обладающим знанием пакетов и продвинутых методов. Поэтому, в коде я буду, по возможности, использовать только базовые конструкции Python, не требующие глубоких знаний, и которые могут легко читаться людьми, программирующими на других языках. Вместе с тем, по мере изложения, без фанатизма, буду вводить и новые элементы Python.
Если вы хотите как-то улучшить или оптимизировать код, приводите его в комментариях — это только расширит и улучшит изложенный материал.
Ну, а сейчас мы займемся разработкой и тестированием индикаторов. Для начала нам нужна простейшая стратегия с использованием МА — его и построим. Самой лучшей по характеристикам МА является ЕМА. Формула ЕМА:
Для моделирование ТС на Python, прежде всего нужен сам Python. Pythonы бывают очень разные.
Самый большой и длинный Python — Anaconda (https://anaconda.org/). Скачать дистрибутив Anaconda можно здесь — Индивидуальное издание -https://www.anaconda.com/products/individual.
Я работаю именно с Anaconda. Установив Anaconda мы получаем сам Python, уже установленные значительную часть нужных и ненужных пакетов с библиотеками Python, и несколько сред разработки. И все это сразу готово к работе, и нам, по большей части, уже не придется дополнительно устанавливать пакеты и среды.
Самый маленький Python последней версии 3.8.2. скачивается с сайта самого Python — https://www.python.org/. Это, практически, только сам язык, компилятор и минимальный набор пакетов. Сделать с ним практически ничего невозможно, и для работы придется постоянно устанавливать нужные пакеты. Среду разработки придется также устанавливать самостоятельно.
Этот Python больше подходит для запуска и работы с уже отлаженными законченными программами.