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

по

Доработанный индикатор уровней Zigzag_channel_fast


Доработанный индикатор уровней Zigzag_channel_fast
Как им пользоваться:
в папке QUIK\LuaIndicators создаем текстовый файл с содержимым кода индикатора
добавляем индикатор на график
задаем параметр чувствиельности инлдикатора — Процент
индикатор показывает уровни, в которых находится тренд
если тренд еще не сформировался, то границы канала могут расширяться по мере движения цены
если в канале уже есть локальные вершины, то при следующем походе индикатора к границе канал возмен разворот тренда или коррекции в рамках данного канала
--[[
индикатор торговой системы QUIK: 
канал на последнем зигзаге
индикатор строит канал по зигзагу, показывает слом тренда при выходе цены за границы канала
параметры:
  Procent - величина зигзага в %
  k - коэффизиент ширины канала
  Ext - =0-канал стоится по средним =1-канал стоится по экстремуму
Как им пользоваться:
в папке QUIK\LuaIndicators создаем текстовый файл с содержимым кода индикатора
добавляем индикатор на график
задаем параметр чувствиельности инлдикатора — Процент
индикатор показывает уровни, в которых находится тренд
если тренд еще не сформировался, то границы канала могут расширяться по мере движения цены
если в канале уже есть локальные вершины, то при следующем походе индикатора к границе канал возмен разворот тренда или коррекции в рамках данного канала  
--]]
Settings=              
        {                          
            Name = "Zigzag_channel_fast",   -- название индикатора
            Procent=5.0,               -- величина зигзага в % 
            k=2,			         -- коэффизиент ширины канала
            Ext=1, -- =0-канал стоится по средним =1-канал стоится по экстремуму
            shif=0,			
            line=                                     
                {                               
                    {  
                        Name = "zigzagline",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(120,90, 140)
                    },
					{  
                        Name = "cur1",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,0, 0)
                    },
					{  
                        Name = "cur2",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,200, 200)
                    },
					{  
                        Name = "cur3",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(200,200, 0)
                    },
					{  
                        Name = "cur4",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,0, 0)
                    },
					{  
                        Name = "cur5",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 255)
                    },
					{  
                        Name = "cur6",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    },
					{  
                        Name = "cur7",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    },
					{  
                        Name = "cur8",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    },
					{  
                        Name = "cur9",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    },
					{  
                        Name = "cur10",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    },
					{  
                        Name = "cur11",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    }
                }
       }


function Init()

  y1 = nil
  y2 = nil
  y3 = nil  
  x1 = 1
  x2 = 1
  x3 = 1
  
  oldindex = 1
  
  a_01 = 0
  b_01 = 0
  a_02 = 0
  b_02 = 0
  
  vminus_01 = 0
  vplus_01 = 0  
  vminus_02 = 0
  vplus_02 = 0  
  vFrom_01 = 1
  vTo_01 = 1
  vFrom_02 = 1
  vTo_02 = 1
  
  vminus = 0
  vplus = 0
  vminus_n = 0
  vplus_n = 0  
  
  ret = 0
  
  last_ind = 1

  v1=nil
  v2=nil
  v3=nil
  v4=nil
  v5=nil
  v6=nil
  v7=nil
  v8=nil
  v9=nil
  v10=nil
  
  return 10
end

function recalcline(num, index, rec)

 if index == Size()-sh and rec == 0 then
   for i = 1, index do
     if m == 1 then 		
	   SetValue(i, 3, nil)
	   SetValue(i, 4, nil)
	 end
     if m == 2 then 		
	   SetValue(i, 6, nil)
	   SetValue(i, 7, nil)
	 end 	 
   end 
 end 

 if index == Size()-sh or rec == 1 then
	
  if num == 1 then 
	  vFrom = 0 --[[ --]] 
	  vTo = 0
	if x3 < x2 then 
	    vFrom = x3
	    vTo = x2
	  else
	    vFrom = x2
	    vTo = x3
	  end 
  end
  if num == 2 then 
	  vFrom = 0
	  vTo = 0
	  if x1 < x2 then 
	    vFrom = x1
	    vTo = x2
	  else
	    vFrom = x2
	    vTo = x1
	  end 
  end    
  
      if vFrom < 1 then
	    vFrom = 1
	  end 	
  
	  a1 = 0
	  a2 = 0
	  a3 = 0
	  a4 = 0
	  n = 0
	  a = 0
	  b = 0
      for i = vFrom, vTo do
        n=n+1	  
	    a1 = a1+i*C(i)
	    a2 = a2+i
	    a3 = a3+C(i)
	    a4 = a4+i*i	
	  end
	  if((n*a4 - a2*a2) ~= 0) then	  
	  
	  -- if oldindex ~= Size() then
	   a = (n*a1 - a2*a3)/(n*a4 - a2*a2)
	   b = (a3 - a*a2)/n

	   vminus = 0
	   vplus = 0
	   vminus_n = 0
	   vplus_n = 0
       for i = vFrom, index do
        y = a*i + b		
		if i>0  then 
		if C(i) < y and i <= vTo then
		  if ex == 0 then 
	        vminus = vminus + y - C(i)
            vminus_n = vminus_n + 1	
		  else 
		    if i == vFrom then 
			  vminus = 0
			end
            if y-C(i) > vminus then
              vminus = y-C(i) 			
            end				
		  end 
        end	
        end		
		if i>0  then 
		if C(i) > y and i <= vTo then
		  if ex == 0 then 
	        vplus = vplus + C(i) - y
	        vplus_n = vplus_n + 1
		  else 
		    if i == vFrom then 
			  vplus = 0
			end		  
            if C(i)-y > vplus then
              vplus = C(i)-y 			
            end			
		  end 
		end 
		end  
        m = 0
        if C(vTo) >	C(vFrom) and y < C(vTo)+0.1*(C(vTo)-C(vFrom)) and y > C(vFrom)-0.1*(C(vTo)-C(vFrom)) then
          m = 1
		end 	
        if C(vTo) <	C(vFrom) and y < C(vFrom)+0.1*(C(vFrom)-C(vTo)) and y > C(vTo)-0.1*(C(vFrom)-C(vTo)) then
          m = 1
		end 
        if m == 1 then 		
	      --SetValue(i, 2, y)
        end 		
	   end
	   --end
	  
	   if ex == 0 then  
	    if vminus_n ~= 0 then
	     vminus = kk*vminus/vminus_n          
	    end 
	    if vplus_n ~= 0 then
	     vplus = kk*vplus/vplus_n          
	    end 
	   end 	  
      end

  if num == 1 then 
    a_01 = a
    b_01 = b 
    vminus_01 = vminus
    vplus_01 = vplus
	vFrom_01 = vFrom
    vTo_01 = vTo
  end
  if num == 2 then 
    a_02 = a
    b_02 = b  
    vminus_02 = vminus
    vplus_02 = vplus
	vFrom_02 = vFrom
    vTo_02 = vTo	
  end  
  return 1 
 end
 
 return 0
end 

function levels(x, y, num, index)

  if y ~= nil and x ~= 1 then 
  
    for i = 1, index do	
	  if i > x then 
	    SetValue(i, num, y)
      else 		
	    SetValue(i, num, nil)
	  end 
    end
	
  end 

end


function OnCalculate(index)
  
  de = Settings.Procent
  kk = Settings.k 
  ex = Settings.Ext
  sh = Settings.shif
  
  v1=nil
  v2=nil
  v3=nil
  v4=nil
  v5=nil
  v6=nil
  v7=nil  
  v8=nil
  v9=nil
  v10=nil  
  
   
  if index > Size()-sh then  
    --return nil, nil, nil, nil, nil, nil, nil 	 
    return v1, v2, v3, v4, v5, v6, v7, v8, v9, v10 
  end 
  
  vl = C(index)
  if vl~=nil then 
   if index == 1 then 
	y1 = vl
    y2 = vl
   else   
	  if C(index) > y1*(1+de/100) and y1 < y2 then 
	    x3 = x2
	    x2 = x1
		y3 = y2
	    y2 = y1	
	    x1 = index 
	    y1 = C(index)	
        ret = recalcline(1, index, 0)
        ret = recalcline(2, index, 0)   
        levels(x1, y1, 8, index)		
		levels(x2, y2, 9, index)
		levels(x3, y3, 10, index)
	  end 	
	  if C(index) > y1 and C(index) > y2 then 
	    x1 = index 
	    y1 = C(index)	  			  
	  end 
	  	  		
	  if C(index) < y1*(1-de/100) and y1 > y2 then 
	    x3 = x2
	    x2 = x1
		y3 = y2		
	    y2 = y1
	    x1 = index 
	    y1 = C(index)	  	
        ret = recalcline(1, index, 0)
        ret = recalcline(2, index, 0)
        levels(x1, y1, 8, index)		
		levels(x2, y2, 9, index)
		levels(x3, y3, 10, index)
	  end 	
	  if C(index) < y1 and C(index) < y2 then 
	    x1 = index 
	    y1 = C(index)	  			  
	  end 	  	  		
	end
  end 	
	
    --[[ 
  if x1 ~= index then 
    curfrom = x1
	curto = index
  else 
    curfrom = x2
	curto = x1
  end 
 
  if curto ~= curfrom and curfrom ~= nil and curto ~= nil then 
    if C(curto) ~= nil and C(curfrom) ~= nil then 
      k = (C(curto)- C(curfrom))/(curto- curfrom)  
      for i = curfrom, index  do
        curv = i*k + C(curto) - curto*k  		          
	    SetValue(i, 1, curv)
      end   	
	end 
  end 
  

 	--]]

	if index == Size()-sh and ret == 0 then
        lpr = C(Size()-sh)
        ret = recalcline(1, index, 1)
        ret = recalcline(2, index, 1)	
		
		if y1 ~= nil then 		
		 if y1 >	lpr*0.9 and y1 < lpr*1.1 then 
		  levels(x1, y1, 8, index)
         end 
        end 		
        if y2 ~= nil then 				
		 if y2 > lpr*0.9 and y2 < lpr*1.1 then 		
		  levels(x2, y2, 9, index)
         end 
		end 
        if y3 ~= nil then 		
		 if y3 > lpr*0.9 and y3 < lpr*1.1 then 		
		  levels(x3, y3, 10, index)
         end 		  
		end 
    
    end 	
	
	
	
	if index == Size()-sh  then  --- and index ~= last_ind
		  
	   if vTo_01 - vFrom_01 > 500 then
         vFrom_01 = vTo_01-500 
       end 	  
	   
       for i = 1, index do		   		
	     SetValue(i, 3, nil)	
         SetValue(i, 4, nil)	 
	     SetValue(i, 6, nil)	
         SetValue(i, 7, nil)	
		-- SetValue(i, 8, nil)	 
	   --  SetValue(i, 9, nil)	
        -- SetValue(i, 10, nil)	
       end	   
		  
       for i = vFrom_01, index do
        y = a_01*i + b_01 + vplus_01		
        m = 0
        if C(vTo_01) >	C(vFrom_01) and y < C(vTo_01)+0.3*(C(vTo_01)-C(vFrom_01)) and y > C(vFrom_01)-0.3*(C(vTo_01)-C(vFrom_01)) then
          m = 1
		end 	
        if C(vTo_01) <	C(vFrom_01) and y < C(vFrom_01)+0.3*(C(vFrom_01)-C(vTo_01)) and y > C(vTo_01)-0.3*(C(vFrom_01)-C(vTo_01)) then
          m = 1
		end 
        if m == 1 then 		
	      SetValue(i, 3, y)
		  if i == index then 
		    v3 = y 
		  end 
        end 	
		
        y = a_01*i + b_01 - vminus_01		
        m = 0
        if C(vTo_01) >	C(vFrom_01) and y < C(vTo_01)+0.3*(C(vTo_01)-C(vFrom_01)) and y > C(vFrom_01)-0.3*(C(vTo_01)-C(vFrom_01)) then
          m = 1
		end 	
        if C(vTo_01) <	C(vFrom_01) and y < C(vFrom_01)+0.3*(C(vFrom_01)-C(vTo_01)) and y > C(vTo_01)-0.3*(C(vFrom_01)-C(vTo_01)) then
          m = 1
		end 
        if m == 1 then 		
	      SetValue(i, 4, y)
		  if i == index then 
		    v4 = y 
		  end 
        end 			
	   end	  
	    
	   if vTo_02 - vFrom_02 > 500 then
         vFrom_02 = vTo_02-500  
       end 	 
	  
       for i = vFrom_02, index do
        y = a_02*i + b_02 + vplus_02		
        m = 0
        if C(vTo_02) >	C(vFrom_02) and y < C(vTo_02)+0.1*(C(vTo_02)-C(vFrom_02)) and y > C(vFrom_02)-0.1*(C(vTo_02)-C(vFrom_02)) then
          m = 1
		end 	
        if C(vTo_02) <	C(vFrom_02) and y < C(vFrom_02)+0.1*(C(vFrom_02)-C(vTo_02)) and y > C(vTo_02)-0.1*(C(vFrom_02)-C(vTo_02)) then
          m = 1
		end 
        if m == 1 then 		
	      SetValue(i, 6, y)
		  if i == index then 
		    v6 = y 
		  end 
        end 	
		
        y = a_02*i + b_02 - vminus_02		
        m = 0
        if C(vTo_02) >	C(vFrom_02) and y < C(vTo_02)+0.1*(C(vTo_02)-C(vFrom_02)) and y > C(vFrom_02)-0.1*(C(vTo_02)-C(vFrom_02)) then
          m = 1
		end 	
        if C(vTo_02) <	C(vFrom_02) and y < C(vFrom_02)+0.1*(C(vFrom_02)-C(vTo_02)) and y > C(vTo_02)-0.1*(C(vFrom_02)-C(vTo_02)) then
          m = 1
		end 
        if m == 1 then 		
	      SetValue(i, 7, y)
		  if i == index then 
		    v7 = y 
		  end 
        end 			
	   end	
	  
	  last_ind = index 
	end 
  
 
    return v1, v2, v3, v4, v5, v6, v7, v8, v9, v10 

end

Заграничные брокеры: плюсы и минусы

Напишу свои выводы на основе главного заграничного брокера для Россиян — Interactive Brokers, в котором у меня счет уже 8 лет.
Заграничные брокеры: плюсы и минусы


Итак, плюсы:

1.
В десятки раз больше акций и ETF. (Акции каннабиса, плечевые ETF, трежерис, крипта и тысячи др. — этого нет в РФ)

2.
Страховка брокерского счета на 500 000$. (РФ нет страховок).

3.
Комиссии ETF фондов до 30х раз меньше, чем фондах в России. (VOO 0.03% против 0.9% у FXUS)

4.
Недоступность ваших средств гос. органам.
(ФНС может заблокировать средства на счету у российского брокера в некоторых случаях без предупреждения)

5.
Купить акции в долг — всего 1.56%.
(многие покупают в долг облигации Сбера в долларах с доходностью 5%, и живут на разнице.)

6.
Не нужен статус квал. инвестора, чтобы покупать акции и фонды на биржах США.

7.
Все операции 100% онлайн, не придется ехать в офис, чтобы довозить бумажки.

8.
Поддержка в нестандартных ситуациях.
Как пример — в случае мартовского кризиса в нефтью, когда она ушла в минус, заграничные брокеры к этому технически подготовились заранее. А как у нас? Людей просто “кинули” на деньги, когда у них технически не сработали стоп-заявки на продажу, и сейчас куча судов в РФ, где инвесторы доказывают, что они не виноваты.



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

Однодневные облигации ВТБ

    • 21 мая 2021, 22:02
    • |
    • OUBee
  • Еще
Оказывается у ВТБ есть интересный инструмент — однодневные облигации.
Благодаря @Дмитрий К узнал о них вот тут https://smart-lab.ru/blog/697841.php#comment12582602


Купить их можно в личном кабинете на lk.olb.ru
Однодневные облигации ВТБ

Продаются они с дисконтом, лотами по 10 штук.
Время подачи заявок на покупку в строго определенном диапазоне: ПН.-ЧТ. с 16:00 до 16:30, ПТ. с 15:00 до 15:30 (по Московскому времени)

Однодневные облигации ВТБ

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

Гарантийное обеспечение и анализ опционного портфеля в телеграмме

Добрый день.  Немного о себе. В торговлю пришел примерно 1,5 года назад через  известный конкурс, где мосбиржа дает несколько тысяч рублей и главная задача — их не растерять. Как то сразу стал работать через известного брокера на «О» .  Конечно же ничего не выиграл, но задачу минимум выполнил только потому, что выехал на опционах.  К тому же по одному из образований я математик.  Так и стал приверженцем опционной торговли.  Сейчас потихоньку торгую опционами Si и BR.

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

Итак,  предлагаю вашему вниманию  телеграмм бота для анализа опционного портфеля  @test09062020bot,  который имеет необычное название «опционный портфель».  Инструкция по работе внутри бота  после стартового приветствия.  Ее надо читать очень внимательно, потому что по первым отзывам пользователей, не все очевидно.



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

НЕФТЬ. Технический анализ 20.05.2021. Глобальный взгляд

    • 20 мая 2021, 14:32
    • |
    • Kir
  • Еще

Продолжаем мониторить и отрабатывать глобальный сценарий по нефти.

МЕСЯЦ


НЕФТЬ. Технический анализ 20.05.2021. Глобальный взгляд

  1. Цена продолжает торговаться в рамках нисходящего клина
  2. Идет отработка НР с целью в районе 77$

На недельном фрейме ситуация следующая:

НЕДЕЛЯ

НЕФТЬ. Технический анализ 20.05.2021. Глобальный взгляд



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

Управление капиталом.

Управление капиталом.

 

Постоянно ставьте перед собой более высокие торговые цели.

 

Стопы – ключ к успеху многих трейдеров. Ограничивайте ваши потери.

 

Успешный трейдер устанавливает размер прибыли для каждой сделки.

 

.Не убирайте стоп-лосс во время торговли.

 

Не входите в рынок и не выходите из него слишком часто.

 

Никогда не позволяйте большой удачной торговле превратиться в проигрыш. Остановитесь, если рынок просел на 20% от точки вашей максимальной прибыли.

 

Если вы не прогрессируете, вы откатываетесь назад. Как только вы достигли своей торговой цели, важно, чтобы вы немедленно установили новую цель торговли.

 

Делите свою прибыль пополам. Никогда не рискуйте более чем 50%своей прибыли на рынке.

 

Поскольку всегда существует вероятность неприятных сюрпризов на тонких мертвых рынках, на них следует вкладывать меньше капитала, чем на широкие рынки, находящиеся в движении.



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

НЕФТЬ. Технический анализ перед открытием недели 28.03.2021

    • 28 марта 2021, 17:47
    • |
    • Kir
  • Еще

Продолжаю мониторить и отрабатывать глобальный сценарий по нефти. Перед началом новой торговой недели, техническая картина выглядит так:

МЕСЯЦ


НЕФТЬ. Технический анализ перед открытием недели 28.03.2021

  1. Цена продолжает торговаться в границах нисходящего клина, и приближается к сопротивлению фигуры
  2. Продолжается отработка НР
  3. Цель по формации в районе 77$
  4. С момента пробития сопротивления формации, цена идет направленно
  5. По пути движения, на данный момент, не сформировано ни одного локального максимума и минимума. Четыре месяца подряд растущие свечи

НЕДЕЛЯ

НЕФТЬ. Технический анализ перед открытием недели 28.03.2021



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

Взгляд на биткоин в России глазами бывшего юриста

Небольшое вступление (можно пропустить...
Я не писатель, но по какому-то странному стечению обстоятельств мой предыдущий пост вошел в топ постов недели. Получив от Тимофея небольшое финансовое поощрение, я решил попробовать написать для вас кое-что полезное, а заодно проверить — случайно ли прошлый мой опус засветился в топах, или же во мне дремлет литературный гений (даю повод для всевозможных едких высеров и колкостей в мой адрес).

А теперь к делу. 
В декабре 2020 года, а точнее в период с 1 по 12 декабря я увидел в биткоине шикарную возможность роста на 350%. И это без плечей. Естественно, глаза загорелись, мысли от волнения начали путаться — лишь бы не упустить идею! Лихорадочно я начал искать наиболее надежную криптобиржу с поддержкой русского языка. В поисках прошло несколько дней, за которые я успел остыть… и посмотреть на ситуацию свежим взглядом без эмоций. А так как ещё до моего знакомства с Московской биржей у меня был печальный опыт работы с форекс-брокером Альпари, я решил копнуть глубже и изучить вопрос с торговлей криптой более тщательно.

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

Новый Google Finance

Тут оказалось, что у Google Finance еще в сентябре 2020 года вышла новая версия.

blog.google/products/search/google-finance-makes-investing-information-more-accessible/

Как увидеть новую версию написано в конце.

Из плюсов, что я увидел

1. Можно упорядочить свой watchlist по имени, приросту за день и вообще упорядочить.
В текущей версии акции стоят в рандомном порядке, который еще и менятся неизвестным образом каждый день.

2. Можно создавать отдельные списки акций (watchlists). Сейчас есть только один.
Из-за этого я стал пользоваться Yahoo, потому что в гугле этого делать было нельзя. Но в яху всё медленно, а в гугле быстро!

3. В каждом watchlist теперь есть удобный календарь ближайших отчетов эмитентов из списка.

4. Всё стало удобнее и ярчее. На домашней странице появился раздел Top Movers in your watchlists, и Gainers — кто вырос по рынку больше всего. Правда непонятно, кто туда отбирается и как.

Вобщем круто.

ru-watchlist:

Новый Google Finance

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

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