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

по

Пошаговая видеоинструкция - как создать свой индикатор в ТСЛаб с помощью кубиков и кода на C# (на примере индикатора СПРЕда)

Раньше на Смарт-Лабе я уже рассказывал, как можно создать свой индикатор в ТСЛаб (ссылка>>>). Но, как говориться, лучше один раз увидеть, чем семь раз услышать. Поэтому специально для тех, кому удобнее смотреть чем читать провёл две онлайн-встречи в ходе которых подробно рассказал и показал весь процесс создания кубиков. Чтобы не пропускать анонсы наших бесплатных онлайн-встреч (обычно проводятся в среду) подписывайтесь на телеграм-канал ( t.me/TradingLaboratory )

На первой встрече мы создавали кубик СПРЕДа (методом деления) с помощью кубиков — это удобно для тех, кто не умеет использовать язык C#. Однако, как выяснилось, удобно это и для тех, кто собирается писать код и хочет заранее наметить план создания кубика.

Вот как выглядит результат создания СПРЕДа

Пошаговая видеоинструкция - как создать свой индикатор в ТСЛаб с помощью кубиков и кода на C# (на примере индикатора СПРЕда)


Вот видео: Как создать свой кубик (индикатор) для ТСЛаб с помощью кубиков (

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

zigzag с уровнями на lua под quik

индикатор:
https://dropmefiles.com/yZqHe
Модифицировал zigzag в плане добавления ближайших уровней к текущей цене:
zigzag с уровнями на lua под quik
код индикатора:
Settings=              
        {                          
            Name = "Zigzag3",   -- название индикатора
            delta=2,                  -- параметр индикатора                          
            line=                                     
                {                               
                    {  
                        Name = "zigzagline3",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(120,90, 140)
                    },
                    {  
                        Name = "upline",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    },
                    {  
                        Name = "lowline",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 255)
                    }					
                }
       }


function Init()

  vMin = 0
  vMax = 0
  vMinindex = 0
  vMaxindex = 0
  voldMinindex = 0
  voldMaxindex = 0
  upval = 9999999
  lowval = 9999999  
  upindex = 1
  lowindex = 1  
  veu = nil
  vel = nil

  return 3
end


function OnCalculate(index)
  local printz = 0
  vsize = Size()	  
  
  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 > C(vMinindex) - C(vsize)) then
		  upval = C(vMinindex) - C(vsize)
		  upindex = vMinindex
		end
        if (C(vMinindex) < C(vsize)) and (lowval > C(vsize)- C(vMinindex)) then
		  lowval = C(vsize) - C(vMinindex)
		  lowindex = vMinindex
		end		
		
		
      else     
        if vMin > C(index) then
          vMin = C(index)
          vMinindex = index
          vFrom = voldMaxindex      
          vTo = index
          printz = 0
        else
          vFrom = vMinindex 
          vTo = index
          printz = 0
        end 
      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 > C(vMaxindex) - C(vsize)) then
		  upval = C(vMaxindex) - C(vsize)
		  upindex = vMaxindex
		end
        if (C(vMaxindex) < C(vsize)) and (lowval > C(vsize)- C(vMaxindex)) then
		  lowval = C(vsize) - C(vMaxindex)
		  lowindex = vMaxindex
		end			
      else 
        if vMax < C(index) then
          vMax = C(index)
          vMaxindex = index
          vFrom = voldMinindex    
          vTo = index
          printz = 0
        else  
          vFrom = vMaxindex  
          vTo = index        
          printz = 0
        end
      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  

		if upindex ~= nil then
		  if C(upindex) > C(index) then		
            for i = upindex, index do
              SetValue(i, 2, C(upindex))
            end  	
            veu = C(upindex)	
          end 		  
		end
		if lowindex ~= nil then
		  if C(lowindex) < C(index) then
            for i = lowindex, index do
              SetValue(i, 3, C(lowindex))
            end  			
		    vel = C(lowindex)
		  end
		end		



      end
    end

  end   
  return ve, veu, vel
end
  • обсудить на форуме:
  • Quik Lua

Онлайн встреча с Дмитрием Власовым в 20.00 создаем собственный индикатор с помощью языка С#

Уважаемые друзья!

Сегодня в 20-00 мск нам уже известный Дмитрий Власов проведет онлайн-встречу, на которой он продолжит рассказ о том, как создать свой собственный индикатор (теперь уже не с помощью кубиков — об этом рассказывал в прошлый раз), а с помощью кода на языке C# Все, кто желает присоединиться и задать ему свои вопросы в 20-00 мск переходите по этой ссылке: meet58696942.adobeconnect.com/tradinglaboratory/

Прямая трансляция:



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

Сложности в алгоритмизации боковика

Приветствую!


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

1 Что есть боковик? почему в одном случае мы считаем что это боковик, а в другом похожем случае это не является боковиком?
2 Размер боковика! Локальный боковик может быть как 0.1% от цены так и несколько процентов от цены. 
Так же можно описать множество пунктов, но они все смежные будут с выделенными двумя пунктами. 

Как определить, что рынок возле той или иной цены остановится и пойдет обратно? только не постфактум, а именно онлайн. Да, мы рисуем уровни руками, или же смотрим на объемы и тд, но изначально никто не знает где и почему цена остановилась. Мы всегда наблюдаем уже постфактум, либо это синусоида цены, либо  накопление объемов на уровне и тд. А значит мы с определением боковика всегда будем опаздывать от реального рынка. 
Второй же пункт, это границы бокового движения. Пример сбера, последние две три недели он гулял в большом диапазоне от 20300 до 21000 грубо говоря, но при этом были и локальные уровни остановки цены в пределах 100-200р канала. В таком ракурсе получается, что при движении от нижнего канала к верхнему с учетом остановок, можно получать 300-400р с движения если отталкиваться от того, что цена вышла из маленького боковика и движется к большому. 
Именно эти сложности приходится преодолевать при алгоритмизации. Ведь алгоритм должен сам определить боковое это движение или вялотекущее направленное. 
Пока что не придумал ничего толкового. Есть идея, которую наполовину реализовал
1 проверяю выше закрытие предыдущего или нет, и строю верхний канал по большему значению
2 аналогично для нижнего канала, проверяю ниже мы предыдущего закрытия или нет. 
3 слежу за ситуациями при которых верхнее значение канала как и нижнее значение не менялось более 60минут (это уже параметр, можно и без него конечно, через счетчик получив просто силу канала, например что мы 5 часов не вышли за границы, или же например сколько раз «кололи» канал но вернулись в его границы и тд)
4 канал считается не действительным при резком закреплении цены выше его границ, допустим большой минутной свечой закрылись выше/ниже границ
5 границы канала должны меняться после направленного движения и новой остановки
6 размах от верхнего к нижнему значению, не должен превышать Х% от цены 

Какие минусы
1 Процент размаха дает возможность смотреть маленький ли канал в данный момент или большой, но это является параметром, а значит может привести к «лудоманству». Каких либо других возможностей поиска локального боковика пока что, не видится возможным, потому остановился на этом
2 Я всегда опаздываю за ценой. Если действовать сразу и брать с первых же баров определение боковика, то будет очень большое количество ложных определений, и соответственно, множество не правильных входов
3 Любые остановы движения цены, ломают логику и идет поиск очередного боковика, обычно это преждевременно получается. 
4 Ложное расширение боковика, которое можно определить только постфактумом и нужно перерисовывать границы. 
Ниже примеры в картинках
 Сложности в алгоритмизации боковика
Ложный выход из боковика



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

Почему так хочется продавать края опционов и что лучше продавать

    • 26 марта 2019, 11:05
    • |
    • FZF
  • Еще

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

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

Определимся с терминами и понятиями, которые будем рассматривать:

[Тэта] -  потеря стоимости опциона за определенный промежуток времени [t]

У нас есть текущая волатильность базового актива. Исходя из этой волатильности, мы можем посчитать ожидаемый средний путь, который пройдет цена базового актива за время [t]. Этот путь назовем



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

Влияние МА на цвет часовых свечей

Сегодня прокачал статистику, изложенную в теме Вероятность продолжения тренда на часах в 8 основных фьючах. Напомню суть:

После двух, трёх, четырёх и пяти свечей одного цвета вероятность выпадения свечи того же цвета равна примерно 50%. 

А если посчитать статистику повторных свечей того же цветас учетом направления SМА (Simple MA), как на рисунке ниже?
Влияние МА на цвет часовых свечей
Посчитал за 3 года фьюч Газпрома. Он удобен тем, что за 3 года цена погуляла туда-сюда и почти не изменилась:

Влияние МА на цвет часовых свечей



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

Почему для торговли нефтью ( фьючерс BR) редко используются торговые роботы?

Друзья, объясните пожалуйста вот так момент!
Глядя, на обсуждение торговых систем и выкладываемые тесты, я обратил внимание, что ни разу не видел результаты результаты тестирования трендовых роботов на нефти. Обычно, это Si, Ri, реже SBRF, Eu, но ни разу не видел нефти.
Может я что-то не понимаю, ведь результаты тестов, весьма неплохи. Да, просадки больше, чем на Si, но гораздо меньше, чем на фьючерсе РТС.
Буду рад услышать мнение всех алготрейдеров)

Юношам , изучающим опционы (почему нельзя продавать дальние края опционов)

    • 24 марта 2019, 12:21
    • |
    • FZF
  • Еще

Для начала рассмотрим, как меняются цены опционов в зависимости от волатильности:

На данном графике      1 – это центральный страйк;  Синяя линия – цены опционов на момент вашей продажи;  Зеленая линия – цены опционов при увеличении волатильности в 1,5 раза; Красная линия – цены опционов при увеличении волатильности в 2 раза.

На первый взгляд, ничего трагичного не наблюдается
Юношам , изучающим опционы (почему нельзя продавать дальние края опционов)



Теперь посмотрим не  на сколько увеличиваются цены опционов, а во сколько раз увеличиваются цены.

Юношам , изучающим опционы (почему нельзя продавать дальние края опционов)



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

+100% первый год алготрейдинга. Одурачен ли я случайностью?

Всех приветствую!

Первый год публичной алго торговли закончился с результатом +100%.
Первый пост о моем пути к алготрейдингу тут
В этом посте подробно разберу результаты за прошлый год, а также попытаюсь ответить на вопрос – одурачен ли я случайностью?
На рисунке изменение депозита и фьючерса долл./руб.
+100% первый год алготрейдинга. Одурачен ли я случайностью?
Все системы торговали на фьючерсе долл./руб. Примерно 75% систем работают на волатильности, остальные пытаются поймать тренд. В начале года затишье, которое к концу марта привело к просадке в 30%. Ну а дальше роботы оседлали взрыв рынка. 8 августа вывел 10% от первоначального депо, в этот же период был удержан НДФЛ на всю сумму накопившегося дохода.

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



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

quik вопрос по синтаксису lua

не могу понять почему два цикла не дает сделать:
Settings={
Name="XXX",
period=25,
  line=
  {
    {
      Name="curve",
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    }
  } 
}

function Init()  
  return 1
end

function OnCalculate(index)
  if index < Settings.period then
    return nil
  else

    for i=index-Settings.period+1, index do  
    do
      j=1
    end
    for k=1, 10 do  
    do
      j=1
    end


  end 

  return 2
end

end
если второй цикл убираю for k=1, 10 do do j=1 end
то работает, с ним не работает
  • обсудить на форуме:
  • Quik Lua

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