Блог им. Albus

Робот Богатырь 2.0

Доработал робота Богатыря, описанного в этом посте: https://smart-lab.ru/blog/458269.php
Описание.
Робот анализирует ленту всех сделок, ищет в ней крупные сделки и накладывает их на график. Он рисует метки двух видов.
1. Обычные одинарные крупные сделки.
Зелёные метки — покупки, красные — продажи. Если навести на птичку курсор, то всплывёт надпись как на скриншоте с указанием цены и объёма, в данном случае по 202 рубля было куплено 8000 лотов Сбера.
Робот Богатырь 2.0
Метка рисуется СПРАВА от свечи, на которой была обнаружена большая сделка. Я выбрал в качестве метки знак <. Он похож на указатель направления куда смотреть.
2. Горсти. Горсть — это когда крупный игрок ударяет большим объёмом по стакану. В результате одна его заявка исполняется через множество мелких сделок. Признак горсти — у всех маленьких сделок будет одинаковое время в микросекундах как на скриншоте. По этому критерию робот определяет «горсть».
Робот Богатырь 2.0
Горсти отмечаются крестиками. Робот показывает, сколько лотов было в горсти, сколькими сделками она исполнилась и на сколько пипсов горсть сдвинула рынок.
Пример бычьей горсти: по СБЕРУ куплено 55 000 лотов, крупная заявка исполнена 40 мелкими сделками, от этого рынок сдвинулся на 4 копейки вверх.
Робот Богатырь 2.0
Сегодняшние горсти по Сберу говорят, что его остервенело покупают крупные игроки: в плюсиках слева 55 000 и 59 797 лотов (исполнены одним ударом, то есть горстью), а в плюсике на постмаркете кто-то одним махом заграбастал 174 788 лота.
Робот Богатырь 2.0
Пример медвежьей горсти. Одним махом проданы 4000 лотов Алросы. Исполнилось 13-ю сделками, рынок сдвинулся на 6 пипсов вниз.
Робот Богатырь 2.0
В роботе можно легко выключить горсти, если они вам не нужны. Вверху файла Bogatyr 2.0.lua есть строчка:
gorst=false --если горсти не нужны, поставьте false
Но мне кажется, что именно горсти самая перспективная часть скрипта. Они показывают активность кукла против мелких трейдеров. А одинарные бегемоты — это кукл купил у кукла, а кукл продал куклу. Анализировать их бессмысленно (ИМХО).
Непоправимый недостаток робота — он работает только со сделками текущего дня. Бегемотов за прошлые дни он не показывает.
Как пользоваться скриптом.
1. Скачиваете скрипт по ссылке https://yadi.sk/d/oimgbkDjMVwtcQ
2. Сохраняете в любую папку.
3. В шапке выставляете нужные параметры.
Робот Богатырь 2.0
Что считать бегемотом? Это можно задать напрямую в переменной big_deal. Например 1000 лотов. А можно через долю от среднего оборота за день big_porog. Например средний оборот по акции за день 1 000 000 лотов. big_porog ставлю 0.005. Значит робот будет считать бегемотом 5000 лотов.
4. ВАЖНО! На графике нужно выставить идентификатор Big. Без этого робот не найдёт куда ему ставить метки.
Робот Богатырь 2.0
4. Запускаете скрипт через Сервисы=>Lua-скрипты.
Робот Богатырь 2.0
5. Получаете результат. На график наносятся метки по уже полученным сделкам. По мере дальнейших торгов робот ловит новые сделки и добавляет их на график. Напомню: крестики — это горсти большого объёма, птички — одинарные бегемоты.
Робот Богатырь 2.0
Открывать таблицу обезличенных сделок (то есть «таблицу всех сделок») не нужно, робот сам заказывает сделки с сервера. НО! Всё равно надо убедиться, что вы подписаны на эту услугу. У моего брокера Открытие трансляция ленты всех сделок по умолчанию выключена. Включить её можно в личном кабинете:
Робот Богатырь 2.0
Чтобы проверить, работает трансляция всех сделок или не работает, попытайтесь открыть тиковый график:
Робот Богатырь 2.0
Или откройте в КВИКе меню Создать окно => Таблица обезличенных сделок 
Важно! После запуска скрипта может пройти несколько десятков секунд прежде чем робот закажет все сделки с сервера и начнёт рисовать. Особенно это актуально в конце дня, когда надо стянуть все сделки за день.
Если вы запустили робота и ничего не происходит, то возможны следующие варианты:
1. Сейчас утро. Старые сделки брокер уже стёр, а новые ещё не приходят. Подождите начала торгов. (Ночью всё должно работать, потому что сделки за истекший день ещё доступны в терминале).
2. Вы не поставили идентификатор на графике или поставили его криво. 
3. У вас слабый интернет и КВИК по приказу робота ещё не стянул сделки с сервера. Особенно это актуально для супер-ликвидов типа Si.
4. Вам брокер не транслирует ленту всех сделок. Значит надо подключить эту услугу.  
5. Вы выставили слишком большой порог. Ну например вы поставили признак бегемота 5000 лотов, но на рынке ещё не было такой сделки/горсти, поэтому скрипт ничего не рисует.

Весь код робота я снабдил комментариями, чтобы желающим было легче разобраться что происходит в каждой строчке. Приветствуются советы по улучшению кода.
Робот Богатырь 2.0
П.С. В конце отмечу, что пост является теоретическим. Ни одного рубля с помощью этого анализа я ещё не заработал (и пока не пытался). Поэтому буду рад любым подсказкам, как на основе этого торговать. Находить телодвижения кукла и покупать если кукл покупает, продавать если продаёт? Неужели всё так просто? Напишите пожалуйста в комментариях.
★84
52 комментария
Не знаю есть ли уже обменный курс тимофейчиков к рублю. 
Если уже есть и он не нулевой. то твое отступление о том, что с помощью этого робота ничего не заработал — не верно.
Как минимум 5 тимофейчиков ты честно заработал.
avatar
gib, хе-хе, может когда-то тимофейчики станут криптой и повторят путь биткоина :) 
Albus (Игорь Китаев), не пропусти пик.
avatar

Офигенно! Увы, кроме Тимофейкоинов отблагодарить по другому не могу.

Буду тестить.

avatar

Albus (Игорь Китаев) молодец аккуратно пишешь, возми на заметку:

function get_data_time(mydata)
 
return os.date("%Y%m%d",os.time(mydata)) ,
          os.date("%H%M%S",os.time(mydata))  

end

avatar
Отличная работа! С меня 50SL рублей :)
avatar

Теоретически, Вы можете наладить экспорт обнаруженных «богатырей» во внешний CSV файл и при старте проверять его содержимое и дополнять список. Так сказать, «версия 2.1».

 

Это позволит рисовать маркеры для «вчера-позавчера-давно». Наверное, самое сложное будет обработать ошибочные ситуации когда файл заблокирован и устранить потенциальное дублирование (имхо, лучше это делать на этапе чтения из файла во внутреннюю коллекцию). Впрочем, по большому счету это вопрос желания и аккуратности.

 

Успехов!

avatar
ch5oh, только что понял, что можно с Финама качать хистори. Вот лента всех сделок с указанием покупка или продажа



Albus (Игорь Китаев), можно качать. Это, наверное, одна из главных фишек Финама. Но это Вы к чему сказали?

 

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

 

С Финама тики качаются с оговорками. Во время торговой сессии их, емнип, нельзя запрашивать. И еще какие-то нюансы были. Не говоря уже о том, что на диске это все будет занимать нереально много места. Все имхо.

avatar
Спасибо!
avatar
Круть!!!
avatar
Если кто-то продает, то кто-то покупает.

Отсюда выводы:

Если сделка прошла по цене покупателя, то это не значит, что была покупка.
Если сделка прошла по цене продавца, то это не значит, что была продажа.

Отсюда вопрос:

Зачем нужен робот Богатырь?

Сергей Симонов, классическая теория утверждает, что рост цены происходит благодаря тому, что покупателей становится больше, чем продавцов. Но если смотреть ленту сделок, то чаще рост происходит от того, что участников становится меньше и уходят продавцы. Иными словами на ценах, через которое проходит движение, сделок мало. 

Отсюда второе наблюдение: цена перестает двигаться, когда появляется много участников. Т.е. в тех местах, где происходит рост объемов, часто бывает остановка движения или разворот.

avatar
Chalyj7, В боковике автоматически получается большой объем сделок. Просто потому что рынок провел на одних уровнях много времени.
avatar
ch5oh, на расстоянии в несколько лет статистика показывает, что повышение объема коррелирует с динамикой цены (вверх или вниз — без разницы). И это вполне логично.

Chalyj7, рост, по классике, происходит, если покупатель соглашается на цену продавца. Для этого он должен быть больше мотивирован.

    Принцип остановки роста при появлении множества продавцов тоже не срабатывает, так как именно появление продавцов, бывает, является тригером покупок для крупных игроков, ищущих ликвидность. В некоторых случаях такую ликвидность они же сами себе и создают, имитируя сделки с крупным объемом (о чем коммент ниже). 

  

avatar

Сергей Симонов, флаг направления сделки транслируется биржей. Его смысл следующий: стоял в стакане лимитный офер. Уже стоял в стакане. В него ударила другая заявка — происходит сделка. Эта сделка получает благ BUY. Смысл именно в том, чтобы показать «активную сторону сделки».

 

Все же если Вы ставите в рынок 5000 лотов в одной заявке, это может иметь некий предсказательный смысл. Теоретически.

avatar

ch5oh,
в направлениии сделки мало предсказательного смысла, как и писали выше.

Вот пример графика ОФЗ 26207. Дельта супер отрицательная, цена растет. Там огромный покупатель ставит бид, ему наливают. Потом он двигает бид выше, собирая маленьких продавцов и дальше стоит бидом, рисуя отрицательную дельту

avatar
Chalyj7, просто пояснил смысл флага «направление сделки». Нигде не клялся, что анализ этого показателя позволяет построить прибыльную ТС.
avatar
Как доходность?
avatar
Работа большая и хорошая. Для зарабатывания бесполезная.
avatar
MS, Для анализа, просто посматривать, шарашат ли крупные сделки
MS, 
Для зарабатывания бесполезная.

обоснуйте, коллега!
avatar

Никакие объемы не обладают прогностической силой. Совсем. Любой вывод, на основе объемов, можно сделать, подогнав его под желаемую ситуацию.

Сами же объемы могут нарисоваться в любом количестве и в любой расфасовке — хоть единичные, хоть гроздевые, хоть гигантские, хоть средние. Манипулятор, если он присутствует, этим аккурат и занимается. Я уже ранее упоминал на СЛ, что мне мой брокер каждый год присылает напоминалочку «Этика биржевой торговли». В ней, в частности, говорится, что не хорошо заниматься тем, что называется «раскрашивание ленты» (о чем и речь) — формирование фейковых объемов — любого размера и любой расфасовки. 

А раз это делать нехорошо, значит это стопудово делается))). Испокон веков, и по наши дни.

avatar
spebe, 
формирование фейковых объемов — любого размера и любой расфасовки. 

Можно поподробнее? Лента — это уже произошедшие сделки. Как можно фейковые объемы там рисовать?

Мы же сейчас не про фейковые объемы в стакане говорим, которые снимаются, когда цена к ним идёт, а про реально прошедшие сделки.
avatar

Megasum, ну, это уже, как бы, классика)))
Сделки с повышенным объемом с разных счетов, принадлежащих одному лицу/группе лиц для создания ложного впечатления о:
— движении на объеме 
— объеме, вставшем не пути движения 
для генерации необходимого манипуляторам сентимента 

 

avatar
spebe, 
Никакие объемы не обладают прогностической силой.

что же тогда обладает, на что опираться дейтрейдеру/краткосрочнику?
avatar

AlexGood, обладает то, что всякий трейдер держит в большом секрете от массы других трейдеров)))

Есть два принципиально разных подхода: один — на основе гипотезы случайных блужданий рыночных цен. Сторонники такого подхода развивают статистические методы торговли. Другой (включая мой) — на основе гипотезы детерминированности процессов. На его основе я построил модель рынка, в которой сами объемы являются следствием, а не причиной. 

avatar
spebe, я тоже сторонник второго подхода, просмотрел сегодня ваши видео, кое-что законспектировал, завтра почитаю ваши статьи)
avatar

AlexGood, о, вот это правильно; а там и до книги не далеко))) 

 

avatar
spebe, возможно!
avatar
Каждой волне Эллиота 1-2-3-4-5-а-в-с(фазы времени)  принадлежит свой уникальный объем.Для изучения работы объема надо ставить правильные цели. В жизни тренда всего 8-10 новых шагов вперед(фазы цены).Каждому шагу свой объем. Матрица цены и времени 8 \8  имеет 64 ячейки .Каждой ячейке свой объем.А теперь работаем товарищи! Изучаем объем.На вершине — каждой свече графика свой объем. Вперед к новым знаниям!
avatar
Отлично!
avatar
Спасибо за проделанную работу!
avatar
Крутая штука!
avatar
Лучше сказать что это индикатор(аналоги есть в тигертрейде — cluster search,big trades), а не робот, робот все таки сделки еще открывает как бы
avatar
Здравствуйте, Игорь чтоб метки оставались на месте как отключить, DelAllLabels(identifikator) --при запуске скрипта удаляем все старые метки.
Юрий Мисевра, поставьте в начале этой строки два дефиса --
Это превратит строку в комментарий и она не будет выполняться.


Albus (Игорь Китаев), здравствуйте! Скачал последний закомментированный код. Поправьте, если не прав. Ошибка в функции BogatyrDo (sdelka_table) по-моему все же присутствует. 

Если микросекунды совпадают то
        мы считаем объем в горсти
        1й блок Если горсть отключена
                     Ищем одиночные бегемоты в горсти
                     Выводим метку
Иначе (!!! т.е. если микросекунды не совпадают!!!)
        2й блок Если горсть вкл 
                     Мы начинаем считать горсть
                     Выводим метку
        3й блок Мы ищем одинарные бегемоты
                     Выводим метку

Как мы начинаем считать Горсти во втором блоке, если у нас микросекунды не равны? Логичнее поставить else перед третьим блоком, а первый со вторым поменять местами.
avatar
Денис Т, 
Как мы начинаем считать Горсти во втором блоке, если у нас микросекунды не равны? 
хе-хе, я когда-то спустя долгое время перечитывал свой код и тоже подумал также как вы. Но нет, всё правильно :) В этом месте изменились микросекунды. Значит надо обработать горсть, накопившуюся к этому времени. Или игнорировать, если горсти не было. Есть к этому времени горсть или нету, показывает сравнение 
if (cumul_vol or 0)>big_deal and count>1

Так что всё верно. Это надо делать, когда изменились микросекунды, чтобы проверить не было ли горсти ДО этого момента. 
Albus (Игорь Китаев), понял))) Спасибо за подробное объяснение.
avatar
Albus (Игорь Китаев), и снова здравствуйте!))) Заметил ещё одну вещь в работе скрипта.
Устанавливаем скрипт, нажимаем запустить, фиксируем время запуска. Пока работает загрузка ТВС и обработка в мэйне до old_done, проходит определенное время( а у меня это минуты полторы) Квик задумывается, но работает… Наступает old_done, фиксируем время и начинает работать функция OnAllTrade, обрабатывая первую поступившую к этому времени сделку. Так вот остаются не обработанными сделки как раз по времени между запуском скрипта и первой сделкой в OnAllTrade. В логе нет сделок за это время. Может нужно прикрутить проверку по времени последней обработанной сделки в мэйне?
avatar
Денис Т, да, есть такое. Чтобы этого избежать, надо остановить скрипт и запустить по новой. Свечки с сервера уже заказаны при прошлом вызове и обработаются почти мгновенно. Поэтому указанного вами дефекта не будет. 
Albus (Игорь Китаев), так а мне свечки и не интересны. я про сделки в ТВС. Свечи и рассчет объемов я вообще убрал из скипта. и при перезагрузке скрипта эта ситуация не меняется. Подскажите, как лучше сделать проверку, что то сам пока не понял)))
avatar
Денис Т, я и имел в виду все сделки. Просто я их заказываю с сервера не в виде ТВС, а как тиковый график. Поэтому и сказал свечки. Правильно тики.
Albus (Игорь Китаев), так это одно и тоже. Тики, ТВС(ТОС) — это таблица обезличенных(всех) сделок.)))
avatar
Денис Т, правильно. поэтому если вы запустили скрипт, потерпели полторы минуты, то они уже прилетели в КВИК. Останавливаете скрипт. Запускаете скрипт. Обработка происходит очень быстро, потому что данные уже в терминале. 
Класный Скрипт. А Вы не думали его просто в табличку для интрадей выводить?
По типу  умной ленты агрегированной по сделкам и фильтр на нее по объему.
Может оно даже наглядней будет. Тем более что галочки и плюсики в квике накладываются и при наведении сигналит комментом только один.
Еще такой вопросик, а можно Богатыря настроить так, чтобы он только определенный сайз показывал? Не больше скольки то, а предположим равно.
Или от и до(так даже правильнее).
Albus (Игорь Китаев), Интересный скрипт, чем-то отдалённо напоминает пакет индикаторов market stop, для NT-7 NT-8 в который входят (MarketStop, LargeTrade и CustomTicksRT ) скрины ниже.  Но всё же чего-то не хватает...

http://www.invest74.ru/index.php?topic=8553

http://www.invest74.ru/index.php?topic=8639


avatar
Ramil Shahattudinov, так он под Ninjatrader 
avatar
Практический смысл оказался в том, что через эти сделки удобно рисовать уровни.
avatar

теги блога Albus (Игорь Китаев)

....все тэги



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