Нужна помощь профессионального программиста - страница 62

 

Состав акционеров

По состоянию на октябрь 2024 года крупнейшими акционерами биржи, которые владеют более 5 % уставного капитала компании, являются[51]:

По состоянию на 20 марта 2020 года количество акций Московской биржи, находящихся в свободном обращении, составляет 63 %

[60].

Центробанк, согласно федеральному закону N 251-ФЗ, был обязан выйти из состава акционеров до 1 января 2016 года[61]. Однако, в условиях геополитической нестабильности Банк России принял решение остаться в капитале биржи[62][63]. Федеральным законом от 29.06.2015 N 210-ФЗ это требование было снято[64].

В октябре 2023 года появились сообщения о продаже доли ЕБРР группе Softline. Однако правительственная подкомиссия не разрешила сделку. Softline в качестве единственного покупателя не устраивает Минфин, компания ищет партнера для новой попытки[65].

Может скинуться и купить это болото? ))

 
Sergey Chalyshev #:

Может скинуться и купить это болото? ))

Я согласен. Вложу всю свою пенсию…))) Даже могу за 3 месяца…😊😊😊😊😊

 
Alexey Viktorov #:

Я согласен. Вложу всю свою пенсию…))) Даже могу за 3 месяца…😊😊😊😊😊

Ок!

Начало положено.

Текущая рыночная капитализация компании Московская биржа составляет 463.2 млрд руб. Рыночная капитализация компании рассчитывается как суммарная стоимость всех акций компании, рассчитанная по текущим котировкам на Московской бирже.

Для полного контроля достаточно всего 232 млрд руб. или 2 млрд баксов.

Но для начала хватит 10% - это всего лищь 23 млрд руб или 200 млн баксов.

)))

p.s. а в 2022 году сьоила в 2 раза меньше, всего лишь 10 - 20 квартир в НьюЙорке))
 
Sergey Gridnev #:
Попахивает паранойей 

Это обычный рабочий процесс. С частью неизвестных переменных.

 

ЦБ не долго думал и переслал мое обращение на Биржу, вместо того что бы разобраться  :)

Уважаемый Михаил Александрович! 
Служба по защите прав потребителей и обеспечению доступности 
финансовых услуг (далее – Служба) получила Ваше обращение от 04.02.2025 
№ ОЭ-32317 (далее – Обращение) в отношении ПАО Московская Биржа 
(далее – Организация). 
Сообщаем, что Служба направила Ваше Обращение в Организацию для 
рассмотрения по существу и направления Вам ответа. 

Изначально, 19 декабря 2024 г., я написал в техподдержку Биржи

Добрый день!
CGATE API (PLAZA II шлюз) тестовый полигон Т1
Как рассчитать сколько средств будет заблокировано ПЕРЕД отправкой заявки?
(см. вложение)

И получил ответ 23 декабря 2024 г :

Решение:
Добрый день,
ГО рассчитывается по определенной формуле.
Вы можете получить информацию с использованием Модуля  рассчета ГО: https://www.moex.com/msn/module-margin 

 

Есть БД (специализированная вносить изменения в код базы не могу, могу добавлять любые новые таблицы. Например индексы).

Данные в БД хранятся как "ключ - значение(я)", но ключи "лежат" в хаотичном порядке (БД не сортирует данные ни по каким параметрам)

Задача: Как быстро узнать сколько пришло новых данных "ключ-значение"?

 
prostotrader #:

Есть БД (специализированная вносить изменения в код базы не могу, могу добавлять любые новые таблицы. Например индексы).

Данные в БД хранятся как "ключ - значение(я)", но ключи "лежат" в хаотичном порядке (БД не сортирует данные ни по каким параметрам)

Задача: Как быстро узнать сколько пришло новых данных "ключ-значение"?

Всем спасибо, решил проблему сам.

 
prostotrader #:

ЦБ не долго думал и переслал мое обращение на Биржу, вместо того что бы разобраться  :)

Изначально, 19 декабря 2024 г., я написал в техподдержку Биржи

И получил ответ 23 декабря 2024 г :

Видимо, стоило сразу указать, что уже обращались в тех поддержку биржи.

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

 

Танцы с бубном с техподдержкой биржи продолжаются...

Я нашел, как мне представляется, ошибку в CGate API

18:18:08.128828;cgate.user;;Заявка BOC на продажу устанавливается...;TID 13972
18:18:08.128933;cgate.user;ERROR;cg_pub_msgfree: object 4FADFF0 was created with different publisher.;TID 5252
18:18:08.136632;cgate.user;;Операция выполнена успешно.;TID 13972

При этом все работает нормально, заявки устанавливаются и снимаются

Пишу в техподдержку:

Далее следует ничего не значащая переписка

Послав сообщение

Кажется, я нашел проблему.
 

Я создаю ТОЛЬКО ОДИН Паблишер в соединении «transaction»
 

18:13:46.110537;cgate.env;;New connection was registered: transaction.;TID 9260
18:13:46.110559;cgate.user;;cg_pub_new settings: p2mq://FORTS_SRV;category=FORTS_MSG;name=CgPublisher;timeout=5000;TID 9260
 
TID 9260
 
А затем, когда 2-е соединение «marketdata» становится активным, вдруг, система сама,
создает свой Паблишер от моего имени (cgate.user;;cg_pub_new)
 

18:13:46.154758;cgate.connection.p2;;State changed OPENING -> ACTIVE @cee{name: marketdata, obj: 0x4FAE270, thread: 5164};TID 5164
18:13:46.157032;cgate.user;;cg_pub_new settings: p2mq://SOFTWARE_AUTH;category=CERT_MSG;format=raw;name=certlistner_0000000004FAE2C0;timeout=10000;scheme=noscheme;TID 5164
 
TID 5164
 
А уж потом, мой Паблишер
 
18:13:46.157045;cgate.user;;cg_pub_new settings: p2mq://SOFTWARE_AUTH;category=CERT_MSG;format=raw;name=certlistner_0000000004FAAD70;timeout=10000;scheme=noscheme;TID 9260
 
TID 9260
 
Видимо, самовольно созданный Паблишер TID 5164, каким-то образом остается в системе.
Прошу передать мои письма и лог разработчикам Cgate API

На что получил ответ:

Добрый день, от разработчиков следующие комментарии получили:

Тут видно что используется своя обвязка над си с помощью  кажется delphi.
При упаковке распаковке структуры используется какая-то своя сущность pcg_msg_data_t.
При ее использовании возможно некорректно заполняются какие-то поля, в частности интересно проверить значение поля

struct cg_msg_streamdata_t

{

    uint32_t type;          /// Message type = CG_MSG_STREAM_DATA

    size_t data_size;       /// Data size

    void* data;             /// Data pointer

    int64_t owner_id;   /// Message owner id

 

owner_id

Соответствие паблишера сообщению производится с его помощью и возможно значение этого поля после преобразований не соответствует исходному.

Также хочу обратить внимание что:

Мы не занимаемся отладкой клиентского ПО.
Если вы считаете, что в CGate есть ошибка, то пришлите минимальный пример, в котором эта ошибка воспроизводится.
Пример безусловно должен быть на поддерживаемом нами языке, т.е. языке дистрибутива (С, .NET Standard).
 


С уважением,

Техническая поддержка ПАО Московская Биржа
Т +7 (495) 733-95-07
E help@moex.com

На которое я ответил так:

Добрый день, Глеб!
 
При отправке торговых приказов используется структура pcg_msg_data_t, а не 
cg_msg_streamdata_t
Из документации (cgate_ru.pdf)
result = cg_pub_msgnew(pub, CG_KEY_NAME, “AddOrder”, &msgptr); В данном случае будет создано сообщение для постановки заявки SPECTRA (транзакция AddOrder) по имени,
и указатель на него будет записан в переменную msgptr. При помощи функции cg_pub_msgnew можно так же создавать сообщения по его номеру в активной схеме и идентификатору.
Сообщение представляет собой указатель на структуру cg_msg_data_t
 
Так же, в документации структура cg_msg_data_t описана так:
 
struct cg_msg_data_t {
uint32_t type; // Тип сообщения = CG_MSG_P2REPL_DATA
size_t data_size; // Размер данных void* data; // Указатель на данные
size_t msg_index; // Номер сообщения в активной схеме
uint32_t msg_id; // Уникальный идентификатор сообщения
const char* msg_name; // Имя сообщения в схеме
uint32_t user_id; // Пользовательский номер сообщения
const char* addr; // Адрес получателя
struct cg_msg_data_t* ref_msg; // Связанное сообщение (сейчас не используется)
};
 
А в заголовочном файле cgate.h так
struct cg_msg_data_t
{
    uint32_t type;          /// Message type = CG_MSG_P2REPL_DATA 
    size_t data_size;       /// Data size
    void* data;             /// Data pointer
    int64_t owner_id;   /// Message owner id
    size_t msg_index;       /// Message number in active scheme
    uint32_t msg_id;        /// Unique message ID (if applicable)
    const char* msg_name;   /// Message name in active scheme
 
    union {
        uint32_t user_id;
        void * user_ptr;
    };              /// User message id (the value sent back in reply)
    const char* addr;       /// Remote address
    struct cg_msg_data_t* ref_msg;  /// Reference message (not used now)
};
 
Но ни в документации, ни в примерах не написано, что я должен заполнять поле owner_id
и откуда его брать
Из ранее посланного Вам сообщения видно, что создается Паблишер, который я не создаю.
Не я создаю сообщение cg_msg_data_t, оно создается системой, когда посылается
команда result = cg_pub_msgnew(pub, CG_KEY_NAME, “AddOrder”, &msgptr);
Я только заполняю поля (void* data) в созданном системой сообщении.
 
Естественно Вы не должны заниматься отладкой, но не ответив на мои вопросы, я не могу отладить
свое приложение.

Все как и с MQ, нужно написать гору кода, чтобы подтвердить наличие ошибки.

Как будто разработчики НИКОГДА не ошибаются! 

 

Добрый день, Дмитрий!

Вы дошли в свой разработке Cgate до отправки ордеров?