Избранное трейдера Skifan
В основе человеческой психологии лежит желание купить то, что подешевело, то, что стоило раньше 100, а сейчас, к примеру, 90. Подобные сделки кажутся очень выгодными, тем более, что в обычной повседневной жизни они, как правило, действительно являются выгодными. Например, выгодно покупать продукты по акциям в магазине со скидкой, выгодно отовариваться на распродажах, покупать товары при ликвидации магазинов и т.д. Именно поэтому многие и на фондовом рынке придерживаются такой же стратегии, покупая акции компаний аутсайдеров, которые падают и, зачастую, падают сильно. Не скрою, что когда-то и я так торговал, но анализ собственных сделок, а также анализ движения цен на акции лидеров рынка и аутсайдеров, заставили меня пересмотреть этот подход.
Если вы уже давно торгуете на фондовом рынке, то наверняка заметили, что одни и те же бумаги растут сильнее рынка, а другие все время стоят на месте или даже падают. Примеров можно привести много: это и ВТБ, который разместился на IPO в 2007 году по 13.6 копеек, а сейчас стоит менее 4 копеек, это и Газпром, который когда-то в 2008 году стоил более 300 рублей, а сейчас, спустя 10 лет, стоит в два раза меньше. Да и каждый из вас без труда может привести множество подобных примеров. В то же время есть бумаги, которые выросли за это время в несколько раз, оставаясь лучшими много лет подряд.
Снова слился. В очередной раз.
Всё, хватит с меня! Я дико устал от этой треклятой биржи и навсегда ухожу из трейдинга!
Шутка юмора :)
На самом деле, мне сегодня стукнул полтинник — и я решил увековечить этот день своим первым постом на Смартлабе.
Мозг расставляет ловушки
Не так давно на Смартлабе была интересная серия постов на тему: «Мозг расставляет ловушки» (https://smart-lab.ru/blog/495325.php) Рекомендую почитать.
Все ловушки очень симпатичные, и мой товарищ Мозг, похоже, побывал во всех из них (он побывал, а я приобрёл бесценный опыт, да). Как говорится, есть что вспомнить.
Во всех книгах по трейдингу огромное внимание уделяется психологии, и это неспроста, ибо наш мозг рулит нами (а не мы – им). А этот товарищ Мозг иной раз выкидывает такие фортеля, что «волосы в жилах стынут» (М.Задорнов)… Поэтому я полностью согласен с кем-то сказанной фразой:
«Биржа – это на 90% психология и на 10% математика».
Я заметил тенденцию в финансовых СМИ говорить о том, что активно управляемые фонды не опережают рынок с учетом их комиссий, как будто это то, что мы только недавно обнаружили. Фактически, для тех, кто был готов искать доказательства, основанные на реальных данных, были доступны уже очень давно.
Вы могли бы утверждать, что этот процесс начал французский математик Луи Башелье. В своей докторской диссертации 1900 года «Теория спекуляций» Башелье продемонстрировал, что цены акций движутся таким случайным образом, что «математическое ожидание спекулянта равно нулю».
Однако, именно американец по имени Альфред Коулз III был первым человеком, который измерил эффективность биржевых прогнозистов эмпирически.
Alfred Cowles III
Рожденный в Чикаго и 1891 году и получивший образование в Йельском университете, Коулз стал успешным бизнесменом. Но его истинныой страстью были экономика и статистика. Один вопрос, в частности, занимал его ум — можно ли победить фондовый рынок? — и в 1927 году он решил найти ответ.
Вопрос, который Т.Феррис задал Баффету:
«Если бы вам было 30 лет, не было иждивенцев, но была постоянная работа до того, как полностью посвятить своё время инвестированию, как бы вы вложили свой первый миллион, допуская, что у вас есть другие сбережения, чтобы протянуть 18 месяцев? Заранее спасибо за конкретные классы активов и проценты от портфеля.»
Баффет ответил: «Я бы вложил всё в индексный фонд с низкой комиссией, который отслеживает S&P 500, и вернулся на работу...»
“If you were 30 years old and had no dependents but a full-time job that precluded full-time investing, how would you invest your first million dollars, assuming that you can cover 18 months of expenses with other savings? Thank you in advance for being as specific as possible with asset classes and allocation percentage.”Buffett let out a small laugh and began. “I’d put it all in a low-cost index fund that tracks the S&P 500 and get back to work…”
Всех приветствую. Продолжаем изучение языка MQL4.
В прошлый раз мы рассмотрели целые типы данных, а сегодня поговорим о вещественных типах. Они предназначены для того, чтобы хранить не только целую, но и дробную часть числа. Поэтому они гораздо более универсальны, чем целые типы данных. В плане математических операций с целыми числами мы ограничены тем, что результат обязательно должен быть целым, иначе мы потеряем дробную часть числа. По этой причине целые типы чаще всего применяются для нумерации элементов массива и для всевозможных счётчиков, когда нам необходимо посчитать сколько раз выполнилось какое-либо условие. Например, перебрать все активные ордера и посчитать сколько из них каждого типа: (buy, sell, buy stop, buy limit, sell stop, sell limit).
Вещественные типы в этом смысле могут применяться гораздо шире, в самых разных математических операциях, потому что хранят целую и дробную часть числа.
Вещественных типов данных в языке MQL4 (и в MQL5 тоже) всего 2:
--переменные keyRateCB = 7.5 classCode = "TQOB" function CreateTable() t_id = AllocTable() AddColumn(t_id, 0, "Бумага", true, QTABLE_STRING_TYPE, 15) AddColumn(t_id, 1, "Цена", true, QTABLE_DOUBLE_TYPE, 15) AddColumn(t_id, 2, "Доходность, %", true, QTABLE_DOUBLE_TYPE, 15) AddColumn(t_id, 3, "Дюрация, лет", true, QTABLE_DOUBLE_TYPE, 15) AddColumn(t_id, 4, "Купон, %", true, QTABLE_DOUBLE_TYPE, 15) AddColumn(t_id, 5, "Премия к ЦБ, бп", true, QTABLE_INT_TYPE, 15) AddColumn(t_id, 6, "Погашение", true, QTABLE_STRING_TYPE, 15) t = CreateWindow(t_id) SetWindowCaption(t_id, "ОФЗ") end function string.split(str, sep) local fields = {} str:gsub(string.format("([^%s]+)", sep), function(f_c) fields[#fields + 1] = f_c end) return fields end function getParamNumber(code, param) return tonumber(getParamEx(classCode, code, param).param_value) end function formatData(prm) return string.format("%02d.%02d.%04d", prm%100, (prm%10000)/100, prm/10000) end CreateTable() arr = {} sec_list = getClassSecurities(classCode) sec_listTable = string.split(sec_list, ',') j = 0 for i = 1, #sec_listTable do secCode = sec_listTable[i] securityInfo = getSecurityInfo(classCode, secCode) short_name = securityInfo.short_name if short_name:find("ОФЗ 26") ~= nil then j = j + 1 r = {} r["short_name"] = short_name r["price"] = getParamNumber(securityInfo.code, "PREVPRICE") r["yield"] = getParamNumber(securityInfo.code, "YIELD") r["duration"] = getParamNumber(securityInfo.code, "DURATION")/365 couponvalue = getParamNumber(securityInfo.code, "COUPONVALUE") couponperiod = getParamNumber(securityInfo.code, "COUPONPERIOD") r["coupon"] = ((365/couponperiod) * couponvalue)/10 r["bonus"] = (r["yield"] - keyRateCB)*100 r["mat_date"] = getParamNumber(securityInfo.code, "MAT_DATE") table.insert(arr, j, r) end end table.sort(arr, function(a,b) return a["duration"] < b["duration"] end) for j = 1, #arr do row = InsertRow(t_id, -1) SetCell(t_id, row, 0, arr[j]["short_name"]) price = arr[j]["price"] SetCell(t_id, row, 1, string.format("%.2f", price), price) yield = arr[j]["yield"] SetCell(t_id, row, 2, string.format("%.2f", yield), yield) duration = arr[j]["duration"] SetCell(t_id, row, 3, string.format("%.2f", duration), duration) coupon = arr[j]["coupon"] SetCell(t_id, row, 4, string.format("%.2f", coupon), coupon) bonus = arr[j]["bonus"] SetCell(t_id, row, 5, string.format("%.0f", bonus), bonus) mat_date = arr[j]["mat_date"] SetCell(t_id, row, 6, formatData(mat_date), mat_date) end