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

по

Автоматизация торговли. Выкладываю полноценный алгоритм для Tradingview.

Коллеги, всем добрый вечер!
О преимуществах графиках ренко я уже говорил не раз (см. посты 1 и 2).
Предлагаемый мною скрипт состоит из7 трендовых стратегий  (выбор той или иной стратегии осуществляется по нажатию соответствующего checkbox'a). См. рисунок ниже.
Автоматизация торговли. Выкладываю полноценный алгоритм для Tradingview.
Для того, чтобы воспользоваться алгоритмом необходимо:
1. Скачать файл (файл открывать строго через word office  или notepad, чтобы форматирование не слетело, но только не блокнотом).
2. Скопировать код скрипта и вставить код в скрипт на Tradingview.
После добавления этого «добра» на график получим следующее:
Автоматизация торговли. Выкладываю полноценный алгоритм для Tradingview.

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

Доработал 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 для парсера+ВИДЕО.



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

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