指定
Необходимо написать советника (эксперт) для дальнейшей оптимизации параметров. Система на основе объема (по акциям) на минутных данных (уже есть закаченные рыночные данные) по портфелю акций.
0. Импортировать в MT5 подгруженные ранее рыночные данные по 70 акциям с 2020 г. (данные уже приведены к нужному формату).
1. По списку тикеров посчитать средний объем (дневной) за последние 2 месяца, оставить в списке 80% с наибольшим средним объемом. Таким образом сформировать базу для дальнейших расчетов. Это делается окном и пересчитывается ежедневно.
2. По базе: ежедневно считать доходности с 23:49 предыдущего дня до 16:00 текущего дня по всей базе.
3. По базе: ежедневно считать направленный объем с 23:49 предыдущего дня до 16:00 текущего дня по всей базе по следующей формуле:
# directional_pressure = sum( sign(return) * abs(return) * real_volume )
4. Далее для попадания (покупки) в портфель бумаги должно одновременно сложиться 2 условия: доходность > 2%* и посчитанный объем (directional_pressure ) > 10 000* . Покупки осуществляются сразу после расчетов. Продажи осуществляются в 10 утра следующего за покупками дня.
5. Максимальное количество отобранных бумаг в портфеле - 5. Веса распределяются равномерно. Сумма весов = 1 (100% от капитала). Если в каком-то дне нет бумаг удовлетворяющих условиям из п. 4 - ничего не происходит. На следующий день расчеты повторяются.
6. Если отобранных бумаг больше 5 приоритет отдается доходности (на python): df_selected = df_result[(df_result["Return_%"] > 2) & (df_result["directional_pressure "] > 10000)].sort_values(by="Return_%", ascending=False).head(5)
С * это параметры для оптимизации.
По итогу выполненных работ должен быть приложен исходный код.