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

по

STATDIVPROF индикатор с эквити

STATDIVPROF показывает прибыл от свое торговли
если поставить параметр showprof=1, если showprof=0, то будет показывать профит иначе сам индикатор
STATDIVPROF индикатор с эквити

код индикатора
Settings={
Name="STATDIVPROF",
period=30,
showprof=0,
  line=
  {
    {
      Name="curve",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line",
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    }
  } 
}

function Init()
  prof=0    
  bp=0
  prevval=0    
  return 2
end

function OnCalculate(index)
  local sum1=0
  local sum2=0  
  local j=0    
  local dprof=0     
  
  if index < Settings.period then
    return nil, nil
  else   	
    for i=index-Settings.period+1, index do  
	  j = j + 1 
      if C(i) > O(i) then
        sum1 = sum1 + (C(i) - O(i))*V(i)*j
        sum2 = sum2 + (C(i) - O(i))*V(i)*j
      else
        sum2 = sum2 + (O(i) - C(i))*V(i)*j
      end  
    end 
    sum1 = sum1/sum2 
  end
  
  if index > Settings.period+1 then
     
    if prevval < 0.5 and sum1 >= 0.5 then
      bp=C(index)   	  
	end
    if prevval > 0.5 and sum1 <= 0.5 then
      if bp ~= 0 then
	    prof=prof+C(index)-bp
		bp=0
	  end 
	end	
	if bp ~= 0 then
	  dprof = C(index) - bp
	else
	  dprof = 0
	end
     
  end
  prevval=sum1   
  
  if Settings.showprof == 0 then
    return sum1, 0.5
  end

  if Settings.showprof == 1 then
    return prof+dprof, nil
  end

end






Как инвестировать в облигации?

Как инвестировать в облигации?

 
Нет ничего плохого в том, чтобы быть «ничего — незнающим» инвестором, если Вы это осознаёте. Проблема — это когда Вы «ничего — незнающий» инвестор, а думаете, что что-то знаете. 

У. Баффет

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

1. Что такое облигация?

Облигация – это договор займа, в котором одна сторона, «Заёмщик» (Эмитент), занимает деньги под определенный процент у другой стороны, «Кредитора» (Инвестор) и гарантирует, что вернет эти деньги к концу срока договора. Эмитентом может стать не каждый, а вот инвестором может быть любой человек, у кого открыт брокерский счет с доступом на Биржу и имеет хотя бы 1 000 рублей для покупки одной облигации.



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

Zigzag4 с наклонными уровнями

доработал предыдущий зигзаг где были только горизонтальные теперь наклонные появились
выглядит так:
Zigzag4 с наклонными уровнями
код индикатора:

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

Zigzag2 на lua под quik

Доработал свой предыдущий zigzag чтоб работал быстрее

название нового индикатора zigzag2

скачать можно здесь:
https://dropmefiles.com/5EOWp

как выглядит:
Zigzag2 на lua под quik



код индикатора:
Settings=              
        {                          
            Name = "Zigzag2",   -- название индикатора
            delta=2,                  -- параметр индикатора                          
            line=                                     
                {                               
                    {  
                        Name = "zigzagline2",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(120,90, 140)
                    }
                }
       }


function Init()

    vMin = 0
    vMax = 0
    vMinindex = 0
    vMaxindex = 0
    voldMinindex = 0
    voldMaxindex = 0

  return 1
end


function OnCalculate(index)
  local printz = 0
  
  if index == 1 then
    vMin = C(index)
    vMax = C(index)
    vMinindex = index
    vMaxindex = index
    voldMinindex = index
    voldMaxindex = index
    ve = C(index)  
  else
         
    if voldMaxindex >= voldMinindex then
      if C(index) > (1 + Settings.delta/100)*vMin then
        vMin = C(index)  
        vMax = C(index) 
        vMaxindex = index
        voldMinindex = vMinindex 
        vFrom = voldMaxindex  
        vTo = vMinindex
        printz = 1
      else     
        if vMin > C(index) then
          vMin = C(index)
          vMinindex = index
          vFrom = voldMaxindex      
          vTo = index
          printz = 0
        else
          vFrom = vMinindex 
          vTo = index
          printz = 0
        end 
      end
    else
     
    if voldMaxindex <= voldMinindex then
      if C(index) < (1 - Settings.delta/100)*vMax then
        vMax = C(index) 
        vMin = C(index)  
        vMinindex = index
        voldMaxindex = vMaxindex
        vFrom = voldMinindex
        vTo = vMaxindex
        printz = 1
      else 
        if vMax < C(index) then
          vMax = C(index)
          vMaxindex = index
          vFrom = voldMinindex    
          vTo = index
          printz = 0
        else  
          vFrom = vMaxindex  
          vTo = index        
          printz = 0
        end
      end  
    end
    end
 
    if (printz == 1) or (Size() == index) then
      for i = vFrom, vTo do
        k = (C(vTo)- C(vFrom))/(vTo- vFrom);
        v = i*k + C(vTo) - vTo*k
        SetValue(i, 1, v)
        ve = v
      end   
      if (Size() == index) then
        ve = C(index)
        if voldMaxindex >= voldMinindex then
          vFrom = voldMaxindex 
          vTo = vMinindex
        end 
        if voldMaxindex <= voldMinindex then  
          vFrom = voldMinindex
          vTo = vMaxindex
        end 
        for i = vFrom, vTo do
          k = (C(vTo)- C(vFrom))/(vTo- vFrom);
          v = i*k + C(vTo) - vTo*k
          SetValue(i, 1, v)
        end  
      end
    end

  end   
  return ve
end

Новый индикатор Zigzag на lua под quik

Создал свой индикатор зигзаг
Предлагаю его для ознакомления
при установке имя индикатора будет Zigzag
параметр delta задает в % плечо индикатора
цель данного индикатора — помочь быстро найти значимые уровни

планирую этот совместить с предыдущим: https://smart-lab.ru/blog/528924.php
и сделать адаптивный STATDIV

в дальнейшем в зигзаг добавлю отображение уровней

файл индикатора:
https://dropmefiles.com/WyjM2

выглядит на графике так:
Новый индикатор Zigzag на lua под quik





сам код индикатора:

Settings=              
        {                          
            Name = "Zigzag",   -- название индикатора
            delta=3,                  -- параметр индикатора                          
            line=                                     
                {                               
                    {  
                        Name = "zigzagline",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(120,90, 140)
                    }
                }
       }


function Init()

    vMin = 0
    vMax = 0
    vMinindex = 0
    vMaxindex = 0
    voldMinindex = 0
    voldMaxindex = 0

  return 1
end


function OnCalculate(index)
  
  if index == 1 then
    vMin = C(index)
    vMax = C(index)
    vMinindex = index
    vMaxindex = index
    voldMinindex = index
    voldMaxindex = index
    v = C(index)  
  else
         
    if voldMaxindex >= voldMinindex then
      if C(index) > (1 + Settings.delta/100)*vMin then
        vMin = C(index)  
        vMax = C(index) 
        vMaxindex = index
        voldMinindex = vMinindex 
        vFrom = vMinindex  
      else     
        if vMin > C(index) then
          vMin = C(index)
          vMinindex = index
          vFrom = voldMaxindex      
       else
          vFrom = vMinindex 
        end 
      end
    else
     
    if voldMaxindex <= voldMinindex then
      if C(index) < (1 - Settings.delta/100)*vMax then
        vMax = C(index) 
        vMin = C(index)  
        vMinindex = index
        voldMaxindex = vMaxindex
        vFrom = vMaxindex
      else 
        if vMax < C(index) then
          vMax = C(index)
          vMaxindex = index
          vFrom = voldMinindex    
       else  
          vFrom = vMaxindex          
        end
      end  
    end
    end
 
    for i = vFrom, index do
      k = (C(index)- C(vFrom))/(index- vFrom);
      v = i*k + C(index) - index*k
      SetValue(i, 1, v)
    end   
 
  end   

end

STATDIV3 доработанный индикатор для quik на языке lua

если индикатор больше 0, то покупаем, если ниже то продаем

скачать можно здесь:dropmefiles.com/09FCu
как устанавливать смотрите предыдущие статьи: https://smart-lab.ru/blog/528424.php
название STATDIV3 это доработанный STATDIV


поведение индикатора на графике:
STATDIV3 доработанный индикатор для quik на языке lua


сам код индикатора:
Settings={
Name="STATDIV3",
period=50,
  line=
  {
    {
      Name="curve",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line",
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="MA",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="MA2",
      Color=RGB(0,128,128),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line2",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line3",
      Color=RGB(0,128,128),
      Type=TYPE_LINE,
      Width=1
    }
  } 
}

function Init()
  cache_ind={}
  cache_ind2={}
  cache_ind3={}
  return 2
end

function OnCalculate(index)
  if index < Settings.period then
    return nil
  else
    local sum1=0
    local sum2=0
    local sum0=0
    local sum02=0
    local sum03=0
    for i=index-Settings.period+1, index do  
    do
      if C(i) > O(i) then
        sum1 = sum1 + C(i) - O(i)
        sum2 = sum2 + C(i) - O(i)
      else
        sum2 = sum2 + O(i) - C(i)
      end  
    end 
    cache_ind[index] = sum1/sum2    
    if index > Settings.period+12 then 
--[[
      sum0 = 1*cache_ind[index]+
            (1)*cache_ind[index-1]+
            (1)*cache_ind[index-2]+
            (1)*cache_ind[index-3]+
            (1)*cache_ind[index-4]+
            (1)*cache_ind[index-5]+
            (1)*cache_ind[index-6]+
            (1)*cache_ind[index-7]+
            (1)*cache_ind[index-8]+
            (1/2)*cache_ind[index-9]+
            (1/3)*cache_ind[index-10]+
            (1/4)*cache_ind[index-11]+
            (1/5)*cache_ind[index-12]
--]]
      sum0 = 1*cache_ind[index]+
            (1/2)*cache_ind[index-1]+
            (1/3)*cache_ind[index-2]+
            (1/4)*cache_ind[index-3]+
            (1/5)*cache_ind[index-4]+
            (1/6)*cache_ind[index-5]+
            (1/7)*cache_ind[index-6]+
            (1/8)*cache_ind[index-7]+
            (1/9)*cache_ind[index-8]+
            (1/10)*cache_ind[index-9]+
            (1/11)*cache_ind[index-10]+
            (1/12)*cache_ind[index-11]+
            (1/13)*cache_ind[index-12]

    end
--[[
    sum0 = sum0/(1+1+1+1+1+1+1+1+1+1/2+1/3+1/4+1/5)
--]]
    sum0 = sum0/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)

       
    cache_ind2[index] = sum0
    if index > Settings.period+50 then   
      sum02 = 1*cache_ind2[index]+
            (1)*cache_ind2[index-1]+
            (1)*cache_ind2[index-2]+
            (1)*cache_ind2[index-3]+
            (1)*cache_ind2[index-4]+
            (1)*cache_ind2[index-5]+
            (1)*cache_ind2[index-6]+
            (1)*cache_ind2[index-7]+
            (1/2)*cache_ind2[index-8]+
            (1/3)*cache_ind2[index-9]+
            (1/4)*cache_ind2[index-10]+
            (1/5)*cache_ind2[index-11]+
            (1/6)*cache_ind2[index-12]
--[[
      sum02 = 1*cache_ind2[index]+
            (1/2)*cache_ind2[index-1]+
            (1/3)*cache_ind2[index-2]+
            (1/4)*cache_ind2[index-3]+
            (1/5)*cache_ind2[index-4]+
            (1/6)*cache_ind2[index-5]+
            (1/7)*cache_ind2[index-6]+
            (1/8)*cache_ind2[index-7]+
            (1/9)*cache_ind2[index-8]+
            (1/10)*cache_ind2[index-9]+
            (1/11)*cache_ind2[index-10]+
            (1/12)*cache_ind2[index-11]+
            (1/13)*cache_ind2[index-12]
--]]
    end
    sum02 = sum02/(1+1+1+1+1+1+1+1+1/2+1/3+1/4+1/5+1/6)
--[[
    sum02 = sum02/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)
--]]
    cache_ind3[index] = sum0 - sum02
    if index > Settings.period+50 then   
      sum03 = 1*cache_ind3[index]+
            (1/2)*cache_ind3[index-1]+
            (1/3)*cache_ind3[index-2]+
            (1/4)*cache_ind3[index-3]+
            (1/5)*cache_ind3[index-4]+
            (1/6)*cache_ind3[index-5]+
            (1/7)*cache_ind3[index-6]+
            (1/8)*cache_ind3[index-7]+
            (1/9)*cache_ind3[index-8]+
            (1/10)*cache_ind3[index-9]+
            (1/11)*cache_ind3[index-10]+
            (1/12)*cache_ind3[index-11]+
            (1/13)*cache_ind3[index-12]
    end
    sum03 = sum03/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)

  end  

  if sum1/sum2 > 0.5 and sum03 > 0 then
    sum1 = sum03
  else
    if sum1/sum2 < 0.5 and sum03 < 0 then
      sum1 = sum03 
    else 
      sum1 = 0
    end
  end

  return sum1, 0
end

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

Вопрос по ИИС (переоткрытие).

Други, всем привет!
Возник вопрос, сам разобраться не могу надеюсь на Вашу помощь, особено на помощь Татьяны Суфияновой (она Специалист в этом вопросе).
В этом году летом истекает 3 года как открыт счет ИИС. Каждый год были пополнения на 400 т.р. и каждый получал вычет от этой суммы.
Сейчас этот счет закрываю и открываю новый.
Такой вопрос. Как поступить с акциями и облигациями на этом счете.

1. Бумаги перевожу на обычный брокерский счет. Старый ИИС закрываю, новый открываю. Перевожу на новый счет бумаги с обычного брокерского на сумму 400 т.р.   Как получить вычет? Предыдущие 3 года налоговая требовала квитанции из банка о переводе средств на ИИС.

2. Продаю все что есть на этом счете, открываю новый. Завожу деньги с брокерского счета на ИИС. Тот же вопрос — как доказывать налоговой ввод средств на ИИС для получения вычета за 2019 год?

3. Продаю все. Закрываю старый- открываю новый. Деньги вывожу на банковский счет и по новой перевожу из банка на счет ИИС по 400 т.р. в год. Проблем с налоговой нет, но возникает ряд комиссионных издержек.

Кто как делал? Подскажите.
  • обсудить на форуме:
  • ИИС

Доработал индикатор STATDIV на lua для quik

пользоваться можно так:
если касная кривая выше 0,5 и синяя выше зеленой то логуем
если красная ниже 0,5 и синяя ниже зеленой то шортим
принимаю пожелания по изменению кода индикатора
Доработал индикатор STATDIV на lua для quik


скачать можно здесь:
dropmefiles.com/y4kpv

как установить:
в папке quik создаете папку LuaIndicators туда кидаете текстовый файл с раcширением .lua и содержанием приведенного индикатора, потом запускаете quik и добавляете как обычный индикатор к графику с именем STATDIV

продолжение темы: smart-lab.ru/blog/528145.php

код:

Settings={
Name=«STATDIV»,
period=25,
  line=
  {
    {
      Name=«curve»,
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name=«line»,
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name=«MA»,
      Color=RGB(0,0,255),

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

для тех кто хочет много бабок зарабатывать

публикую индикатор собственной разработки под quik, написанный на lua
если его значение больше 0,5 то выставляете заявку на покупку с тек профитом >= стоплоссу
гарантированно будете зарабатывать
подключить его можно так:
в папке quik создаете папку LuaIndicators туда кидаете текстовый файл с раcширением .lua
и содержанием приведенного индикатора, потом запускаете quik и добавляете как обычный индикатор к графику
название его в списке будет STATDIV (статистическое отклонение)
на рисунке отобразил его работу с периодом 25 и 50
его суть в том чтоб показать куда отклонено статистическое распределение вероятностей, вверх или вниз за определенный период
проще говоря, куда вероятнее пойдет рынок вниз или вверх
если значение индикатора выше 0,5 то разрешено лонговать, если ниже то разрешено шортить
рекомендации по подбору периода: период для этого индикатора выбираете как период между двумя
последними локальными вершинами
позже могу математически привести целесообразность его использования

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

скрипт для quik

скрипт для отслеживания бумаг по системе BWS:

--Массив с Тикерами, добавьте нужные тикеры
aTickerList = {"MSNG", "GAZP", "LKOH",
	    "SIBN", "GMKN","ROSN",
	    "SBER", "TATN", "NVTK",
	    "IRAO", "RSTI", "SBERP",
	    "PHOR", "SNGS", "TRNFP",
	    "VTBR", "FEES", "MVID",
	    "RASP", "MFON", "AFLT", 
	    "MAGN", "ALRS", "MTSS", "MOEX",
	    "RTKM", "MGNT", "NLMK", "SNGSP",
	    "CHMF", "MTLR", "HYDR", "MFON",
	    "RSTI", "PLZL", "BANEP", "POLY"
	    };

--Функция поиска цены
function fGetPrice(sTickerName, sNum)
	--Подключаемся к источнику данных
	local ds=CreateDataSource("TQBR", sTickerName, INTERVAL_D1);
	while (Error=="" or Error == nil) and ds:Size() ==0 do sleep(10) end;
	if Error ~="" and Error ~=nil then message("Error: "..Error, 1) end;
	local sSize=ds:Size();
	local sCurrentPrice=ds:O(sSize);
	
	local sLastWeekPrice7=0;
	local sLastWeekPrice14=0;

	--Берем цену закрытия свечи неделю назад
	sLastWeekPrice7=ds:C(sSize-4);
	--Берем цену закрытия свечи 2 недели назад
	sLastWeekPrice14=ds:C(sSize-8);

		--Вычисляем проценты
		local sPrc7=math.floor((100-((sLastWeekPrice7*100)/sCurrentPrice))*100)/100;
		local sPrc14=math.floor((100-((sLastWeekPrice14*100)/sCurrentPrice))*100)/100;

		--Заполняем таблицу значениями
		SetCell(t_id, sNum, 0, tostring(sTickerName));
   		SetCell(t_id, sNum, 1, tostring(sCurrentPrice),sCurrentPrice);
   		SetCell(t_id, sNum, 2, tostring(sLastWeekPrice7),sLastWeekPrice7);
   		SetCell(t_id, sNum, 3, tostring(sLastWeekPrice14),sLastWeekPrice14);
   		SetCell(t_id, sNum, 4, tostring(sPrc7),sPrc7);
		SetCell(t_id, sNum, 5, tostring(sPrc14),sPrc14);

		--Текущая цена больше цены прошлой недели - раскрашиваем зеленым
		if sCurrentPrice>sLastWeekPrice7 then 
			fGreen(sNum);
		end;
		--Текущая цена меньше цены прошлой недели - раскрашиваем красным
		if sCurrentPrice<sLastWeekPrice7 then
			fRed(sNum);
	   	end;
		--Текущая цена больше цены прошлой недели и цена прошлой недели больше цены позапрошлой недели
		--раскрашиваем желтым
		if sCurrentPrice>sLastWeekPrice7 and sLastWeekPrice7>sLastWeekPrice14  then 
			fYellow(sNum);
	   	end;
end;

--- Функция создает таблицу
function CreateTable()
	-- Получает доступный id для создания
	t_id = AllocTable();	
	-- Добавляет 6 колонок
 	AddColumn(t_id, 0, "Тикер", true, QTABLE_INT_TYPE, 15);
 	AddColumn(t_id, 1, "Сегодня", true, QTABLE_INT_TYPE, 15);
 	AddColumn(t_id, 2, "Неделя", true, QTABLE_INT_TYPE, 15);
 	AddColumn(t_id, 3, "2 Недели", true, QTABLE_INT_TYPE, 15);
 	AddColumn(t_id, 4, "Неделя (%)", true, QTABLE_INT_TYPE, 15);
 	AddColumn(t_id, 5, "2 Недели (%)", true, QTABLE_INT_TYPE, 15);
	
	-- Создаем
	t = CreateWindow(t_id);
	-- Даем заголовок	
	SetWindowCaption(t_id, "7 Days");

   -- Добавляем строки
      for k,v in pairs(aTickerList) do
		InsertRow(t_id, k);
      end;
end;

--- Функции раскрашивают ячейки таблицы
function fRed(col)
	SetColor(t_id, col, -1, RGB(255,168,164), RGB(0,0,0), RGB(255,168,164), RGB(0,0,0));
end;
function fGreen(col)
	SetColor(t_id, col, -1, RGB(157,241,163), RGB(0,0,0), RGB(157,241,163), RGB(0,0,0));
end;
function fYellow(col)
	SetColor(t_id, col, -1, RGB(249,247,172), RGB(0,0,0), RGB(249,247,172), RGB(0,0,0));
end;

--Основная функция
function main()
	-- Создаем таблицу
 	CreateTable();

 	--Пробегаемся по массиву тикеров
	for k,v in pairs(aTickerList) do
	  fGetPrice(v, k);
	end;

end;
как выглядит в квике:

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

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