Избранное трейдера Манул Кот

по

Бесплатный сайт для учёта инвестиций

В 2018 открыл себе брокерский счёт и начал потихоньку разбираться в инвестициях. Сразу начал вести всю историю своих сделок в Excel-файле и считал в нём доходность. Со временем пришёл к тому, что расчёты нужно как-то автоматизировать.

Сначала пробовал разные платные сервисы вроде интелинвеста и блэктерминала, но их платность и недостаток функционала заставили меня делать что-то самому.

В январе 2020 начал писать программу для учёта инвестиций. Т.к. опыт программирования у меня в основном на php, писать начал в виде сайта.

Сегодня 2021 год и моему сайту уже больше года. Вот он

https://izi-invest.ru

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

1. Создаём портфель
2. Загружаем в него отчёт вашего брокера (или вводим сделки вручную)

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

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

1. Самая популярная теория Сороса может быть упрощена до трех пунктов:
• Мы пытаемся понять мир, а также изменить его для извлечения выгоды
• Наше действие по осознанию мира, является частью этого мира, частью реальности, которую мы пытаемся понять
• Поэтому, полностью понять окружающий мир – невозможно
2. Это означает то, что никто не может обладать полноценным знанием, что делает все наши действия и решения несовершенными.
3. Наше видение реальности оказывает влияние на наши действия, что меняет реальность, делая наше изначальное знание о ней, неверным.
4. Все это приводит к разрыву между реальностью и нашим представлением о ней. Мир слишком сложен и многогранен, чтобы один человек смог полностью его осознать. Поэтому мы все используем упрощения – теории и обобщения.
5. На финансовых рынках эта разница между реальностью и мнением о ней к разрыву между ценами и фундаментальными факторами, что создает возможности для заработка. Эту теорию хорошо видно на картинке ниже:
Попалось несколько цитат Сороса о работе на рынке и его подходе. Как мне показалось, некоторые из них особенно заслуживают внимания, и их перевод вы найдете ниже:



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

Практический Трейдинг. Глубина Анализа Истории. Запихни в Меня Поглубже!



«Другой же из учеников Его сказал Ему: Господи! позволь мне прежде пойти и похоронить отца моего. Но Иисус сказал ему: иди за Мною, и предоставь мертвым погребать своих мертвецов» (Мат. 8: 21-22).

Практический Трейдинг. Глубина Анализа Истории. Запихни в Меня Поглубже!



     Как Вы понимаете, пришло время поговорить о физиологии.

     Как нам всем известно, ещё со Школы (Биржевой Торговли), самые возбудимые и чувственные места у Неё (у Рыночной Реальности) расположены неглубоко от поверхности. Ну просто так природой заведено. Чтобы Каждый (Трейдер) мог всегда хорошенько оттестировать Каждую (Систему). С удовольствием. Если вдруг приспичит им обоим. Ну или почти Каждый почти Каждую...

     Частенько доводится читать вопросы наших Уважаемых Читателей Смартлаба — где можно найти потиковую историю торгов с 1812 года?
Когда спрашиваю — ЗАЧЕМ??? следует ответ — чтобы запихнуть ей (Истории) свой тестер поглубже и как следует пошуровать им там

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

Правила игры «в биржу»



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

         Пара оговорок. Под «игрой на ничью» понимается согласие на доходность в районе инфляции, может быть на 2-3% выше, но не более.

         Также напомним, что индустрия инвестирования живет с того, что различными способами переписывает часть состояния инвесторов на себя.В глобальном масштабе премия индустрии это то, что она изъяла у всех инвесторов планеты Земля. При этом владельцы и работники индустрии могут сами выступать как инвесторы, но давайте не путать роли.

         Есть еще две трубы, связывающие «биржу» с «реальным миром». Первую трубу любят переоценивать, это доходность, которая образуется где-то, в туманной дымке реального сектора, от того, что капитал же работает. Но не будем переоценивать – на весь класс долговых активов это околонулевая реальная доходность, на долевые в пределах 5%, на коммодити отрицательная. Вторую трубу недооценивают, оттуда, наоборот, выливается – это налоги и черные лебеди а ля рейдеры, социалисты и т.п. Какая труба сыграет большую роль, зависит от класса активов, лютости конкретного государства и просто от удачи. Можно упростить, и даже считать систему закрытой, без этих труб: в такой модели проще выделить нашу циничную правду.  



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

Жизнь с капитала для самсебепенсионеров. Почему 4%? что такое SWR?


Жизнь с капитала для самсебепенсионеров. Почему 4%? что такое SWR?



Тема на самом деле охватывает не только молодых (те самые на пенсию в 25) пенсионеров, а всех, кто планирует перестать работать хотя бы в 65. Но при этом либо не рассчитывает на государственное пенсионное обеспечение, либо оно даже в сладких снах не будет замещать всех необходимых расходов. Таких большинство по всему миру, коэффициент замещения среднего дохода в 40% считается хорошим результатом даже в процветающих странах. У нас же на такой коэффицент могут рассчитывать только люди с белым доходом тысяч до 40 рублей в сегодняшних деньгах. Если вы зарабатываете сегодняшние тысяч 80, то это дай бог будет 30%. А если больше сотни, то там есть потолок пенсионных прав (тысяч 40-45) и нужно что-то делать самому.

Вроде это понимают даже смартлабовцы ;)

Наверное кто-то слышал про правило 4%. Снимаем значит по 4% от портфеля и капитал никогда не кончится. Эта же цифра называется SWR (Safe Withdrawal Rate) — безопасная ставка снятия.



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

Python. Импорт данных OHLCV из файла CSV.

    • 02 ноября 2020, 22:55
    • |
    • 3Qu
  • Еще

Простите за банальность, работа с данными начинается с их получения из внешнего источника. Мы будем получать их из CSV-файла архива котировок, скачанного с сайта Финам. Для работы с другими источниками вам надо будет немного изменить программу.

Я уже давно не работаю непосредственно с CSV, и храню все данные в БД SQLite. Поначалу я хотел написать программу чтения CSV с нуля, но выяснилось, что я уже подзабыл как это делается, однако нашелся рояль в кустах — моя старая библиотека читающая данные из CSV-файла непосредственно в программу. Ее мы и будем использовать.
Собственно, Python и ориентирован на работу с библиотеками, и не нужно знать что там внутри, важно только уметь с ними работать, а сами программы с использованием библиотек станут очень простыми.
Для начала качаем с Финам историю в формате CSV-файла следующего вида:

<TICKER>,<PER>,<DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>
SPFB.Si-12.20,1,04/05/20,10:00:00,76900.0000000,76990.0000000,76900.0000000,76990.0000000,3
SPFB.Si-12.20,1,04/05/20,10:06:00,77695.0000000,77695.0000000,77400.0000000,77400.0000000,8
SPFB.Si-12.20,1,04/05/20,10:08:00,77781.0000000,77781.0000000,77700.0000000,77750.0000000,30
SPFB.Si-12.20,1,04/05/20,10:13:00,78088.0000000,78098.0000000,78088.0000000,78098.0000000,6
SPFB.Si-12.20,1,04/05/20,10:14:00,78100.0000000,78100.0000000,78100.0000000,78100.0000000,1


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

Zigzag_MNK

Zigzag_MNK

Settings=              
        {                          
            Name = "Zigzag_MNK",   -- название индикатора
            delta=1.0,                  -- дельта зигзага 
            showperiod=5000,--колич баров за которые строится			
            line=                                     
                {                               
                    {  
                        Name = "zigzagline2",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    }					
                }
       }


function Init()

    vMin = 0
    vMax = 0
    vMinindex = 0
    vMaxindex = 0
    voldMinindex = 0
    voldMaxindex = 0
	
    a1 = 0
	a2 = 0
	a3 = 0
	a4 = 0
	cind = 0
	v = null
	vFrom=0
	
	vsl = 0

  return 1
end

function calcmnk(index, vFrom, a1, a2, a3, a4, cind, vMinindex, vMaxindex)
  v = null 
  v2 = null 
  showperiod = Settings.showperiod
  if index-1 > 1 and vFrom > 1 and index > Size()-showperiod then 
  
        --[[
        for i=vFrom, index-1 do 
	     a1 = a1+i*C(i)
	     a2 = a2+i
	     a3 = a3+C(i)
	     a4 = a4+i*i	
        end  

         for i=index, index do 
	      a01 = a1+i*C(i)
	      a02 = a2+i
	      a03 = a3+C(i)
	      a04 = a4+i*i	
         end  		
		
        n = index - vFrom + 1	   
	   
	    if((n*a04 - a02*a02) ~= 0) then
	     a = (n*a01 - a02*a03)/(n*a04 - a02*a02)
		 b = (a03 - a*a02)/n		
         v = a*index + b		 
        end 
		--]]

         a1 = 0
	     a2 = 0
	     a3 = 0
	     a4 = 0
		 
		vto = index 
		 if vMinindex < vMaxindex then  
		   vto = vMaxindex 
		 end 
		 if vMinindex > vMaxindex then  
		   vto = vMinindex
		 end 		
		 
        for i=vFrom, vto do 
	     a1 = a1+i*C(i)
	     a2 = a2+i
	     a3 = a3+C(i)
	     a4 = a4+i*i	
        end  	
		
        n = vto - vFrom + 1	   
	   
	    if((n*a4 - a2*a2) ~= 0) then
	     a = (n*a1 - a2*a3)/(n*a4 - a2*a2)
		 b = (a3 - a*a2)/n		
         v = a*index + b		 
        end

	
		vmindel = 0
        for i=vFrom, vto do 
		 y = a*i + b	
		 if vMinindex < vMaxindex and y - C(i) > vmindel then  
		   vmindel = y - C(i)
		 end 
		 if vMinindex > vMaxindex and C(i) - y > vmindel then  
		   vmindel = C(i) - y
		 end 		 
        end  

        y = a*index + b	
		 if vMinindex < vMaxindex then  
		   v2 = y - vmindel
		 end 
		 if vMinindex > vMaxindex then  
		   v2 = y + vmindel
		 end 
		 
		 if vMinindex < vMaxindex and O(index) < v2 and vsl == 0 then  
		   vsl = C(vMaxindex)
		   v2 = vsl
		 end 
		 if vMinindex > vMaxindex and O(index) > v2 and vsl == 0 then  
		   vsl = C(vMinindex)
		   v2 = vsl
		 end 
		 
		 if vsl ~= 0 then
		   v2 = vsl
		 end 
		 
	
		 if vMinindex < vMaxindex and O(index) > vsl and vsl ~= 0 then  
		   vsl = 0 --v2 = y - vmindel
		 end 
		 if vMinindex > vMaxindex and O(index) < vsl and vsl ~= 0 then  
		   vsl = 0 --v2 = y + vmindel
		 end 
  
	 --[[
  --]]		 

	
        cind = index  
  end 		
  return v, v2	
end 


function OnCalculate(index)
  
  v = null
  v2 = null 
  if index < 3 then
    vMin = C(index)
    vMax = C(index)
    vMinindex = index
    vMaxindex = index
    voldMinindex = index
    voldMaxindex = index
  else
   --if index > 18000 then         
    if voldMaxindex >= voldMinindex then
      if C(index) > (1 + Settings.delta/100)*vMin then
        vMin = C(index)  
        vMax = C(index) 
        vMaxindex = index
        voldMinindex = vMinindex 
        vFrom = vMinindex  
		
		vsl = 0		
		
        a1 = 0
	    a2 = 0
	    a3 = 0
	    a4 = 0
		v, v2 = calcmnk(index, vFrom, a1, a2, a3, a4, cind, vMinindex, vMaxindex)
		
		--[[
        for i=vFrom, index-1 do 
	     a1 = a1+i*C(i)
	     a2 = a2+i
	     a3 = a3+C(i)
	     a4 = a4+i*i	
        end  

         for i=index, index do 
	      a01 = a1+i*C(i)
	      a02 = a2+i
	      a03 = a3+C(i)
	      a04 = a4+i*i	
         end  		
		
        n = index - vFrom + 1	   
	   
	    if((n*a04 - a02*a02) ~= 0) then
	     a = (n*a01 - a02*a03)/(n*a04 - a02*a02)
		 b = (a03 - a*a02)/n		
         v = a*index + b		 
        end 
	
        cind = index  		
		   	--]]
      else     
       if vMin > C(index) then
          vMin = C(index)
          vMinindex = index
          vFrom = voldMaxindex      
      --  else
      --    vFrom = vMinindex 
        end
	
	
	    v, v2 = calcmnk(index, vFrom, a1, a2, a3, a4, cind, vMinindex, vMaxindex)
	
	 --[[
		if cind ~= index then
         for i=index-1, index-1 do 
	      a1 = a1+i*C(i)
	      a2 = a2+i
	      a3 = a3+C(i)
	      a4 = a4+i*i	
         end  
		end 
		
         for i=index, index do 
	      a01 = a1+i*C(i)
	      a02 = a2+i
	      a03 = a3+C(i)
	      a04 = a4+i*i	
         end  		
		
        n = index - vFrom + 1	   
	   
	    if((n*a04 - a02*a02) ~= 0) then
	     a = (n*a01 - a02*a03)/(n*a04 - a02*a02)
		 b = (a03 - a*a02)/n		
         v = a*index + b		 
        end 		
			
		cind = index  
		   	--]]
      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 = vMaxindex
		
		vsl = 0
		
        a1 = 0
	    a2 = 0
	    a3 = 0
	    a4 = 0
		v, v2 = calcmnk(index, vFrom, a1, a2, a3, a4, cind, vMinindex, vMaxindex)
		
	--[[
        for i=vFrom, index-1 do 
	     a1 = a1+i*C(i)
	     a2 = a2+i
	     a3 = a3+C(i)
	     a4 = a4+i*i	
        end  		
	   
         for i=index, index do 
	      a01 = a1+i*C(i)
	      a02 = a2+i
	      a03 = a3+C(i)
	      a04 = a4+i*i	
         end  		
		
        n = index - vFrom + 1	   
	   
	    if((n*a04 - a02*a02) ~= 0) then
	     a = (n*a01 - a02*a03)/(n*a04 - a02*a02)
		 b = (a03 - a*a02)/n		
         v = a*index + b		 
        end 	
		
        cind = index  			
		   	--]]
      else 
        if vMax < C(index) then
          vMax = C(index)
          vMaxindex = index
          vFrom = voldMinindex    
       -- else  
         -- vFrom = vMaxindex          
        end
		
		v, v2 = calcmnk(index, vFrom, a1, a2, a3, a4, cind, vMinindex, vMaxindex)

--[[
     	if cind ~= index then
         for i=index-1, index-1 do 
	      a1 = a1+i*C(i)
	      a2 = a2+i
	      a3 = a3+C(i)
	      a4 = a4+i*i	
         end  
		end 
		
         for i=index, index do 
	      a01 = a1+i*C(i)
	      a02 = a2+i
	      a03 = a3+C(i)
	      a04 = a4+i*i	
         end  		
		
        n = index - vFrom + 1	   
	   
	    if((n*a04 - a02*a02) ~= 0) then
	     a = (n*a01 - a02*a03)/(n*a04 - a02*a02)
		 b = (a03 - a*a02)/n		
         v = a*index + b		 
        end 	
		
		cind = index  
      	--]]	
      end  
    end
    end
  -- end 
	
	
	--[[
        a1 = 0
	    a2 = 0
	    a3 = 0
	    a4 = 0
        for i=vFrom, index do 
	     a1 = a1+i*C(i)
	     a2 = a2+i
	     a3 = a3+C(i)
	     a4 = a4+i*i	
        end  
		
        n = index - vFrom + 1	   
	   
	    if((n*a4 - a2*a2) ~= 0) then
	     a = (n*a1 - a2*a3)/(n*a4 - a2*a2)
		 b = (a3 - a*a2)/n		
         v = a*index + b		 
        end 	
		
		--]]
 
 --[[
    for i = vFrom, index do
      k = (C(index)- C(vFrom))/(index- vFrom);
      v = i*k + C(index) - index*k
      SetValue(i, 1, v)
    end   --]]
 
  end   
  
  return v2

end

ТЕОРИЯ ИГР

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

ТЕОРИЯ ИГР.
Это математический Метод поиска
оптимального алгоритма Вашего поведения,
в условиях конфликта интересов,
с результатом больше или равным «0».
⁠Неопределенность исхода игры -
вот основной мотив для участников и болельщиков.

1. КОМБИНАТОРНЫЕ ИГРЫ.
Признаки. Количество вариантов (комбинаций) огромно, но ограничено.
ПРИМЕРЫ:
ГО — количество комбинаций — 10 в 171 степени,
Шахматы — количество комбинаций — 10 в 120 степени,
Шашки — количество комбинаций — 10 в 20 степени,
Крестики-нолики — количество комбинаций — 49.
РЕШЕНИЕ. Комбинаторика (изучение всех комбинаций и перестановок фигур).
«Компьютеры смогли запомнить все комбинации и стали выигрывать у людей».

2. АЗАРТНЫЕ ИГРЫ (hasard — от фр. случай).
Признаки. Огромное количество случайных факторов.
Исход игры не зависит от действий игрока.



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

Мои итоги алготорговли за октябрь 2020г.

    • 31 октября 2020, 20:36
    • |
    • zam
  • Еще
Привет всем! И традиционно подведу свои итоги алготрейдинга за октябрь 2020г.
В торговле фьючерсы: Si, Eu, RI, SR.
Алготорговля ведется только по тренду. 

За октябрь 2020г. портфель роботов заработал +10,95%
 
Мои итоги алготорговли за октябрь 2020г.
С начала года портфель роботов +59,66 (у Открытия немного по другому считается доходность, зависит от средних активов)
Мои итоги алготорговли за октябрь 2020г.

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

Плачу за обед/ужин с собой 5000 руб! Ищу спецов из СПб.

Здарова специалисты! Хочу угостить обедом/ужином специалистов в следующих областях и заплатить им за потраченное на меня время:

👉5000руб/2ч тимлид веб-разработка, пхп, бэкенд. Опыт от 10 лет.
👉5000руб/2ч непосредственный разработчик приложений android/IOS с опытом успешного запуска внедрения сложных приложений. Опыт от 5 лет.
👉5000руб/2ч фронтенд девелопер/верстала. опыт работы на современных фрейморках lavarel, vue.js, angular, react и проч хрень. Опыт от 10 лет.
👉5000руб/2ч миллиардер

Для начала норм будет.
Какие еще специалисты имеются?:)
Пишите комментарии, рассказывайте о себе.

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