Избранное трейдера Макс
IsRun = true class_code="TQBR" function main() -- Получает доступный id для создания t_id = AllocTable() -- добавить столбцы AddColumn(t_id, 1, "Бумага", true, QTABLE_STRING_TYPE, 20) AddColumn(t_id, 2, "Кол-во", true, QTABLE_INT_TYPE, 7) AddColumn(t_id, 3, "Цена покупки", true, QTABLE_DOUBLE_TYPE, 14) AddColumn(t_id, 4, "Цена текущая", true, QTABLE_DOUBLE_TYPE, 14) AddColumn(t_id, 5, "Прибыль, р", true, QTABLE_DOUBLE_TYPE, 14) AddColumn(t_id, 6, "Прибыль, %", true, QTABLE_DOUBLE_TYPE, 14) t = CreateWindow(t_id) for iRow=1, getNumberOf("depo_limits")-1, 1 do rowInPortfolioTable = getItem("depo_limits", iRow) -- получить текущую строку из таблицы "Лимиты по бумагам" qtyBoughtLots = tonumber(rowInPortfolioTable.currentbal) limitKind = rowInPortfolioTable.limit_kind if qtyBoughtLots>0 and limitKind<1 then InsertRow(t_id, iRow)-- добавить новую строку вниз таблицы end end local rows, columns = GetTableSize (t_id) InsertRow(t_id, rows+1) -- добавить новую строку вниз таблицы для "Итого" SetWindowCaption(t_id, "Портфель: прибыли и убытки © ramirzaev@mail.ru") -- исполнять цикл, пока пользователь не остановит скрипт или не закроет окно таблицы while IsRun do if IsWindowClosed(t_id)==true then IsRun=false end local currentPrice=0 local qtyBoughtLots=0 local profitAbs = 0 local profitPerc = 0 local currentSecCode= "" local fullNameOfInstrument = "" local limitKind = 0 local rowInPortfolioTable = {} -- строка из таблицы "Лимиты по бумагам" local tableInstrument = {} -- данные "Таблицы текущих торгов" local iRowInOutTable = 1 local totalInvest = 0 local totalPortfolio = 0 local totalProfit = 0 local totalPercent = 0 for iRow=0, getNumberOf("depo_limits")-1, 1 do rowInPortfolioTable = getItem("depo_limits", iRow) -- получить текущую строку из таблицы "Лимиты по бумагам" qtyBoughtLots = tonumber(rowInPortfolioTable.currentbal) limitKind = rowInPortfolioTable.limit_kind if qtyBoughtLots>0 and limitKind<1 then -- если кол-во лотов >0 и тип лимита T0 currentSecCode = rowInPortfolioTable.sec_code fullNameOfInstrument = tostring(getParamEx(class_code, currentSecCode, "SHORTNAME").param_image or "0") --"LONGNAME" avgPrice = tonumber(rowInPortfolioTable.awg_position_price) currentPrice = GetAskPrice(currentSecCode) profitAbs = (currentPrice-avgPrice)*qtyBoughtLots profitPerc = 100*currentPrice/avgPrice - 100 totalInvest = totalInvest + avgPrice*qtyBoughtLots totalPortfolio = totalPortfolio + currentPrice*qtyBoughtLots SetCell(t_id, iRowInOutTable, 1, fullNameOfInstrument) -- "Бумага" SetCell(t_id, iRowInOutTable, 2, tostring(qtyBoughtLots)) -- "Кол-во"RemoveZero(tostring(qtyBoughtLots))) SetCell(t_id, iRowInOutTable, 3, tostring( math_round(avgPrice, 3) )) -- tostring(avgPrice)) -- "Цена покупки" SetCell(t_id, iRowInOutTable, 4, RemoveZero(tostring(currentPrice))) -- "Цена текущая" SetCell(t_id, iRowInOutTable, 5, tostring( math_round( profitAbs, 0)) ) -- "Прибыль, р" SetCell(t_id, iRowInOutTable, 6, tostring(math_round(profitPerc, 1)) .."%") -- "Прибыль, %" if profitPerc >5 then -- окрашиваем ColourRowInGreen(iRowInOutTable) elseif profitPerc<-5 then ColourRowInRed(iRowInOutTable) else ColourRowInYellow(iRowInOutTable) end iRowInOutTable = iRowInOutTable+1 end end totalProfit = totalPortfolio - totalInvest totalPercent = 100*totalProfit/totalInvest SetCell(t_id, iRowInOutTable, 1, "Итого") SetCell(t_id, iRowInOutTable, 3, tostring( math_round(totalInvest, 0) )) SetCell(t_id, iRowInOutTable, 4, tostring( math_round(totalPortfolio, 0))) SetCell(t_id, iRowInOutTable, 5, tostring( math_round( totalProfit, 0)) ) SetCell(t_id, iRowInOutTable, 6, tostring(math_round(totalPercent, 1)) .."%") if profitPerc >5 then -- окрашиваем ColourRowInGreen(iRowInOutTable) elseif profitPerc<-5 then ColourRowInRed(iRowInOutTable) else ColourRowInYellow(iRowInOutTable) end iRowInOutTable = iRowInOutTable+1 sleep(5000) -- пауза 5 сек. end --message("script table portfolio finished") end function ColourRowInRed(num_row) SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(255,150,150), RGB(0,0,0), RGB(255,150,150), RGB(0,0,0)) end function ColourRowInYellow(num_row) SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(255,255,200), RGB(0,0,0), RGB(255,255,200), RGB(0,0,0)) end function ColourRowInGreen(num_row) SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(150,255,150), RGB(0,0,0), RGB(150,255,150), RGB(0,0,0)) end function GetAskPrice(inp_Sec_Code ) local ask = tostring(getParamEx(class_code, inp_Sec_Code, "OFFER").param_value or 0) return ask end -- Округляет число до указанной точности function math_round (num, idp) local mult = 10^(idp or 0) return math.floor(num * mult + 0.5) / mult end -- удаление точки и нулей после нее function RemoveZero(str) while (string.sub(str,-1) == "0" and str ~= "0") do str = string.sub(str,1,-2) end if (string.sub(str,-1) == ".") then str = string.sub(str,1,-2) end return str end function OnStop() DestroyTable(t_id) IsRun = false end
Свершилось, после полу-года рекогносцировки, я зарегистрировался на бирже СПБ и получил доступ к торговле американскими акциями.
Важно: у меня нет доступа на американский рынок, в стакане я вижу заявки сограждан. Вообщем, устройство СПБ отдельная тема и многие лучше меня разбираются, я о другом:
ММВБ всем хорош, но все акции зависят от нефти (грубо говоря). Другое дело, американский, а по сути международный фондовый рынок (так как на биржах америки торгуются компании со всего мира). Я уже писал и делал ролик про американский рынок и как я там моделировал портфель. Это 8 секторов экономики, это, по сути, вся экономика. И basic materials, куда входят и нефтяные компании — лишь малая часть.
Сейчас, я собрал портфель и до зимы буду наблюдать, возможно, что-то поменяю в структуре, если будут идеи.
Точную копию с ценами и пропорциями я создал на другом сайте, что б удобнее было сравнивать с рынком. На СПБ пока нет возможности открывать короткие позиции, так что я только покупал. Вот что я купил:
Есть у нас пока еще такой бизнесмен Прохоров М.Д. После перестройки за что не возьмется, все криво получается, или не получается вообще. Понял он, что его счастье в смуте и начал плести интриги с западом. Нарвался на контрразведку и обыски со стороны ФСБ, а после получил по всей видимости ультиматум от власти, с требованием продать все свое имущество и свалить, а иначе у него все отберут.
И начал Миша искать на свои активы покупателей, со всем белее менее сложилось, но завис Русал, уж очень много денег он стоит. Заключил предварительное соглашение с Вексельбергом и начал ждать, пока тот соберет необходимую сумму.
Но тут случилось чудо, торговая война начала набирать обороты и полным ходом пошли картельные схемы. Россия с Китаем заключили соглашения по ценам на алюминий и начали корректировать производство. Алюминий полетел вверх, а курс рубля вниз. И Русал с точки зрения доходности стал очень недооценен и у жадного в прошлом «алигарха» внутри начала квакотать огромная жаба.
Сбербанк
Сбер немного успокоился после своего восходящего ралли и стал больше двигаться в рамках общерыночной динамики, но смотрится немного лучше. Чем дольше длится боковая консолидация на максимумах, тем больше шансов слетать вниз, посмотреть, как там дела на поддержках.
Сейчас Сбер тестирует широкий диапазон 167 – 169, и если удастся уйти ниже, то можно будет говорить о реализации полноценной коррекционной волны с потенциалом движения в районе 156 – 160.
Если же при провале ниже 169 снова начнут выкупать, можно будет аккуратно поиграть от лонга со стопом ниже локальных минимумов.
Br иRi
В прошлый раз я отмечал возможность пошортить нефть и ФРТС. По нефти рекомендация не исполнилась, ниже 50 так и не ушли, вместо этого резко вернулись к летним максимумам под 53. Общую ситуацию это не изменило, сменился лишь диапазон колебаний. Скорее всего, пока мы продолжим движение в диапазоне 50-53, возможно, с небольшими рывками за его границы. По Ri же сигнал исполнился, но на растущей нефти попадать также не удалось, в результате шорт был закрыт с символическим минусом, а вместо локального тренда очередной пилящий боковик, причем такой узкий, что в приличном обществе о таком и говорить стыдно. В общем, пока ничего нового, смотрим рынок
В свете последних событий мой любимый «Открытие брокер» начал испытывать трудности. Насколько это правда, разбираться не буду, ведь у меня нет полной информации об этом, а срок инвестирования у меня исчисляется годами. Поэтому дополнительные риски тут не уместны. Не буду испытывать судьбу и открою счет в Финаме, брокер которого тоже хвалит очень много людей. Почему не ВТБ и Сбербанк? Возможно от того, что брокерский бизнес в Сбербанке существует относительно недолго, сервис и решение дополнительных вопросов занимает долгое время, ну и комиссии выше чем у других. Единственный и неоспоримый плюс — это надежность. В ВТБ брокерский бизнес является побочным, и нет фокуса на нем, как нет и дополнительных плюшек как у Финама и Открытия.
Открытие счета в Финаме заняло около 40 мин., открывал в центральном офисе. Сотрудники очень доброжелательны и оперативны. Подарили флешку в виде ключа с надписью Финам, и ручку (мелочь, а приятно). При выходе с офиса встречаю давнего знакомого Вову Трейдерского. Ну вы его знаете конечно. Не знаете? Тогда знакомьтесь Владимир, а фамилия совпадает с любимым видом деятельности он трейдер. Еще тот любитель графики рисовать и прогнозы давать. Несколько лет его не видел. Почему то и в голову не приходило обратиться к нему за советом. Но тут сама судьба организовала нам встречу. Разговорились, темы общие нашли, многое из разговора не понимаю, голова и плечи, пробили сопротивление, уровень поддержки, опцики, фьючи, он точно трейдер или шаман какой то, откуда он все это берет? И еще больший вопрос как это все запомнить? Обменялись контактами, и договорились в ближайшую пятницу встретиться в кафе и поболтать. Там и спрошу у него пару идей для своего портфеля.
Выручка ритейлера увеличилась на 28,3% г/г, до 21,1 млрд руб. В соответствии с методологией, используемой в операционной и финансовой отчетности публичных продуктовых ритейлеров в России, сопоставимые продажи (like-for-like) сети магазинов Детский мир в России увеличились на 11,2%. Сопоставимый рост числа чеков составил 13,3% при снижении сопоставимого размера среднего чека на 1,9%. Валовая прибыль поднялась на 17,9% г/г, до 6,5 млрд руб., валовая рентабельность составила 30,7%. Доля коммерческих, общехозяйственных и административных расходов в проценте от выручки сократилась с 28,4% до 25,4% благодаря повышению операционной эффективности и сокращению расходов. Скорректированная EBITDA повысилась на 37,6% г/г — с 0,8 млрд руб. до 1,1 млрд руб. Маржа скорректированной EBITDA составила 5,3%. Показатель EBITDA без учета корректировок составил 0,8 млрд руб. Скорректированная прибыль увеличилась на 34,4% г/г, до 137 млн руб. Прибыль без учета корректировок оказалась на уровне 89 млн руб. Соотношение чистый долг/скорректированная EBITDA LTM-март по итогам квартала равнялась 1,9х. В 2016 году магазины сети Детский мир посетили свыше 154 млн покупателей, и их число продолжает постоянно расти.
В прошлый раз мы проверили трендовую природу индикатора RSI. Нами были получены интересные результаты, особенно при торговле основными секторами. В этот раз мы продолжим двигаться в направлении изменения индикатора RSI, но будем использовать сигнал разворота тенденции.
Рассмотрим пересечение индикаторов RSI разных периодов. Алгоритмы пишем в Quantopian на Python.
В этот раз: