OsEngine невозможно ускорить многопоточностью в коннекторе. 98% всех задержек находятся в самих роботах. И от того, как их пишут пользователи, зависит скорость работы программы.
Так было не всегда… Были времена, когда казалось, что это не так. Но годы шли, OsEngine шлифовался и ускорялся. С модификацией Aserver, журналов и прочего всё больше становилось очевидно, что задержки именно в роботах.
На сегодняшний момент, даже подписка на 200 или 400 бумаг не ложат стандартную поточную архитектуру сервера, предложенную ниже.
Поэтому делаем, как тут написано. Время экспериментов закончено.
Полный и достаточный список потоков, которые могут и должны быть в любом сервере:
Никакие другие потоки создавать не нужно. Только если этого требует само АПИ. Плюс, это должен быть THREAD, а не Task.
Запускаем Новогоднюю акцию уже в этот понедельник! 🎄
Главная распродажа года продлится с 18 по 28 декабря — и это отличная возможность приумножить ваше вознаграждение!
atas.net/ru/ny-2024-announcement/?rs=partners_oft24715
Подарите своим клиентам дополнительную 5% скидку на все акционные продукты ATAS с вашим уникальным промокодом:9AQZYYMZPG
Это сделано с помощью
Metatrader 5 (MQL5) -> ETL -> ClickHouse -> Яндекс DataLens
Брокер Финам
Данные в процессе уточнения!
1) Берем облигацию (ОФЗ или корпоративную)
2) Считаем сколько будет денег в конце погашения
3) Пересчитываем на количество дней владения
4) Пересчитываем прирост доходности на каждый день
Например
Среднее дневное значение % в день 0,09, умножаем на весь год владения, 365 дней
Это если бы все так хорошо покупал и гасил.
То
365 * 0,09 = 32,85% годовых по счету к концу погашения
Прошу не считать эти выводы и расчеты за чистую монету. Ведутся исследования.
Если есть конструктив или ваши примеры, прошу в комментарии.Проблема, о которой поговорим сегодня – генерация хитрых архитектур для коннектора. Сразу же скажу, что коннектор в рамках OsEngine, насколько бы он для вас сложным не был, — очень простая штука, если пользоваться моими советами и вести тесты. Настолько простая, как складной нож. Он очень прост и не нуждается ни в каких дополнениях.
Складной нож не нужно прикручивать к палке, чтобы им управлять.
Складной нож не требует постоянного отмачивания в машинном масле.
И конечно же, складной нож не нуждается в перевязывании изолентой с другими предметами — топорами или вилками. В этом нет смысла.
Самое худшее, что можно сделать, – придумать класс, который будет использоваться разными коннекторами для парсинга данных. Сколько бы я этого не видел, это почти неизбежно приводит к неработоспособности коннектора.
Всё это заканчивалось переделыванием с нуля.
Поэтому:
Совместные классы-парсеры, вёбСокет-обёртки и рест-оболочки для коннекторов запрещены.
Короткая статья о методах и их оформлении. Данная часть стандартов направлена на людей в разной стадии понятия дзена программирования. Людей, которые находятся в стадии эксперимента на уровне написания самого кода внутри методов, обработчиков и свойств. Их, абсолютно также, как и во время именования переменных, можно написать так, что другие программисты понимать не будут. Поговорим об этом…
Некоторые программисты целенаправленно делают вместо 10 методов по 100 строк, 200 методов по 10 строк, искренне считают, что это хорошо. Суть в том, что разбитый на такие мелкие части код легче тестировать, когда у Вас в команде есть тестеры, и вероятно в больших коммерческих проектах это чистое благо. Однако. Имея в команде пару человек, которые не будут за Вами писать тесты, это ЧИСТОЕ ЗЛО.
Некоторые программисты, кто делает вместо 10 методов Один, также искренне полагают, что это круто. Используют тонну синтаксического сахара, вызовы методов в методах и прочее… Это в свою очередь вызвано юношеским максимализмом и увлечением языками вроде Питона, что провоцирует людей на эксперименты с сахаром. Добавляя такое в проект, Вы также наносите ему непоправимый ущерб.
Каждый коннектор в OsEngine должен (в итоге, а тем более новые) содержать определённый набор регионов. В которых должны располагаться определённые методы, свойства и обработчики.
Таким образом, каждый программист, кто хоть чуть-чуть знаком с одним коннектором, автоматически начнёт понимать, как устроены другие. И как же они функционируют. Без проблем сможет ориентироваться внутри коннекторов, которые открыл впервые.
Далее, каждый регион будет показан на примере коннектора к бирже криптовалют BitGet, расположенном в проекте вот здесь: