Избранное трейдера ✔Бизне$$ Ангел ✰

по

Доработал zigzag5

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

Доработал zigzag5
код индикатора:
Settings=              
        {                          
            Name = "Zigzag5",   -- название индикатора
            delta=2,                  -- параметр индикатора                          
            deltaY=1,                  -- параметр индикатора   			
            linedeltaY=0.75,                  -- параметр индикатора   				
            line=                                     
                {                               
                    {  
                        Name = "zigzagline3",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,255, 0)
                    },
                    {  
                        Name = "upline",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    },
                    {  
                        Name = "lowline",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 255)
                    },
                    {  
                        Name = "declineline",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    },
                    {  
                        Name = "upline2",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(255,0, 0)
                    },
                    {  
                        Name = "lowline2",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,0, 255)
                    },
                    {  
                        Name = "declineline2",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(255,0, 0)
                    }				
                }
       }
	
	
function getradius(x, y)
  return math.sqrt(Settings.deltaY*y*y+x*x)
end

function koef(val)
  return 1 - 1/(1-1/val)
end


function Init()

  vMin = 0
  vMax = 0
  vMinindex = 0
  vMaxindex = 0
  voldMinindex = 0
  voldMaxindex = 0
  upval = 0
  lowval = 0
  upindex = 1
  lowindex = 1  
  veu = nil
  vel = nil
  curfrom = 1
  curto = 1

  return 7
end


function OnCalculate(index)
  local printz = 0
  vsize = Size()	  

  ve = nil
  veu = nil
  vel = nil 
  curv = nil 
  veu2 = nil
  vel2 = nil 
  curv2 = nil  
  
  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		
		
        if (C(vMinindex) > C(vsize)) and (upval > koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize)))) then
		  upval = koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize)))
		  upindex = vMinindex
		end
        if (C(vMinindex) < C(vsize)) and (lowval > koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize)))) then
		  lowval = koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize)))
		  lowindex = vMinindex
	   end	
	   
	    curfrom = voldMaxindex
	    curto = voldMinindex	  	   
	      	    
      else      
	  
        if vMin > C(index) then
          vMin = C(index)
          vMinindex = index
          vFrom = voldMaxindex      
          vTo = index
          printz = 0
		  curto = index		
        else
          vFrom = vMinindex 
          vTo = index
          printz = 0
        end 		
	  
	    curfrom = voldMaxindex	
		
      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
	
        if (C(vMaxindex) > C(vsize)) and (upval > koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize)))) then
		  upval = koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize)))
		  upindex = vMaxindex
		end                   
        if (C(vMaxindex) < C(vsize)) and (lowval > koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize)))) then
		  lowval = koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize)))
		  lowindex = vMaxindex
		end		
		
	    curfrom = voldMinindex		
	    curto = voldMaxindex
		
      else 
	    	    
        if vMax < C(index) then
          vMax = C(index)
          vMaxindex = index
          vFrom = voldMinindex    
          vTo = index
          printz = 0
		  curto = index		
        else  
          vFrom = vMaxindex  
          vTo = index        
          printz = 0
        end
		
	    curfrom = voldMinindex
		
      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  
           
        -- up level line 
        if upindex ~= nil then
		  if C(upindex) > C(index) then		
            for i = upindex, index do
              SetValue(i, 2, C(upindex))
              SetValue(i, 5, C(upindex)-Settings.linedeltaY*C(vsize)/100)			  
            end  	
            veu = C(upindex)	
          end 		  
		end
		
		-- low level line 
		if lowindex ~= nil then
		  if C(lowindex) < C(index) then
            for i = lowindex, index do
              SetValue(i, 3, C(lowindex))
              SetValue(i, 6, C(lowindex)+Settings.linedeltaY*C(vsize)/100)				  
            end  			
            vel = C(lowindex)
         end
       end		
        
       if voldMaxindex >= voldMinindex then     
	    vsign = -1
		if curfrom == voldMinindex then
		  vsign = -1
		end
		if curfrom == voldMaxindex then
		  vsign = 1
		end		

        -- inclined line
	    if curto- curfrom > 0 then
	     maxcurv = 0
	     k = (C(curto)- C(curfrom))/(curto- curfrom)
         for i = curfrom, curto  do        
          curv = i*k + C(curto) - curto*k	
          if vsign == -1 then  		  
 		    if L(i) < curv then
		      if maxcurv < curv - L(i) then
		        maxcurv = curv - L(i)
              end
            end
		  else
 		    if H(i) > curv then
		      if maxcurv < H(i) - curv then
		        maxcurv = H(i) - curv
              end
            end		  
		  end
         end   		
         for i = curfrom, index  do
          curv = i*k + C(curto) - curto*k + vsign*maxcurv	  
          SetValue(i, 4,curv)
		  curv2 = curv+ vsign*Settings.linedeltaY*C(vsize)/100
		  SetValue(i, 7,curv2)		  
         end   		
	    end
	    curv = nil	
	   end 
	  
       if voldMaxindex <= voldMinindex then
	    vsign = -1
		if curfrom == voldMaxindex then
		  vsign = 1
		end		
		if curfrom == voldMinindex then
		  vsign = -1
		end			
  
        -- inclined line
        if curto- curfrom > 0 then
         maxcurv = 0
         k = (C(curto)- C(curfrom))/(curto- curfrom)
         for i = curfrom, curto  do        
          curv = i*k + C(curto) - curto*k		  
          if vsign == -1 then  		  
 		    if L(i) < curv then
		      if maxcurv < curv - L(i) then
		        maxcurv = curv - L(i)
              end
            end
		  else
 		    if H(i) > curv then
		      if maxcurv < H(i) - curv then
		        maxcurv = H(i) - curv
              end
            end		  
		  end
         end   		
         for i = curfrom, index  do
          k = (C(curto)- C(curfrom))/(curto- curfrom)
          curv = i*k + C(curto) - curto*k + vsign*maxcurv	  		
          SetValue(i, 4,curv)
		  curv2 = curv+ vsign*Settings.linedeltaY*C(vsize)/100
		  SetValue(i, 7,curv2)
         end   		     
        end
	    curv = nil		
       end	  
	          
      end
    end

  end  
  
  return ve, veu, vel, curv, veu2, vel2, curv2  
  
end



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

zigzag5 переработал алгоритм горизонтальных уровней

zigzag5 модернизировал чтоб горизонтальные уровни рисовались более интеллектуально

zigzag5 переработал алгоритм горизонтальных уровней
zigzag5 переработал алгоритм горизонтальных уровней

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

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






Как правильно торговать опционами урок 4

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

Видео урок 1 https://www.youtube.com/watch?v=JSFRk3TXC3I&t=46s

Видео урок 2 https://www.youtube.com/watch?v=IVtHnX_3TVE

Видео урок 3 https://www.youtube.com/watch?v=ZJ05yBQXmUM



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

ЭТО - Опционы BRENT. Часть 2. Открываем скрытое.




     Появился кусочек времени — открою кусочек тайны.

     Вчерась я наваял стартовый пост с зачатками идеологии попытки взять своё в виде денех на продаже времени опционного:


Опционы BRENT. Грааль. И снова про ЭТО? «Клубничка». Часть 1.



     В той моей лоховатенькой статейке было несколько пунктов, которые я как бы упустил в прояснении. Начинаю исправляться.


     Вернусь к первоисточнику идеи — я хочу продать временную стоимость, то есть пустой воздух. А дальше что? Правильно — защитить эту продажу (ну или хотя бы часть её). И всё. Игра будет сделана, выигрыш — получен.

     Придётся вносить небольшие уточнения и чуть подробней описывать подход к продаже «воздуха».


     Итак, я хочу продать два спреда — «бычачий» и «медвежачий».
     Почему два — уж один-то из них принесёт бабло! А то и оба!

     Почему именно спреды, в которых количество проданных опционов равно количеству купленных? Чем хуже голая продажа? Оно, казалось бы, вроде не хуже?

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

Опционы BRENT. Грааль. И снова про ЭТО? "Клубничка". Часть 1.




      Спешу расстроить любителей «клубнички», то есть сисек-пиписек… Сам не против, но в данном случае «ЭТО» — всего лишь «Экспериментальная Торговля Опционами».


     Чем, почему и как займусь на это раз?

     Отыграв две опционных серии (январскую и февральскую, вчерась закрытую на вечёрке), я получил текущий выигрыш за два месяца чуть больше 5 (Пяти) процентов. Если точно = 5,172% за две месячных серии. Нет-нет, я не жаден, но очень хотелось бы геометрически 4 (Четыре) процента в месяц. Стратегия на то заточена. Задача не выполнена.
     
     Хуже того, последние пару недель я наблюдал в себе то, что идёт в некоторый разрез с моими представлениями о торговле опционами. Да, прибыль ежедневно капала в виде теты, изредка перемежаясь со шлепками по морде (по моей, наглой, блондинистой, курьерской морде) от рывков дельты. Против меня, естественно, рывков… Я смотрел на всё это блядство и рожал, рожал, рожал… И защищался…

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

Почему следует открыть ИИС прямо сейчас?

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

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

Право на получение инвестиционного вычета у Вас возникает при выполнении всего лишь трех условий:

  1. Вы официально трудоустроены и платите подоходный налог, либо в течение налогового периода имели другие виды дохода, облагаемые НДФЛ.
  2. Вы открыли индивидуальный инвестиционный счет в брокерской компании, либо банке.
  3. Вы внесли в течение налогового периода (календарного года) денежные средства на Ваш ИИС.


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

Робот под квик для подачи заявки по времени / уровню

По просьбам трудящихся выкладываю свою рабочую лошадку:

4-я строка FIRMS_LIST — «фирма», например из «позиций по клиентским счетам».
9-я ClientCode — «код клиента», например из «таблицы заявок».
10-я Depo — «торговый счет», например из «позиций по клиентским счетам».
11-я ClassCodeList — «код класса бумаги» для FInstrument из «таблицы заявок».
14-я Instrument — «код бумаги» от цены которой зависит выставление заявки.
15-я FInstrument — «код бумаги», по которой выставляется заявка.
21-я Operation «B» — покупка, «S» — продажа.
22 Volume — количество лотов в заявке.
23, 24, 25 — время для заявки по времени.
26 Delta — если 0, заявка пойдет по цене последней сделки на момент срабатывания, если нет — то с указанным сдвигом по цене.
27 PriceControl — если 0 — заявка по времени, -1 — заявка, если цена Instrument падает ниже PCLevel, 1 — заявка, если цена Instrument поднимается выше PCLevel.
28 PCLevel — уровень для PriceControl.

Цена Instrument берется из часовой диаграммы (закрытие предыдущей свечки). Создаем в квике диаграмму на инструмент, интервал 1 час. Правой кнопкой мыши на свечку => «Редактировать» => «Дополнительно», здесь указываем «Идентификатор». Такое же значение присваиваем переменной Instrument.

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

Автоматизация торговли для нищеброда. Пишем, тестируем и запускаем робота за 5 минут. Подготовка стратегии на Tradingview для парсера+ВИДЕО.

Коллеги, всем добрый вечер!

В рамках данного поста, а далее в видео я расскажу о том как максимально быстро запустить своего первого робота.  При этом всё это у Вас займёт не более 5 минут.

Я уже ни раз говорил о том, что на Tradingview  довольно  большое трейдерское сообщество (причём далеко не только русско-язычное). Люди здесь непросто общаются, но также выкладывают свои готовые стратегии. Вы можете выбрать абсолютно любую стратегию и начать ей пользоваться прямо здесь и сейчас, использую при этом возможности моего парсера, который выступает в качестве связки между TV и торговой системой Quik. О настройках своего пасрера я говорил в предыдущих постах, где помимо текстовой инструкции есть довольно подробные видео. В данном топике речь пойдёт о подготовке стратегии непосредственно в TV.

Как я уже говорил выше  TV предлагает довольно обширный перечень стратегий и индикаторов (см. рисунок ниже). Многие из них ранжированы по классу популярности (количество лайков). Правда слепо доверять данному показателю не стоит.
Автоматизация торговли для нищеброда. Пишем, тестируем и запускаем робота за 5 минут. Подготовка стратегии на Tradingview для парсера+ВИДЕО.



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

Скальпинг на RI. Роботизированный.

Индикатором для торговли служит ситуация в корзине ликвидных фьючей, входящих в индекс РТС и Si.
Сделки одного дня (30.01.2019).
Скрин:

Скальпинг на RI. Роботизированный.

Если есть желание «поковыряться» в сделках более подробно, вот видео запись. Время без сделок вырезано (длительность 14 минут):



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

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