Albus (Игорь Китаев)
Albus (Игорь Китаев) личный блог
18 января 2019, 01:09

Робот Богатырь 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
П.С. В конце отмечу, что пост является теоретическим. Ни одного рубля с помощью этого анализа я ещё не заработал (и пока не пытался). Поэтому буду рад любым подсказкам, как на основе этого торговать. Находить телодвижения кукла и покупать если кукл покупает, продавать если продаёт? Неужели всё так просто? Напишите пожалуйста в комментариях.
52 Комментария
  • gib
    18 января 2019, 01:57
    Не знаю есть ли уже обменный курс тимофейчиков к рублю. 
    Если уже есть и он не нулевой. то твое отступление о том, что с помощью этого робота ничего не заработал — не верно.
    Как минимум 5 тимофейчиков ты честно заработал.
      • gib
        18 января 2019, 09:53
        Albus (Игорь Китаев), не пропусти пик.
  • Megasum
    18 января 2019, 02:44

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

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

  • Тихий омут
    18 января 2019, 07:04

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

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

    end

  • OnlyHuman
    18 января 2019, 07:31
    Отличная работа! С меня 50SL рублей :)
  • ch5oh
    18 января 2019, 07:48

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

     

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

     

    Успехов!

      • ch5oh
        18 января 2019, 10:20

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

         

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

         

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

  • valera
    18 января 2019, 07:54
    Спасибо!
  • Ajax
    18 января 2019, 08:56
    Круть!!!
  • Сергей Симонов
    18 января 2019, 11:05
    Если кто-то продает, то кто-то покупает.

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

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

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

    Зачем нужен робот Богатырь?
    • Chalyj7
      18 января 2019, 11:24

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

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

      • ch5oh
        18 января 2019, 11:57
        Chalyj7, В боковике автоматически получается большой объем сделок. Просто потому что рынок провел на одних уровнях много времени.
        • Сергей Симонов
          18 января 2019, 21:20
          ch5oh, на расстоянии в несколько лет статистика показывает, что повышение объема коррелирует с динамикой цены (вверх или вниз — без разницы). И это вполне логично.
      • spebe
        18 января 2019, 15:24

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

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

          

    • ch5oh
      18 января 2019, 11:56

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

       

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

      • Chalyj7
        18 января 2019, 14:31

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

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

        • ch5oh
          19 января 2019, 00:30
          Chalyj7, просто пояснил смысл флага «направление сделки». Нигде не клялся, что анализ этого показателя позволяет построить прибыльную ТС.
  • Константин
    18 января 2019, 13:03
    Как доходность?
  • MS
    18 января 2019, 14:57
    Работа большая и хорошая. Для зарабатывания бесполезная.
    • MS, Для анализа, просто посматривать, шарашат ли крупные сделки
    • AlexGood
      09 февраля 2019, 13:15
      MS, 
      Для зарабатывания бесполезная.

      обоснуйте, коллега!
  • spebe
    18 января 2019, 15:15

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

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

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

    • Megasum
      18 января 2019, 19:14
      spebe, 
      формирование фейковых объемов — любого размера и любой расфасовки. 

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

      Мы же сейчас не про фейковые объемы в стакане говорим, которые снимаются, когда цена к ним идёт, а про реально прошедшие сделки.
      • spebe
        18 января 2019, 22:31

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

         

    • AlexGood
      09 февраля 2019, 13:20
      spebe, 
      Никакие объемы не обладают прогностической силой.

      что же тогда обладает, на что опираться дейтрейдеру/краткосрочнику?
      • spebe
        09 февраля 2019, 22:57

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

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

        • AlexGood
          09 февраля 2019, 23:30
          spebe, я тоже сторонник второго подхода, просмотрел сегодня ваши видео, кое-что законспектировал, завтра почитаю ваши статьи)
          • spebe
            10 февраля 2019, 11:39

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

             

            • AlexGood
              10 февраля 2019, 11:46
              spebe, возможно!
  • ezomm
    18 января 2019, 17:09
    Каждой волне Эллиота 1-2-3-4-5-а-в-с(фазы времени)  принадлежит свой уникальный объем.Для изучения работы объема надо ставить правильные цели. В жизни тренда всего 8-10 новых шагов вперед(фазы цены).Каждому шагу свой объем. Матрица цены и времени 8 \8  имеет 64 ячейки .Каждой ячейке свой объем.А теперь работаем товарищи! Изучаем объем.На вершине — каждой свече графика свой объем. Вперед к новым знаниям!
  • AlexGood
    19 января 2019, 11:56
    Отлично!
  • AlexChi
    19 января 2019, 13:43
    Спасибо за проделанную работу!
  • bbbugai
    22 января 2019, 16:43
    Крутая штука!
  • bbbugai
    22 января 2019, 16:47
    Лучше сказать что это индикатор(аналоги есть в тигертрейде — cluster search,big trades), а не робот, робот все таки сделки еще открывает как бы
  • Андрей Нестеров
    29 января 2019, 14:01
    Здравствуйте, Игорь чтоб метки оставались на месте как отключить, DelAllLabels(identifikator) --при запуске скрипта удаляем все старые метки.
      • Денис Т
        22 марта 2019, 21:02
        Albus (Игорь Китаев), здравствуйте! Скачал последний закомментированный код. Поправьте, если не прав. Ошибка в функции BogatyrDo (sdelka_table) по-моему все же присутствует. 

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

        Как мы начинаем считать Горсти во втором блоке, если у нас микросекунды не равны? Логичнее поставить else перед третьим блоком, а первый со вторым поменять местами.
          • Денис Т
            22 марта 2019, 22:40
            Albus (Игорь Китаев), понял))) Спасибо за подробное объяснение.
  • Денис Т
    25 марта 2019, 21:16
    Albus (Игорь Китаев), и снова здравствуйте!))) Заметил ещё одну вещь в работе скрипта.
    Устанавливаем скрипт, нажимаем запустить, фиксируем время запуска. Пока работает загрузка ТВС и обработка в мэйне до old_done, проходит определенное время( а у меня это минуты полторы) Квик задумывается, но работает… Наступает old_done, фиксируем время и начинает работать функция OnAllTrade, обрабатывая первую поступившую к этому времени сделку. Так вот остаются не обработанными сделки как раз по времени между запуском скрипта и первой сделкой в OnAllTrade. В логе нет сделок за это время. Может нужно прикрутить проверку по времени последней обработанной сделки в мэйне?
      • Денис Т
        25 марта 2019, 22:08
        Albus (Игорь Китаев), так а мне свечки и не интересны. я про сделки в ТВС. Свечи и рассчет объемов я вообще убрал из скипта. и при перезагрузке скрипта эта ситуация не меняется. Подскажите, как лучше сделать проверку, что то сам пока не понял)))
          • Денис Т
            25 марта 2019, 23:47
            Albus (Игорь Китаев), так это одно и тоже. Тики, ТВС(ТОС) — это таблица обезличенных(всех) сделок.)))
  • Антон Кондряков
    21 января 2020, 09:17
    Класный Скрипт. А Вы не думали его просто в табличку для интрадей выводить?
    По типу  умной ленты агрегированной по сделкам и фильтр на нее по объему.
    Может оно даже наглядней будет. Тем более что галочки и плюсики в квике накладываются и при наведении сигналит комментом только один.
  • Антон Кондряков
    22 января 2020, 16:24
    Еще такой вопросик, а можно Богатыря настроить так, чтобы он только определенный сайз показывал? Не больше скольки то, а предположим равно.
    Или от и до(так даже правильнее).
  • Ramil Shahattudinov
    12 января 2023, 20:05
    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


    • Paulmarko
      18 августа 2023, 23:29
      Ramil Shahattudinov, так он под Ninjatrader 
  • Paulmarko
    24 августа 2023, 11:07
    Практический смысл оказался в том, что через эти сделки удобно рисовать уровни.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн