Избранное трейдера Свин Копилкин (Дмитрий)

по

Таблица "Портфель" в 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

Дивиденды2017. Подводим итоги Прогнозов дивидендов 2017.

Всё. Поступили последние дивиденды Мечел ап, которые Мечел выплачивал несколькими траншами и теперь Большой дивидендный сезон 2017 года закончился.
СД ряда эмитентов обьявляют  размеры и даты промежуточных дивидендов за 6 месяцев 2017 года, а я собираю эти рекомендации в табличку промежуточных дивидендов.
Дивиденды2017. Подводим итоги Прогнозов дивидендов 2017.
Последние строчки тоже скоро будут заполнены: 

24 августа СД РУСАЛ рассмотрит возможность выплаты промежуточных дивидендов

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

В решении отмечается, что внеочередное собрание акционеров пройдет 29 сентября 2017 года в Санкт-Петербурге.



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

Дивидендные истории в России (автор: spydell)

Центральная инвестиционная идея, которая работает из года в год – это игра на дивидендах и/или закрытии дивидендного гэпа. На следующий день после закрытии реестра акционеров акции падают примерно на величину дивидендов. С точки зрения фундамента – это абсурд и не имеет обоснований, т.к в среднесрочной и тем более долгосрочной перспективе устойчивый денежный поток, тем более тот, который распределяется среди акционеров всегда повышает стоимость бизнеса, либо делает его лучше рынка. Здесь же получается наоборот – чем выше дивиденды, тем сильнее падает капитализация компании. Против этой аномалии и заключается инвестиционная идея.

Логика падения акций после отсечки заключается в несовершенстве методики регистрации списка акционеров. Ранее и сейчас действует упрощенная процедура, при которой идет фиксинг реестра в момент отсечки и соответствующие выплаты по обновленному списку акционеров. Это в свою очередь естественным образом повышает спекулятивную составляющую. Логично, что можно быть год вне рынка, войти под отсечку, получить безрисковые 6-10% доходности, на следующий день выйти и прокатиться так по оставшимся бумагам.

Рынок устраняет эту неэффективность. Если вы видите арбитражные и безрисковые моменты – считайте, что их уже нет. Эффективный рынок отличается тем, что устраняет очевидные арбитражные моменты, отсюда, кстати не получится войти в длинную позицию на акциях и зашортить фьючерсы. Рынком такие банальные схемы учитываются.
Для исключения спекулятивной составляющей в дивидендных историях было бы правильно сделать взвешенный список акционеров и вообще исключить отсечку реестра. Суть заключается во времени владения бизнесом. Например, компания объявляет годовые дивиденды в 10 рублей за акцию и если инвестор находился в акциях весь календарный год, то получает все 10 рублей, если пол года, то 5 рублей, если 1 месяц, то 0.83 рубля, а 1 день = 0.027 руб (1/365*10). Очевидно, что не имеет значения момент входа между периодами выплаты дивидендов, а имеет значение лишь время удержания акцией.


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

Ошибки новичков, и в чем они заключаются (кратко).

Добрый день!

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

Основных причин, порождающих ошибки новичков, очень много, они в принципе все основные, и выделять каждую нет смысла, так как рано или поздно, желающий познать EWP, сможет понять их сам. Но, на мой взгляд, одной из самых распространенных причин, является простая человеческая лень, то есть в пылу жажды объять необъятное, человек за деревом, может не увидеть леса, и именно по причине того, что лень не позволит ему, возможно неосознанно, построить базу для изучения EWP.  То есть основная часть новичков считают, что прочитав пару уроков, в переводе таких шарлатанов как Возный, Борисенко и т.п., они стали, чуть ли не богами EWP.



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

5 способов выбрать акции на падающем рынке

Есть несколько способов. Первый.
Это конечно поверхностный взгляд, но все же. 
Заходим в фундаментальный анализ:
5 способов выбрать акции на падающем рынке
Там выбираем опцию сравнение по показателю и например такую метрику как див.доходность ао:
5 способов выбрать акции на падающем рынке
http://smart-lab.ru/q/shares_fundamental/div_yield/ 

Ну и смотрим, какая акция обыкновенная дает хорошую дивдоходность, основываясь на смелом допущении, что по итогам 17 года будет не хуже (допущение это конечно нуждается в проверке:))
ТОП-10 выглядит вот так:
5 способов выбрать акции на падающем рынке
Второй способ, — это посмотреть какие акции советовали купить на конференции смартлаба в апреле эксперты...
Я их занес в свой список акций
http://smart-lab.ru/q/watchlist/dr-mart/754/

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


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

Отбор акций на Московской Бирже. Правила, к которым я стремлюсь (Пэт Дорси + Арсагера).

Пора завязывать со спекуляциями (удержание акций в портфеле менее 3-6 месяцев) и формировать долгосрочный портфель (более 3 лет). Попробую сформулировать основные критерии.

1. Мультипликаторы. Тут всё очевидно. Лично я придерживаюсь минимального в отрасли P/E, желательно меньше 8 (100/8 = 12% — это купон ОФЗ, умноженный на 1,5, т.е. с премией за риск) Пример: в отрасли черной металлургии это ЧМК и Ашинский метзавод. Контрпримеры: в отрасли ритейла Магнит, в банковском секторе ВТБ.

2. Компания работает на своих акционеров, т.е. существует конечный выгодоприобретатель роста цен на акции и дивидендов. Компания выкупает и гасит свои акции при необходимости, стремится выплачивать дивиденды. Примеры: АФК Система, Северсталь, Лукойл. Контрпримеры: Газпром, ФСК ЕЭС.

3. Прозрачность компании и предсказуемость дивидендов. Четкая дивполитика, отсутствие сомнительных цифр в отчете, нет противоречий между решениями СД и ГОСА. Примеры: ФосАгро, Энел Россия.

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

Дивидендный робот

    • 01 июня 2017, 18:34
    • |
    • Albus
  • Еще
Написал робота, который читает Смарт-Лаб :)
Он заходит на страничку с дивидендами:
smart-lab.ru/dividends/
берёт тикер и дату среза реестра (Т+2), и если сегодня акция последний день торгуется с дивидендами, пишет в КВИКе:
Дивидендный робот
Первая цифра: дивиденд в рублях, вторая цифра — див.доходность в процентах. (Без налога)
В день, когда гэп произошёл, он напишет, что сегодня гэп по такой-то акции.
Самую сложную часть робота написал Николай Камынин (программист), за что ему большое спасибо. Моя часть работы была совсем простой.
Чтобы увидеть эти сообщения, надо открыть окошко сообщений в КВИКе.
Делается это так:
Дивидендный робот

( Читать дальше )
  • обсудить на форуме:
  • QUIK

Опционы по взрослому. (как торгуют опционами без опционов. Продолжение.)

Судя по набранным лайкам мне надо меньше писать про опционы, а больше про простую торговлю. Что я и хочу сделать в рамках опционной теории. Так вот о простой торговле. Глядя на статистику и содержание топиков на СЛ меня мучает постоянный вопрос. Как люди пытаются выработать в себе навыки трейдера думая, что это навыки сверх человека. Дисциплина, психотерапевт, тильт, прогнозирование по звездам и линиям горизонта, экстрасенсорика. В то же время я знаю и понимаю, что биржа это индустрия, такой глобальный завод, куда принимают людей с улицы и по объявлениям. То есть, где то в Пенсильвании в пенсионный фонд приходит молодой чертила трейдер, который закончил профтехучилище по специальности трейдер-махинатор и начинает работать. И с учетом того что он не дисциплинированный, психованный, очень азартный и суеверный человек и даже не может предсказать когда будет обед,  у него все получается и экви фонда растет, а простые бабушки получают пенсию. По каким таким торговым системам он работает? Более того, если он заболеет или забухает, то на его место с легкость можно посадить Аню Маркидонову  и ничего. Давайте рассмотрим их методы торговли.



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

Опционы по взрослому (как торгуют опционами без опционов. Грааль.)

Все, кого я знаю, торгуют опционами, только этого не знают. Поэтому мы о них, об опционах, не будем. Просто я давно хотел это сделать, но что то мешало. Не было подходящего случая, какой ни будь конференции, где я, нате вам всем и все в аутеJ)). Но, начали выплывать фрагменты, по которым можно было построить догадки. Первым в этом деле был Фома Фомич http://smart-lab.ru/blog/372475.php Но то ли ты не дочитал, то ли там этого не было, то ли английский не твой родной. Короче направление было правильное. Но тут прямо из города Лондона приехал Кирилл Ильинский и в каком то Питерском подвале собрал всех всех трейдеров и все им выложил https://www.lektorium.tv/lecture/29577 Стало понятно, что я опоздал и что бы как то забить место на поляне выкладываю.

Это самая тупая стратегия, которую я знаю. Вернее, эта стратегия для самых тупых, которых я знал. Если в инвесткомпанию приходил молодой трейдер с дипломом пединститута по специальности физрук, но с рекомендацией папы, который являлся одновременно инвестором, то его сажали работать именно по этой стратегии. Думаю, ни чего не изменилось. Самый продвинутый брокер IB в USR;)), вмонтировал эту стратегию в свой терминал TWS. И в каждом приличном колледже ее преподают на уроках информатики. Возможно поэтому ее, стратегию, ни кто и не знает. Но к делу.



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

Анализ изменений и выявление похожих паттернов на истории

Итак, вы все давно знаете, что на смартлабе есть график нефти Brent онлайн. Там же есть данные по запасам нефти США. Тот график, который есть у нас, позволяет делать много чего, но не всё. Я тут попросил парней из графиков Tradingview допилить до ума индикатор «percent change», который показывает % изменение каждой свечи на графике. Раньше я всегда использовал такой индикатор в терминалах Bloomberg и Reuters Eikon, и больше такого не было нигде. Индикатор показывает изменение свечи, о чем я уже рассказывал

Но теперь этот индикатор можно применять не только к одному бару, но и к любому количеству последовательных баров. Например, за последние два дня нефть сильно упала. Я выбираю этот индикатор на дневном графике нефти и ставлю параметр «Look back»=2 дня. Получаем такой график:
Анализ изменений и выявление похожих паттернов на истории
Что я вижу по индикатору? Что за 2 дня нефть упала на 5,7%. Последний раз такое сильное падение было в начале ноября и в начале сентября. То есть примерно раз в 2 месяца, ну и дальше смотрю, как ситуация развивалась в прошлом после таких падений... Я тут выделил два случая в прошлом для наглядности, — другие вы можете самостоятельно посмотреть на сайте tradingview.

Как найти этот индюк? А вот как:



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

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