Избранное трейдера Владимиров Владимир

по

Инструкция по обмену заблокированными акциями у разных брокеров

СОДЕРЖАНИЕ:

  • важные моменты

  • сроки реализации и процесс

  • Тинькофф

  • ВТБ

  • АЛЬФА брокер

  • КИТ финанс

  • Фридом Финанс (Цифра брокер)

  • РСХБ

  • ФИНАМ

  • БКС

  • Инвестиционная палата



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

10 лет торговли опционами

Изучая посты вспомнил, что я уже 10 лет торгую опционами. Именно, в январе 2012 начался путь опционщика с изучения бесплатной лекции Твардовского https://youtu.be/TCe0LZeeDWo. Чтобы понять, как работают опционы, в том числе, какие риски несут потребовалось около недели. Меня удивляют платные и не дешёвые предложения, типа https://smart-lab.ru/blog/754445.php. Чтобы базово освоить опционы, не вдаваясь в математику, особого ума и тренера не нужно. Необходимо только желание.

 

Риски.

Главное было уяснить, что при продаже риск такой же, как как при удержании базового актива. Данное понимание оградило меня от больших неприятностей на торговом счёте. Придерживаюсь его и сейчас. Например, если у меня 300т.р. на депозите, то я могу себе позволить работать не более, чем 10-ю контрактами SR30000 (30000*10=300000).

 

Дешёвые опционы.

От работы с дешёвыми опционами я отказался на начальном этапе. Продажу краёв не рассматривал по двум причинам.

  1. Риски. С моим понятием риска можно было заработать копейки.
  2. Издержки. Например, когда продаёшь опцион с ценой 50 рублей, а платишь 5 рублей бирже и брокеру, издержки составляют 10%. Это тоже нарушало мои «не более 2-3%».


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

Актуальное Interactive Brokers

Пост будет большой. 
Бонус в конце поста!

Пару последних вопросов. 

ПЕРВОЕ.
Русскоязычная тех.поддержка
Дорогие друзья! Русская тех поддержка есть. Все работает как обычно.
Учитывайте что она не 24 на 7 работает. А только Пн-Пт. И по времени МСК с 10 до 17. 
Поэтому учитывайте время и день когда вы звоните.
Телефон на оф.сайте.
Я им часто звоню в месяц по несколько раз. Всегда дозваниваюсь, даже быстрее чем до российских брокеров. Попробуйте например позвонить своему брокеру в РФ и сравните. 
+ также есть связь через сайт (чат, он же через тикет) это делается через ваш акаунт на сайте.

ВТОРОЕ.
Про КРЫМ.
Открытие счетов. Просят помочь открыть счет в Крыму, но это невозможно. Было пару крупных клиентов я посоветовал купить жилье в РФ и прописаться. Клиент купил жилье в Москве, прописался и счет открыли. Других способов нет. 

Блокировка счетов. ДА действительно, несколько раз клиенты обращались отдыхали в КРыму и счет заморозили. Будьте внимательны, не делайте так. В регламенте у брокера про это указано. Так что тут все нормально, Крым под санкциями итд. Поэтому не удивляйтесь. 

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

Визуализация рекомендаций Романа Андреева на Python. Часть 2. Компьютерное зрение.

Всем здоровья и бодрого расположения духа!
В статье «Визуализация рекомендаций Романа Андреева на Python» мы разобрали как можно с помощью нескольких строк кода на Питоне разобрать текст, который выкладывает каждое утро в своем блоге Роман Андреев (далее по тексту Роман) — известный трейдер и блогер (или наоборот), и отобразить эти рекомендации в виде уровней и зон на графиках. В этом топике я покажу способ для извлечения информации из графических изображений с помощью технологий компьютерного зрения (но без использования нейронных сетей) на примере таблиц-рекомендаций из блога Романа Андреева.
Визуализация рекомендаций Романа Андреева на Python. Часть 2. Компьютерное зрение.
Надеюсь, что я не напугал читателей термином «компьютер вижн», скоро вы поймете, что это просто. И что любой юный прогер может написать код для распознавания внешними камерами номеров автомобилей, который впоследствии возненавидят все автолюбители мегаполисов, а МАДИ и ГИБДД будут собирать со всех нас миллиардные штрафы



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

Индикатор Zigzag_channel_inc с добавлением наклонных уровней

Индикатор Zigzag_channel_inc с добавлением наклонных уровней


--[[
индикатор: 
канал на последнем зигзаге
индикатор строит канал по зигзагу, показывает слом тренда при выходе цены за границы канала
параметры:
  Procent - величина зигзага в %
  k - коэффизиент ширины канала
  Ext - =0-канал стоится по средним =1-канал стоится по экстремуму
--]]
Settings=              
        {                          
            Name = "Zigzag_channel_inc",   -- название индикатора
            Procent=5,               -- величина зигзага в % 
            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(0,0, 0)
                    },
					{  
                        Name = "cur12",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 0)
                    }
                }
       }


function Init()

  y1 = nil
  y2 = nil
  y3 = nil  
  y4 = nil  
  x1 = 1
  x2 = 1
  x3 = 1
  x4 = 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
  v11=nil
  v12=nil
  v13=nil  
  
  return 13
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 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		  
		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 
        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, rec)

  if y ~= nil and x ~= 1 and (index ==Size() or rec==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 inclevels(x_1, y_1, x_2, y_2, y_3, index, num, rec)

  if y_2 ~= nil and x_2 ~= 1 and (index ==Size() or rec==1) then 
  
   need = 1
   for i = x_2+1, x_1-1 do	  
     y = ((y_2 - y_1)*i - x_1*y_2 + x_2*y_1 )/(x_2-x_1)
     if (y_1 < y_3 and C(i) < y ) or (y_1 > y_3 and C(i) > y ) then 
	   need = 0
	   break
	 end 	 
   end 
   --need = 1
   if need == 1 then 
    for i = x_2, index do	  
	
	  y = ((y_2 - y_1)*i - x_1*y_2 + x_2*y_1 )/(x_2-x_1)
	
	  if i >= x_2 then 
	    if i > x_1 and (C(Size())*1.3 < y or C(Size())*0.7 > y) then 
	      SetValue(i, num, nil)
        else 		
	      SetValue(i, num, y)
	    end 
      else 		
	    SetValue(i, num, nil)
	  end 
    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  
  v11=nil  
  v12=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, v11 , v12, v13  
  end 
  
  vl = C(index)
  if index == 1 then 
	y1 = vl
    y2 = vl
  else   
	  if C(index) > y1*(1+de/100) and y1 < y2 then 
	    x4 = x3
	    x3 = x2
	    x2 = x1
		y4 = y3
		y3 = y2
	    y2 = y1	
	    x1 = index 
	    y1 = C(index)	
        ret = recalcline(1, index, 0)
        ret = recalcline(2, index, 0)   
        levels(x1, y1, 8, index, 0)		
		levels(x2, y2, 9, index, 0)
		levels(x3, y3, 10, index, 0)
		levels(x4, y4, 11, index, 0)
		inclevels(x1, y1, x3, y3, y2, index, 12, 0)
		inclevels(x2, y2, x4, y4, y3, index, 13, 0)
	  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 
	    x4 = x3
	    x3 = x2
	    x2 = x1
		y4 = y3
		y3 = y2		
	    y2 = y1
	    x1 = index 
	    y1 = C(index)	  	
        ret = recalcline(1, index, 0)
        ret = recalcline(2, index, 0)
        levels(x1, y1, 8, index, 0)		
		levels(x2, y2, 9, index, 0)
		levels(x3, y3, 10, index, 0)
		levels(x4, y4, 11, index, 0)
		inclevels(x1, y1, x3, y3, y2, index, 12, 0)
		inclevels(x2, y2, x4, y4, y3, index, 13, 0)		
	  end 	
	  if C(index) < y1 and C(index) < y2 then 
	    x1 = index 
	    y1 = C(index)	  			  
	  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
    
        ret = recalcline(1, index, 1)
        ret = recalcline(2, index, 1)	
		
		levels(x1, y1, 8, index, 1)		
		levels(x2, y2, 9, index, 1)
		levels(x3, y3, 10, index, 1)
		levels(x4, y4, 11, index, 1)

		inclevels(x1, y1, x3, y3, y2, index, 12, 1)
		inclevels(x2, y2, x4, y4, y3, index, 13, 1)
		
    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 = 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, v11 , v12, v13 

end

Индикатор поглощение

заготовка индикатора для quik
бычье, медвежье поглощение
Индикатор поглощение


сам код:
Settings={
Name="absorption",
period=20,
line=                                     
                {  
                                        {  
                        Name = "cur1",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    }
                }

}
--[[

описание свойств:
period - период, за каротрый делается расчет

назначение:
построение поглащения



--]]

function Init()
  y = 0         
  return 1
end

function OnCalculate(index)
    
  sz = Size()
  n = Settings.period
  

  if index == 1 then 
   y = 0  
  end  
       

   i = index

   
   if index-n > 0 then
        
        if (C(i) < C(i-1)) and (C(i-1) > O(i-1)) and (C(i) < O(i)) and
       (C(i-1) - O(i-1) < O(i) - C(i))  then
      y = y - 1    
        end
        
        if (C(i) > C(i-1)) and (C(i-1) < O(i-1)) and (C(i) > O(i)) and
       (O(i-1) - C(i-1) < C(i) - O(i))  then
      y = y + 1    
        end     
        
   end 
   
   return y
 
  
end
  • обсудить на форуме:
  • QUIK

С Нуля до Алготрейдра, подарок для трейдеров.

Доброго времени суток коллеги. Я редко пишу на форуме с 2012 года всего несколько статей (сообщений), надеюсь они были полезными и помогли Вам. Наступил новый 2020 год, время подарков…  

Каждый трейдер со временем хочет автоматизировать свой труд, облегчить его — создать алгоритмический Грааль. Я очень рассчитываю, что мой подарок поможет многим в этом трудном, не легком, но очень и очень интересном пути.  

Подарок – это видеоуроки по программированию торговых роботов на языке С# через торговую платформу Quik. Используется библиотека с открытым исходным кодом которая лежит на GitHub https://github.com/finsight/QUIKSharp 

Сами уроки лежат на YouTube вот ссылка на плейлист https://clck.ru/LRGZB 



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

Модель Курбаковского, сглаживание и нормировка

Большое спасибо Виталию Курбаковскому, что опубликовал свою обобщенную модель ценообразования опционов (1, 2, 3, 4, 5). Давно хотелось подобную модель, с минимум параметров, физический смысл которых был бы более-менее понятен. Чтобы можно было осознано свои параметры модели задавать, а не подгоняться под рынок и слепо за ним идти. Модель, которую использует биржа (с шестью параметрами ABCDES) под такой запрос не подходит. Попробуй там пойми, все ли шесть параметров сейчас имеют справедливые и оправданные значения, или с каким-то из параметров можно поспорить. И слишком уж она гибкая. Бывало смотришь — выскочила какая-то котировка за модель, только соберешься по ней ударить, а программа параметры модели подкорректировала и услужливо изогнула кривую с учетом новой котировки. И то, что только что
выбивалось за модель, стало ей соответствовать. Пробовал еще модель китайской улыбки, там и параметров поменьше и смысл у них попонятнее, но очень уж плохо она подгоняется под рынок. И тут, на счастье, Виталий поделился своей моделью и все подробно объяснил. Реализовал у себя и оказалось — то что надо. И в рынок хорошо вписывается, и параметры имеет понятные.



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

Инструкция по заполнению декларации 3-НДФЛ для сальдирования убытка

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

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

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

Если у вас будут вопросы, пишите в комментариях под видео или тут. Я постараюсь дать ответ на каждый ваш вопрос.

В видео идет описание:

  • где взять программу,
  • как внести данные, если брокеры разные, а прибыль и убыток получены в одном году,
  • прибыль в 2018 году, а убытки получены в прошлые годы,
  • есть еще инвестиционный вычет.

Другой вариант кривой объемов со средней

пересечение двух линий является сигналом
Другой вариант кривой объемов со средней


Settings={
Name="VCUR",
period=20,
periodma=20,
weighted=1,
proportional=1,
    line=                                     
                {                               
                    {  
                        Name = "cur1",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(155,0, 0)
                    },	
                    {  
                        Name = "cur2",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,0,155)
                    },						
                    {  
                        Name = "cur3",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,0, 0)
                    }					
                }
}
--[[

-- кривая объемов
описание свойств:

period: сколько баров берутся в подсчет
weighted: =0 - обычная, =1 - взвешанная
proportional: =1- считается: volume*(close-open)/(hight-low), =0 - считается: volume*sign(close-open)

--]]

function Init()
    
  mas={}	
  return 3
  
end

function OnCalculate(index)
  	
	--sumv = 0
	if index >= Settings.period then 
	  for i=index-Settings.period-1, index do    
        if sumv == nil then
	      sumv = 0
        end	  
	    if C(i-1) ~= nil then
	      if C(i-1) > O(i-1) then
		    if Settings.proportional == 0 then
		      prop = 1
			else
			  if (H(i-1)-L(i-1)) == 0 then
			    prop = 0
			  else
			    prop = (C(i-1)-O(i-1))/(H(i-1)-L(i-1))
			  end
			end
		    if Settings.weighted == 0 then
              sumv = sumv + prop*V(i-1)
			else
			  sumv = sumv + prop*V(i-1)*(i-(index-Settings.period))/Settings.period
			end
	      else
            if Settings.proportional == 0 then
		      prop = 1
			else
              if (H(i-1)-L(i-1)) == 0 then
			    prop = 0
			  else			
			    prop = (O(i-1)-C(i-1))/(H(i-1)-L(i-1))
			  end
			end	  
		    if Settings.weighted == 0 then
              sumv = sumv - prop*V(i-1)
			else
			  sumv = sumv - prop*V(i-1)*(i-(index-Settings.period))/Settings.period
			end
	      end
        end 
	  end 
	else
	  sumv = nil
	end
	mas[index]=sumv
	
	ma = 0
	if index >= Settings.periodma then 
	  for i=index-Settings.periodma+1, index do    
	    if mas[i] ~= nil then
	      ma = ma + mas[i]
		end 
	  end
	end  
	ma = ma/Settings.periodma	
     
  return sumv, ma, 0


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

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