Избранное трейдера Георгий Харитонов

по

Файл моих настроек QUIK для "фондовой торговли"

(Загружаются из QUIK, выбираем меню «Система» — «Загрузить настройки из файла» где и выбираем файл «140519ФондовыйАлор.wnd»)
drive.google.com/file/d/1knSJvbaKrdqUysC_XRqmrfXlwjL-eJ5B/view?usp=sharing — ссылка на файл настроек
В этом посте я выкладываю свои настройки торгового терминала QUIK для …условно назовем «фондовой торговли» (акции, облигации, опционы, фьючи – не внутридневка). Эти настройки могут на первый взгляд показаться слегка сложноватыми, но к ним крайне быстро привыкаешь, так как они позволяют снизить «хаотичную активность» и отслеживать рынок комплексно, а рынок – это единая структура.

Это уже профессиональные настройки и рассчитаны они на два монитора (можно ноутбук+монитор – легко соединяются через шнур). В настройках рабочее пространство разбито на ряд вкладок логика которых следующая: «Карта» — это основная просмотровая зона – ваша капитанская рубка – на этой вкладке размещены новости, лидеры роста и снижения по акциям, облигациям и фьючам (для арбитража), отраслевые индексы, а так же выведены основные индикативы нашего рынка (РТС, доллар, евро, фьюч на золото и на нефть). Везде прочерчены тренды и ценовые уровни – т.е. через время их нужно будет корректировать.



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

TurboMartin, обновление

Судя по отзывам, классический усреднятор многим понравился.

Чуть допилил и выложил на гитхаб.

Самая большая проблема и опасность любого Мартина — это слив депо.
Защитимся от этого параметром MaxDrillDown (суть стоплосс).
Если сумма всех убыточных позиций по деньгам достигает этого значения, то вся набранная поза сбрасывается, все счетчики обнуляются, и поиск начальной точки входа начинается заново.

Теперь скрипт лежит, однако, здеся: https://github.com/tp55/TurboMartin/blob/master/TurboMartin.lua

Пользуйтесь, не обляпайтесь.

Будут ошибки — обязательно пишите, хоть сюда, хоть в личку.

Короткие бумаги для коротких денег. Аналог вклада "до востребования"

#probondsмонитор Можно по-разному готовить свой брокерский счет к внезапным возможностям и кризисам. Или к неожиданным тратам. Безусловно, удобно это делать в формате счета «до востребования». Обычно таким форматом выступают ОФЗ. Но ставки по коротким выпускам федерального госдолга совсем уже невкусные. Предлагаем несколько коротких бумаг сходного качества, но чуть более высокой доходности. Они короткие, ликвидные, с маркет-мейкерами. В общем, если завтра нужно куда-то положить даже 10 и более млн.р., так чтобы при первой необходимости забрать на нужды — это сюда.
Короткие бумаги для коротких денег. Аналог вклада "до востребования"
Короткие бумаги для коротких денег. Аналог вклада "до востребования"

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

Подбрасываем монетку с помощью языка R

    • 25 апреля 2019, 22:09
    • |
    • Dmitryy
      Smart-lab премиум
  • Еще
Данное руководство, прежде всего рассчитано для начинающих или тех, кто и слухом не слышал о таком прекрасном языке как R. Из-за своих математических особенностей, этот язык очень удобен для моделирования и анализа различных данных, в частности поведение активов.


На СЛ я часто замечаю, как умные и опытные люди моделируют или вычисляют всё в экселе. Это тоже отличный инструмент, но я думаю им стоит обратить внимание на язык R и попробовать, ничего сложного, как оказалось, там нет. Конечно какие-то базовые навыки программирования всё же потребуются.


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

Настройка среды для запуска R

Сразу хочу сказать, что ничего сложного в настройке нет. Нужно скачать пару файлов и последовательно их установить. Никаких особых настроек и сложных выборов, качаем и ставим, всё заработает.



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

Разработчики Ethereum Name Service намерены конвертировать все домены в уникальные токены

4 мая состоится обновление решения Ethereum Name Service (ENS) и запуск нового реестра доменных имен. Все существующие домены будут конвертированы в невзаимозаменяемые токены (NFT-токены), которые можно будет хранить и переводить другим пользователям.

 

Апгрейд коснется 300 тысяч доменов .eth, а также .xyz и .luxe. Миграция доменных имен будет проходить вплоть до 4 мая 2020 года.

ENS позволяет привязывать адреса в сети Ethereum к вышеуказанным доменам для того, чтобы они были более «читабельными». Решение призвано сделать доступ к блокчейн-активам, децентрализованным приложениям и смарт-контрактам удобным с точки зрения пользовательского опыта.

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



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

Как я заработал свои первые 400 000 рублей в интернете

    • 20 апреля 2019, 16:14
    • |
    • anektar
  • Еще
Как я уже писал ранее, сейчас я вывел все деньги с рынка и сконцентировался на своих интернет-проектах. Доходность интернет-активов может составлять от 30 до 100% годовых. Цифра, как и на рынке, зависит от уровня рисков, которые вы готовы на себя брать, и уровня вашей экспертизы в области.

Это видео о том, как я пришел к онлайн-заработку и заработал свои первые 400 тысяч рублей в интернете (не на акциях, это было параллельно).


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

Судак-Тудак (робот)

Алгоритм данной торговли был описан уважаемым Гном  (https://smart-lab.ru/blog/499606.php) и, поскольку я являюсь любителем различных теорий Мартингейла и усреднения, написал робота по этой стратегии.

Подробно на алгоритме останавливаться не буду — читайте по ссылке у Гнома, там очень хорошо всё расписано.

Здесь — немного измененная реализация. Отличие в том, что позиции открываются не через равные промежутки цены, а чуть шире: еще должно прийти хотя бы минимальное подтверждение, что дальше не полетит (в данном случае использован вход обратно в канал Боллинджера, но это несложно поменять на что угодно).

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

Итак, представляю: «Судак-Тудак» Универсальный (одновременно для акций и фьючерсов).

Судак-Тудак (робот)

Если хотите добавить инструменты (а они добавляются в массив aTickerList), не забудьте вписать их данные в массивы:



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

Как торговать Unusual Option Activity на примере

Поскольку рынок опционов на 100% прозрачно то там относительно легко выявит и отследит крупные сделки.

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

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

И так наша цель следовать за крупным игроком.

Нам интересны только такие варианты крупных сделок.
1. Покупка акции и покупка Put опционов в качестве страховки (здесь Put опцион это стоп лосс).
2. Покупка Call-ов
3. Продажа акций и покупка Call опционов (здесь Call опцион это стоп лосс)
4. Покупка Put опционов

Отследит крупные опционные сделки можно много где, я пользуюсь бесплатной версией этого сервиса https://marketchameleon.com, там надо зарегистрироваться. Каждый день, за пол часа до закрытия рынка я открою https://marketchameleon.com/Reports/UnusualOptionVolumeReport



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

Доработал 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

Табличка NineNot для трейдера

    • 08 апреля 2019, 18:53
    • |
    • AlexChi
  • Еще

Введение


В воскресенье 7 апреля я перебирал полки в шкафах, просматривая старые бумаги и выбрасывая те, которые уже не пригодятся. За долгое время накопилось много бесполезного хлама, который надо было выбросить. Какие-то старые чеки, квитанции, ненужные распечатки. Так я перебирал бумаги одну за другой, сортируя, что пойдет на выброс, а что еще может когда-то пригодиться, и вдруг на пол упала до боли знакомая старая затертая картонка. Боже мой! Как давно это было! Вроде бы не так уж давно, но на самом деле целую трейдерскую жизнь назад! Воспоминания нахлынули на меня…

Затертая замусоленная старая табличка, обычный кусок картонки и неаккуратно приклеенная скотчем распечатка. Но сколько денег она мне помогла заработать, а сколько денег благодаря ей я не потерял!

Табличка NineNot для трейдера

                                       Табличка NineNot  (9 “не”).



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

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