Избранное трейдера Андрей из Сибири

по

Quik. Индикатор корреляции

    • 02 ноября 2017, 16:21
    • |
    • Karim
  • Еще
Написал на досуге по просьбе одного из участников смартлаба индикатор корреляции.
Индикатор простенький, считает коэффициент корреляции Пирсона
для двух выбранных инструментов на заданном таймфрейме.
Выкладываю исходный код. Может кому то пригодится.

Settings= 
{ 
Name = "Piton", 
N = 100,
legend = "price2",
line = 
	{ 
		{ Name = "Sint", 
		  Color = RGB(0, 132, 0), 
		  Type = TYPE_LINE, 
		  Width = 1 
		}		
	} 
} 

function Init() 
return 1
end 

Candles = {};


function OnCalculate(index) 
	local numCandles = getNumCandles(Settings.legend);
	if index <= Settings.N or numCandles <= Settings.N then
		return nil;
	end
	
	Candles, n, _ = getCandlesByIndex(Settings.legend, 0, index - Settings.N, Settings.N);
	if n ~= Settings.N then
        return nil;
    end
	
	-- Предварительный расчет
	sum1, sum2, sum3 = advancePaynemt(index);
	
	-- расчет коэффициента корреляции Пирсона
	r = sum3/math.sqrt(sum1*sum2);
	
	return r;
end

--  Предварительный расчет
----------------------------------------
function advancePaynemt(index)	
	local sum1 = 0;
	local sum2 = 0;	
	local sum3 = 0;
	local j    = 0;
	
	--  Вычислить среднее арифметическое
	for i=index - Settings.N + 1, index, 1 do
		sum1 = sum1 + C(i);			
		sum2 = sum2 + Candles[j].close;
		j = j + 1;
	end
	aver1 = sum1/Settings.N;
	aver2 = sum2/Settings.N;
	
	-- Вычислить сумму квадратов отклонений
	sum1 = 0;
	sum2 = 0;
	j 	 = 0;
	for i=index - Settings.N+1, index, 1 do
		sum1 = sum1 + math.pow(C(i) - aver1, 2);
		sum2 = sum2 + math.pow(Candles[j].close - aver2, 2);
		j = j + 1;
	end
	
	--  Вычислить сумму произведений разности
	j=0;
	for i=index - Settings.N+1, index, 1 do
		sum3 = sum3 + (aver1 - C(i))*(aver2 - Candles[j].close);
		j = j + 1;
	end
	
	return sum1, sum2, sum3;
end

Как запустить и настроить:


Архив исходника на QLua: https://yadi.sk/d/OxDvAekV3PLn2z
  • обсудить на форуме:
  • QUIK

Индикаторы для Квика

    • 17 октября 2017, 15:01
    • |
    • nicknh
  • Еще
Всем привет.

Я писал для себя несколько индикаторов для Квика. Все они здесь - https://github.com/nick-nh/qlua.
Часть — подсмотренные и адаптированные идеи, часть сам писал. Никогда не думал их делать закрытыми.
Возможно, кому-то будут полезными.

Да простит меня Тимофей, дам ссылку на МФД, где я выкладывал их ранее c описанием.
forum.mfd.ru/forum/poster/?id=85696
  • обсудить на форуме:
  • Quik Lua

Растущие компании и их преимущества

Всем привет!

Пост по мотивам II-го Сибирского Форума биржевого и финансового рынка, прошедшего 14-го октября в Новосибирске.

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


Моя презентация была про один из вариантов инвестирования, или выбора идей для инвестирования. В США его называют «истории роста».


Растущие компании и их преимущества



На одной из конференций Смартлаба, Анатолий Радченко продемонстрировал 10 компаний которые могут за 10 лет вырасти в 10 раз. И сказал, что бы удивлен, что для «удесятерения» надо прирастать на 26% ежегодно.

Смотрите, есть несколько математических закономерностей:

Чтобы вырасти в два раза за 10 лет надо ежегодно расти на 7,2%
Чтобы вырасти в два раза за три года надо ежегодно расти на 26%

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

Убытки по операциям РЕПО уменьшают доход по операциям с ценными бумагами

Представляю интересное письмо Минфина России от 11.09.2017 г. № 03-04-06/58227, в котором финансовое ведомство рассказывает о порядке уменьшения дохода по операциям с ценными бумагами на убытки по операциям РЕПО.

Как рассказывает Минфин, в уменьшение доходов по операциям с ценными бумагами,  которые обращаются на ОРЦБ, а также с ценными бумагами, не обращающимися ОРЦБ, принимается убыток по операциям РЕПО в пропорции, рассчитанной как соотношение стоимости ценных бумаг, являющихся объектом операций РЕПО, обращающихся на организованном рынке ценных бумаг, и стоимости ценных бумаг, являющихся объектом операций РЕПО, не обращающихся на организованном рынке ценных бумаг, в общей стоимости ценных бумаг, являющихся объектом операций РЕПО. Полученный отрицательный финансовый результат уже признается убытком.

Основание: абзац шестой пункта 6 статьи 214.3 НК РФ.

Вывод – суммы убытков по операциям РЕПО и операциям займа ценными бумагами уменьшают доход по операциям с ценными бумагами, учитываемый при определении финансового результата по операциям с ценными бумагами.



Все виды инвестиционного вычета – особенности возврата налога

Как я обещала, я собрала информацию об инвестиционном вычете (у него три подвида) и представляю ее в форме таблицы, чтобы было удобно смотреть.

Добрый день всем!

Такое ощущение, что визуально таблица не вся помещается. Кому неудобно смотреть таблицу, ниже идет картинками информация...

 

Положительный финансовый результат от продажи (погашении) ценных бумаг

Сумма, внесенная на ИИС, но не более 400 тыс.руб. в год

Положительный финансовый результат, полученный по операциям на ИИС

Условия получения вычета

1. Ценные бумаги находились в собственности более трех лет;

2. Ценные бумаги были приобретены с 02.01.2014 года;

3. Ценные бумаги обращаются на ОРЦБ;

4. Вы являетесь налоговым резидентом в том календарном году, в котором вы получили доход от продажи;



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

Как зачесть убытки, если торговые операции проводились через разных брокеров?

Добрый вечер всем. Хотела более подробно описать вопрос получения «нового» инвестиционного вычета (в продолжение темы…), но меня в последнее время спрашивают мои читатели практически об одном и том же – как зачесть убытки 2016 года, если было два или более брокеров, у одного получена прибыль, а других – убытки.

Для того, чтобы отразить данные в одной декларации 3-НДФЛ – вам надо взять справки 2-НДФЛ у всех брокеров и плюс запросить справку об убытках (налоговый регистр) у тех брокеров, где был получен убыток. Это важно.

Далее, вы вносите все данные с каждой справки 2-НДФЛ. Но по тому брокеру, где был убыток, вам надо будет внести не просто сумму дохода и сумму расхода, которые отражены в справке 2-НДФЛ, а отметить сумму расхода фактическую. Постараюсь подробнее объяснить – когда получен убыток, то справка 2-НДФЛ показывает сумму дохода, например, 500 000 рублей и такую же сумму расхода 500 000 рублей. Пусть расходы были по факту 700 000 рублей, но убыток в 200 000 рублей мы не увидим из справки 2-НДФЛ.

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

Скринер для Quik по акциям и фьючерсам через Alligator

Всех приветствую.

Представляю вашему вниманию скринер акций и фьючерсов в Quik. Скринер представляет из себя таблицу с указанием направления движения активов. Скринер будет полезен для быстрого определения направления группы эмитентов. В основе определения направления для каждого инструмента лежит индикатор Билла Вильямса — аллигатор. Аллигатор рассчитывается исходя из 5мин. таймфрейма инструментов.

Скринер для Quik по акциям и фьючерсам через Alligator

Параметры Аллигатора и более подробное описание способа определения тренда оставлю за кадром. Скажу только то, что при подборе для большинства инструментов эквити положительная.
Скринер для Quik по акциям и фьючерсам через Alligator



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

За 2017 год можно уже получать новый «подвид» инвестиционного вычета

Доброго времени суток всем. Хочу рассказать о том, что наступило время получения «подвида» (если можно так сказать) инвестиционного вычета. Чтобы было понятно, напомню, что на основании статьи 219.1 НК РФ можно получить три вида инвестиционного вычета:

1) Инвестиционный вычет в размере доходов от продажи ценных бумаг;

2) Инвестиционный вычет в сумме денежных средств, внесенных на индивидуальный инвестиционный счет;

3) Инвестиционный вычет в сумме дохода по операциям, учитываемым на индивидуальном инвестиционном счете.

Мы в последнее время привыкли говорить (и уже многие получили такой вид вычета) о получении вычета с суммы, внесенной на индивидуальный инвестиционный счет. Я хочу рассказать о вычете, который предусмотрен подпунктом 1 пункта 1 статьи 219.1 НК РФ – вычет в размере положительного финансового результата, полученного налогоплательщиком от реализации (погашения) ценной бумаги. Чтобы получить такой вычет, важно, чтобы ценная бумага принадлежала налогоплательщику более трех лет. Вот почему ранее мы не рассматривали и не получали такой вычет. Основание: Федеральный закон от 28.12.2013 г. № 420-ФЗ (статья 5).

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

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

Перевод ИИСа от одного брокера к другому.

Господа есть ли у кого практический опыт перевода ИИС от одного брокера к другому? Есть ли подводные камни?
Если практически: перевод с Открытия в ВТБ 24.Хотя любой опыт подойдёт.Перевод бумагами.Нет ли скрытых комиссий, попадания на налог, бесконечной бумажной волокиты и.т.д. Плюсаните пожалуйста для вывода на главную.Думаю данный вопрос многим интересен, кто работает на акциях.Ну и хотелось бы услышать практический опыт людей.Буду переводить ИИС в этом месяце.
Перевод ИИСа от одного брокера к другому.



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