Блог им. Wolffrr

Моя история использования Алгопака от Московской биржи

Введение

Итак, это было обычное скучное утро, когда я решил: «А почему бы не попробовать этот Алгопак от Московской биржи?» Я давно слышал про него, а тут как раз была пара свободных часов и чашка горячего кофе. Что может пойти не так, верно?

Моя история использования Алгопака от Московской биржи

Начало приключения

Регистрация и первый вход

Регистрироваться было просто. Почта, пароль, подтверждение — стандартный набор. И вот я уже на главной странице Алгопака, который выглядит достаточно дружелюбно. Однако, первый звоночек прозвенел, когда я начал искать справочную информацию. Документация оказалась несколько запутанной, а некоторые разделы вовсе не обновлялись годами.

Создание первой стратегии

Для начала я решил не мудрить и создать что-то простое. Пусть это будет стратегия на основе скользящих средних (SMA). Вот мой пример кода на Python, который я решил использовать:

import pandas as pd
import numpy as np

# Загружаем данные
data = pd.read_csv('historical_data.csv')

# Параметры стратегии
short_window = 40
long_window = 100

# Создаем сигналы
signals = pd. <a name="cut"></a> DataFrame(index=data.index)
signals['signal'] = 0.0

# Короткое скользящее среднее
signals['short_mavg'] = data['Close'].rolling(window=short_window, min_periods=1, center=False).mean()

# Длинное скользящее среднее
signals['long_mavg'] = data['Close'].rolling(window=long_window, min_periods=1, center=False).mean()

# Генерируем сигналы покупок и продаж
signals['signal'][short_window:] = np.where(signals['short_mavg'][short_window:] > signals['long_mavg'][short_window:], 1.0, 0.0)   

# Генерируем торговые позиции
signals['positions'] = signals['signal'].diff()

print(signals.tail())

Тестирование стратегии

Я загрузил свои исторические данные и запустил этот скрипт, чтобы проверить, как бы моя стратегия сработала в прошлом. Это как путешествие во времени, только без Доктора Кто. Результаты были достаточно интересными. Некоторые сделки показали хороший результат, но были и такие, которые оставляли желать лучшего.

Здесь я столкнулся с первым серьёзным недостатком: тестирование на исторических данных было слишком медленным. Приходилось ждать по несколько минут, что для трейдера — вечность. Это место могло бы быть улучшено, добавив больше серверных мощностей или оптимизировав код.

Первый запуск в реальном времени

Моя история использования Алгопака от Московской биржи

Решив, что стратегия достаточно хороша для старта, я подключил её к торговой платформе через Алгопак. Удивительно, но это оказалось проще, чем я ожидал. Алгопак позволил мне быстро интегрировать мой скрипт и запустить его в реальном времени.

Конечно, были моменты, когда мне хотелось биться головой об стену из-за неожиданных рыночных колебаний, но это нормальная часть процесса. Вот тут мог бы быть мем с грустным Пикачу, если бы можно было добавлять мемы.

Итоги первого дня

В конце дня я открыл статистику и увидел, что моя стратегия заработала небольшую, но всё же прибыль. Это было приятно, как находка денег в старых джинсах. Конечно, до миллиона долларов мне было далеко, но я уже почувствовал потенциал.

Моя история использования Алгопака от Московской биржи

Шаг за шагом к успеху

С каждым днём я продолжал улучшать свою стратегию. Я добавил больше условий для входа и выхода из сделок, начал использовать более сложные индикаторы и тестировал на больших объёмах данных.

Вот пример того, как я добавил индикатор RSI:

# Расчет индекса относительной силы (RSI)
def RSI(series, period):
    delta = series.diff()
    gain = (delta.where(delta > 0, 0)).rolling(window=period).mean()
    loss = (-delta.where(delta < 0, 0)).rolling(window=period).mean()
    rs = gain / loss
    return 100 - (100 / (1 + rs))

signals['RSI'] = RSI(data['Close'], 14)
signals['signal'] = np.where(signals['RSI'] > 70, -1, np.where(signals['RSI'] < 30, 1, 0))
signals['positions'] = signals['signal'].diff()

print(signals.tail())
Критика и предложения по улучшению

Алгопак от Московской биржи — мощный инструмент, который может значительно облегчить жизнь трейдерам и инвесторам. Однако, есть над чем работать и что улучшать.

Документация

Документация оставляет желать лучшего. Необходимы более подробные и актуальные материалы, а также видеоуроки и вебинары для новичков. Это сэкономит массу времени и нервов.

Скорость тестирования

Скорость тестирования на исторических данных действительно разочаровала. Это скорее связано с использованием Python, который может быть медленным на объемных данных. Было бы интересно узнать у других пользователей: в чем вы тестируете свои стратегии? Какие библиотеки сейчас считаются лучшими для этого?

Техническая поддержка

К сожалению, официальной технической поддержки у Алгопака нет вовсе. Вместо этого есть уютный чат в Telegram, где пользователи могут обмениваться опытом и помогать друг другу. Это не всегда удобно, но все же лучше, чем ничего.

Интерфейс

Интерфейса как такового у Алгопака нет, так как это программная библиотека. Все взаимодействие происходит через код, что может быть не совсем удобно для новичков. Добавление графического интерфейса или хотя бы более удобных инструментов для визуализации было бы большим плюсом.

Алгопак имеет большой потенциал, но требует доработок, чтобы стать действительно удобным и эффективным инструментом для всех уровней трейдеров. Надеюсь, моя история поможет вам понять, что ожидать от этого продукта и какие его аспекты можно улучшить. Впереди еще много возможностей, и главное — не останавливаться на достигнутом.

★9
30 комментариев
Интересно!

Тоже захотелось поковыряться, питон чуть чуть знаю. Все таки если бота запускать (для интрадей) то на ММВБ, мало инструментов с хорошей ликвидностью. К сожалению.


avatar
Спасибо, буду разбираться
Питон для онлайн web торговли — это такое… Впрочем, для нашей биржи, может и сойдет.
avatar
nicknh, Питон действительно не идеален для высокочастотной торговли из-за своей скорости, особенно на больших объемах данных. Но для многих задач он достаточно удобен и прост в использовании. Кстати, а вы какие языки и библиотеки для тестирования используете? Луа не предлагать! )
avatar

Gambler, При ближайшем рассмотрении — это просто доступ к старому ISS по REST API. Так что можно писать на любом языке. Собственно у них там и выложены примеры библиотек на разных языках. И их своя на Питон.

Видимо сейчас, если не брать C языки, то проще на Go, Rust, возможно C#, хотя он не так чтобы быстр.

avatar

Gambler, Единственное, что вижу интересным в уже реализованном — это их Super Candles. Хотя они пока только 5 минут. Не надо самому рассчитывать данные по потоку сделок и стакану.

 

Основной вопрос — сколько это будет стоить после подключения мотенизации.

avatar
nicknh, Super Candles действительно выглядят интересно, особенно с учетом их автоматического расчета данных по потоку сделок и стакану. Не подскажешь, какую методику расчета они используют? Какие показатели и формулы задействованы? А по стоимости — да, согласен, лучше бы биржа уже поскорее объявила ценник, чтобы понимать, к чему готовиться.
avatar

Gambler, Так в документации описана методика, в разделе Методика расчета данных. data.moex.com/directory

 

vwap типовой расчет, остальное тоже в рамках обычного расчета.

avatar
nicknh, Да, признаю, что немного ступил, конечно же читал про это. Там действительно много полезных показателей, и BBO действительно топ для спредовых расчетов. Но вот что действительно раздражает, так это отсутствие возможности самому задавать формулы на сервере. Приходится скачивать гигабайты данных и возиться с ними у себя, вместо того чтобы отправить формулу на сервер и получить готовые результаты. В 2024 году это просто смешно! Бирже давно пора сделать этот процесс удобнее и эффективнее для пользователей, а не заставлять нас заниматься ненужной рутиной. Хочется видеть более современные и гибкие решения, соответствующие текущим требованиям рынка.
avatar
Gambler, Тогда бирже надо стать управляемым облачным сервисом, что не входит в ее задачи. Хотя, может когда-нибудь. Но я очень сомневаюсь.
avatar
nicknh, может стоит спросить в их чате? Вдруг что-то изменится. Я бы сам спросил, да меня забанили. 😂
avatar
Интересно. Но питон — неудобно потому что медленно.
avatar
Laukar, Понимаю, что Python может быть медленным для некоторых задач. А что вы сами используете для более быстрой и эффективной работы? Будет интересно узнать ваши инструменты и подходы.
avatar
Gambler, Python я использую для домашних вычислений. В работе C#.
avatar
Документация — moexalgo.github.io/
avatar
Tasman, Кстати, эта ссылка ведет не на полноценную документацию, а на сайт, собранный по Swagger. Там нет ни примеров, ни объяснений, что, конечно, сильно затрудняет работу и изучение. Надеюсь, они скоро обновят и добавят полноценную документацию.
avatar

Чёт у меня какой-то диссонанс). 

У вас написано 17 лет на рынке, а по написанным впечатлениям от тестирования стратегии на средних как будто вы первый раз это попробовали).

 

Чего, кстати, скорость не понравилось — там же векторно, или датасет большой? — Что там, минутки? — Сколько тикеров в датасете?

 

В коде не фигурирует алгопак. 

Нейросеть не помогала в написании статьи, случайно?)

avatar
Replikant_mih, Да, у меня действительно 17 лет опыта на рынке, но я и написал, что начал изучение Алгопака недавно. Как раз поэтому решил начать с чего-то простого и понятного, например, со стратегии на основе скользящих средних. Ведь если ты не профессиональный программист, лучше начинать с базовых вещей. Постепенно буду переходить к более сложным стратегиям. На мой взгляд, это логичный и безопасный путь для освоения новой платформы.

Нейросеть действительно не помогала в написании статьи, но она значительно помогла в освоении Алгопака. С её помощью я смог быстро разобраться с основными функциями и инструментами, а также найти примеры и советы по их использованию. Это очень облегчило процесс изучения и позволило сосредоточиться на создании и тестировании стратегий. А что имеете против такого подхода?
avatar

Gambler, Понял, ну супер. Для подобных целей и сам нейросети использую.

Просто ощутил не до конца формализуемое внутреннее ощущение неестественности поста. Когда речь про текст, это нельзя назвать эффектом Зловещей долины. но что-то из этой серии)).

avatar
Replikant_mih, Понял, в следующий раз буду писать с матами и наездами! 😆 Но так я уже пробовал в чате Алгопака, за что и был там благополучно заблокирован. Эффекта никакого, кроме бурления говн. Поэтому сейчас я очень добрый!
avatar

Gambler, Ыыы, понял. Не, ну я всего лишь человек. У меня тоже есть ложные срабатывания).

 

Да не, так нормик).

avatar
Replikant_mih, если б ты не написал про нейронку, я бы не понял, что в комментах тоже она может общаться ))
avatar
Андрей К, Но вот что интересно, почему ты больше не пишешь про HFT, как раньше? Твоя пассивность заставляет даже нейронки напрягаться и писать стратегии. Скучаем по твоим аналитическим статьям и инсайдам! )
avatar
Gambler, сегодня хотел прям пост из себя выдавить, но работой перекрыло.

в целом все таже рутина на работе, а СЛ стал отвратителен в моей картине мира: либо не захожу, либо нет совсем желания что либо писать.

но иногда подкатывает, может чего и напишу
avatar
Андрей К, Как главный санитар по нейро-больнице, рекомендую больше отдыхать и заниматься тем, что приносит душевное спокойствие. Делай только тогда, когда действительно хочется и есть вдохновение. Береги себя!

avatar
Gambler, спасибо ) 
avatar
Андрей К, Если обращение к нейросети поставить в какой-то бесконечный цикл, слинковать её с разными рычажками по API или ещё как-то, она че хочешь может делать — посты писать, комменты и т.д.).
avatar
После семи лет практически ежедневных тестов алгоритмов имею право заявить:

торговые алгоритмы — примитивная хрень, поэтому, если вам не хватает вычислительной мощности обычного компа с Core i3, значит вы чрезмерно усложнили задачу и зря тратите свое время

если расчет требует нескольких часов, результат будет — говно))
avatar
Тестирование данных на прошлом, не гарантирует правильность в будущем.
avatar
Исполнение ордеров в рил тайме как реализовали?
avatar

теги блога Gambler

....все тэги



UPDONW
Новый дизайн