Постов с тегом "Торговые роботы": 6050

Торговые роботы


торговый робот - это автоматизированная торговая система, принимающая решения и отдающая приказы на выполнение рыночных заявок на основе программного алгоритма.

В этом разделе вы найдете самые актуальные записи по теме торговые роботы.

Выставляю Новогодний Грааль

Привет всем
Я уже писал что я потратил 8 лет на поиск математической закономерности движения цены.
Подвожу итоги система работает и стабильна.
Грааль есть  и пусть мне докажут обратное.
Выставляю проект новой таблички в которой есть все правки за 8 лет.
Скажу сразу деньги в ДУ не беру, систему не продаю и продавать никогда не буду.(ни за какие деньги)… НУ ЕСЛИ ТОЛЬКО ЗА ОЧЕНЬ БОЛЬШИЕ..
Вот Вам грааль перед глазами, а что внутри его известно только мне.
Год был тяжелым..
Итоги года 
1.Допилил систему
2.Нашёл самолёт который искали год… Поисковая операция длилась 317 дней
Выставляю Новогодний Грааль

svecha-news.ru/novosti/statya/23048/

Выставляю Новогодний Грааль

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

Штурмовка. Проблемы/решения с Алго

    • 25 декабря 2021, 17:35
    • |
    • Enter1
  • Еще
Всем привет!

Вопросы только алго трейдерам, еще точнее, кто только алго торгует, а руки привязаны скотчем к столу или креслу.
Если часть моих вопросов/выводов Вам кажется наивной или простой, то прошу не относится к этому презренно, а дать свой конструктивный ответ, так как вполном алго я только 2-3 года из своих 14-ти лет в трейдинге. Буду рад, если Вы обновите свои мысли и я подчерпну для своего анализа!

Я понимаю так, что отдельные истории в активе могут быть обыграны только руками, логику нельзя сделать (можно сделать по объемному пробою или выходу в стратосферу, но тесты у меня показали низкую эффективность), отсюда и разговоры о том, что результаты алго ниже чем руками, по выводу неоправданно. Так как Вы можете стоять и в другую сторону. Спорить об отличии «алго vs руки» не буду. По всем правилам, боту фиолетово что происходит с рынком, растет он, пилит или падает. Ему неведомы высказывания. Он лишь работает по логике покупок, когда рынок растет и продает тогда, когда рынок снижается. В пиле снижается объем и пилим.



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

Нейросеть выбрала лучшие акции

На Санкт-Петербужской бирже, по мнению нейросети Investington, сейчас актуальны следующие позиции:

AA, оптимальная цена для покупки — 59.93$. Цель — 65.2723$. Вероятность роста 77.0%
HNP, оптимальная цена для покупки — 28.18$. Цель — 30.1995$. Вероятность роста 70.9%
FLWS, оптимальная цена для покупки — 22.36$. Цель — 23.8142$. Вероятность роста 70.3%


Что это такое? || Отчет

Хочу вернуться к истокам.

    • 23 декабря 2021, 17:06
    • |
    • 3Qu
  • Еще
Помнится, где-то до 2012 года у меня были простенькие автоматические ТС — несколько модифицированных МАшек, какие-то дополнительные расчеты — на вход в сделку всего-то 32 параметра, на выход немногим меньше. Параметры ТС наруливались за каких-то 2-3 дня. И я вполне понимал как и почему работает ТС.
Сейчас какие-то сложные расчеты, не оч понятные параметры с непонятным смыслом. Вроде, все пока работает, но уже изменить что-то или понять, почему это вдруг не сработало не оч реально.
И это как-то всё само образовалось — там упростили, здесь объединили, и если по отдельности это имело смысл, то итог — это уже нечто абстрактное, не оч поддающееся интерпретации и толкованию.
Вот, сегодня и подумал, что надо вернуться к истокам и сделать прозрачную ТС, с понятными функциями. Иначе, дальше можно вообще запутаться.
Сложно будет — за много лет многое из функционала уже объединено между собой, и срослось так, что не оч разорвешь. С одной стороны, быстро и удобно — ставишь готовый блок, и думать не надо — все уже изначально отлажено и сразу работает. А с другой…

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

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

Индикатор AT-obl_can для отрисовки наклонных уровней для quik
Обновил индикатор наклонных уровней
--[[
индикатор отрисовки наклонных уровней
Параметры:
delta - чувствиельность индикатора на волатильность в %
rep - количество повторений поиска конечного уровня
shif - сдвиг влево конечного бара 	
wt - признак наличия весового коэффициента =0 - без весового =1,2.. - свосовыми коф. чем ближе к концу тем больше
show=1,			
--]]
Settings=              
        {                          
            Name = "AT-obl_can",   -- название индикатора
            delta=2.0,             -- параметр индикатора  
            rep=10, 
            shif=0,		
            wt=1,	
            --hl=1,	
            show=1,
            line=                                     
                {                               
                    {  
                        Name = "ln1",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255, 0, 0)
                    },
					{  
                        Name = "ln2",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255, 0, 0)
                    }
                }
       }


function Init()

    vMin = 0
    vMax = 0
    vMinindex = 0
    vMaxindex = 0
    voldMinindex = 0
    voldMaxindex = 0

  return 2
end


function OnCalculate(index)

  rep = Settings.rep
  shif = Settings.shif
  wt = Settings.wt
  --hl = Settings.hl  

  sz = Size()-shif
  if Settings.show == 1 then   
  
  if index <= sz then 

  if index <= 1 then
    vMin = C(index)
    vMax = C(index)
    vMinindex = index
    vMaxindex = index
    voldMinindex = index
    voldMaxindex = index
    v = C(index)  
  else
         
    if voldMaxindex >= voldMinindex then
	 if vMin~=nil and C(index)~=nil then 
      if C(index) > (1 + Settings.delta/100)*vMin then
        vMin = C(index)  
        vMax = C(index) 
        vMaxindex = index
        voldMinindex = vMinindex 
        vFrom = vMinindex  
      else     
        if vMin > C(index) then
          vMin = C(index)
          vMinindex = index
          vFrom = voldMaxindex      
       else
          vFrom = vMinindex 
        end 
      end
	 end
    else
     
    if voldMaxindex <= voldMinindex then
	 if vMax~=nil and C(index)~=nil then 
      if C(index) < (1 - Settings.delta/100)*vMax then
        vMax = C(index) 
        vMin = C(index)  
        vMinindex = index
        voldMaxindex = vMaxindex
        vFrom = vMaxindex
      else 
        if vMax < C(index) then
          vMax = C(index)
          vMaxindex = index
          vFrom = voldMinindex    
       else  
          vFrom = vMaxindex          
        end
      end  
	 end
    end
    end
 
    --if vFrom~=nil then 
	--[[
    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
 
   if index == sz then
    for k = 1, 2 do
      vf = 1
	  vs = 0
	  if k == 1 then 
        if vMinindex < vMaxindex then
	      vf = vMinindex
		  vs = vMaxindex
		  up = 0
	    elseif vMinindex > vMaxindex then
	      vs = vMinindex
		  vf = vMaxindex
		  up = 1
	    end 	  
	  elseif k == 2 then  
        if voldMinindex < voldMaxindex then
	      vf = voldMinindex
		  vs = voldMaxindex
		  up = 0
	    elseif voldMinindex > voldMaxindex then
	      vs = voldMinindex
		  vf = voldMaxindex
		  up = 1
	    end 
	  end 
	  n = 0
	  xy = 0
	  x = 0
	  y = 0
	  xx = 0
	  m = 0
      for i = vf, vs do	 
	   if C(i) ~= nil then 
	    m = m +1
	    n = n + 1*(1+wt*m)
	    xy = xy + i*C(i)*(1+wt*m)
	    x = x + i*(1+wt*m)
	    y = y + C(i)*(1+wt*m)
	    xx = xx + i*i*(1+wt*m)
	   end 	
      end
	  if (n*xx - x*x) ~= 0 and n ~= 0 then 
        a = (n*xy - x*y)/(n*xx - x*x)	
        b = (y - a*x)/n	  
		
		for j = 1, rep do 		
	      n = 0
	      xy = 0
	      x = 0
	      y = 0
	      xx = 0
          m = 0 		  
		  for i = vf, vs do	 	
           if C(i) ~= nil then 		  
		    v = a*i + b
		    clc = 0
		    if up == 1 and C(i) >= v then 
	          clc = 1	  
		    end 
		    if up == 0 and C(i) <= v then 
		      clc = 1
		    end 
		    if clc == 1 then
			  m = m + 1
	          n = n + 1*(1+wt*m)
			  --[[
			  if up == 1 and hl == 1 then
                xy = xy + i*H(i)*(1+wt*m)			  
			  elseif up == 0 and hl == 1 then 
			    xy = xy + i*L(i)*(1+wt*m)
			  else --]]
	            xy = xy + i*C(i)*(1+wt*m)
			 -- end 	
	          
			  x = x + i*(1+wt*m)
              --[[   
			  if up == 1 and hl == 1 then
                y = y + H(i)*(1+wt*m)
			  elseif up == 0 and hl == 1 then 
			    y = y + L(i)*(1+wt*m)
			  else --]]
	            y = y + C(i)*(1+wt*m)
			 -- end 	
	          
	          xx = xx + i*i*(1+wt*m) 
		    end 
		   end 	
		  end --[[--]]
	      if (n*xx - x*x) ~= 0 and n ~= 0 and n >= 2 then 
            a = (n*xy - x*y)/(n*xx - x*x)	
            b = (y - a*x)/n	  		   --[[  --]]
		  end 
        end 
		for i = vf, sz do	 		  
		  v = a*i + b
		  if up == 1 and v >= C(vs) or up == 0 and v <= C(vs) then 
		    SetValue(i, k, v) 
		  end 
		end 		
 		
	  end 
	  
    end   	  
   end 
   end 
  end  
  end 
end

телеграм: t.me/autotradering




Сделаю индикатор

    • 23 декабря 2021, 11:47
    • |
    • Gomorra
  • Еще
Сделаю индикатор для любого символа, аналогичный этому:

disk.yandex.ru/d/F5kSkVYbq-5uBw

Нейросеть выбрала лучшие акции

На Санкт-Петербужской бирже, по мнению нейросети Investington, сейчас актуальны следующие позиции:

AA, оптимальная цена для покупки — 59.45$. Цель — 63.781$. Вероятность роста 74.6%
FGEN, оптимальная цена для покупки — 14.82$. Цель — 15.8776$. Вероятность роста 70.9%
NTLA, оптимальная цена для покупки — 126.24$. Цель — 136.2257$. Вероятность роста 69.5%


Результаты поста от 2021-11-24

ZG, купили по 56.95$. Продали 7 декабря по 61.3737$. Итоговый процент +7.77%
ACH, купили по 13.04$. Продали 7 декабря по 13.9199$. Итоговый процент +6.75%
OII, купили по 11.94$. Продали 22 декабря по 11.63$. Итоговый процент -2.6%

Итого: из 3 сигналов 2 оказались верными.


Что это такое? || Отчет

Как я потерял веру в человечество.

    • 22 декабря 2021, 15:59
    • |
    • 3Qu
  • Еще
Было это в году 11-м или 12-м. В эти годы Финам зачастил приглашать меня на свои семинары. Ходил только на 3 из них. Первый семинар в подвале Финама (они в основном там все проходили) был оч неплох. О чем конкретно, уже не помню, но в перерыве давали халявный кофе с булками и баунти-сникерсами. Такая теплая дружественная обстановка. В перерыве прибился ко мне какой-то мужичек, который что-то говорил. Задним числом, по косвенным признакам, подозреваю, что это был наш Хамстер.
Второй семинар был о том, как зарабатывать на рынке. Лектор телосложением напоминал маршала Жукова, но ничего конкретного сказано не было. На любой вопрос ответ был стандартный — это вы узнаете на курсе, который вы оплатите. Могли бы, хоть кофием угостить.
Третий семинар — это был монолог нашего АГ. До этого я его уже неск раз видел-слышал на семинарах РТС и конференциях по алготорговле. АГ у меня прочно ассоциировался с длинными хвостами.
На этот раз АГ рассказывал о своей торговой системе, не помню, приглашал ли он делать взносы и стать инвесторами.) Наверное сейчас, после многих лет, что-нибудь перевру, но основная суть его системы: проводим линию регрессии, определяем стандартное отклонение, задаем порог отклонения котировок от линии регрессии, и при превышении этого порога покупаем или продаем активы. Это называется — пороговое устройство. В теории сигналов — это самая простейшая и самая примитивная обработка, которую можно придумать.

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

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

Индикатор ZIGZAGLEVELS горизонтальных уровней
Индикатор горизонтальных уровней
--[[
параметры: 
Procent - процент зигзага 
--]]
Settings={
Name="ZIGZAGLEVELS",
Procent=5.0,
levels=6,
delta=0.2,
    line=                                     
                {  
					{  
                        Name = "cur1",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 255)
                    },				
					{  
                        Name = "cur2",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 255)
                    },
					{  
                        Name = "cur3",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 255)
                    },
					{  
                        Name = "cur4",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 255)
                    },				
					{  
                        Name = "cur5",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 255)
                    },
					{  
                        Name = "cur6",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 255)
                    }					
                }
}

function Init()
  
  y1 = nil
  y2 = nil
  x1 = 1
  x2 = 1
  levelsy={}
  levelsx={}  
  cntlevels=0
      	
  return 6
  
end

function OnCalculate(index)

  de = Settings.Procent
  levels = Settings.levels
  delta = Settings.delta
  sz = Size()

  vl = C(index)
  if index <= 1 then 
	y1 = vl
    y2 = vl
	cntlevels=0
  else   
	  if C(index) > y1*(1+de/100) and y1 < y2 then 
	    x2 = x1
	    y2 = y1	
	    x1 = index 
	    y1 = C(index)	        
        cntlevels = cntlevels + 1		
		levelsx[cntlevels]=x2
	    levelsy[cntlevels]=y2        
	  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)	  		
		cntlevels = cntlevels + 1
		levelsx[cntlevels]=x2
	    levelsy[cntlevels]=y2		
	  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 sz == index then 
   cnt = levels
   for k = 1, cnt do  
	for i = 1, index  do        
	  SetValue(i, k, nil)
    end     
   end 
  
  -- cnt = 3
   k = 0
   for j = cntlevels, 1, -1 do
    d = 0
    if levelsy[j] > C(index) then 
      d = levelsy[j] - C(index)
	end 
    if levelsy[j] < C(index) then 
      d = C(index) - levelsy[j]
	end 	
	if d < delta*C(index) and d > 0 then 
	 k = k + 1
	 if k <= cnt then 	   
	   y = levelsy[j]   
	   for i = levelsx[j], index  do        	     
	     SetValue(i, k, y)
       end   
	 end
	end 
   end

  --[[
   k = 0
   for j = cntlevels, 1, -1 do
    d = 0
    if levelsy[j] < C(index) then 
      d = C(index) - levelsy[j]
	end 	
	if d < 0.2*C(index) and d > 0 then 	 
	 if k <= cnt then 
	   k = k + 1
	   y = levelsy[j]   
	   for i = levelsx[j], index  do        	     
	     SetValue(i, k+3, y)
       end   
	 end
	end 
   end
   --]]
   
  end   

 
  
end

телеграм: t.me/autotradering

Анализ лчи-сделок makdi067

Имеется красивейшая эквити:
Анализ лчи-сделок makdi067
Эта эквити интересна не только тем, что у неё высокий шарп, но и тем, что она получена не на копеечном счете.
На стартовые 30 млн заработано 11 млн рублей.

Это опционная торговля, которая велась по трём базовым активам: RI, Si, BR.

Что я сделал для анализа? Скачал все сделки за конкурс и немного подшаманил файлик.
Видимо, там были открытые позиции на начало конкурса ну и остались открытые на момент окончания.
Чтобы всё закрывалось в ноль для финреза, я добавил в начала и в конец файла несколько строк с виртуальными сделками.

Тогда получилась такая картина.
Финрез по бренту (опционы+БА) порядка 230 долларов.
Финрез по сишке (опционы+БА) порядка 650 тыс рублей.
Финрез по ришке (опционы+БА) порядка 7,5 млн пунктов.
То есть можно сказать, что вся эквити получена на ришке.

Что меня интересовало?
1. Как получено?
2. Насколько устойчиво и насколько масштабируемо?



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

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