Блог им. 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
П.С. В конце отмечу, что пост является теоретическим. Ни одного рубля с помощью этого анализа я ещё не заработал (и пока не пытался). Поэтому буду рад любым подсказкам, как на основе этого торговать. Находить телодвижения кукла и покупать если кукл покупает, продавать если продаёт? Неужели всё так просто? Напишите пожалуйста в комментариях.
★80 | ₽ 513
Не знаю есть ли уже обменный курс тимофейчиков к рублю. 
Если уже есть и он не нулевой. то твое отступление о том, что с помощью этого робота ничего не заработал — не верно.
Как минимум 5 тимофейчиков ты честно заработал.
avatar

gib

gib, хе-хе, может когда-то тимофейчики станут криптой и повторят путь биткоина :) 
Albus (Игорь Китаев), не пропусти пик.
avatar

gib

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

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

avatar

Megasum

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

Alex Boy

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

 

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

 

Успехов!

avatar

ch5oh

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



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

 

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

 

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

avatar

ch5oh

Спасибо!
avatar

valera

Круть!!!
avatar

Ajax

Если кто-то продает, то кто-то покупает.

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

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

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

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

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

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

avatar

Chalyj7

Chalyj7, В боковике автоматически получается большой объем сделок. Просто потому что рынок провел на одних уровнях много времени.
avatar

ch5oh

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

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

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

  

avatar

spebe

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

 

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

avatar

ch5oh

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

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

avatar

Chalyj7

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

ch5oh

Как доходность?
avatar

Константин

Работа большая и хорошая. Для зарабатывания бесполезная.
avatar

MS

MS, Для анализа, просто посматривать, шарашат ли крупные сделки
MS, 
Для зарабатывания бесполезная.

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

AlexGood

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

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

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

avatar

spebe

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

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

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

Megasum

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

 

avatar

spebe

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

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

AlexGood

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

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

avatar

spebe

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

AlexGood

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

 

avatar

spebe

spebe, возможно!
avatar

AlexGood

Каждой волне Эллиота 1-2-3-4-5-а-в-с(фазы времени)  принадлежит свой уникальный объем.Для изучения работы объема надо ставить правильные цели. В жизни тренда всего 8-10 новых шагов вперед(фазы цены).Каждому шагу свой объем. Матрица цены и времени 8 \8  имеет 64 ячейки .Каждой ячейке свой объем.А теперь работаем товарищи! Изучаем объем.На вершине — каждой свече графика свой объем. Вперед к новым знаниям!
avatar

ezomm

Отлично!
avatar

AlexGood

Спасибо за проделанную работу!
avatar

AlexChi

Крутая штука!
avatar

bbbugai

Лучше сказать что это индикатор(аналоги есть в тигертрейде — cluster search,big trades), а не робот, робот все таки сделки еще открывает как бы
avatar

bbbugai

Здравствуйте, Игорь чтоб метки оставались на месте как отключить, 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

Денис Т

Денис Т, правильно. поэтому если вы запустили скрипт, потерпели полторы минуты, то они уже прилетели в КВИК. Останавливаете скрипт. Запускаете скрипт. Обработка происходит очень быстро, потому что данные уже в терминале. 

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Залогиниться

Зарегистрироваться
....все тэги
UPDONW