Инструменты для анализа и защиты смарт-контрактов в блокчейне.
Привет, друзья! Хотим с вами поделиться теми улучшениями, которые мы добавили в терминал. Они помогут вам получить еще больше преимуществ на рынке вместе с Go Invest.
Вот что мы поменяли и добавили в терминале
Новая визуализация торгового стакана:
сжаты ценовые уровни
появилась цветовая дифференциация уровней Bid\Offer
добавлена совокупная гистограмма спроса\предложения
появилось контекстное меню для работы с правой кнопкой мыши
добавлена возможность поменять тип заявок LMT и STP на трейлинговые версии
Доработана таблица “Позиции” — добавлены фильтры по типам активов и информационная строка, в которой суммируется информация по выбранным счетам в части стоимости, НПУ за день и НПУ за все время.
Если вы не только что стали моим подписчиком, то наверняка в курсе, что я полностью перешел на Linux и даже написал пост о моем опыте: Месяц на ALT Linux на рабочей машине...
Но сейчас хотел поделиться кое-чем полезным, а заодно останется это в ленте, потому что когда ты редко пользуешься чем-то, то забываешь, и нужно снова вспоминать. Поэтому данный пост также послужит лично мне напоминалкой.
Сейчас люди настолько привыкли к графическим оболочкам (линуксоиды их называют ГУИ, GUI — Graphical user interface), что мало кто представляет себе возможность что-то делать на компьютере с помощью командной строки. А между тем, командная строка очень мощный и в определенных случаях очень полезный инструмент. В Linux его довели до совершенства. Конечно, большинству людей она не понадобится, но при этом она остается очень полезной сисадминам и программистам.
Мои программы написаны на python и их очень удобно запускать прямо из командной строки. Достаточно написать:
python3 my_python_script.py
20220915,090000,61420,61497,61406,61464,241
20220915,090100,61460,61476,61420,61451,160
20220915,090200,61444,61489,61436,61479,185
Осмелюсь предположить, что эти строки ты заливаешь в массив с помощью string.match. Это готовый парсер строки с разделителем. Работает достаточно шустро. Я на нем сидел пару лет.
Когда данных не много, такой метод загрузки не напрягает. Но когда за день 20-30 раз загружаешь сотни тысяч или миллион строк, то потери времени становятся невыносимыми.
Стал искать способ ускорить этот процесс. И он таки нашелся. Выяснил следующее:
Если строки в файле истории сконвертировать в такой вид (делается 1 раз):
table.insert(MyTable,{«20220915»,«090000»,61420,61497,61406,61464,241})
table.insert(MyTable,{«20220915»,«090100»,61460,61476,61420,61451,160})
table.insert(MyTable,{«20220915»,«090200»,61444,61489,61436,61479,185})
Термин «робастность» означает способность торговой стратегии повторять результаты своего тестирования в прошлом на новых данных.
И было бы здорово измерять эту способность в цифрах. В этом тексте я познакомлю Вас с одной из метрик робастности стратегии, которая есть у нас в OsEngine — «Walk-Forward Robustness Metric».
Вспоминаем о сути робастности
Вы оттестировали какую-то стратегию в тестере и видите результат в красном квадрате. Супер! Вы включили стратегию в торги, и в реальном времени за следующие два месяца стратегия вам дала примерно такой же результат по прибыльности, как и в тестере:
Рис. 1. Стратегия с высокой робастностью. Повторяет результаты тестов в реальной торговле
Пример 2.
Вы оттестировали какую-то стратегию в тестере и видите результат в красном квадрате. Вы включили стратегию в торги, и в реальном времени за следующие два месяца (зелёный квадрат) стратегия вам дала убытки: