Избранное трейдера Holod_Dmitry
Помнится лет 10 назад на FullTiltPoker 4-х кратный обладатель браслетов WSOP Крис Фергюсон устроил сам себе челлендж. Смысл сводился к тому, сможет ли он с банкроллом ноль долларов, соблюдая все правила работы с капиталом, нарастить счет до 10000 долл.
После долгих мытарств на низких лимитах, где ему было очень неудобно и постоянно нарушались мелкие правила, Крис-таки смог добраться до цели через 1,5 года. Причем его график после достижения 100 долл. стал напоминать экспоненту.
http://www.poker-wiki.ru/poker/Задача_для_Криса_Фергюсона
Так вот мы в своей Компании решили замутить что-то подобное. Не то чтобы скучно нам стало! Хотя можно заметить, что мои последние посты были на тему литературы.
https://smart-lab.ru/blog/612585.php
https://smart-lab.ru/blog/617279.php
А до этого вообще года два ничего не писал сюда.
Когда-то давно я устроился на работу в небольшой брокерской компании. Помню, первый вопрос на рабочем месте от начальника отдела, старого многоопытного спокойного еврея, поверг меня в шок: «Покажите как вы определяете лучшие акции?» А я-то думал, мне все расскажут и покажут! Сильно смутившись, я начал что-то лепетать про P/E, P/S и количество абонентов. «Ну это фигня какая-то! Идите думайте» — тихим голосом неожиданно изрек вежливый начальник, во мгновенье растоптав во мне всякое самоуважение. Я думал — меня уволят в ту же неделю, но оказалось, это нормальный способ руководства у шефа. Дело было в крайне презрительном отношении начальника к P/S, ведь этот коэффициент не учитывает долги компании. Тогда, в начале нулевых стандарты задавал Стивен Дашевский, прекрасный аналитик из Атона. Этот экспат, рулевой и светоч аналитиков, любил и продвигал три мультипликатора P/E, EV/EBITDA и EV/S. Эта тройка мультов и до сих пор на пьедестале в крупных домах, например в Сбербанк-КИБ. Проделав это исследование, я могу уверенно сказать, что мой подход в прошлом был не так уж и плох. А указанная тройка вовсе не объект для поклонения, другие параметры работают не хуже.
В этом посте опишу несколько факторов, влияющих на производительность нашего мозга. Важнейшие, на мой взгляд, ограничения, продиктованные во многом суетой нашей жизни. И работая с которыми можно существенно увеличить свою продуктивность.
Некоторые описанные идеи и цитаты для поста взял из великолепной книги Тео Компернолли «Мозг освобожденный». Маст рид для любого, желающего найти скрытые резервы своих возможностей.
1. Гиперподключенность
Смартфон обладает массой полезных функций. Телефон, камера, мгновенный выход в интернет для поиска необходимой инфы и т.п. Устройство может упростить жизнь.
Однако в контексте описываемой в посте темы – выгода не так очевидна. Постоянное использование мессенджеров, соцсетей приводит к формированию вредной привычки. Привычки всегда находиться на связи и немедленно реагировать на любой раздражитель.
Смартфон развлекает. С ним не так скучно. Но вместе с этим у современного человека совершенно пропадает способность концентрироваться. Смартфончик обеспечивает желание развлечься, но в то же время вносит колоссальную дезорганизующую составляющую в нашу работу. И не только в работу. Отдыхать тоже нужно не отвлекаясь! Почему? Описал в посте Как происходят озарения.
-- -- Выполнение действий с массивами. -- local pairs = pairs local type = type module(...) --- Создать копию массива (таблицы) -- @return копию массива (таблицы) function copy(array) local copy_array = {} if type(array) ~= "table" then return array end for k, v in pairs(array) do if type(v) == "table" then copy_array[k] = copy(v) else copy_array[k] = v end end return copy_array end --- Узнать, начинается ли индексация в массиве с нуля или с единицы. -- @return 0 или 1 function base(array) if array[0] ~= nil then return 0 else return 1 end end --- Вычислить число элементов в массиве. -- @return число элементов в массиве function size(array) local n = 0 for _, _ in pairs(array) do n = n + 1 end return n end --- Проверить пустой или нет массив. -- @return true/false function isEmpty(array) for _, _ in pairs(array) do return false end return true end --- Получить первый индекс массива, где ничего не записано. Поиск начинается с 1. -- @return первый индекс массива, где ничего не записано function firstEmptyIndex(array) local i = 1 while array[i] ~= nil do i = i + 1 end return i end
Тем, кто не читал предыдущий топик этой темы, рекомендую для начала ознакомиться с ним [1].
В комментариях к предыдущему топику меня критиковали за неоптимальность кода Python. Однако, текст читают люди с совершенно разной подготовкой — от почти не знающих Python или знающих другие языки программирования, до продвинутых пользователей. Последние легко могут обнаружить неоптимальность кода и заменить его своим. Тем не менее, код должен быть доступен и новичкам, возможно не обладающим знанием пакетов и продвинутых методов. Поэтому, в коде я буду, по возможности, использовать только базовые конструкции Python, не требующие глубоких знаний, и которые могут легко читаться людьми, программирующими на других языках. Вместе с тем, по мере изложения, без фанатизма, буду вводить и новые элементы Python.
Если вы хотите как-то улучшить или оптимизировать код, приводите его в комментариях — это только расширит и улучшит изложенный материал.
Ну, а сейчас мы займемся разработкой и тестированием индикаторов. Для начала нам нужна простейшая стратегия с использованием МА — его и построим. Самой лучшей по характеристикам МА является ЕМА. Формула ЕМА: