
Сегодня будем разбираться, зачем в терминалах для алго нужна такая абстракция, как «Позиция» или Position. У нас была техническая статья по этой теме, но вопросы продолжают поступать… И надо концептуально ещё раз объяснить.
И пока они были на плаву, было СИЛЬНО проще объяснить, как устроен наш слой создания роботов и зачем там позиции…
Механика управления позициями, способы их открытия и способы их закрытия пришли в OsEngine из Wealth Lab. Не целиком, но почти, и на данный момент слой увеличен раз в пять. И Wealth lab – прекрасный терминал для Алго! Когда-то этот терминал был очень популярен в России и имел приятный на тот момент интерфейс.
Если посмотреть на скрипт в Wealth-Lab, то можно обнаружить много общего с тем, что в скриптах OsEngine:

В этом видео рассмотрим один из способов узнать оптимальное соотношение объёмов между роботами. Ансамблирование объёмов, которое можно делать вручную в журнале OsEngine. Эта информация актуальна, если вы торгуете несколькими роботами одновременно.
VK Видео:
RuTube:

Как не попасть на «логические ошибки тестирования» и сделать робота правильно.
Заметка про то, как организовать логику робота, если Вы собираетесь вести большие тесты на свечных данных, а так поступают (или должны бы поступить) 95% всех, кто торгует роботами.
В общем, тема важная.
Основной её тейк такой: Если делаешь робота для тестов на свечках, старайся делать всю логику в событии завершения свечи.
И далее почему.
Отдельно на этом остановлюсь. И Арбитражи, и скринеры, и ребалансировщики, и тесты на одном инструменте – всё это просто и быстро тестируется на свечных данных.
При этом, если использовать ленту сделок для тестов, сразу же можно напороться на увеличение сложности тестирования в десятки раз (а то и в сотни).
Поэтому, если у тебя не ХФТ, использовать надо для тестов свечи.
В рамках слоя создания роботов есть события, подходящие для создания логики на тестах. В основном это конечно же:

Рассмотрим пример того, как усреднять позицию, выставляя в рынок одновременно несколько ордеров.
Это стало возможно совсем недавно, т.к. камрады из сообщества очень просили. Методы, которыми будем пользоваться для усреднения позиций, называются BuyAtLimitToPositionUnsafe и SellAtLimitToPositionUnsafe. В отличие от старых методов (Без приписки Unsafe), данные методы не убирают предыдущие ордера на усреднение, и можно выставить в рынок множество ордеров.
Точка входа у робота контртредовая на канале Envelops.
Итоговая логика робота на графике выглядит так:
Шорт, прикрытый стоп ордером, выход в плюс через профит, и два лимитных ордера на бирже для усреднения.
На ГитХаб в репозитории OsEngine это находится здесь:
https://github.com/AlexWan/OsEngine
Внутри проекта здесь:

Инвесторам важно не только быстро и удобно совершать торговые операции в десктопном веб-терминале, но и анализировать успешность совершённых сделок. Для этого в виджете Позиции был реализован функционал аналитики портфеля, который мы обновили в последней версии. Теперь Аналитика портфеля состоит из двух вкладок. Расскажем подробнее про каждую из них.
Это основная вкладка аналитики портфеля, которая отражает главную информацию по счёту. Во вкладке по умолчанию выбрано отображение результатов торговли за последний месяц, а также доступны периоды в 3 месяца, год, с начала года и возможность выбора конкретных дат.
Доходность показывает, какую прибыль удалось получить инвестору в конкретный период времени с учётом всех поступлений и списаний. Также отображается доходность в процентах — это отношение прибыли к вложенным деньгам с учётом ввода и вывода.
В расчёт включены:
изменение стоимости текущих активов
закрытые сделки
выплаченные дивиденды и купоны

Рассмотрим пример того, как выходить из позиции двумя (вообще можно больше, но в примере 2) лимитными ордерами одновременно.
Это стало возможно совсем недавно, т.к. камрады из сообщества очень просили. Метод, которым будем пользоваться для закрытия позиций, называется CloseAtLimitUnsafe. Отличие от CloseAtLimit такое:
Точка входа у робота контртредовая на канале Envelops.
Итоговая логика робота на графике выглядит так:
Шорт, прикрытый стоп ордером, и два лимитных ордера на бирже для закрытия в прибыль.
На ГитХаб в репозитории OsEngine это находится здесь:

Паттерн позволяет разделить логику тестирования от логики реального входа внутри робота для того, чтобы при входе и выходе не «рисовать свечи» своими большими заявками.
Очень важная заготовка паттерна управления позицией для тех, у кого много денег на счету. В том числе разберём исходный код, чтобы Вы могли модернизировать свои способы входа в реале, опираясь на данные исходники. В примере логика айсберга выделена в отдельный объект и использована многопоточность, но её надо будет переиспользовать без изменений, поэтому не пугайтесь, кто не программист, переиспользовать удастся. Будете входить, как захотите в реале.
Итоговая логика робота на графике в реале выглядит так:
В примере на графике получилось даже зайти лучше, чем если бы мы это делали одним ордером.
Сам робот – классический отбойник от боллинджера с выходом в % по стопу и профиту. Выход также в реале через «кастомный айсберг».
На ГитХаб в репозитории OsEngine это находится здесь:

Брокер ВТБ в прямом эфире РБК презентовал стратегию на четвертый квартал 2024 года, выделив золото, фонды денежного рынка, облигации с плавающим купоном и акции компаний с низкой долговой нагрузкой как привлекательные активы для инвестирования. По мнению аналитиков, в условиях высокой инфляции и жесткой денежно-кредитной политики, золото и качественные облигации станут особенно актуальными.
Главный экономист ВТБ Родион Латыпова прогнозирует, что к концу 2024 года инфляция может достигнуть 7,7%. Инвесторам рекомендовано обращать внимание на компании с низким уровнем долговой нагрузки, такие как HeadHunter, «Яндекс», ЛУКОЙЛ и «Газпром». В частности, «Газпром» рассматривается как фаворит благодаря интеграции с «Сахалин Энерджи» и увеличению добычи газа в России.
Фонды денежного рынка набирают популярность: доля клиентов, совершивших сделки с ними, выросла в пять раз. Управляющий директор ВТБ Ярослав Лазарев отметил, что такие инструменты предлагают почти безрисковую доходность, привязанную к ключевой ставке.

В этом видео подробно рассмотрим Журнал сделок в OS Engine. А также проведем тесты ГРААЛЬНОГО робота и на его примере подробно объясним, какая нужная информация по тестам (или торговле) записывается в журнал.
VK Видео:
RuTube:
Нижеприведенная история — это фактическая ситуация потери более чем 10 млн рублей по причине умышленно некорректной информации, представленной в модуле расчета доходности фьючерсов в терминале Т-Инвестиций (юр. лицо Т-Банк).
Фактология:

Изменения, баг-фикс и улучшения, которые были внесены в проект за предыдущий месяц.
Приближаемся к продакшен-реди версии. Около нового года можно будет об этом говорить, поэтому фокус смещается на инструкции и удобство работы с проектом для начинающих.
Сам ГАЙД здесь: https://smart-lab.ru/company/os_engine/blog/1024149.php
Он делается для того, чтобы было удобно и быстро искать всё в одном месте. Вся информация по алготрейдингу и созданию торговых роботов, которая Вам может понадобиться в одном месте.
Новое за месяц:
function OnInit (scriptPath)
lu = require ("LuaUtil(lu)")
ScriptDir, ScriptName = lu.SplitPath (scriptPath)
DataPath = ScriptDir .. ScriptName ..".dat"
message (DataPath)
end -- OnInit()
function dtToStr (dt)
return type (dt) ~= "table" and "nil" or
string.format ("%4d.%02d.%02d", dt.year, dt.month, dt.day)
end
function main()
os.execute ("notepad.exe ".. DataPath)
dofile (DataPath)
DS, err = CreateDataSource (ClassCode, SecCode, INTERVAL_D1)
if not DS then
message ("err\n".. err)
return
end
local ini, fin = 1, DS:Size()
for i = 1, fin do
local dt = dtToStr (DS:T(i))
if dt >= IniDate then
ini = i
break
end
end
local finPrice = DS:C(fin)
local finDate = DS:T(fin)
local iniPrice = DS:C(ini)
local iniDate = DS:T(ini)
local iniTime = os.