Избранное трейдера anvil

по

1-е место лучший портфельный инвестор лчи

Всем привет,
До последних секунд не верил что смогу победить, проверял страничку по много раз в день.
Радости примерно в 5+ раз больше чем если бы заработал эти деньги на бирже.
Удивлён что никто другой не захотел забрать халявные 250тр, для этого мне понадобилось подержать fxrb на 10млн и fxru на 1.5 млн.
185 тр прибыли на etf хватило для первого места, и я ничего не менял в своей стратегии, я бы их и так держал.
В конце немного сребалансил портфель.


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

Индикатор срыва "стопов" толпы реализован

Закон Хеопса гласит: «Ничто и никогда не делается в срок и в пределах сметы». На этот раз не тот случай, как обещал в прошлом топике https://smart-lab.ru/blog/571855.php успел на неделе… Можно пользоваться индикатором в версии Jatotrader 2.9.2.
Индикатор срыва "стопов" толпы реализован
Видео индикатора здесь.

Лучше скачать обновление (не заплатку), т.к. стандартные настройки для Si и BR сохранены в конфигурации.

Если вы используете Jatotrader для визуализации и анализа сделок участников ЛЧИ и при загрузке сделок по акциям (например, по AFKS) возникает ошибка, исправьте в файле symbols.dat в объекте AFKS поле :minimum-price-step c 0.005 на 0.001, (короче, на актуальное значение шага цены) и перезапустите программу.

Если вы устанавливаете впервые Jatotrader, то
1. Cкачайте сначала установщик и запустите его.
2. Затем скачайте обновление, распакуйте его поверх старых файлов в папку Jatotrader (с заменой).
3. Иногда нужно ставить «заплатку», если она отличается от обновления по дате (в ней, как правило, устраняются ошибки).



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

Индикатор срыва "стопов" толпы

Посмотрим, как это выглядит. В этом видео результаты труда и примеры индикатора для RI, Si и BR.


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

Робот по уровням

Робот по уровням. полуавтомат. Все уровни, стопы и тейки выставляются мышкой на графике, но можно и цифрами. При желании могу добавить каналы, трендовые линии, кластеры, дельту. Скрипт в открытом виде

Система работы: 

1. Выставляете уровни входа в шорт или в лонг, или все одновременно, мышкой или цифрами. Нажимаете кнопки какие уровни будут активны. 

2. Выставляете уровни стопов, активируете их нажатием кнопок.

3. Выставляете уровни тейков, активируете их нажатием кнопок.

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

Робот по уровням


всего торгуют 53 робота

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

Индикатор, показывающий тренд

индикатор рисует линию
работать с ним нужно так:
если цена ниже линии, то перепроданность — нужно покупать, если сверху, то перекупленность — продавать
можно построить несколько трендов за разные периоды и делать покупки тогда, когда сигналы совпадают
PS:
кидайте тимофейчики

Индикатор, показывающий тренд





Settings={
Name="MNK",
period=200,
line=                                     
                {  
					{  
                        Name = "cur1",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(255,0, 0)
                    }
                }

}
--[[

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

назначение:
построение тенденции

использовался:
метод наименьших квадратов (аппроксимация линией)

--]]

function Init()
  
  return 1
end

function OnCalculate(index)
    
  sz = Size()
  n = Settings.period
       
  if (index ~= sz) then
    return nil
  else  
   y = nil  
   if index-n > 0 then
    a1 = 0
	a2 = 0
	a3 = 0
	a4 = 0
    for i=index-n+1, index do  

	  a1 = a1+i*C(i)
	  a2 = a2+i
	  a3 = a3+C(i)
	  a4 = a4+i*i
	
    end  
	
	if((n*a4 - a2*a2) ~= 0) then
	 a = (n*a1 - a2*a3)/(n*a4 - a2*a2)
	 b = (a3 - a*a2)/n
    
     for j=index-n+1, index do  
      y = a*j + b
      SetValue(j, 1, y) 
     end	
    end 
   end 	
   return y
  end
 
  
end

как производство танков и воровство чиновников убивает российские авиакомпании и туризм в Питере.

    • 10 октября 2019, 19:53
    • |
    • gluhov
  • Еще
Есть такой интересный рынок — авиабилеты. Пассажиры на нем очень чувствительны в цене — 10% разницы и пассажир уже летит другой авиакомпанией.

И вот история.

Питеру как то удалось договорится с Москвой что для почти всех стран мира будет безвизовый режим (так называемая бесплатная электронная виза).
Но не все просто — туристов в город надо как то привести. А для этого нужно чтобы много авиакомпаний из Европы например летали в Питер.

Все неплохо и Пулково даже на это согласилось. Но взвыли российские авиакомпании. Они ведь понимают что у них теперь отнимают множество рейсов — ибо европейские дискаунтеры не только туристов в питер возить будут но и питерцев в европу и попросили их не пускать.

Собственно а почему он не могут конкурировать с дискаунтерами -  топливо и персонал в России то очень дешевые. На самолеты сейчас не платится НДС — они наоборот должны зарабатывать.

А все просто если европейские дискаунтеры платят в среднем 15% с билета в качестве налогов, аэрофлот отдает почти 45%.

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

Python фреймворк для алготрейдинга (VNPY)

Перевел тут (в автоматическом режиме) питонячий китайский фреймворк для алготрейдинга.

Python фреймворк для алготрейдинга (VNPY)

Что он может:

1) Тестить и пускать в лайв страты (а-ля plug and play)
2) Есть коннекторы к крипте, каким-то китайским брокерам, IB, Alpaca
3) UI на pyQT5
4) Качать/хранить котировки

в общем все что надо для базового (и не только) алготрейдинга. все это бесплатно и под MIT лицензией

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

vnpy — лучшее из python open source для трейдинга что я видел. Понятная и логичная структура, ожидаемая архитектура, хорошо написанный UI. Часть логики коннекторов написана на C++ (поэтому гитхаб и говорит что оно С++, но это не так)



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

Кто не понял, тот поймёт или Шаман в столицу больше не идёт.

Миллиардер Дерипаска подал иск против ведущих газет Британии в суд Краснодара.
--------------------
Rivian получил заказ от Amazon на 100 тысяч электрических фургонов, поставки между 2021 и 2024.
--------------------
Tesla Model 3 вытеснила Volkswagen Polo с первого места по продажам легковых автомобилей в Нидерландах — 10.426 шт с начала года vs 9.580 шт
--------------------
Daimler отказывается от разработки двигателей внутреннего сгорания, чтобы сосредоточиться на электромобилях. Вероятно, новый шестицилиндровый движок для E- и S-Class будет последним.
--------------------
Около 25% неликвидных трехкомнатных квартир в столице России покупают выходцы из Среднеазиатского и Кавказского регионов.
--------------------
Китайская компания LONGi пересмотрела планы по производству солнечных панелей мощностью до 36 ГВт в 2019 году и 65 ГВт в 2020. Суммарно это мощность 25 Чернобыльских АЭС.

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

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

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

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

--[[
параметры: 
Procent - процент зигзага 
--]]
Settings={
Name="ZIGZAGPROF",
Procent=1,
    line=                                     
                {  
					{  
                        Name = "cur1",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 0)
                    },
                    {  
                        Name = "cur2",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 255)
                    }							
                }
}

function Init()
  
  y1 = nil
  y2 = nil
  x1 = 1
  x2 = 1
    
  return 1
  
end

function OnCalculate(index)

  de = Settings.Procent
  
  delt = 0.01

  vl = C(index)
  if index == 1 then 
	y1 = vl
    y2 = vl
  else   
	  if C(index) > y1*(1+de/100) and y1 < y2 then 
	    x2 = x1
	    y2 = y1	
	    x1 = index 
	    y1 = C(index)	        
	  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 
	    x2 = x1
	    y2 = y1
	    x1 = index 
	    y1 = C(index)  		
	  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
--]]
    
    lev = nil
	if x1 ~= x2 then  
     
	
	k = (C(x1)- C(x2))/(x1- x2)    
	maxd = 0
    for i = x2, x1  do
      
	  lev = i*k + C(x1) - x1*k  		
	  
	  if  C(x2) > C(x1) and lev <= H(i) 
	  then 
	    if maxd < H(i) - lev  then 
          maxd = H(i) - lev 
		end
        --maxd = 0.5		
      end 
	  
      if  C(x2) < C(x1) and lev >= L(i) 
	  then 
	    if maxd > L(i) - lev  then 
          maxd = L(i) - lev
		end 
		--maxd = -0.5
      end 	  
	  
    end   	
      
    lev = nil 
    --[[if x1 < index 
	  and 
	  (
	  C(x2) > C(x1) and C(x1) < C(index) 
      or 
      C(x2) < C(x1) and C(x1) > C(index) 	  
	 )
	then --]]
      lev = 
	    index*k + C(x1) - x1*k + 
		maxd
	--end   
    
	  
	  
	--[[  
	
	map = 10
	lev = 0
	if index-map+1 > 0 then 
      for i = index-map+1, index  do
        lev = lev + C(i)
      end   		
	  lev = lev/map
	  ma = lev
	end
	
	map = 30
	lev2 = 0
	if index-map+1 > 0 then 
      for i = index-map+1, index  do
        lev2 = lev2 + C(i)
      end   		
	  lev2 = lev2/map
	  ma2 = lev2
	end	

	
	if 
	  C(x2) > C(x1) and C(x1) < C(index) and C(index) > lev and C(index) - C(x1) > C(index)*delt
	  or 
	  C(x2) > C(x1) and C(x1) < C(index) and C(index) > lev2 
	then 
	  lev = C(x1)--*(1-delt)
	  prev = lev        
	else  	
	  if 
	    C(x2) < C(x1) and C(x1) > C(index) and C(index) < lev and C(x1) - C(index) > C(index)*delt
	    or
	    C(x2) < C(x1) and C(x1) > C(index) and C(index) < lev2 
	  then 
	    lev = C(x1)--*(1+delt)
	    prev = lev
	  else
        lev = lev2  
	  end		
    end	

	if 
	  C(x1) > C(x2) and ( lev < C(index) or prev == C(x2) )
	then 
	  lev = C(x2)--*(1+delt)
	  prev = lev
	end
	
	if
	  C(x1) < C(x2) and ( lev > C(index) or prev == C(x2) )
	then 
	  lev = C(x2)--*(1-delt)
	  prev = lev
	end	
	
    if C(x1) < C(x2) and ( lev < C(index) or prev == C(x1) )
	then         	  
	  lev = C(x1)
	  prev = lev
    end
	  
    if C(x1) > C(x2) and ( lev > C(index) or prev == C(x1) ) 
	then         	  
	  lev = C(x1)
	  prev = lev       		
	end
	 --]] 

	
  end   
  
  return  lev
 
  
end



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