Избранное трейдера Макс

по

Таблица "Портфель" в QUIKе


    Представляю таблицу для портфельных инвестиций. В квике до сих пор такого нет. Цвет строки меняется если Прибыль%<>5%. Обновление каждые 5 сек.
Таблица "Портфель" в QUIKе

Для её создания необходимо:
1. Создать файл «tablePortfolio.txt» в папке «C:\QUIK\Scripts». Если папки нет, создать её.
2. Скопировать туда код скрипта
3. Сохранить, выбрав кодировку «ANSI», иначе вместо русских букв могут быть кракозябры.
4. Сменить расширение файла с ".txt" на ".lua"
5. Запустить скрипт командой Сервисы->Lua  скрипты->Добавить (выбрать файл tablePortfolio.lua) ->Запустить

Код скрипта:
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
  • обсудить на форуме:
  • QUIK

Мой портфель на американском рынке. биржа СПБ

Свершилось, после полу-года рекогносцировки, я зарегистрировался на бирже СПБ и получил доступ к торговле американскими акциями.
Важно: у меня нет доступа на американский рынок, в стакане я вижу заявки сограждан. Вообщем, устройство СПБ отдельная тема и многие лучше меня разбираются, я о другом:

ММВБ всем хорош, но все акции зависят от нефти (грубо говоря). Другое дело, американский, а по сути международный фондовый рынок (так как на биржах америки торгуются компании со всего мира). Я уже писал и делал ролик про американский рынок и как я там моделировал портфель. Это 8 секторов экономики, это, по сути, вся экономика. И basic materials, куда входят и нефтяные компании — лишь малая часть.

Сейчас, я собрал портфель и до зимы буду наблюдать, возможно, что-то поменяю в структуре, если будут идеи. 
Мой портфель на американском рынке. биржа СПБ
Точную копию с ценами и пропорциями я создал на другом сайте, что б удобнее было сравнивать с рынком. На СПБ пока нет возможности открывать короткие позиции, так что я только покупал. Вот что я купил:



( Читать дальше )

Про Русал или почему я хочу быть инвестором, а оказываюсь спекулянтом.

Про Русал или почему я хочу быть инвестором, а оказываюсь спекулянтом.
Есть у нас пока еще такой бизнесмен Прохоров М.Д. После перестройки за что не возьмется, все криво получается, или не получается вообще. Понял он, что его счастье в смуте и начал плести интриги с западом. Нарвался на контрразведку и обыски со стороны ФСБ, а после получил по всей видимости ультиматум от власти, с требованием продать все свое имущество и свалить, а иначе у него все отберут. 
  И начал Миша искать на свои активы покупателей, со всем белее менее сложилось, но завис Русал, уж очень много денег он стоит. Заключил предварительное соглашение с Вексельбергом и начал ждать, пока тот соберет необходимую сумму.
  Но тут случилось чудо, торговая война начала набирать обороты и полным ходом пошли картельные схемы. Россия с Китаем заключили соглашения по ценам на алюминий и начали корректировать производство. Алюминий полетел вверх, а курс рубля вниз. И Русал с точки зрения доходности стал очень недооценен и у жадного в прошлом «алигарха» внутри начала квакотать огромная жаба.



( Читать дальше )

Сбер, Brent и Ri. Взгляд на рынок. Trade Market

Сбербанк

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

Сейчас Сбер тестирует  широкий диапазон 167 – 169, и если удастся уйти ниже, то можно будет говорить о реализации полноценной коррекционной волны с потенциалом движения  в районе 156 – 160.

Если же при провале ниже 169 снова начнут выкупать, можно будет аккуратно поиграть от лонга со стопом ниже локальных минимумов.

Сбер, Brent и Ri. Взгляд на рынок. Trade Market


Br иRi

В прошлый раз я отмечал возможность пошортить нефть и ФРТС. По нефти рекомендация не исполнилась, ниже 50 так и не ушли, вместо этого резко вернулись к летним максимумам под 53. Общую ситуацию это не изменило, сменился лишь диапазон колебаний. Скорее всего, пока мы продолжим движение в диапазоне 50-53, возможно, с небольшими рывками за его границы. По Ri же сигнал исполнился, но на растущей нефти попадать также не удалось, в результате шорт был закрыт с символическим минусом, а вместо локального тренда очередной пилящий боковик, причем такой узкий, что в приличном обществе о таком и говорить стыдно. В общем, пока ничего нового, смотрим рынок 



( Читать дальше )

История о жизни инвестора. Выбираю брокера.

  1. 3.     Выбираю брокера

В свете последних событий мой любимый «Открытие брокер» начал испытывать трудности. Насколько это правда, разбираться не буду, ведь у меня нет полной информации об этом, а срок инвестирования у меня исчисляется годами. Поэтому дополнительные риски тут не уместны. Не буду испытывать судьбу и открою счет в Финаме, брокер которого тоже хвалит очень много людей. Почему не ВТБ и Сбербанк? Возможно от того, что брокерский бизнес в  Сбербанке существует относительно недолго, сервис и решение дополнительных вопросов занимает долгое время, ну и комиссии выше чем у других. Единственный и неоспоримый плюс — это надежность. В ВТБ брокерский бизнес является побочным, и нет фокуса на нем, как нет и дополнительных плюшек как у Финама и Открытия.

Открытие счета в Финаме заняло около 40 мин., открывал в центральном офисе. Сотрудники очень доброжелательны и оперативны. Подарили флешку в виде ключа с надписью Финам, и ручку (мелочь, а приятно). При выходе с офиса встречаю давнего знакомого Вову Трейдерского. Ну вы его знаете конечно. Не знаете? Тогда знакомьтесь Владимир, а фамилия совпадает с любимым видом деятельности он трейдер. Еще тот любитель графики рисовать и прогнозы давать. Несколько лет его не видел. Почему то и в голову не приходило обратиться к нему за советом. Но тут сама судьба организовала нам встречу. Разговорились, темы общие нашли, многое из разговора не понимаю, голова и плечи, пробили сопротивление, уровень поддержки, опцики, фьючи, он точно трейдер или шаман какой то, откуда он все это берет? И еще больший вопрос как это все запомнить? Обменялись контактами, и договорились в ближайшую пятницу встретиться в кафе и поболтать. Там и спрошу у него пару идей для своего портфеля.



( Читать дальше )

Акции ММВБ, которых я планирую избегать в ближайшие 3-6 месяцев, кроме спекулятивных покупок.

Привожу список акций, в которые бы я не стал покупать по текущим ценам, даже несмотря на неплохие мультипликаторы.

1. Сбербанк, Татнефть и Газпром. Всем хороши по показателям, но с ними слишком хорошо работает теханализ. Можно покупать и продавать чисто по графикам и индикаторам. Ценой управляет кукл, отклика на фундамент и не видно. А Газпром и Татнефть еще и качеством менеджмента не отличаются.

2. Префы Ростелекома.  Все, что в них есть, — это дивдоходность в примерно 10%. Рентабельность собственного капитала 2%, хотя P/B всего 0.2. Компания не подает признаков роста. С той же доходностью можно купить облигации Ростелекома, например, РостелБО-1 или Ростел 19. В телекомах МТС смотрится лучше во всем, кроме навеса предложения в случае проигрыша дела Системы.

3. Московская Биржа. Мультипликаторы посредственные, дивдоходность не выше среднего, отчетности с каждым кварталом всё хуже и хуже. Плюсов у компании два — она в России монополист и относительно международных рынков оценена дешево. Дивдоходность в процентах, правда, уступает префам Сбербанка, но у Сбербанка больше шансов на рост котировок. 

( Читать дальше )

Детский мир подтвердил свою привлекательность для инвесторов

Дочерняя структура АФК Система Детский мир, в прошлом году вышедшая на биржу, показала удачный отчет за 1-й квартал текущего года и вселила надежды на удачный 2-й квартал.
Детский мир подтвердил свою привлекательность для инвесторов

Выручка ритейлера  увеличилась на 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, но будем использовать сигнал разворота тенденции.

Рассмотрим пересечение индикаторов RSI разных периодов. Алгоритмы пишем в Quantopian на Python.

В этот раз:

  • Попробуем быть на шаг впереди, используя 13-дневный и 65-дневный периоды RSI.
  • Попробуем использовать стандартные 14-дневный и 70-дневный периоды RSI.
  • Посмотрим на лучший период прошлого теста и используем 20-дневный и 100-дневный RSI.
  • Попробуем отфильтровать тренды с помощью скользящих средних.


( Читать дальше )

Как торговать среднесрок. Секреты, фишки и основы.

Выкладываю обещанное видео по среднесроку, попытался подать информацию максимально понятно, рассказал основы, нюансы и фишки, которые накопились за 8 лет торговли.


....все тэги
UPDONW
Новый дизайн