Gambler <osaengine.ru>
Gambler <osaengine.ru> личный блог
21 мая 2024, 11:53

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

Введение

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

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

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

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

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

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

Для начала я решил не мудрить и создать что-то простое. Пусть это будет стратегия на основе скользящих средних (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, где пользователи могут обмениваться опытом и помогать друг другу. Это не всегда удобно, но все же лучше, чем ничего.

Интерфейс

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

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

30 Комментариев
  • Игорь _К
    21 мая 2024, 12:00
    Интересно!

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


  • Маркиз Лафайет
    21 мая 2024, 12:36
    Спасибо, буду разбираться
  • nicknh
    21 мая 2024, 12:37
    Питон для онлайн web торговли — это такое… Впрочем, для нашей биржи, может и сойдет.
      • nicknh
        21 мая 2024, 12:57

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

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

      • nicknh
        21 мая 2024, 13:04

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

         

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

          • nicknh
            21 мая 2024, 13:27

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

             

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

              • nicknh
                21 мая 2024, 13:36
                Gambler, Тогда бирже надо стать управляемым облачным сервисом, что не входит в ее задачи. Хотя, может когда-нибудь. Но я очень сомневаюсь.
  • Laukar
    21 мая 2024, 13:04
    Интересно. Но питон — неудобно потому что медленно.
      • Laukar
        21 мая 2024, 13:51
        Gambler, Python я использую для домашних вычислений. В работе C#.
  • Tasman
    21 мая 2024, 13:06
    Документация — moexalgo.github.io/
  • Replikant_mih
    21 мая 2024, 13:06

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

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

     

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

     

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

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

      • Replikant_mih
        21 мая 2024, 13:52

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

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

          • Replikant_mih
            21 мая 2024, 18:41

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

             

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

    • Андрей К
      21 мая 2024, 13:39
      Replikant_mih, если б ты не написал про нейронку, я бы не понял, что в комментах тоже она может общаться ))
        • Андрей К
          21 мая 2024, 13:47
          Gambler, сегодня хотел прям пост из себя выдавить, но работой перекрыло.

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

          но иногда подкатывает, может чего и напишу
      • Replikant_mih
        21 мая 2024, 13:53
        Андрей К, Если обращение к нейросети поставить в какой-то бесконечный цикл, слинковать её с разными рычажками по API или ещё как-то, она че хочешь может делать — посты писать, комменты и т.д.).
  • GOLD
    21 мая 2024, 22:42
    После семи лет практически ежедневных тестов алгоритмов имею право заявить:

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

    если расчет требует нескольких часов, результат будет — говно))
  • Дмитрий
    22 мая 2024, 07:27
    Тестирование данных на прошлом, не гарантирует правильность в будущем.
  • yurikon
    24 мая 2024, 11:39
    Исполнение ордеров в рил тайме как реализовали?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн