Избранное трейдера dusheska

по

Про Quik, про карман, про лимитные и стоп-заявки

Здравствуйте дорогие мои! Вы наверно уже соскучились?
Хочу поделиться с вами классной штукой в квике под названием «Карман».
Уверен, что не все знают про эту функцию.

Quik карман

Для чего нужен карман?

Представьте, что вы хотите купить ценную бумагу по определенной цене. Пусть это будет всеми известный Газпром. Вы хотите купить акцию Газпрома по цене 100р. Текущая цена болтается в ценовом коридоре 120-130.

Вы выставляете рыночную заявку на покупку в стакан по цене 100р. Так как за весь день цена не доходит до уровня 100р, то на следующее утро ваша заявка снимается. И так повторяется изо дня в день, т.к. Вы упорный и терпеливый и вот уже полгода ждете свой Газпром по 100.

А теперь представьте, что таких заявок у вас несколько. У меня, например, более 30. Каждое утро выставлять лимитированные заявки вручную утомительно. Нужен другой выход.

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

Мой путь к успеху

2007 год
На пике цен я продаю небольшую недвижимость. Мне всего 24 года. Желая отложить средства на потом (как помудрею и смогу лучше ими распоряжаться), получить небольшой процент и опыт инвестирования, я меняю $50 тыс. на гривны и вкладываю в украинскую экономику: максимальная диверсификация по отраслям, горизонтам инвестирования, управляющим компаниям, открытым и закрытым фондам. Как активный акционер, я вхожу в состав наблюдательных советов: меня избирают на собраниях акционеров, передо мной отчитываются управляющие. Я борюсь с воровством даже в тех фондах, где не вхожу в наблюдательный совет (например: облигации после новости о банкротстве закупаются в фонд по номиналу из портфеля начальника управляющего), пишу разоблачающие статьи, обращаюсь в комиссию по ценным бумагам и милицию, информирую акционеров.

Это было то время, когда я не совершал сделки в 1 клик. И даже не звонил и не покупал акции через брокера голосом. Я на свой страх и риск вырывался на 2 часа с работы, летел в центральный офис банка на такси, подавал распоряжение на операцию с паями публичного фонда, бежал через 2 квартала, чтобы проплатить комиссию в отделении, и дальше нёсся обратно, чтобы эту квитанцию занести… И тогда мою сделку проводили… Так я пытался лавировать, чтобы сохранить то, что есть.

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

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

lua

Пост немного не по теме трейдинга, скорее его надо задавать программистам, но среди трейдеров таких полно, может поделитесь опытом.

Многолетнее использование Lua в QUIK`е подтолкнуло к идее использовать скриптовый язык в других приложениях.
Из всего немногочисленного набора того, что есть для C# удалось найти:
— NLua — 18K скачиваний в NuGet
— LuaInterface -?
— NeoLua – 50k скачиваний в NuGet
— LuBox – 1k скачиваний в NuGet

Автор проекта LuaInterface давно не поддерживает проект и прямо говорит, что NLua успешно продолжает его дело.

NeoLua – наиболее популярен среди программистов в NuGet.

LuBox показался удобным и наиболее «молодым» проектом.

Кто-нибудь из смартлабовцев использовал какую-то из этих библиотек для встраивания Lua-скриптов? Поделитесь опытом использования: плюсы, минусы, баги.

 

 

 

  • обсудить на форуме:
  • Quik Lua

ВЭБ, НПФ и УК - куда перевести пенсию

В прошлом месяце я подробно изучил вопрос о том, что происходит с накопительной частью моей пенсии. И отдал свою накопительную часть в загребущие руки частной компании. Почему? Сейчас я все объясню.

Очень короткое погружение в пенсионную систему

Непродолжительную часть времени официально работающим посетителям смартлаба родившимся после 1967 года начислялась накопительная часть пенсии. С 2014 начисления на эту часть были заморожены, и разморозка не планируется.

То, что есть, по умолчанию находится под управлением ВЭБа.  Но также накопления можно передать под управление НПФ или УК.  Запомните – если накопления у вас есть, значит их можно перевести, даже если вы никогда ничего никуда не писали и находитесь в дружной категории «молчунов».

Если вы когда-то переводили свои накопления в НПФ или УК, то нужно подождать 5 лет с момента перевода. Иначе весь накопленный доход исчезнет. Этого лучше избежать.

Ситуация с доходностью накоплений



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

Глава ... Опционная магия и ее разоблачение.

Эпиграф:
/М.А. Булгаков/
 «Маленький человек  в дырявом  желтом котелке  и с грушевидным малиновым носом, в клетчатых брюках и лакированных ботинках выехал на сцену Варьете на обыкновенном двухколесном  велосипеде. Под звуки фокстрота он сделал круг, а затем  испустил  победный  вопль,  от  чего  велосипед  поднялся   на  дыбы. Проехавшись  на  одном  заднем  колесе, человек перевернулся  вверх  ногами, ухитрился на ходу отвинтить переднее колесо и пустить его за кулисы, а затем продолжал путь на одном колесе, вертя педали руками.»



Что то велосипедно-похожее иногда происходит и в нашем «опционном» мире. Я собираюсь сейчас прокомментировать несколько опционных
мнений-фокусов, вполне безобидных в текущей ситуации, но опасных при наступлении катастрофически-волатильных событий по типу «чучхэ понад усе».

Предварительные условия — обсуждается исключительно опционный рынок forts, ставки ноль.

Фокус первый.
Бытует мнение: распределение цен БА на момент экспирации, порождаемое ценами опционов, предполагает одинаковые вероятности смещения цен БА вверх или вниз.
Источник: интернеты, комментарии в них, и, увы((, Стас Бржозовский тут: https://smart-lab.ru/blog/411878.php
Факт: это полная ерунда. На самом деле, если допустить справедливость формулы Блэка для опционных цен (при условии постоянной волатильности на всех страйках), мы получим, что вероятность снижения цен на момент экспирации всегда выше, чем вероятность их роста.
Доказательство: берем и считаем в лоб. Например, при волатильности 50 и сроке до экспирации 1 год, вероятность снижения цены на момент экспирации составит 0,6. При волатильности 200, допустимой при катастрофах, ситуация будет еще интереснее. Правда в том, что матожидание распределения, порождаемого ценами опционов, совпадает с ценой БА в каждый момент. Но мало кто замечает подмену понятий и задумывается об этом.

Фокус второй. 
Бытует мнение: дельта опциона колл на центральном страйке по модулю обязана совпадать с дельтой опциона пут и равняться 0,5.
Источник: многочисленные русскоязычные сайты, отдельные персонажи Смартлаба, тупые переводчики с английского на русский язык.
Факт — это вранье. Многие «канонические» авторы (Конноли, Натенберг, Мак-Миллан) действительно пишут, что дельта центрального колла ПРИМЕРНО совпадает по модулю с дельтой пута. И это правда, при низкой волатильности и малом времени до экспирации. Однако, при росте любого из этих двух показателей ситуация меняется кардинально.
Доказательство: все очень просто. Дельта центрального опциона колл (модель БШ) равна N(d1), d1>0, следовательно дельта центрального опциона колл в мире БШ всегда больше 0,5 и возрастает как с ростом iv, так и с ростом времени до экспирации. В предельном случае при бесконечной волатильности и/или времени до экспирации дельта центрального опциона колл — единица. Где живут риски неправильной оценки дельты? Сегодня — в Тихом океане. И если неистовый Ким попробует бабахнуть по душке-Дональду, то дельты опционов центральных страйков удивят многих. Пример: дельта центрального опцина колл при волатильности 50 и сроке до экспирации 1 год составляет 0,6. Каждый может в этом убедиться при помощи любого опционного калькулятора, живущего в интернетах.

Фокус третий.
Бытует мнение: вероятность выхода в деньги опциона колл совпадает с его дельтой.  
Источник: интернеты и прочие сомнительные места.
Факт — это вранье дважды.
Доказательство: см первые два фокуса. Пример: вероятность выхода центрального опциона колл «в деньги» при сроке до экспирации 1 год и влатильности 50 составляет 0,4. Дельта 0,6.

Можно еще, наверное, пофокусничать с общепринятыми мнениями, но пора откланяться

PS

/М.А. Булгаков/:

«А может  быть,  не было никаких  этих  слов,  а были другие  на эту  же музыку, какие-то неприличные крайне. Важно не это, а важно то, что в Варьете после всего  этого  началось  что-то  вроде  столпотворения вавилонского.»



Как я заплатил 500 тыс руб. за детский спектакль, или недетский. Развод begemota.

    Решил расписать одну схему, на которую попался. Все руки никак не доходили.
Заплатил одному товарищу 500 косых за то, чтобы я увидел, как можно легко манипулировать сознанием окружающих, т.к сказать побыть в шкуре жертвы.
   Этот товарищ известен в определенных кругах и называет себя begemot01, постоянно раньше был на смартлабе. Возможно схема еще продолжает свою жизнь. Здесь лишь опишу как я там поучаствовал.
    Итак, begemot, кто помнит его по смарту, писал свои вью здесь, бывало попадал, и бывало нет, но пользовался особой популярностью. Читал его, и было довольно увлекательно. Потом он создал свой, сайт, по сей день там и вещает в узкой аудитории, возможно также в сообществах в скайпе.
    Итак, замутил этот товарищ очень интересную и простую схему по облапошиванию дурачков. А именно, торговля нерабочими алгоритмами за большие деньги. 
    Имея достаточную аудиторию на своем сайте, потихоньку кидал удочки по поводу продажи супер прибыльного робота для фьючерса на РТС.

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

ЛЧИ близко. АлгоТрейдинг - устойчивость робота и подбор параметров


  ЛЧИ близко. АлгоТрейдинг - устойчивость робота и подбор параметров

Для того, чтобы лучше понять материал, можно ознакомиться в этими статьями:
https://smart-lab.ru/blog/180975.php
https://smart-lab.ru/blog/259824.php 
Там же видео как я оптимизировал 2,5 года назад(2015 год)

+++ Спасибо за твой плюс или коммент, они важны для меня!+++
*Картинки из статьи можно смотреть тут
ЛЧИ близко. АлгоТрейдинг - устойчивость робота и подбор параметров

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

Об успехе. Пятничное

Об успехе. Пятничное

Мы сидели на уже знакомой террасе офиса Седого, только на этот раз в бокалах был не сок, а кое что покрепче. Пятница. Это обязывает. Седой никогда не упускал повода.

— Хочешь я открою тебе истину? — вдруг спросил он меня

— Про банки?

— Да какие нахер банки, — отмахнулся он, — настоящую ИСТИНУ.



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

Бэктестинг: пересечение RSI разных периодов

В прошлый раз мы проверили трендовую природу индикатора RSI. Нами были получены интересные результаты, особенно при торговле основными секторами. В этот раз мы продолжим двигаться в направлении изменения индикатора RSI, но будем использовать сигнал разворота тенденции.

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

В этот раз:

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


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

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