Сделал простенький пример-код как работать с веб сокетами АлгоПака.
Работа в действии выглядит так:
Пример кода<code>namespace OsaEngine.MoexAlgoPack;
using System;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Net.WebSockets;
public class MoexAlgoPackSocketClient(string url) : IAsyncDisposable
{
private readonly Uri _uri = new(url);
private readonly ClientWebSocket _clientWebSocket = new();
public async ValueTask ConnectAsync(string domain = "DEMO", string login = "guest", string passcode = "guest", CancellationToken cancellationToken = default)
{
await _clientWebSocket.ConnectAsync(_uri, cancellationToken);
await SendAsync($"CONNECT\ndomain:{domain}\nlogin:{login}\npasscode:{passcode}\n\n\0", cancellationToken);
}
public ValueTask SubscribeAsync(object id, string destination, string selector, CancellationToken cancellationToken = default)
{
return SendAsync($"SUBSCRIBE\nid:{id}\ndestination:{destination}\nselector:{selector}\n\n\0", cancellationToken);
}
public async ValueTask SendAsync(string message, CancellationToken cancellationToken = default)
{
var messageBytes = Encoding.Итак, это было обычное скучное утро, когда я решил: «А почему бы не попробовать этот Алгопак от Московской биржи?» Я давно слышал про него, а тут как раз была пара свободных часов и чашка горячего кофе. Что может пойти не так, верно?

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