Блог им. Ho_Chu

Создадим идеального робота вместе - 2?

    • 25 ноября 2022, 07:00
    • |
    • Ho_Chu
  • Еще

В прошлой теме о решении проблем с каналами связи, один из пользователей отлично резюмировал в нескольких строках. Вот они:

Если вкратце, то все проблемы каналов связи решаются так:

  1. Мало денег — домашний сервер, резервный канал. Мониторим руками, можно какую-нибудь пищалку прикрутить на обрывы. Если сломался внешний контур — значит сидим и ждём пока починят.
  2. Есть чутка денег — выносим сервер наружу. Получаем алерты в телегу, реагируем руками.
  3. Есть ещё чутка денег — дублирующий сервер к варианту 2, пингуем друг-друга, пингуем из третьего места, пингуем пинговалку, обрабатываем результаты.
  4. Есть еще больше денег — всё тоже что и п.2. п.3, но только в биржевой стойке.
  5. Проблемы связи с торговой системой к пунктам 1-3: Мониторим коннект, переподключаемся, если есть альтернативные сервера.  Если всё завалилось, то используем альтернативные терминалы, звоним брокеру.
  6. Проблемы связи с торговой системой, если завалилась биржа — сидим и смотрим.

Перейдем ко второй теме. В данном случае предлагаю разрешить проблему внезапного объявления о прекращении торгов по какому-либо инструменту, либо по группе инструментов. Такое случилось, например, 5 сентября 2022 года, когда Мосбиржа объявила об остановке торгов на валютном рынке и рынке драг.металлов через какое-то время, кажется через 5 или через 10 минут. С чем это могло быть связано? С объявлением об окончании хождения валюты на территории РФ? Все возможно. Потом, конечно, все разрешилось, но осадочек остался https://www.moex.com/n51175 .

При наступлении такого события, не зная заранее его последствий, лучше не иметь открытых позиций после остановки торгов и необходима опция, которая, во-первых распознает это событие, а во-вторых, заставит, условно мгновенно, закрыть все позиции и не открывать новых впредь до особого разрешения.

Но как на уровне алгоритма отличить остановку торгов на неопределенное время от приостановки торгов из-за вылета цены за границы ранее установленного диапазона на какое-то время? Надо уметь анализировать сообщения с биржи? Там приходят сообщения о приостановке торгов на время по тем или иным инструментам.

Когда вечером 30 августа 2022 года Газпром объявил о новой рекордной выплате дивидендов, то в результате, утром 31 августа, на торгах акциями Газпрома было минимум 10 приостановок торгов.

Может быть надо научиться читать сообщения с биржи? И если в сообщении встречаются ключевые слова, то немедленно оповещать Клиента об этой ситуации? Можно сделать наоборот, создать БД исключительно рыночных сообщения и их не присылать, а слать только те, которые не соответствуют стандартам? В конце концов, там тоже робот шлет стандартизованные сообщения. И только нестандартные могут вводиться руками. Вероятно, надо добавить возможность сохранения в какой-нибудь лог-файл списка стандартных сообщений с биржи, чтобы время от времени можно было бы анализировать его на предмет появления новых типов сообщений и расширять известный список сообщений, которые мы будем признавать рыночными и не требующими вмешательства. Тогда программа сможет нас оповещать о любых незапланированных сообщениях и мы сможем оперативно реагировать на все новые сообщения.

Если мы, не находясь перед терминалом, узнаем о таком событии, то мы сможем попытаться предпринять какие-то разумные меры, например, закрыть позиции.

Или мы можем просто настроить робота слать все сообщения, касающиеся интересующих тебя инструментов. Но если сделать только такую краткую штуку, то можно пропустить объявление о прекращении хождения валюты, например.

Мнения? Как лучше решить данную проблему?

★7
78 комментариев
Никак. В финансовых отношениях главное это доверие, а какое тут может быть доверие, если Московская биржа отказывается брать на себя ответственность за срыв торгов и связанные с этим убытки резидентов.
avatar
На сколько я понял из форума Квика, они так и не сделали возможность чтения сообщений из скрипта.
Из Квика можно узнать состояние торгов через запросы getParamEx2 — «TRADINGSTATUS», «STATUS» или «TRADINGPHASE». Но они меняются через несколько секунд после события.
Так что заранее подстелить соломку не получится.
avatar
Vkt, 

а разве нельзя их читать за эти несколько секунд?
ведь если тебя нет в Квике и ты потом в него заходишь, то они на тебя обрушиваются сплошным потоком и лишь немного последнее задерживается

значит они где-то да накапливаются
avatar
Ho_Chu, не понял кого их? Сообщения о приостановке торгов в Квике или запросы getParamEx2? Это абсолютно разные вещи.
avatar
Vkt, 

я про сообщения
avatar
Ho_Chu, в Квике да, они накапливаются если принудительно их не обнулить. Но прочитать можно только глазами с экрана. Из QLua  они не доступны. Ну может можно какую-ту внешнюю приблуду из под винды научить читать эти сообщения, я не в курсе.
avatar
Vkt, 

тут думать надо
avatar
Если ваш робот умеет подключаться/читать биржевые сообщения из потока NEWS, то вы можете сравнивать тикер инструмента в новостном сообщении с тикерами инструментов по которым есть позиции. Если они совпадают — как-то реагировать.

onExchangeNewsMessage = (message) =>
    foreach position in MyPositions
        if (message.Contains(position.securityId))
            SendMeAlertAndCloseMyPositions(position.securityId)

Ещё вы можете парсить новостной раздел сайта биржи.

Переходим к 3-ей проблеме? )
avatar
Sprite, 

парсить сайт мосбиржи — было бы самым легким
но вот я не помню, было ли сообщение на сайте биржи о приостановке торгов валютой и драгметаллами — в тот момент «глаза разбежались» от мыслей «куда бежать, кого ловить»?

и если не было сообщения на сайте, то что? «куда бежать»?

к 3-ей — не торопись, «ещё не все чаинки опустились на дно...» ))

кстати, какой бы Вам виделась 3-я проблема?
avatar
Ho_Chu, куда бежать? Если биржа вам написала, вы не прочитали, а ваш робот не поставил стоп или жует сопли в то время как инструмент идёт против позиции, то, имхо, бежать нужно из раздела «Алготрейдинг».
avatar
Sprite, 

а что, Вы не допускаете мысли о возможной просадке от слова «совсем»?
avatar
Ho_Chu, «кстати, какой бы Вам виделась 3-я проблема?» Я и первых двух не вижу, куда уж мне до третьей.

«а что, Вы не допускаете мысли о возможной просадке от слова «совсем»?»
Если всё что вам осталось — это решить проблемы с просадками, возникающими по причине остановки торгов, то отвечу вашими же словами «что Вы все здесь делаете? почему Вы не на мальдивах/гавайях/пхукетах и прочих майямах?»
avatar
Sprite, 

увы, у меня в списке ещё 17 пунктов
avatar
Ho_Chu, ничосе, с другой стороны если вы за следующие 17 дней решите все свои 17 проблем, то это будет круто. Может стоит огласить весь список? А то я и до второй то добрался случайно, а уж про все 17 могу и не узнать никогда.
avatar

Sprite, 

кто сказал, что мы решим все 17 проблем?

вчерашняя проблема была предложена для обсуждения и к ней было предложено красивое и короткое резюме

 

сегодняшняя задача пока не нашла такого красивого и хорошо написанного решения
проблема представляется для обсуждения, мы её обсуждаем
те, кому это или интересно или представляется важным
или те, кто уже решил такую задачу

что будет с остальными проблемами/задачками — мы пока не знаем

avatar
Sprite, если нет доступа к прямым протоколам биржи, то целесообразней парсить сайт НКЦ. Это более официальная быстрая инфа. Знаю это хорошо, потому что один раз влетел и запомнил навсегда.

но вообще, например, с введением вечных фьючей на мос бирже, стали получаться такие ситуации, что посреди торговой сессии, стали часто стопить торги на 5-10 секунд прям на ходу у того или иного фьюча (si, cny и тд). И если в терминалах нет опроса статуса инструмента или какого события, либо оно есть, но разраб его не обрабатывает, это прям печалька, можно в разнос уйти.
avatar

Андрей К, что, прям в FIX/FAST/TWAIN/PLAZA (нужное подчеркнуть) всё стопится?

ЗЫ Мы не знаем чем занимается робот автора, но если он не арбитраж, то за 5-10 секунд в разнос не успеет. А если он арбитраж, то автор или нас тролит или графоманит.

avatar
Sprite, ну да, и там тоже. Стопится на всей бирже. Иногда пользователи на СЛ поднимали вопрос, что за беда такая происходит.
avatar
Андрей К, 

это, кстати, 3-я проблема на затра
рискну предложить способ, но давайте пока не отвлекаться

будем решать задачки по мере важности
avatar
А в чем проблема смотреть непосредственно сетевой трафик, идущий с биржи. И контролировать его наличие или отсутствие?

Ps. точнее не от биржи, а от брокера
avatar
Union_Jack, 

Если Вы следите за тиками, то можете узнать о факте
МЫ же хотим знать заранее, чтобы «соломку подстелить»
avatar
Ho_Chu, как узнать заранее? Может на бирже сбой, а может у вас интернет отвалился. Только по факту
avatar
Union_Jack, 

мы ведем речь про расшифровку сообщений с биржи или от брокера
у Вас есть что сказать по теме?
avatar
торгую ботами под тслабом 12 лет

идешь в магаз и берешь б/у сервак U1 на сколько денег хватит… они от 20к продаются… гоняешь этот сервак дома 24-7 месяц… убеждаешься что все работает и все ок...

затем этим серваком  идешь в датацентр  датачип он тиер3 там цена хостинга 2500 за U1 или еще какой тиер2 он совсем дешовый будет в районе 1000руб мес… там его воткнут в стойку...

вот и все...

если какая жопа с серваком — звонишь и просишь перегрузить...

сервер подключаешь к облаку гугл и туда пишется все данные реал тайм...
если сервак накрылся… то с любого компа подтягиваешь последние данные с облаков и прдолжаешь торговать…

еще более простой вариант идешь на рентер ру… там серваки от 4к в месяц…
avatar
ves2010, 

кстати, мысль про облако!!! спасибо!!!
тогда 3-ий сервак точно не нужен
avatar
Ho_Chu, в моих блогах глянь там есть пост про домашний сервер с рисунками
avatar
Ho_Chu, дома 2 ноута поставить не лучше?
На батарейке несколько часов проживет, инет резервный от 2-х разных провайдеров через ЮСБ модем. Основной — обычный домашний.
Свое железо ближе к телу я считаю.
avatar
Vkt, 

ну это решение на первое время, потом все равно в стойку и на биржу
avatar
Ho_Chu, зависит от роботов и объемов. Если для робота критичны миллисекунды и объемы в десятки лямов, то да. В противном случае по мне так лишний геморрой эти все серверы и  общение с техподдержками.

avatar
Vkt, 

разве миллисекунды важны не для всех?

Вы же должны помнить слова «не думай о секундах свысока, наступит время сам поймешь, наверное...»?
avatar
Ho_Chu, мне и секунда не критична. Бывает задержки на 2-3 сек. из-за тормозов сервера брокера, который колбэки задерживает. Пофиг. Такой робот. У меня еще куча sleep-ов внутри кода.
avatar
Vkt, 

ну, у богатых свои причуды )) чоуштам
avatar
Ho_Chu, богатые как раз это те, кто роботов за деньги покупает и сервер на биржу ставит, а мы с ноута и на коленке роботов колхозим!

avatar
Vkt, 

не согласен с Вами )))
продайте мне робота, который будет зарабатывать 1,5 ляма в месяц больше 1 месяца подряд и каждый будет готов отдать Вам 1,5 ляма

так ыть и не найдете, не так ли? ))
avatar
Ho_Chu, с такими вводными никогда не найдете. Сам по себе робот ничего из ничего не заработает. Робот это трактор. Но чтобы получить урожай нужны семена. В нашем случае это деньги. Чем больше семян, тем больше урожай можно получить. При условии отсутствия засухи или  потопа.
Если взять 10-20 лямов, то заработать 1,5 в месяц вполне посильная задача.Ну если на рынке не полное болото. А когда есть всего 1-2, то риски будут запредельные и зависимость от фазы рынка еще больше.
avatar
Vkt, 

Вы не поняли моей мысли — «профитного робота нельзя купить… и точка»

поэтому призывы выделить бюджет — это просто разводка на деньги, наглая и неприкрытая
avatar
Ho_Chu, купить да, надо самому
avatar
Vkt, 

Вы начинаете себе противоречить, то купи, то самому
avatar
Ho_Chu,
 купить да, надо самому

(да) = (да, нельзя)

Противоречия сняты?

Я лично своего никому не продам. Мне конкуренты в стакане не нужны.


avatar
Vkt, 

да и я бы продавать не стал

речь то идет о банальной взаимопомощи и взаимовыручке при общении с брокерами/биржей, чтобы не наступать всем на одни грабли

буржуи свободно обмениваются мнениями и решениями, а «у советских, почему-то, собственная гордость...»

пример, как только кто-то заметил, что наименование инструмента изменилось c ES на MES, так сразу же об этом начал бить в барабан

а у нас такого почему-то нет и никто не хочет этого, за редким исключением
avatar
ves2010, 
еще более простой вариант идешь на рентер ру… там серваки от 4к в месяц…
Вот уж послал, так послал.
Чувствую, что устриц не ел :)
Дмитрий Овчинников, не понял что не так?
Аренда выделенного сервера в дата центре Москвы | Renter — аренда серверного оборудования ✅

при оплате за год цена 3600 в месяц…
avatar
Перечитал еще раз топик, пытаясь понять, что я там в комменте не так написал ) Тогда надо классифицировать. Все что напишу далее, все знаю не понаслышке, а просто тупо влетал, так как такие случаи крайне редки, зато запоминаются навечно и внедряются шаги от предотвращения.

Большинство редких случаев сложны в автоматизации, не потому что это сложно, а потому что они сложны в отладке из за их редкости, поэтому надо подстраховывать чем то другим. Поэтому, классифицируя:

События заранее анонсируемые
~~~~~~~~~~~~~~~~~~~~~

События разного характера: остановка торгов, перезагрузка торговых серверов, возобновление торгов и тд.

Источники публикации по убыванию официальности:
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
а) Официальные сайты бирж
б) Прямые протоколы распространения биржевых данных
в) СМИ
г) Терминалы
д) Мессенджеры с брокером

Автматизировать можно, но зачем убивать время и деньги на решение, на которое можно положиться лет через 5? 

Решение: подключение к rss каналам источников, настраиваем фильтр, переадресовываем сообщения к себе в телегу. Для мос биржи актуально настраиваться на rss НКЦ, нежели moex.ru (официально на НКЦ инфа публикуется быстрее обо всех событиях). Поржать конечно можно за сложность решения и заморочки, но биржа в суде быстро расскажет, что и как, когда ей предъявишь за сбой и не оповещение (инфа как говорится из первых рук)


Срочные события остановки торгов по инструменту
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

События разного характера: планка в торгах, техн сбой и тд.
Событие автоматизируемое.

Источники данных:
""""""""""""""""""""""
а) Прямые протоколы распространения биржевых данных
б) Терминал

Пути автоматизации по приоритету:
"""""""""""""""""""""""""""""""""""""""""
а) Получение события по прямым протоколам
б) Отвергание заявки биржей и получения кода причины
в) Постоянный опрос статуса инструмента
г) Постоянный опрос статуса торгов

avatar
Андрей К, 

мог бы 2 раза плюсануть — плюсанул бы 2 раза, а то и 8 вот прям люто плюсую…


avatar
Андрей К, а на rss канал НКЦ можно бесплатно подписаться?
avatar
Schurik, они пока в прошлом веке ) после того как мос биржа носом об асфальт повозила и сказала, что вообще то там надо мониторить, пришлось плагин лепить из их новостной ленты
avatar
даешь еще один распил бабла — РосНаноРоботы
avatar
Мой подход в этом вопросе следующий:

— На частые рисковые события создаём специализированные обработчики исходя из сути события.

— Для закрытия редких событий имеем некий универсальный механизм противодействия — а-ля остановка торгов если почему-то идет внутри дня большая просадка и т.д.

— Ну и ещё одна немаловажная линия защиты — не жестить с рисками. Если ты стоишь на все плечи в одну сторону при огромной волатильности и пропадает связь и всё пропадает — это одна ситуация, а если ты изначально как-то диверсифицируешь портфель позиций, ограничиваешь риски и т.д. и пропадает связь и всё пропадает — совсем другая ситуация. 
avatar
Идеальный робот для всех — это что -то вроде коммунизма
avatar
Makstrade, 

если бы Вы изучали научный коммунизм, то верили бы, что это вполне достижимая цель
avatar
Ho_Chu, 
то верили бы, что это вполне достижимая цель

Святая простота...  изучать и верить это несовместимые понятия. Поэтому я изучал и знаю, что коммунизм это утопия, в которую верят наивные и малообразованные
avatar
Makstrade, 

ну значит не учили или плохо учили ))
avatar
Ho_Chu,   
Все верят вам, что вы с 11 лет на рынке… и уже построили коммунизм в отдельно взятой комнате маминой квартиры.  Удачи юный верующий коммунист...

12 лет на рынке
23 года,

avatar
Makstrade, 

«кто ж на Плюке правду думает?» ©
Вам сколько лет, что Вы верите всему, о чем пишут в интернете?

а раз минусанул мой камент, то 146% я угадал ))) прикольно

откуда, Вы думаете, дизайнер в 23 года может знать слова «научный коммунизм»?
avatar
Ho_Chu, 

Ясно… юный коммунист еще и лжец. Приписывает себе опыта на рынке. Фактически имеет один год на рынке видимо. И после этого хочет, чтобы с ним имели дело и помогали ему на халяву сделать робота.

Больше нет смысла разговаривать с малолетним врунишкой… кто-то теперь должен поверить, что он 12 лет на рынке и он дизайнер и ему не 23 года. А научный коммунизм известное понятие среди и молодых и старых коммунистов. Так что плохо он оправдывается. Мама ему часто про это рассказывала в детстве
avatar

Makstrade, 

поберегите свои эмоции для своей семьи

если Вы не знаете, откуда взялся мем «23 года, ******** из Санкт-Петербурга», то Вам явно надо прокачать свои скилы ))

 

впрочем, каждому будет дано по вере
можете верить, что мне 23 года )))
я не возражаю

avatar
Makstrade, 

ну точно, я угадал, иначе за что бы заслужил 3 минуса???
двоечник что ле?

а, нет! троечник ))))
ну когда научитесь понимать разницу между стационарностью и мнимой регрессией, заходите — поговорим
avatar
Ho_Chu, 

=Двоечник, троечник=

Ты и правда похож на 23х летнего мальчика
avatar
Mingers, 

сколько хотите )) каждый Ваш пост увеличивает рейтинг
avatar
нет
Яков С, 

вот! краткость — сестра таланта ))
avatar
Наивно верить, что кто-то будет раскрывать секреты своего робота
avatar
Mingers, 

да у Вас и робота то никакого нет )))
avatar
Mingers, Секреты моей системы открыты в документации.
Бесплатно. Ссылка в профиле.
Ему не 23 года.
Константин Чащегоров, 

ну вот, взяли и спалили )))

разрушили убеждения стольких людей )))
avatar
Ho_Chu, я слышал Ваш голос. в 23 чтоб такой иметь надо много пить с 11 лет и курить
Константин Чащегоров, 




вдобавок Вы знаете природу мема «23 года, дизайнер из Санкт-Петербурга» ))
avatar
Константин Чащегоров,  Рядом с ним спишь, раз знаешь сколько ему лет или клон его?
Таких открытых систем полно в инете. Вот только толку от них нет
avatar
Mingers, Он прислал мне ТЗ и комментировал голосом что хочет. По особенностям моей системы она на коммерческой платформе 1С. Платформа сама стоит денег. Поэтому общение не продолжилось.
Константин Чащегоров, 

Вы все забыли ))
система не дает вставлять картинки, но да, источник тот же )) телега
avatar
Ho_Chu, 

В России продолжается «побег» активных пользователей соцетей из «Фейсбука» и «Инстаграма» в Telegram. Это произошло после ряда новостей о возможном отключении указанных соцсетей на территории страны.

Шоу Ивана Урганта «Вечерний Ургант» временно сняли с эфира, и Иван опубликовал у себя в «сторис» ссылку на новый канал в Telegram.

«Новый телеграм от не нового человека», — подписал он ссылку на пустой, пока что, аккаунт, где назвал себя «23-й дизайнер из Санкт-Петербурга». За считаные часы на канал подписалось около 250 000 человек.

«Первый канал» ранее опроверг слухи об увольнении Урганта: шоу не выходило из-за праздников, а «текущая переверстка связана с важными общественно-политическими событиями». Также с эфира были сняты другие развлекательные шоу — например, программа Малахова.

Ксения Собчак видит политическую подоплеку со скандалом вокруг «Вечернего Урганта». В своем телеграм-канале она отметила, что авторы шоу намеревались сказать несколько слов о политике государства в свете последних событий, однако им запретили, так как это идет вразрез со стратегией глобального российского медийного начальства. И редакция отказалась выходить в эфир на таких условиях.

Почему не дает. Картинки прекрасно вставляются ТО что ф выше написал это ссылка на новость в интернете.
Поменяйте броузер.
Картинка снизу для проверки что работает





По многим описанным выше пунктам проблемы уходят при аренде сервера в облаке VK (по старому mail.ru). Тестировал свою базу в 3х звенной архитектуре клиент сервер как написано на картинке 2 года на сервере mail.ru. Ни обрывов связи ни тормозов квика (Если не считать время между моментом выставления заявки и отображением ее в таблице заявок за косяк). Ни разу.  (фактически только раз в день вводил в квике пин код брокера в 10 00 и база сама работала 24 часа в сутки. Днем торговала. Ночью обсчитывала и прогнозировала. От монитора уходил свободно. На случай сбоя RDP подключение к терминалу с телефона и ввод пин кода с него. На случай посмотреть мобильное приложение от 1с для Android) Сейчас тестирую файловый вариант на ноутбуке. Сеть 200 мб от Ростелеком. Тоже все не так критично. 1 раз пока был сбой что не достучаться на биржу. Использовал модем мегафона (временно 10 м бит примерно скорость). Потом Ростелеком починился
На всякий случай уточню. У меня база независимо от QUIK ведет учет доступных средств, имеющихся активов и выставленных заявок. Поэтому решения принимает сама и не зависит от того, что например в QUIK разные таблицы выдают несогласованные между собой данные. В варианте когда таблица например доступных средств в QUIK выдает неверные данные на решениях системы это никак не скажется.
Нет смысла классифицировать внезапные остановки торгов. Робот должен сообщить в тг и противным звуком (потому что в тг может не прийти сообщение) и показать сообщение на экране об аварийной остановке или, если планка и алгоритм позволяет ждать — просто ждать обновления котировок. Ждать, перезапуск или снять всё вручную — по ситуации. Никогда нельзя оставлять работать робота, не находясь рядом с компом, причин глюков может быть много, нет смысла тратить время на их обработку, продуктивнее тратить время на торговый алгоритм робота.
avatar
ignat, 

завтра обсудим, ок?

я все же считаю, что классифицировать можно и нужно
avatar

теги блога Ho_Chu

....все тэги



UPDONW
Новый дизайн