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

по

Ответ Московскому Лоссбою, хорошему человеку:)

    • 08 апреля 2019, 10:36
    • |
    • Ajax
  • Еще
В ответ на пост smart-lab.ru/blog/532342.php
По-моему, 3 вариант лучше будет, торгуя правильной долей счета. 
Важно! Если нет переподгонки на истории и считаете, что показатели системы останутся примерно такими же в будущем.
Ответ Московскому Лоссбою, хорошему человеку:)
Ответ Московскому Лоссбою, хорошему человеку:)

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

Индикатор ожидаемого движения для опционной торговли (Часть 2 устройство индикатора)

    • 05 апреля 2019, 11:25
    • |
    • FZF
  • Еще

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

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

Price Channel (PC) или ценовой канал. Индикатор представляет из себя две линии, которые ограничивают канал колебаний цены. Верхняя граница канала обозначает уровень локального максимума за прошедшие N периодов, а нижняя граница – уровень локального минимума за тот же промежуток времени. Таким образом, цена ограничивается максимальными точками колебаний – экстремумами за N периодов.
Индикатор ожидаемого движения для опционной торговли (Часть 2 устройство индикатора)



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

Пэйроллы за 100 лет

    • 04 апреля 2019, 22:09
    • |
    • Albus
  • Еще
Пост будет полезен только тем, кто кодит на Питоне.
Осваиваю базу данных quandl.com
Оттуда можно качать котировки, а можно и экономическую статистику. Например, там есть нонфарм-пэйроллы с 1921 года.
Как и положено питону, там всё очень просто.
Не знаю почему, пэйроллы с 1947 года по значениям сильно отличаются от предыдущих:
Пэйроллы за 100 лет
Будем брать те, которые идут с 1947 года.
Инструкция шаг за шагом.
1. Качаем питон, если он у вас до сих пор не установлен: https://www.python.org/
2. Открываем командную строку cmd.exe (чёрное окошко).
3. Пишем в нём pip install quandl
Пэйроллы за 100 лет

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

Робот "Два Боллинджера" с исходниками

Хорош философствовать. Давайте писать более полезные посты.
Итак, робот на двух графиках Боллинджера.
Общий принцип:
1) На цену накладываются два графика Боллинджера: с периодами 20 и 120 (назовем их local и global).
2) В зависимости от параметра внутри робота, входим либо когда цена входит внутрь local-Боллинджера (ContrTrendFlag=1), либо выходит из него (ContrTrendFlag=0).
3) Дополнительный фильтр: Лонг только когда когда мы в верхней половине global-Боллинджера, шорт — если в нижней.
Данные робот берет из графиков, так что график должен быть открыт, и прописаны идентификаторы.

График с двумя Боллинджерами выглядит примерно так:

Робот "Два Боллинджера" с исходниками

Настройки на цене и индикаторах не забудьте:

Робот "Два Боллинджера" с исходниками

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

STATDIVPROF индикатор с эквити

STATDIVPROF показывает прибыл от свое торговли
если поставить параметр showprof=1, если showprof=0, то будет показывать профит иначе сам индикатор
STATDIVPROF индикатор с эквити

код индикатора
Settings={
Name="STATDIVPROF",
period=30,
showprof=0,
  line=
  {
    {
      Name="curve",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line",
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    }
  } 
}

function Init()
  prof=0    
  bp=0
  prevval=0    
  return 2
end

function OnCalculate(index)
  local sum1=0
  local sum2=0  
  local j=0    
  local dprof=0     
  
  if index < Settings.period then
    return nil, nil
  else   	
    for i=index-Settings.period+1, index do  
	  j = j + 1 
      if C(i) > O(i) then
        sum1 = sum1 + (C(i) - O(i))*V(i)*j
        sum2 = sum2 + (C(i) - O(i))*V(i)*j
      else
        sum2 = sum2 + (O(i) - C(i))*V(i)*j
      end  
    end 
    sum1 = sum1/sum2 
  end
  
  if index > Settings.period+1 then
     
    if prevval < 0.5 and sum1 >= 0.5 then
      bp=C(index)   	  
	end
    if prevval > 0.5 and sum1 <= 0.5 then
      if bp ~= 0 then
	    prof=prof+C(index)-bp
		bp=0
	  end 
	end	
	if bp ~= 0 then
	  dprof = C(index) - bp
	else
	  dprof = 0
	end
     
  end
  prevval=sum1   
  
  if Settings.showprof == 0 then
    return sum1, 0.5
  end

  if Settings.showprof == 1 then
    return prof+dprof, nil
  end

end






Стратегия торговли в планкосезон

Эта статья — фактически готовая торговая стратегия для работы с бумагами дальних эшелонов на ММВБ. Я полностью отказался от торговли неликвидами, поэтому решил опубликовать здесь эту стратегию. Она по-прежнему работает и может вполне пригодиться кому-то ещё.

Многие явно обратили внимание на периоды, когда очень часто в лидерах роста фигурировали акции весьма странных компаний, торги которыми ограничивались по регламенту биржи, поэтому их изменение цены было чем-то типа "+39.69%" и их нельзя было купить — в стакане не было заявок на продажу. Это и есть «планкосезоны», когда акции всевозможных шлаков регулярно улетали в планки. Но если акции нельзя купить или цена выросла до небес, как на этом зарабатывать? Разберём механику рынка, чтобы ответить на этот вопрос.

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

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

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

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

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

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

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


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

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

Онлайн встреча с Дмитрием Власовым в 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 Ложное расширение боковика, которое можно определить только постфактумом и нужно перерисовывать границы. 
Ниже примеры в картинках
 Сложности в алгоритмизации боковика
Ложный выход из боковика



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

Zigzag2 на lua под quik

Доработал свой предыдущий zigzag чтоб работал быстрее

название нового индикатора zigzag2

скачать можно здесь:
https://dropmefiles.com/5EOWp

как выглядит:
Zigzag2 на lua под quik



код индикатора:
Settings=              
        {                          
            Name = "Zigzag2",   -- название индикатора
            delta=2,                  -- параметр индикатора                          
            line=                                     
                {                               
                    {  
                        Name = "zigzagline2",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(120,90, 140)
                    }
                }
       }


function Init()

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

  return 1
end


function OnCalculate(index)
  local printz = 0
  
  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
      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
      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  
      end
    end

  end   
  return ve
end

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